Kimchi-devel
Threads by month
- ----- 2026 -----
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
September 2015
- 19 participants
- 130 discussions
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/po/LINGUAS | 11 +
plugins/gingerbase/po/Makefile.in.in | 398 ++++++
plugins/gingerbase/po/Makevars | 41 +
plugins/gingerbase/po/POTFILES.in | 3 +
plugins/gingerbase/po/de_DE.po | 2288 ++++++++++++++++++++++++++++++++
plugins/gingerbase/po/en_US.po | 2075 +++++++++++++++++++++++++++++
plugins/gingerbase/po/es_ES.po | 2305 +++++++++++++++++++++++++++++++++
plugins/gingerbase/po/fr_FR.po | 2338 +++++++++++++++++++++++++++++++++
plugins/gingerbase/po/gen-pot.in | 9 +
plugins/gingerbase/po/gingerbase.pot | 2074 +++++++++++++++++++++++++++++
plugins/gingerbase/po/it_IT.po | 2274 ++++++++++++++++++++++++++++++++
plugins/gingerbase/po/ja_JP.po | 2269 ++++++++++++++++++++++++++++++++
plugins/gingerbase/po/ko_KR.po | 2197 +++++++++++++++++++++++++++++++
plugins/gingerbase/po/pt_BR.po | 2369 ++++++++++++++++++++++++++++++++++
plugins/gingerbase/po/ru_RU.po | 2199 +++++++++++++++++++++++++++++++
plugins/gingerbase/po/zh_CN.po | 2186 +++++++++++++++++++++++++++++++
plugins/gingerbase/po/zh_TW.po | 2138 ++++++++++++++++++++++++++++++
17 files changed, 27174 insertions(+)
create mode 100644 plugins/gingerbase/po/LINGUAS
create mode 100644 plugins/gingerbase/po/Makefile.in.in
create mode 100644 plugins/gingerbase/po/Makevars
create mode 100644 plugins/gingerbase/po/POTFILES.in
create mode 100644 plugins/gingerbase/po/de_DE.po
create mode 100644 plugins/gingerbase/po/en_US.po
create mode 100644 plugins/gingerbase/po/es_ES.po
create mode 100644 plugins/gingerbase/po/fr_FR.po
create mode 100644 plugins/gingerbase/po/gen-pot.in
create mode 100755 plugins/gingerbase/po/gingerbase.pot
create mode 100644 plugins/gingerbase/po/it_IT.po
create mode 100644 plugins/gingerbase/po/ja_JP.po
create mode 100644 plugins/gingerbase/po/ko_KR.po
create mode 100644 plugins/gingerbase/po/pt_BR.po
create mode 100644 plugins/gingerbase/po/ru_RU.po
create mode 100644 plugins/gingerbase/po/zh_CN.po
create mode 100644 plugins/gingerbase/po/zh_TW.po
diff --git a/plugins/gingerbase/po/LINGUAS b/plugins/gingerbase/po/LINGUAS
new file mode 100644
index 0000000..3fcb18f
--- /dev/null
+++ b/plugins/gingerbase/po/LINGUAS
@@ -0,0 +1,11 @@
+en_US
+pt_BR
+zh_CN
+de_DE
+es_ES
+fr_FR
+it_IT
+ja_JP
+ko_KR
+ru_RU
+zh_TW
diff --git a/plugins/gingerbase/po/Makefile.in.in b/plugins/gingerbase/po/Makefile.in.in
new file mode 100644
index 0000000..d01fb31
--- /dev/null
+++ b/plugins/gingerbase/po/Makefile.in.in
@@ -0,0 +1,398 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper(a)gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.18
+GETTEXT_MACRO_VERSION = 0.18
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @prefix@/share/locale
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(MKDIR_P).
+# This macro uses the 'mkdir -p' command if possible. Otherwise, it falls back
+# on invoking install-sh with the -d option, so your package should contain
+# install-sh as described under AC_PROG_INSTALL.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+MKDIR_P = @MKDIR_P@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in gen-pot.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+ @echo "$(MSGFMT) -c -o $@ $<"; \
+ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+ @lang=`echo $* | sed -e 's,.*/,,'`; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+ sed -e '/^#/d' $< > t-$@
+ mv t-$@ $@
+
+
+all: check-macro-version update-gmo all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+check-macro-version:
+ @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+ exit 1; \
+ }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+ test ! -f $(srcdir)/$(DOMAIN).pot || \
+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+ @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+ echo "touch stamp-po" && \
+ echo timestamp > stamp-poT && \
+ mv stamp-poT stamp-po; \
+ }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in
+ $(srcdir)/gen-pot $(POTFILES)
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+ $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ if test -f "$(srcdir)/$${lang}.po"; then \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) \
+ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+ esac; \
+ }; \
+ else \
+ $(MAKE) $${lang}.po-create; \
+ fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ $(INSTALL_DATA) $(srcdir)/$$file \
+ $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ for file in Makevars; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+install-data-no: all
+install-data-yes: all
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(MKDIR_P) $(DESTDIR)$$dir; \
+ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+ fi; \
+ done; \
+ done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ : ; \
+ fi
+installdirs-data-no:
+installdirs-data-yes:
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(MKDIR_P) $(DESTDIR)$$dir; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
+ done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+uninstall-data-no:
+uninstall-data-yes:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ done; \
+ done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+ rm -f remove-potcdate.sed
+ rm -f stamp-poT
+ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ dists="$$dists Makevars.template"; \
+ fi; \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ dists="$$dists $(DOMAIN).pot stamp-po"; \
+ fi; \
+ if test -f $(srcdir)/ChangeLog; then \
+ dists="$$dists ChangeLog"; \
+ fi; \
+ for i in 0 1 2 3 4 5 6 7 8 9; do \
+ if test -f $(srcdir)/ChangeLog.$$i; then \
+ dists="$$dists ChangeLog.$$i"; \
+ fi; \
+ done; \
+ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+ for file in $$dists; do \
+ if test -f $$file; then \
+ cp -p $$file $(distdir) || exit 1; \
+ else \
+ cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+ fi; \
+ done
+
+update-po: Makefile
+ $(MAKE) $(DOMAIN).pot-update
+ test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+ $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+ exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ cd $(srcdir); \
+ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ esac; \
+ }; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+ cd $(top_builddir) \
+ && @SHELL@ ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/plugins/gingerbase/po/Makevars b/plugins/gingerbase/po/Makevars
new file mode 100644
index 0000000..927d590
--- /dev/null
+++ b/plugins/gingerbase/po/Makevars
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = gingerbase
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER =
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = project-kimchi(a)googlegroups.com
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/plugins/gingerbase/po/POTFILES.in b/plugins/gingerbase/po/POTFILES.in
new file mode 100644
index 0000000..92eef1e
--- /dev/null
+++ b/plugins/gingerbase/po/POTFILES.in
@@ -0,0 +1,3 @@
+# List of source files which contain translatable strings.
+i18n.py
+ui/pages/*.tmpl
diff --git a/plugins/gingerbase/po/de_DE.po b/plugins/gingerbase/po/de_DE.po
new file mode 100644
index 0000000..094666e
--- /dev/null
+++ b/plugins/gingerbase/po/de_DE.po
@@ -0,0 +1,2288 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: de_DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "Fehler beim Abrufen von Blockeinheiten. Details: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr "Fehler beim Abrufen von Blockeinheitinformationen f��r %(device)s."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "Distro-Datei konnte nicht gefunden werden: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"Distro-Datei konnte nicht analysiert werden: %(filename)s. Stellen Sie "
+"sicher, dass es sich um eine JSON-Datei handelt."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr "Fehler beim Anmelden bei iSCSI-Hostziel %(portal)s. Details: %(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "Anmeldung bei iSCSI-Host %(host)s Ziel %(target)s nicht m��glich"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "Die ISO-Datei %(filename)s ist nicht bootf��hig"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr "Die ISO-Datei %(filename)s hat keinen g��ltigen El Torito-Bootsatz"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "Ung��ltiger El Torito-Pr��feintrag in ISO-Datei %(filename)s"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "Ung��ltiger El Torito-Boot-Indikator in ISO-Datei %(filename)s"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+"Unerwarteter Datentr��gertyp f��r Prim��rdatentr��ger in ISO-Datei %(filename)s"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+"Ung��ltiges Format beim Lesen des Datentr��gerdeskriptors in ISO-Datei "
+"%(filename)s"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"Der Hypervisor hat nicht die Berechtigung, die ISO-Datei %(filename)s zu "
+"verwenden. Verschieben Sie sie entweder nach /var/lib/libvirt oder setzen "
+"Sie, sofern m��glich, die Suchberechtigung auf Dateizugriffssteuerungslisten "
+"f��r den Benutzer '%(user)s' oder f��gen Sie '%(user)s' der ISO-Pfadgruppe "
+"hinzu oder (nicht empfohlen) 'chmod -R o+x 'path_to_iso'. Details: %(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "Virtuelle Maschine %(name)s ist bereits vorhanden"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "Virtuelle Maschine %(name)s ist nicht vorhanden"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+"Screenshot f��r gestoppte virtuelle Maschine %(name)s konnte nicht abgerufen "
+"werden"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "Fernes ISO-Image wird von diesem Server nicht unterst��tzt."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht erstellt werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht erstellt werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht abgerufen werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+"Verbindung zur abgeschalteten Maschine %(name)s konnte nicht hergestellt "
+"werden."
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr "Zu ��berwachende Grafikadresse muss IPv4 oder IPv6 sein"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "Vorlage angeben, aus der eine virtuelle Maschine erstellt werden soll"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht gestartet werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht gestoppt werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht gel��scht werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht umbenannt werden. Details: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "Netzname muss eine Zeichenfolge sein"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "Netzname muss eine Zeichenfolge sein"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "Benutzer '%(users)s' ist nicht vorhanden."
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "Benutzer '%(groups)s' ist nicht vorhanden."
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht gestoppt werden. Details: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Virtuelle Maschine %(name)s konnte nicht gestartet werden. Details: %(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr ""
+"Schnittstelle %(iface)s ist in virtueller Maschine %(name)s nicht vorhanden"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"Das f��r die virtuelle Maschine %(name)s angegebene Netz %(network)s ist "
+"nicht vorhanden"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "Unterst��tzter Schnittstellentyp einer virtuellen Maschine ist nur Netz"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+"Netzname f��r Schnittstelle einer virtuellen Maschine muss eine Zeichenfolge "
+"sein"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"Ung��ltige Netzmodellkarte f��r Schnittstelle einer virtuellen Maschine "
+"angegeben"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+"Geben Sie Typ und Netz an, um eine neue Schnittstelle f��r eine virtuelle "
+"Maschine hinzuzuf��gen"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "Vorlage %(name)s ist bereits vorhanden"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+"Das f��r Vorlage %(template)s angegebene Netz '%(network)s' ist nicht "
+"vorhanden"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"Der f��r Vorlage %(template)s angegebene Speicherpool '%(pool)s' ist nicht "
+"vorhanden"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"Der f��r Vorlage %(template)s angegebene Speicherpool '%(pool)s' ist nicht "
+"aktiv"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "Ung��ltiger Parameter '%(param)s' f��r CD-ROM angegeben."
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+"Das f��r Vorlage %(template)s angegebene Netz %(network)s ist nicht aktiv"
+
+msgid "Template name must be a string"
+msgstr "Vorlagenname muss eine Zeichenfolge sein"
+
+msgid "Template icon must be a path to the image"
+msgstr "Vorlagensymbol muss ein Pfad zum Image sein"
+
+msgid "Template distribution must be a string"
+msgstr "Vorlagenverteilung muss eine Zeichenfolge sein"
+
+msgid "Template distribution version must be a string"
+msgstr "Vorlagenverteilungsversion muss eine Zeichenfolge sein"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "Die Anzahl der CPUs muss eine Ganzzahl sein"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "Speicherkapazit��t (MB) muss eine Ganzzahl gr����er als 512 sein"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "Vorlagen-CD-ROM muss eine lokale oder ferne ISO-Datei sein"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "Ung��ltiger Speicherpool-URI %(value)s f��r Vorlage angegeben"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "Geben Sie ein ISO-Image als CD-ROM an, um eine Vorlage zu erstellen"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "Alle Netze f��r die Vorlage m��ssen in einer Liste angegeben werden."
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr ""
+"Vorlage kann aufgrund des folgenden Fehlers nicht erstellt werden: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr ""
+"Vorlage kann aufgrund des folgenden Fehlers nicht gel��scht werden: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr "Vorlagen-CD-ROM muss eine lokale oder ferne ISO-Datei sein"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "Speicherpool %(name)s ist bereits vorhanden"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "Speicherpool %(name)s ist nicht vorhanden"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "Geben Sie %(item)s an, um den Speicherpool %(name)s zu erstellen"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "Aktiver Speicherpool %(name)s konnte nicht gel��scht werden"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "Speicherpools konnten nicht aufgelistet werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "Speicherpool %(name)s konnte nicht erstellt werden. Details: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"Anzahl der Speicherdatentr��ger im Speicherpool %(name)s konnte nicht "
+"abgerufen werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "Speicherpool %(name)s konnte nicht aktiviert werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"Speicherpool %(name)s konnte nicht inaktiviert werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "Speicherpool %(name)s konnte nicht gel��scht werden. Details: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"NFS-Pool konnte nicht erstellt werden, weil Exportpfad %(path)s beim Mounten "
+"blockieren kann"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"NFS-Pool konnte nicht erstellt werden, weil das Mounten des Exportpfads"
+"%(path)s fehlgeschlagen ist"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "Nicht unterst��tzter Speicherpooltyp: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "Speicherpoolpfad muss eine Zeichenfolge sein"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "Speicherpoolhost muss eine IP oder ein Hostname sein"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "Einheitenparameter des Speicherpools muss eine Liste sein"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "Ziel-IQN eines iSCSI-Pools muss eine Zeichenfolge sein"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+"Port eines fernen Speicherservers muss eine Ganzzahl zwischen 1 und 65535 "
+"sein"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr "Geben Sie Name und Typ an, um einen Speicherpool zu erstellen"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s ist keine g��ltige Platte/Partition. Sie konnte nicht hinzugef��gt "
+"werden zum Pool %(pool)s."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+"Die Parameterplatten k��nnen nur f��r den logischen Speicherpool aktualisiert "
+"werden."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "Der Name des SCSI-Hostadapters muss eine Zeichenfolge sein."
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "Der Speicherpool kimchi_isos ist f��r die interne Verwendung reserviert"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"Der NFS-Speicherpool %(name)s konnte nicht aktiviert werden. NFS-Server "
+"%(server)s ist nicht erreichbar."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"Der NFS-Speicherpool %(name)s konnte nicht inaktiviert werden. NFS-Server "
+"%(server)s ist nicht erreichbar."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"Pool %(name)s konnte nicht inaktiviert werden, weil er einigen Vorlagen "
+"zugeordnet ist"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+"Pool %(name)s konnte nicht gel��scht werden, weil er einigen Vorlagen "
+"zugeordnet ist"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"Eine Datentr��gergruppe mit dem Namen '%(name)s' ist bereits vorhanden. "
+"W��hlen Sie einen anderen Namen aus, um den logischen Pool zu erstellen."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"Datenbank mit Tiefenscaninformationen kann aufgrund des folgenden Fehlers "
+"nicht aktualisiert werden: %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "Speicherdatentr��ger %(name)s ist bereits vorhanden"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr ""
+"Speicherdatentr��ger %(name)s ist nicht im Speicherpool %(pool)s vorhanden"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "Geben Sie %(item)s an, um Speicherdatentr��ger %(volume)s zu erstellen"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"Speicherdatentr��ger konnten nicht aufgelistet werden, weil Speicherpool "
+"%(pool)s nicht aktiv ist"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"Speicherdatentr��ger %(name)s konnte nicht in Speicherpool %(pool)s erstellt "
+"werden. Details: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"Speicherdatentr��ger konnten nicht in Speicherpool %(pool)s aufgelistet "
+"werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr ""
+"Speicherdatentr��ger %(name)s konnten nicht bereinigt werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"Speicherdatentr��ger %(name)s konnte nicht gel��scht werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"Gr����e des Speicherdatentr��gers %(name)s konnte nicht ge��ndert werden. "
+"Details: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+"Speichertyp %(type)s unterst��tzt nicht das Erstellen und L��schen von "
+"Datentr��gern"
+
+msgid "Storage volume name must be a string"
+msgstr "Name des Speicherdatentr��gers muss eine Zeichenfolge sein"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "Zuordnung des Speicherdatentr��gers muss eine Ganzzahl sein"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "Speicherdatentr��ger erfordert einen Datentr��gernamen"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"Datenbank mit Datentr��gerinformationen kann aufgrund des folgenden Fehlers "
+"nicht aktualisiert werden: %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "Schnittstelle %(name)s ist nicht vorhanden"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "Netz %(name)s ist bereits vorhanden"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "Netz %(name)s ist nicht vorhanden"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"Das f��r das Netz %(network)s angegebene Teilnetz %(subnet)s ist nicht g��ltig."
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+"Geben Sie eine Netzschnittstelle an, um ��berbr��cktes Netz %(name)s zu "
+"erstellen"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "Aktives Netz %(name)s konnte nicht gel��scht werden"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"Die f��r das Netz %(network)s angegebene Schnittstelle %(iface)s wird bereits "
+"verwendet"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "Schnittstelle sollte blo��es NIC, Bonding oder Br��ckeneinheit sein."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "Netz %(name)s konnte nicht erstellt werden. Details: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "Es konnte keine freie IP-Adresse f��r Netz '%(name)s' gefunden werden"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "Unterst��tzte Netztypen sind Isoliert, NAT und Br��cke"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"Teilnetz des Netzes muss eine Zeichenfolge mit IP-Adresse und Pr��fix oder "
+"Netzmaske sein"
+
+msgid "Network interface must be a string"
+msgstr "Netzschnittstelle muss eine Zeichenfolge sein"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "Netz-VLAN-ID muss eine Ganzzahl zwischen 1 und 4094 sein"
+
+msgid "Specify name and type to create a Network"
+msgstr "Geben Sie Name und Typ an, um ein Netz zu erstellen"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+"Netz %(name)s konnte nicht inaktiviert werden. Es sind einige virtuellen "
+"Maschinen %(vms)s und/oder Vorlagen mit diesem Netz verkn��pft."
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+"Netz %(name)s konnte nicht inaktiviert werden. Es sind einige virtuellen "
+"Maschinen %(vms)s und/oder Vorlagen mit diesem Netz verkn��pft."
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr "Br��ckeneinheit %(name)s kann nicht die Trunkeinheit eines VLAN sein."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "Schnittstelle %(iface)s konnte nicht aktiviert werden: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"Schnittstelle %(iface)s konnte nicht aktiviert werden. Bitte ��berpr��fen Sie "
+"den Status der physischen Verbindung."
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "Debugbericht %(name)s ist nicht vorhanden"
+
+msgid "Debug report tool not found in system"
+msgstr "Debugberichtstool nicht im System gefunden"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "Debugbericht %(name)s konnte nicht erstellt werden. Details: %(err)s."
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "Debugbericht %(name)s konnte nicht generiert werden. Details: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"Eine Datentr��gergruppe mit dem Namen '%(name)s' ist bereits vorhanden. "
+"W��hlen Sie einen anderen Namen aus, um den logischen Pool zu erstellen."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "Speicherserver %(server)s wurde nicht von Kimchi verwendet"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "Distro '%(name)s' ist nicht vorhanden"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "Partition %(name)s ist nicht im Host vorhanden"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+"Hostmaschine konnte nicht heruntergefahren werden, weil virtuelle Maschinen "
+"ausgef��hrt werden"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+"Hostmaschine konnte nicht neu gestartet werden, weil virtuelle Maschinen "
+"ausgef��hrt werden"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "Knoteneinheit '%(name)s' nicht gefunden"
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "Keine Pakete f��r Aktualisierung markiert"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "Paket %(name)s ist nicht f��r Aktualisierung markiert."
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+"Fehler beim Abrufen von Paketen, die f��r die Aktualsierung markiert sind. "
+"Details: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "Es gibt keinen kompatiblen Paketmanager f��r dieses System."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "Ung��ltiger URI %(uri)s"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "Ung��ltiger Speichertyp. Unterst��tzte Typen: 'cdrom'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr "Fehler beim Erstellen einer neuen Speichereinheit: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "Fehler beim Aktualisieren einer Speichereinheit: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "Fehler beim Entfernen einer Speichereinheit: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+"Geben Sie Typ und Pfad an, um einen neuen Datentr��ger f��r eine virtuelle "
+"Maschine hinzuzf��gen"
+
+msgid "Specify path to update virtual machine disk"
+msgstr ""
+"Geben Sie einen Pfad an, um die Platte der virtuellen Maschine zu "
+"aktualisieren"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+"Geben Sie Typ und Pfad an, um einen neuen Datentr��ger f��r eine virtuelle "
+"Maschine hinzuzf��gen"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr ""
+"YUM-Repository-ID darf nur ein aus einer Zeichenfolge bestehendes Wort sein."
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "Repository-URL muss ein http://-, ftp://- oder file://-URL sein."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"Repository-Konfiguration ist ein W��rterbuch mit bestimmten Werten "
+"hinsichtlich Repository-Typ."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "Verteilung an DEB-Repository muss eine Zeichenfolge sein"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "Komponenten f��r DEB-Repository m��ssen in einem Array aufgelistet sein"
+
+msgid "Components to DEB repository must be a string"
+msgstr "Komponenten f��r DEB-Repository m��ssen eine Zeichenfolge sein"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "Name des YUM-Repositorys muss eine Zeichenfolge sein."
+
+msgid "GPG check must be a boolean value."
+msgstr "GPG-Pr��fung muss ein boolescher Wert sein."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "GPG-Schl��ssel muss ein URL sein, der auf die ASCII-Armor-Datei zeigt."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "Repository %(repo_id)s konnte nicht aktualisiert werden."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "Repository %(repo_id)s ist nicht vorhanden."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "Repository-Verwaltungstool wurde f��r Ihr System nicht erkannt."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "Repository %(repo_id)s ist bereits aktiviert."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "Repository %(repo_id)s ist bereits inaktiviert."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "Repository %(repo_id)s konnte nicht entfernt werden."
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+"Repository-Konfigurationsdatei %(repo_file)s konnte nicht geschrieben werden"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+"Geben Sie die Repository-Verteilung an, um ein DEB-Repository zu erstellen."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "Repository %(repo_id)s konnte nicht aktiviert werden."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "Repository %(repo_id)s konnte nicht inaktiviert werden."
+
+msgid "YUM Repository ID already exists"
+msgstr "YUM-Repository-ID ist bereits vorhanden"
+
+msgid "YUM Repository name must be a string"
+msgstr "YUM-Repository-Name muss eine Zeichenfolge sein"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "Repositorys konnten nicht aufgelistet werden. Details: '%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr ""
+"Repository-Informationen konnten nicht abgerufen werden. Details: '%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "Repository konnte nicht hinzugef��gt werden. Details: '%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "Repository konnte nicht entfernt werden. Details: '%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "FEHLERCODE"
+
+msgid "REASON"
+msgstr "GRUND"
+
+msgid "STACK"
+msgstr "STACK"
+
+msgid "Go to Homepage"
+msgstr "Gehe zu Homepage"
+
+msgid "Create a New Virtual Machine"
+msgstr "Neue virtuelle Maschine erstellen"
+
+msgid "Virtual Machine Name"
+msgstr "Name der virtuellen Maschine"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"Der f��r die Kennzeichnung der virtuellen Maschine verwendete Name. Falls er "
+"ausgelassen wird, wird ein Name anhand der verwendeten Vorlage ausgew��hlt."
+
+msgid "Template"
+msgstr "Vorlage"
+
+msgid "Please create a template first."
+msgstr "Erstellen Sie zun��chst eine Vorlage."
+
+msgid "Create a Template"
+msgstr "Vorlage erstellen"
+
+msgid "Please choose a template."
+msgstr "W��hlen Sie eine Vorlage aus."
+
+msgid "OS"
+msgstr "BS"
+
+msgid "OS Version"
+msgstr "BS-Version"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "Speicher"
+
+msgid "Create"
+msgstr "Erstellen"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgid "Edit Guest"
+msgstr "Gast bearbeiten"
+
+msgid "General"
+msgstr "Allgemein"
+
+msgid "Storage"
+msgstr "Speicher"
+
+msgid "Interface"
+msgstr "Schnittstelle"
+
+msgid "Permission"
+msgstr "Version"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "Name"
+
+msgid "CPUs"
+msgstr "CPUs"
+
+msgid "Memory (MB)"
+msgstr "Speicher"
+
+msgid "Icon"
+msgstr "Symbol"
+
+msgid "Device"
+msgstr "Einheitenname"
+
+msgid "Path"
+msgstr "NFS-Pfad"
+
+msgid "Network"
+msgstr "Netz"
+
+msgid "Type"
+msgstr "Typ"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "Alle"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "Anbieter"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "Speichern"
+
+msgid "Replace"
+msgstr "Ersetzen"
+
+msgid "Detach"
+msgstr "Abh��ngen"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "Starten"
+
+msgid "Reset"
+msgstr "Zur��cksetzen"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr "Aktionen"
+
+msgid "Connect"
+msgstr "Verbinden"
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr "Bearbeiten"
+
+msgid "Shut Down"
+msgstr "Herunterfahren"
+
+msgid "Delete"
+msgstr "L��schen"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "Platten-E/A"
+
+msgid "Network I/O"
+msgstr "Netz-E/A"
+
+msgid "Livetile"
+msgstr "Live Tile"
+
+msgid "No guests found."
+msgstr "Keine G��ste gefunden."
+
+msgid "Add a Storage Device to VM"
+msgstr "Speichereinheit zur virtuellen Maschine hinzuf��gen"
+
+msgid "Device Type"
+msgstr "Einheitentyp"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "Der Einheitentyp. Derzeit wird nur \"cdrom\" unterst��tzt."
+
+msgid "Storage Pool"
+msgstr "Speicherpool"
+
+msgid "Storage pool which volume located in"
+msgstr "Speicherpoolpfad muss eine Zeichenfolge sein"
+
+msgid "Storage Volume"
+msgstr "Speicherpoolname"
+
+msgid "Storage volume to be attached"
+msgstr "Name des Speicherdatentr��gers muss eine Zeichenfolge sein"
+
+msgid "File Path"
+msgstr "Dateipfad"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "Der ISO-Dateipfad auf dem Server f��r die CD-ROM."
+
+msgid "Attach"
+msgstr "Anh��ngen"
+
+msgid "Shut down"
+msgstr "Herunterfahren"
+
+msgid "Restart"
+msgstr "Erneut starten"
+
+msgid "Basic Information"
+msgstr "Basisinformationen"
+
+msgid "OS Distro"
+msgstr "BS-Distro"
+
+msgid "OS Code Name"
+msgstr "BS-Codename"
+
+msgid "Processor"
+msgstr "Prozessor"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "Systemstatistik"
+
+msgid "Software Updates"
+msgstr "Software-Updates"
+
+msgid "Update Progress"
+msgstr "Aktualisierungsfortschritt"
+
+msgid "Repositories"
+msgstr "Repositorys"
+
+msgid "Debug Reports"
+msgstr "Debugberichte"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+"Der Benutzername oder das Kennwort, den bzw. das Sie eingegeben haben, ist "
+"falsch. Versuchen Sie es bitte erneut."
+
+msgid "This field is required."
+msgstr "Dieses Feld ist erforderlich."
+
+msgid "Log in"
+msgstr "Anmelden"
+
+msgid "Logging in..."
+msgstr "Wird angemeldet..."
+
+msgid "Host"
+msgstr "Host"
+
+msgid "Guests"
+msgstr "G��ste"
+
+msgid "Templates"
+msgstr "Vorlagen"
+
+msgid "Failed to get application configuration"
+msgstr "Anwendungskonfiguration konnte nicht abgerufen werden"
+
+msgid "This is not a valid Linux path"
+msgstr "Dies ist kein g��ltiger Linux-Pfad"
+
+msgid "This is not a valid URL."
+msgstr "Dies ist kein g��ltiger URL."
+
+msgid "No such data available."
+msgstr "Keine solchen Daten verf��gbar."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"Hostsystem kann nicht kontaktiert werden. Pr��fen Sie, ob das Hostsystem "
+"aktiv ist und obNetzkonnektivit��t besteht. HTTP-Anforderungsantwort %1. "
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "L��schbest��tigung"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Confirm"
+msgstr "Best��tigen"
+
+msgid "Warning"
+msgstr "Warnung"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "Wird geladen..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "Wiederholen"
+
+msgid "Detailed message:"
+msgstr "Detaillierte Meldung:"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "Dies ist keine g��ltige ISO-Datei."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "Dies wird einige Zeit dauern. M��chten Sie fortfahren?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "Hiermit wird die Vorlage dauerhaft gel��scht. M��chten Sie fortfahren?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"System konnte nicht heruntergefahren werden, weil einige virtuellen "
+"Maschinen ausgef��hrt werden!"
+
+msgid "Max:"
+msgstr "Max:"
+
+msgid "Utilization"
+msgstr "Auslastung"
+
+msgid "Available"
+msgstr "Verf��gbar"
+
+msgid "Read Rate"
+msgstr "Leserate"
+
+msgid "Write Rate"
+msgstr "Schreibrate"
+
+msgid "Received"
+msgstr "Empfangen"
+
+msgid "Sent"
+msgstr "Gesendet"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"Durch das Herunterfahren oder Neustarten des Hosts k��nnen ungesicherte "
+"Arbeiten verloren gehen. M��chten Sie mit dem Herunterfahren/Neustarten "
+"fortfahren?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Repository wird dauerhaft entfernt und kann nicht wiederhergestellt werden. "
+"M��chten Sie fortfahren?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "Basis-URL"
+
+msgid "Is Mirror"
+msgstr "Ist Spiegel"
+
+msgid "URL Args"
+msgstr "URL-Args"
+
+msgid "Enabled"
+msgstr "Aktiviert"
+
+msgid "GPG Check"
+msgstr "GPG-Pr��fung"
+
+msgid "GPG Key"
+msgstr "GPG-Schl��ssel"
+
+msgid "Add"
+msgstr "Hinzuf��gen"
+
+msgid "Remove"
+msgstr "Entfernen"
+
+msgid "Enable"
+msgstr "Aktivieren"
+
+msgid "Disable"
+msgstr "Inaktivieren"
+
+msgid "Package Name"
+msgstr "Paketname"
+
+msgid "Version"
+msgstr "Version"
+
+msgid "Architecture"
+msgstr "Architektur"
+
+msgid "Repository"
+msgstr "Repository"
+
+msgid "Update All"
+msgstr "Alle aktualisieren"
+
+msgid "Updating..."
+msgstr "Wird aktualisiert..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "Pakete konnten nicht aktualisiert werden."
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Debugbericht wird dauerhaft entfernt und kann nicht wiederhergestellt "
+"werden. M��chten Sie fortfahren?"
+
+msgid "Generated Time"
+msgstr "Generierte Zeit"
+
+msgid "Generate"
+msgstr "Generieren"
+
+msgid "Generating..."
+msgstr "Wird generiert..."
+
+msgid "Rename"
+msgstr "Umbenennen"
+
+msgid "Download"
+msgstr "Herunterladen"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+"Berichtsname darf nur Buchstaben, Zahlen und/oder Bindestriche ('-') "
+"enthalten."
+
+msgid "Pending..."
+msgstr "Wird geladen..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"Hiermit werden die virtuelle Maschine und deren virtuellen Platten gel��scht. "
+"Diese Operation kann nicht r��ckg��ngig gemacht werden. M��chten Sie fortfahren?"
+
+msgid "Power off Confirmation"
+msgstr "L��schbest��tigung"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "L��schbest��tigung"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "L��schbest��tigung"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "Hiermit wird die Vorlage dauerhaft gel��scht. M��chten Sie fortfahren?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"Diese CD-ROM wird dauerhaft abgeh��ngt und Sie k��nnen sie neu anh��ngen. "
+"M��chten Sie mit dem Abh��ngen fortfahren?"
+
+msgid "Attaching..."
+msgstr "Wird angeh��ngt..."
+
+msgid "Replacing..."
+msgstr "Wird ersetzt..."
+
+msgid "Successfully attached!"
+msgstr "Erfolgreich angeh��ngt!"
+
+msgid "Successfully replaced!"
+msgstr "Erfolgreich ersetzt!"
+
+msgid "Successfully detached!"
+msgstr "Erfolgreich abgeh��ngt!"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "Die VLAN-ID muss zwischen 1 und 4094 liegen."
+
+msgid "unavailable"
+msgstr "nicht verf��gbar"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"Diese Aktion unterbricht die Netzkonnektivit��t f��r jede virtuelle Maschine, "
+"die von diesem Netz abh��ngt."
+
+msgid "Create a network"
+msgstr "Netz erstellen"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Dieser Speicherpool ist nicht permanent. Durch diese Aktion wird er nicht "
+"inaktiviert, sondern permanent gel��scht. M��chten Sie fortfahren?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr ""
+"Hiermit wird der Speicherpool dauerhaft gel��scht. M��chten Sie fortfahren?"
+
+msgid "This storage pool is empty."
+msgstr "Dieser Speicherpool ist leer."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"Hiermit wird Ihre Platte formatiert und Sie verlieren s��mtliche Daten "
+"darauf. Sind Sie sicher, dass Sie fortfahren m��chten? "
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI-Fibre Channel"
+
+msgid "No SCSI adapters found."
+msgstr "Keine SCSI-Adapter gefunden."
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "Der Speicherpoolname darf nicht leer sein."
+
+msgid "The storage pool path can not be blank."
+msgstr "Der Speicherpoolpfad darf nicht leer sein."
+
+msgid "NFS server mount path can not be blank."
+msgstr "Der Mountpfad des NFS-Servers darf nicht leer sein."
+
+msgid "Invalid NFS mount path."
+msgstr "Ung��ltiger NFS-Mountpfad."
+
+msgid "No logical device selected."
+msgstr "Keine logische Einheit ausgew��hlt."
+
+msgid "The iSCSI target can not be blank."
+msgstr "Das iSCSI-Ziel darf nicht leer sein."
+
+msgid "Server name can not be blank."
+msgstr "Servername darf nicht leer sein."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "Es wird nach verf��gbaren Partitionen gesucht..."
+
+msgid "No available partitions found."
+msgstr "Keine g��ltigen Partitionen gefunden."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Dieser Speicherpool ist nicht permanent. Durch diese Aktion wird er nicht "
+"inaktiviert, sondern permanent gel��scht. M��chten Sie fortfahren?"
+
+msgid "Unable to retrieve partitions information."
+msgstr ""
+"Repository-Informationen konnten nicht abgerufen werden. Details: '%(err)s'"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "Der Speicherpoolname darf nicht leer sein."
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "Netzname"
+
+msgid "State"
+msgstr "Status"
+
+msgid "Network Type"
+msgstr "Netztyp"
+
+msgid "Address Space"
+msgstr "Adressraum"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "Ung��ltiger Speicherpoolname. Er darf nicht '/' enthalten."
+
+msgid "Isolated: no external network connection"
+msgstr "Isolatiert: keine physisische Netzverbindung"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: nur ausgehende physische Netzverbindung"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+"��berbr��ckt: Virtuelle Maschinen sind direkt mit physischem Netz verbunden"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "Ziel:"
+
+msgid "Enable VLAN"
+msgstr "Virtuelles LAN (VLAN) aktivieren:"
+
+msgid "VLAN ID"
+msgstr "VLAN-ID:"
+
+msgid "Stop"
+msgstr "Stoppen"
+
+msgid "Generate a New Debug Report"
+msgstr "Neuen Debugbericht erstellen"
+
+msgid "Report Name"
+msgstr "Berichtsname"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"Der Name, mit dem der Bericht gekennzeichnet wird. Falls er ausgelassen "
+"wird, wird ein Name basierend auf der aktuellen Zeit ausgew��hlt. Der Name "
+"darf Buchstaben, Zahlen und Bindestriche (\"-\") enthalten."
+
+msgid "Rename a Debug Report"
+msgstr "Neuen Debugbericht erstellen"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"Der Name, mit dem der Bericht gekennzeichnet wird. Falls er ausgelassen "
+"wird, wird ein Name basierend auf der aktuellen Zeit ausgew��hlt. Der Name "
+"darf Buchstaben, Zahlen und Bindestriche (\"-\") enthalten."
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr "Repository hinzuf��gen"
+
+msgid "Identifier"
+msgstr "Kennung"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "Einzelnes Wort, eindeutige Kennung f��r das Repository."
+
+msgid "Textual name for the repository."
+msgstr "Textname f��r das Repository."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "Erforderliches Feld"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "URL zum Repository. Unterst��tzte Protokolle sind http, ftp und file."
+
+msgid "Repository is a mirror"
+msgstr "Repository ist ein Spiegel."
+
+msgid "Distribution"
+msgstr "Verteilung"
+
+msgid "Distribution of the DEB repository."
+msgstr "Verteilung des DEB-Repositorys."
+
+msgid "Components"
+msgstr "Komponenten"
+
+msgid "List of components in DEB repository."
+msgstr "Liste der Komponenten im DEB-Repository."
+
+msgid "Edit Repository"
+msgstr "Repository bearbeiten"
+
+msgid "Mirror List URL"
+msgstr "Spiegellisten-URL"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nein"
+
+msgid "Capacity"
+msgstr "Kapazit��t"
+
+msgid "Allocated"
+msgstr "Zugeordnet"
+
+msgid "Location"
+msgstr "Position"
+
+msgid "Device path"
+msgstr "Einheitenpfad"
+
+msgid "active"
+msgstr "aktiv"
+
+msgid "inactive"
+msgstr "inaktiv"
+
+msgid "Deactivate"
+msgstr "Inaktivieren"
+
+msgid "Activate"
+msgstr "Aktivieren"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "Definition aufheben"
+
+msgid "Format"
+msgstr "Format:"
+
+msgid "Allocation"
+msgstr "Zuordnung:"
+
+msgid "Define a New Storage Pool"
+msgstr "Neuen Speicherpool definieren"
+
+msgid "Storage Pool Name"
+msgstr "Speicherpoolname"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+"Der Name, mit dem die Speicherpools gekennzeichnet werden. Er darf nicht "
+"leer sein."
+
+msgid "Storage Pool Type"
+msgstr "Speicherpooltyp"
+
+msgid "Storage Path"
+msgstr "Speicherpfad"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+"Der Pfad des Speicherpools. Jeder Speicherpool muss einen eindeutigen Pfad "
+"haben."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+"Kimchi versucht, das Verzeichnis zu erstellen, wenn es noch nicht in Ihrem "
+"System vorhanden ist."
+
+msgid "NFS Server IP"
+msgstr "NFS-Server-IP"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"IP oder Hostname des NFS-Servers. Diese(r) kann eingegeben oder aus dem "
+"Verlauf ausgew��hlt werden."
+
+msgid "NFS Path"
+msgstr "NFS-Pfad"
+
+msgid "The NFS exported path on NFS server."
+msgstr "Der NFS-Exportpfad auf dem NFS-Server."
+
+msgid "iSCSI Server"
+msgstr "iSCSI-Server"
+
+msgid "Server"
+msgstr "Server"
+
+msgid "Port"
+msgstr "Port"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "IP oder Hostname des iSCSI-Servers. Diese(r) darf nicht leer sein."
+
+msgid "Target"
+msgstr "Ziel"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "Das iSCSI-Ziel auf dem iSCSI-Server"
+
+msgid "Add iSCSI Authentication"
+msgstr "iSCSI-Authentifizierung hinzuf��gen"
+
+msgid "iSCSI Authentication"
+msgstr "iSCSI-Authentifizierung"
+
+msgid "User Name"
+msgstr "Benutzername"
+
+msgid "Password"
+msgstr "Kennwort"
+
+msgid "SCSI Adapter"
+msgstr "SCSI-Adapter"
+
+msgid "Please, wait..."
+msgstr "Bitte warten..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "Vorlage hinzuf��gen"
+
+msgid "Where is the source media for this template? "
+msgstr "Wo ist der Quellendatentr��ger f��r diese Vorlage?"
+
+msgid "Local ISO Image"
+msgstr "Lokales ISO-Image"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "Fernes ISO-Image"
+
+msgid "Search ISOs"
+msgstr "ISOs suchen"
+
+msgid "The following ISOs are available:"
+msgstr "Die folgenden ISOs sind verf��gbar:"
+
+msgid "OS: "
+msgstr "BS: "
+
+msgid "Version: "
+msgstr "Version: "
+
+msgid "Size: "
+msgstr "Gr����e: "
+
+msgid "Search more ISOs"
+msgstr "Weitere ISOs suchen"
+
+msgid "Create Templates from Selected ISO"
+msgstr "Vorlagen aus ausgew��hltem ISO erstellen"
+
+msgid "I want to use a specific ISO file"
+msgstr "Ich m��chte eine bestimmte ISO-Datei verwenden"
+
+msgid "Loading default remote ISOs ..."
+msgstr "Standardm����ige ferne ISOs werden geladen ..."
+
+msgid "Arch: "
+msgstr "Arch: "
+
+msgid "I want to use a custom URL"
+msgstr "Ich m��chte einen benutzerdefinierten URL verwenden"
+
+msgid "Edit Template"
+msgstr "Vorlage bearbeiten"
+
+msgid "CDROM"
+msgstr "CD-ROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "Grafik"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "CPU-Anzahl"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "Keine Vorlagen gefunden."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "L��schen ist nicht zul��ssig f��r %(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s implementiert keine Aktualisierungsmethode"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "Erstellen ist nicht zul��ssig f��r %(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "JSON-Anfrage konnte nicht analysiert werden"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "Diese API unterst��tzt nur JSON"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "Datenspeicher wird nicht im Modellobjekt initialisiert."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr ""
+#~ "Task kann aufgrund des folgenden Fehlers nicht gestartet werden: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "Authentifizierung f��r Benutzer '%(username)s' fehlgeschlagen. "
+#~ "[Fehlercode: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "Sie sind nicht berechtigt, auf Kimchi zuzugreifen"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Geben Sie %(item)s an, um sich bei Kimchi anzumelden"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "%(item)s konnten nicht im Datenspeicher gefunden werden"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "Zeitlimit��berschreitung beim Ausf��hren des Befehls '%(cmd)s' nach "
+#~ "%(seconds)s Sekunden"
+
+#~ msgid "Help"
+#~ msgstr "Hilfe"
+
+#~ msgid "About"
+#~ msgstr "Informationen"
+
+#~ msgid "Log out"
+#~ msgstr "Abmelden"
+
+#~ msgid "Version:"
+#~ msgstr "Version:"
diff --git a/plugins/gingerbase/po/en_US.po b/plugins/gingerbase/po/en_US.po
new file mode 100644
index 0000000..149e9c4
--- /dev/null
+++ b/plugins/gingerbase/po/en_US.po
@@ -0,0 +1,2075 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+# Adam Litke <agl(a)us.ibm.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr ""
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr ""
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+
+msgid "Remote ISO image is not supported by this server."
+msgstr ""
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr ""
+
+msgid "Specify a template to create a virtual machine from"
+msgstr ""
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr ""
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr ""
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr ""
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr ""
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr ""
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr ""
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+
+msgid "Template name must be a string"
+msgstr ""
+
+msgid "Template icon must be a path to the image"
+msgstr ""
+
+msgid "Template distribution must be a string"
+msgstr ""
+
+msgid "Template distribution version must be a string"
+msgstr ""
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr ""
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr ""
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr ""
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr ""
+
+msgid "All networks for the template must be specified in a list."
+msgstr ""
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr ""
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr ""
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr ""
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr ""
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr ""
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr ""
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr ""
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr ""
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+
+msgid "The SCSI host adapter name must be a string."
+msgstr ""
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+
+msgid "Storage volume name must be a string"
+msgstr ""
+
+msgid "Storage volume allocation must be an integer number"
+msgstr ""
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr ""
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr ""
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+
+msgid "Network interface must be a string"
+msgstr ""
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr ""
+
+msgid "Specify name and type to create a Network"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr ""
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr ""
+
+msgid "Debug report tool not found in system"
+msgstr ""
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr ""
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr ""
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr ""
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr ""
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr ""
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr ""
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr ""
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+
+msgid "There is no compatible package manager for this system."
+msgstr ""
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr ""
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr ""
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr ""
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr ""
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr ""
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+
+msgid "Specify path to update virtual machine disk"
+msgstr ""
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr ""
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+
+msgid "Distribution to DEB repository must be a string"
+msgstr ""
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr ""
+
+msgid "Components to DEB repository must be a string"
+msgstr ""
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr ""
+
+msgid "GPG check must be a boolean value."
+msgstr ""
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr ""
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr ""
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr ""
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr ""
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr ""
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr ""
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr ""
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr ""
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr ""
+
+msgid "YUM Repository ID already exists"
+msgstr ""
+
+msgid "YUM Repository name must be a string"
+msgstr ""
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr ""
+
+msgid "REASON"
+msgstr ""
+
+msgid "STACK"
+msgstr ""
+
+msgid "Go to Homepage"
+msgstr ""
+
+msgid "Create a New Virtual Machine"
+msgstr ""
+
+msgid "Virtual Machine Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+
+msgid "Template"
+msgstr ""
+
+msgid "Please create a template first."
+msgstr ""
+
+msgid "Create a Template"
+msgstr ""
+
+msgid "Please choose a template."
+msgstr ""
+
+msgid "OS"
+msgstr ""
+
+msgid "OS Version"
+msgstr ""
+
+msgid "CPUS"
+msgstr ""
+
+msgid "Memory"
+msgstr ""
+
+msgid "Create"
+msgstr ""
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Edit Guest"
+msgstr ""
+
+msgid "General"
+msgstr ""
+
+msgid "Storage"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Permission"
+msgstr ""
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "CPUs"
+msgstr ""
+
+msgid "Memory (MB)"
+msgstr ""
+
+msgid "Icon"
+msgstr ""
+
+msgid "Device"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid "Network"
+msgstr ""
+
+msgid "Type"
+msgstr ""
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr ""
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr ""
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Detach"
+msgstr ""
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr ""
+
+msgid "Reset"
+msgstr ""
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr ""
+
+msgid "Connect"
+msgstr ""
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Shut Down"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+msgid "CPU"
+msgstr ""
+
+msgid "Disk I/O"
+msgstr ""
+
+msgid "Network I/O"
+msgstr ""
+
+msgid "Livetile"
+msgstr ""
+
+msgid "No guests found."
+msgstr ""
+
+msgid "Add a Storage Device to VM"
+msgstr ""
+
+msgid "Device Type"
+msgstr ""
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr ""
+
+msgid "Storage Pool"
+msgstr ""
+
+msgid "Storage pool which volume located in"
+msgstr ""
+
+msgid "Storage Volume"
+msgstr ""
+
+msgid "Storage volume to be attached"
+msgstr ""
+
+msgid "File Path"
+msgstr ""
+
+msgid "The ISO file path in the server for CDROM."
+msgstr ""
+
+msgid "Attach"
+msgstr ""
+
+msgid "Shut down"
+msgstr ""
+
+msgid "Restart"
+msgstr ""
+
+msgid "Basic Information"
+msgstr ""
+
+msgid "OS Distro"
+msgstr ""
+
+msgid "OS Code Name"
+msgstr ""
+
+msgid "Processor"
+msgstr ""
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr ""
+
+msgid "Software Updates"
+msgstr ""
+
+msgid "Update Progress"
+msgstr ""
+
+msgid "Repositories"
+msgstr ""
+
+msgid "Debug Reports"
+msgstr ""
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+
+msgid "This field is required."
+msgstr ""
+
+msgid "Log in"
+msgstr ""
+
+msgid "Logging in..."
+msgstr ""
+
+msgid "Host"
+msgstr ""
+
+msgid "Guests"
+msgstr ""
+
+msgid "Templates"
+msgstr ""
+
+msgid "Failed to get application configuration"
+msgstr ""
+
+msgid "This is not a valid Linux path"
+msgstr ""
+
+msgid "This is not a valid URL."
+msgstr ""
+
+msgid "No such data available."
+msgstr ""
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr ""
+
+msgid "OK"
+msgstr ""
+
+msgid "Confirm"
+msgstr ""
+
+msgid "Warning"
+msgstr ""
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr ""
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr ""
+
+msgid "Detailed message:"
+msgstr ""
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr ""
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr ""
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr ""
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+
+msgid "Max:"
+msgstr ""
+
+msgid "Utilization"
+msgstr ""
+
+msgid "Available"
+msgstr ""
+
+msgid "Read Rate"
+msgstr ""
+
+msgid "Write Rate"
+msgstr ""
+
+msgid "Received"
+msgstr ""
+
+msgid "Sent"
+msgstr ""
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+
+msgid "ID"
+msgstr ""
+
+msgid "Base URL"
+msgstr ""
+
+msgid "Is Mirror"
+msgstr ""
+
+msgid "URL Args"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "GPG Check"
+msgstr ""
+
+msgid "GPG Key"
+msgstr ""
+
+msgid "Add"
+msgstr ""
+
+msgid "Remove"
+msgstr ""
+
+msgid "Enable"
+msgstr ""
+
+msgid "Disable"
+msgstr ""
+
+msgid "Package Name"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Architecture"
+msgstr ""
+
+msgid "Repository"
+msgstr ""
+
+msgid "Update All"
+msgstr ""
+
+msgid "Updating..."
+msgstr ""
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr ""
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+
+msgid "Generated Time"
+msgstr ""
+
+msgid "Generate"
+msgstr ""
+
+msgid "Generating..."
+msgstr ""
+
+msgid "Rename"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+
+msgid "Pending..."
+msgstr ""
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+
+msgid "Power off Confirmation"
+msgstr ""
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr ""
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr ""
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr ""
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+
+msgid "Attaching..."
+msgstr ""
+
+msgid "Replacing..."
+msgstr ""
+
+msgid "Successfully attached!"
+msgstr ""
+
+msgid "Successfully replaced!"
+msgstr ""
+
+msgid "Successfully detached!"
+msgstr ""
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr ""
+
+msgid "unavailable"
+msgstr ""
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+
+msgid "Create a network"
+msgstr ""
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr ""
+
+msgid "This storage pool is empty."
+msgstr ""
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+
+msgid "SCSI Fibre Channel"
+msgstr ""
+
+msgid "No SCSI adapters found."
+msgstr ""
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr ""
+
+msgid "The storage pool path can not be blank."
+msgstr ""
+
+msgid "NFS server mount path can not be blank."
+msgstr ""
+
+msgid "Invalid NFS mount path."
+msgstr ""
+
+msgid "No logical device selected."
+msgstr ""
+
+msgid "The iSCSI target can not be blank."
+msgstr ""
+
+msgid "Server name can not be blank."
+msgstr ""
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr ""
+
+msgid "No available partitions found."
+msgstr ""
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+
+msgid "Unable to retrieve partitions information."
+msgstr ""
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr ""
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr ""
+
+msgid "State"
+msgstr ""
+
+msgid "Network Type"
+msgstr ""
+
+msgid "Address Space"
+msgstr ""
+
+msgid "Name should not contain '/' and '\"'."
+msgstr ""
+
+msgid "Isolated: no external network connection"
+msgstr ""
+
+msgid "NAT: outbound physical network connection only"
+msgstr ""
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr ""
+
+msgid "Enable VLAN"
+msgstr ""
+
+msgid "VLAN ID"
+msgstr ""
+
+msgid "Stop"
+msgstr ""
+
+msgid "Generate a New Debug Report"
+msgstr ""
+
+msgid "Report Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+
+msgid "Rename a Debug Report"
+msgstr ""
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr ""
+
+msgid "Identifier"
+msgstr ""
+
+msgid "Single word, unique identifier for the repository."
+msgstr ""
+
+msgid "Textual name for the repository."
+msgstr ""
+
+msgid "URL"
+msgstr ""
+
+msgid "Required Field"
+msgstr ""
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr ""
+
+msgid "Repository is a mirror"
+msgstr ""
+
+msgid "Distribution"
+msgstr ""
+
+msgid "Distribution of the DEB repository."
+msgstr ""
+
+msgid "Components"
+msgstr ""
+
+msgid "List of components in DEB repository."
+msgstr ""
+
+msgid "Edit Repository"
+msgstr ""
+
+msgid "Mirror List URL"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Capacity"
+msgstr ""
+
+msgid "Allocated"
+msgstr ""
+
+msgid "Location"
+msgstr ""
+
+msgid "Device path"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "inactive"
+msgstr ""
+
+msgid "Deactivate"
+msgstr ""
+
+msgid "Activate"
+msgstr ""
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr ""
+
+msgid "Format"
+msgstr ""
+
+msgid "Allocation"
+msgstr ""
+
+msgid "Define a New Storage Pool"
+msgstr ""
+
+msgid "Storage Pool Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+
+msgid "Storage Pool Type"
+msgstr ""
+
+msgid "Storage Path"
+msgstr ""
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+
+msgid "NFS Server IP"
+msgstr ""
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+
+msgid "NFS Path"
+msgstr ""
+
+msgid "The NFS exported path on NFS server."
+msgstr ""
+
+msgid "iSCSI Server"
+msgstr ""
+
+msgid "Server"
+msgstr ""
+
+msgid "Port"
+msgstr ""
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "The iSCSI target on iSCSI server"
+msgstr ""
+
+msgid "Add iSCSI Authentication"
+msgstr ""
+
+msgid "iSCSI Authentication"
+msgstr ""
+
+msgid "User Name"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "SCSI Adapter"
+msgstr ""
+
+msgid "Please, wait..."
+msgstr ""
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr ""
+
+msgid "Where is the source media for this template? "
+msgstr ""
+
+msgid "Local ISO Image"
+msgstr ""
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr ""
+
+msgid "Search ISOs"
+msgstr ""
+
+msgid "The following ISOs are available:"
+msgstr ""
+
+msgid "OS: "
+msgstr ""
+
+msgid "Version: "
+msgstr ""
+
+msgid "Size: "
+msgstr ""
+
+msgid "Search more ISOs"
+msgstr ""
+
+msgid "Create Templates from Selected ISO"
+msgstr ""
+
+msgid "I want to use a specific ISO file"
+msgstr ""
+
+msgid "Loading default remote ISOs ..."
+msgstr ""
+
+msgid "Arch: "
+msgstr ""
+
+msgid "I want to use a custom URL"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "CDROM"
+msgstr ""
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr ""
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr ""
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr ""
diff --git a/plugins/gingerbase/po/es_ES.po b/plugins/gingerbase/po/es_ES.po
new file mode 100644
index 0000000..7271403
--- /dev/null
+++ b/plugins/gingerbase/po/es_ES.po
@@ -0,0 +1,2305 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr ""
+"Se ha producido un error al obtener dispositivos de bloque. Detalles: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr ""
+"Se ha producido un error al obtener informaci��n de dispositivo de bloque "
+"para %(device)s."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "No se puede encontrar el archivo distro: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"No se puede analizar el archivo distro: %(filename)s. Aseg��rese de que es un "
+"archivo JSON."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+"No se puede iniciar la sesi��n en %(portal)s del destino de host iSCSI. "
+"Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr ""
+"No se puede iniciar la sesi��n en el destino %(target)s del %(host)s host de "
+"iSCSI"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "El archivo ISO %(filename)s no es arrancable"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr ""
+"El archivo ISO %(filename)s no tiene un registro de arranque de El Torito "
+"v��lido"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "Entrada de validaci��n de El Torito no v��lida en ISO %(filename)s"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "Indicador de arranque de El Torito no v��lido en ISO %(filename)s"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+"Tipo de volumen inesperado para el volumen primario en ISO %(filename)s"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+"Formato incorrecto mientras se le��a el descriptor de volumen en ISO "
+"%(filename)s"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"El hipervisor no tiene permiso para utilizar este ISO %(filename)s. "
+"Considere moverlo a /var/lib/libvirt, o establezca el permiso de b��squeda en "
+"listas de control de accesos de archivo para el usuario '%(user)s' si es "
+"posible, o a��ada el '%(user)s' al grupo de v��as de acceso ISO, o (no "
+"recomendado) 'chmod -R o+x 'path_to_iso'.Detalles: %(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "La m��quina virtual %(name)s ya existe"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "La m��quina virtual %(name)s no existe"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+"No se puede recuperar la captura de pantalla para la m��quina virtual "
+"detenida %(name)s"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "La imagen ISO remota no est�� soportada por este servidor."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede crear la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede crear la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede recuperar la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr ""
+"La direcci��n de gr��ficos en que hay que estar a la escucha debe ser IPv4 o "
+"IPv6"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr ""
+"Especifique una plantilla a partir de la que se crear�� una m��quina virtual"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede iniciar la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede detener la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede suprimir la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede redenominar la m��quina virtual %(name)s. Detalles: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "El nombre de red debe ser una serie"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "El nombre de red debe ser una serie"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "El usuario '%(users)s' no existe."
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "El usuario '%(groups)s' no existe."
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede detener la m��quina virtual %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "No se puede iniciar la m��quina virtual %(name)s. Detalles: %(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "La interfaz %(iface)s no existe en la m��quina virtual %(name)s"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"La red %(network)s especificada para la m��quina virtual %(name)s no existe"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "El tipo de interfaces de m��quina virtual soportado es de red solamente"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+"El nombre de red para la interfaz de m��quina virtual debe ser una serie"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"Especificada tarjeta de modelo de red no v��lida para la interfaz de m��quina "
+"virtual"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+"Especifique el tipo y la red para a��adir una interfaz de m��quina virtual "
+"nueva"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "La plantilla %(name)s ya existe"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+"La red '%(network)s' especificada para la plantilla %(template)s no existe"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"La agrupaci��n de almacenamiento %(pool)s especificada para la plantilla "
+"%(template)s no existe"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"La agrupaci��n de almacenamiento %(pool)s especificada para la plantilla "
+"%(template)s no est�� activa"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "Par��metro no v��lido '%(param)s' especificado para CDROM."
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+"La red %(network)s especificada para la plantilla %(template)s no est�� activa"
+
+msgid "Template name must be a string"
+msgstr "El nombre de plantilla debe ser una serie"
+
+msgid "Template icon must be a path to the image"
+msgstr "El icono de plantilla debe ser una v��a de acceso a la imagen"
+
+msgid "Template distribution must be a string"
+msgstr "La distribuci��n de plantilla debe ser una serie"
+
+msgid "Template distribution version must be a string"
+msgstr "La versi��n de distribuci��n de plantilla debe ser una serie"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "El n��mero de CPUs debe ser un entero"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "La cantidad de memoria (MB) debe ser un entero mayor que 512"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "El CDROM de plantilla debe ser un archivo ISO local o remoto"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr ""
+"URI de agrupaci��n de almacenamiento no v��lido %(value)s especificado para la "
+"plantilla"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "Especifique una imagen de ISO como CDROM para crear una plantilla"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "Todas las redes para la plantilla deben especificarse en una lista."
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "No se puede crear la plantilla debido a un error: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "No se puede suprimir la plantilla debido a un error: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr "El CDROM de plantilla debe ser un archivo ISO local o remoto"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "La agrupaci��n de almacenamiento %(name)s ya existe"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "La agrupaci��n de almacenamiento %(name)s no existe"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr ""
+"Especifique %(item)s para poder crear la agrupaci��n de almacenamiento "
+"%(name)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "No se puede suprimir la agrupaci��n de almacenamiento activa %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "No se pueden listar agrupaciones de almacenamiento. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede crear la agrupaci��n de almacenamiento %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"No se puede obtener el n��mero de vol��menes de almacenamiento en la "
+"agrupaci��n de almacenamiento %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede activar la agrupaci��n de almacenamiento %(name)s. Detalles: "
+"%(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede desactivar la agrupaci��n de almacenamiento %(name)s. Detalles: "
+"%(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede suprimir la agrupaci��n de almacenamiento %(name)s. Detalles: "
+"%(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"No se puede crear la agrupaci��n de NFS ya que la v��a de acceso de "
+"exportaci��n %(path)s podr��a bloquearse durante el montaje"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"No se puede crear la agrupaci��n de NFS ya que el montaje de la v��a de acceso "
+"de exportaci��n %(path)s ha fallado"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "Tipo de agrupaci��n de almacenamiento no soportado: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "La v��a de acceso de la agrupaci��n de almacenamiento debe ser una serie"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr ""
+"El host de la agrupaci��n de almacenamiento debe ser un IP o nombre de host"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr ""
+"El par��metro de los dispositivos de agrupaci��n de almacenamiento debe ser "
+"una lista"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "El IQN destino de una agrupaci��n de iSCSI debe ser una serie"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+"El puerto de un servidor de almacenamiento remoto debe ser un entero entre 1 "
+"y 65535"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr ""
+"Especifique el nombre y el tipo para crear una agrupaci��n de almacenamiento"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s no es un disco/partici��n. No se ha podido a��adir a la agrupaci��n "
+"%(pool)s."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+"Los discos de par��metro s��lo pueden actualizarse para la agrupaci��n de "
+"almacenamiento l��gico."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "El nombre del adaptador de host SCSI debe ser una serie."
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr ""
+"La agrupaci��n de almacenamiento kimchi_isos est�� reservada para uso interno"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"No se puede activar la agrupaci��n de almacenamiento NFS %(name)s. El "
+"servidor NFS %(server)s est�� fuera de alcance."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"No se puede desactivar la agrupaci��n de almacenamiento NFS %(name)s. El "
+"servidor NFS %(server)s est�� fuera de alcance."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"No se puede desactivar la agrupaci��n %(name)s ya que est�� asociada con "
+"algunas plantillas"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+"No se puede suprimir la agrupaci��n %(name)s ya que est�� asociada con algunas "
+"plantillas"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"Un grupo de vol��menes denominado '%(name)s' ya existe. Elija otro nombre "
+"para crear la agrupaci��n l��gica."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"No se puede actualizar la base de datos con la informaci��n de exploraci��n "
+"profunda debido a un error: %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "El volumen de almacenamiento %(name)s ya existe"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr ""
+"El volumen de almacenamiento %(name)s no existe en la agrupaci��n de "
+"almacenamiento %(pool)s"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr ""
+"Especifique %(item)s para poder crear el volumen de almacenamiento %(volume)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"No se pueden listar los vol��menes de almacenamiento porque la agrupaci��n de "
+"almacenamiento %(pool)s no est�� activa"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"No se puede crear el volumen de almacenamiento %(name)s en la agrupaci��n de "
+"almacenamiento %(pool)s. Detalles: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"No se pueden listar vol��menes de almacenamiento en la agrupaci��n de "
+"almacenamiento %(pool)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr ""
+"No se pueden borrar los vol��menes de almacenamiento %(name)s. Detalles: "
+"%(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede suprimir el volumen de almacenamiento %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede redimensionar el volumen de almacenamiento %(name)s. Detalles: "
+"%(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+"El tipo de almacenamiento %(type)s no da soporte a crear y suprimir vol��menes"
+
+msgid "Storage volume name must be a string"
+msgstr "El nombre de volumen de almacenamiento debe ser una serie"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "La asignaci��n de volumen de almacenamiento debe ser un n��mero entero"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "El volumen de almacenamiento requiere un nombre de volumen"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"No se puede actualizar la base de datos con la informaci��n de volumen de "
+"almacenamiento debido a un error: %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "La interfaz %(name)s no existe"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "La red %(name)s ya existe"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "La red %(name)s no existe"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"La subred %(subnet)s especificada para la red %(network)s no es v��lida."
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr "Especifique una interfaz de red para crear una red puenteada %(name)s"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "No se puede suprimir la red activa %(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"La interfaz %(iface)s especificada para la red %(network)s ya est�� en uso"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "La interfaz debe ser dispositivo de puente, enlazado o NIC simple."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "No se puede crear la red %(name)s. Detalles: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "No se puede encontrar una direcci��n IP libre para la red '%(name)s'"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr "La interfaz %(iface)s ya existe"
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "Los tipos de red soportados son aislada, NAT y puente"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"La subred de red debe ser una serie con direcci��n IP y prefijo o m��scara de "
+"red"
+
+msgid "Network interface must be a string"
+msgstr "La interfaz de red debe ser una serie"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "El ID de VLAN de red debe ser un entero entre 1 y 4094"
+
+msgid "Specify name and type to create a Network"
+msgstr "Especifique el nombre y el tipo para crear una red"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+"No se puede suprimir la red %(name)s. Hay algunas m��quinas virtuales %(vms)s "
+"y/o plantillas enlazadas a esta red."
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+"No se puede desactivar la red %(name)s. Hay algunas m��quinas virtuales "
+"%(vms)s y/o plantillas enlazadas a esta red."
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+"El dispositivo de puente %(name)s no puede ser el dispositivo de conexi��n "
+"troncal de una VLAN."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "No se puede activar la interfaz %(iface)s: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"No se puede activar la interfaz %(iface)s. Compruebe el estado del enlace "
+"f��sico."
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "El informe de depuraci��n %(name)s no existe"
+
+msgid "Debug report tool not found in system"
+msgstr "Herramienta de informes de depuraci��n no encontrada en el sistema"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr ""
+"No se puede crear el informe de depuraci��n %(name)s. Detalles: %(err)s."
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr ""
+"No se puede generar el informe de depuraci��n %(name)s. Detalles: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"Un grupo de vol��menes denominado '%(name)s' ya existe. Elija otro nombre "
+"para crear la agrupaci��n l��gica."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "Kimchi no utilizaba el servidor de almacenamiento %(server)s"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "Distro '%(name)s' no existe"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "La partici��n %(name)s no existe en el host"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+"No se puede concluir la m��quina host ya que hay m��quinas virtuales en "
+"ejecuci��n"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+"No se puede rearrancar la m��quina host ya que hay m��quinas virtuales en "
+"ejecuci��n"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "No se ha encontrado el dispositivo de nodo '%(name)s'"
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "No hay paquetes marcados para su actualizaci��n"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "El paquete %(name)s no est�� marcado para su actualizaci��n."
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+"Se ha producido un error al obtener paquetes marcados para su actualizaci��n. "
+"Detalles: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "No hay ning��n gestor de paquetes compatible para este sistema."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "URI %(uri)s no v��lido"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "Tipo de almacenamiento no v��lido. Tipos soportados: 'cdrom'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr ""
+"Se ha producido un error al crear el nuevo dispositivo de almacenamiento: "
+"%(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr ""
+"Se ha producido un error al actualizar el dispositivo de almacenamiento: "
+"%(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr ""
+"Se ha producido un error al eliminar el dispositivo de almacenamiento: "
+"%(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+"Especifique el tipo y la v��a de acceso para a��adir un disco de m��quina "
+"virtual nuevo"
+
+msgid "Specify path to update virtual machine disk"
+msgstr ""
+"Especifique la v��a de acceso para actualizar el disco de m��quina virtual"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+"Especifique el tipo y la v��a de acceso para a��adir un disco de m��quina "
+"virtual nuevo"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "El ID de repositorio YUM debe ser una serie de una sola palabra."
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "El URL de repositorio debe ser http://, ftp:// o archivo:// URL."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"La configuraci��n de repositorio es un diccionario con valores espec��ficos "
+"seg��n el tipo de repositorio."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "El repositorio de Distribuci��n a DEB debe ser una serie"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "El repositorio de Componentes a DEB debe estar listado en una matriz"
+
+msgid "Components to DEB repository must be a string"
+msgstr "El repositorio de Componentes a DEB debe ser una serie"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "El nombre del repositorio YUM debe ser una serie."
+
+msgid "GPG check must be a boolean value."
+msgstr "La comprobaci��n de GPG debe ser un valor booleano."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "La clave GPG debe ser un URL que apunta al archivo blindado por ASCII."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "No se ha podido actualizar el repositorio %(repo_id)s."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "El repositorio %(repo_id)s no existe."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr ""
+"La herramienta de gesti��n de repositorio no se ha reconocido para su sistema."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "El repositorio %(repo_id)s ya est�� habilitado."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "El repositorio %(repo_id)s ya est�� inhabilitado."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "No se ha podido eliminar el repositorio %(repo_id)s."
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+"No se ha podido grabar el archivo de configuraci��n del repositorio "
+"%(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+"Especifique la distribuci��n del repositorio para crear un repositorio de DEB."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "No se ha podido habilitar el repositorio %(repo_id)s."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "No se ha podido inhabilitar el repositorio %(repo_id)s."
+
+msgid "YUM Repository ID already exists"
+msgstr "El ID de repositorio de YUM ya existe"
+
+msgid "YUM Repository name must be a string"
+msgstr "El nombre del repositorio de YUM debe ser una serie"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "No se pueden listar repositorios. Detalles: '%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "No se puede recuperar informaci��n del repositorio. Detalles: '%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "No se puede a��adir el repositorio. Detalles: '%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "No se puede eliminar el repositorio. Detalles: '%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "C��DIGO DE ERROR"
+
+msgid "REASON"
+msgstr "RAZ��N"
+
+msgid "STACK"
+msgstr "PILA"
+
+msgid "Go to Homepage"
+msgstr "Ir a la p��gina inicial"
+
+msgid "Create a New Virtual Machine"
+msgstr "Crear una nueva m��quina virtual"
+
+msgid "Virtual Machine Name"
+msgstr "Nombre de m��quina virtual"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"El nombre que se utiliza para identificar la m��quina virtual. Si se omite, "
+"se elegir�� un nombre bas��ndose en la plantilla utilizada."
+
+msgid "Template"
+msgstr "Plantilla"
+
+msgid "Please create a template first."
+msgstr "Cree una plantilla primero."
+
+msgid "Create a Template"
+msgstr "Crear una plantilla"
+
+msgid "Please choose a template."
+msgstr "Elija una plantilla."
+
+msgid "OS"
+msgstr "SO"
+
+msgid "OS Version"
+msgstr "Versi��n del SO"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "Memoria"
+
+msgid "Create"
+msgstr "Crear"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgid "Edit Guest"
+msgstr "Editar invitado"
+
+msgid "General"
+msgstr "General"
+
+msgid "Storage"
+msgstr "Almacenamiento"
+
+msgid "Interface"
+msgstr "Interfaz"
+
+msgid "Permission"
+msgstr "Versi��n"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "Nombre"
+
+msgid "CPUs"
+msgstr "CPUs"
+
+msgid "Memory (MB)"
+msgstr "Memoria"
+
+msgid "Icon"
+msgstr "Icono"
+
+msgid "Device"
+msgstr "Nombre de dispositivo"
+
+msgid "Path"
+msgstr "V��a de acceso NFS"
+
+msgid "Network"
+msgstr "Red"
+
+msgid "Type"
+msgstr "Tipo"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "Todo"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "Proveedor"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "Guardar"
+
+msgid "Replace"
+msgstr "Sustituir"
+
+msgid "Detach"
+msgstr "Desconectar"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "Iniciar"
+
+msgid "Reset"
+msgstr "Restablecer"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr "Acciones"
+
+msgid "Connect"
+msgstr "Conectar"
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr "Editar"
+
+msgid "Shut Down"
+msgstr "Concluir"
+
+msgid "Delete"
+msgstr "Suprimir"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "E/S de disco"
+
+msgid "Network I/O"
+msgstr "E/S de red"
+
+msgid "Livetile"
+msgstr "Livetile"
+
+msgid "No guests found."
+msgstr "No se ha encontrado invitados."
+
+msgid "Add a Storage Device to VM"
+msgstr "A��adir un dispositivo de almacenamiento a VM"
+
+msgid "Device Type"
+msgstr "Tipo de dispositivo"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "El tipo de dispositivo. Actualmente s��lo est�� soportado \"cdrom\"."
+
+msgid "Storage Pool"
+msgstr "Agrupaci��n de almacenamiento"
+
+msgid "Storage pool which volume located in"
+msgstr "La v��a de acceso de la agrupaci��n de almacenamiento debe ser una serie"
+
+msgid "Storage Volume"
+msgstr "Nombre de agrupaci��n de almacenamiento"
+
+msgid "Storage volume to be attached"
+msgstr "El nombre de volumen de almacenamiento debe ser una serie"
+
+msgid "File Path"
+msgstr "V��a de acceso de archivo"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "La v��a de acceso del archivo ISO en el servidor para el CDROM."
+
+msgid "Attach"
+msgstr "Conectar"
+
+msgid "Shut down"
+msgstr "Concluir"
+
+msgid "Restart"
+msgstr "Reiniciar"
+
+msgid "Basic Information"
+msgstr "Informaci��n b��sica"
+
+msgid "OS Distro"
+msgstr "Distro de SO"
+
+msgid "OS Code Name"
+msgstr "Nombre de c��digo de SO"
+
+msgid "Processor"
+msgstr "Procesador"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "Estad��sticas del sistema"
+
+msgid "Software Updates"
+msgstr "Actualizaciones de software"
+
+msgid "Update Progress"
+msgstr "Actualizar progreso"
+
+msgid "Repositories"
+msgstr "Repositorios"
+
+msgid "Debug Reports"
+msgstr "Informes de depuraci��n"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+"El nombre de usuario o contrase��a que ha especificado es incorrecto. Por "
+"favor, vuelva a intentarlo."
+
+msgid "This field is required."
+msgstr "Este campo es obligatorio."
+
+msgid "Log in"
+msgstr "Iniciar sesi��n"
+
+msgid "Logging in..."
+msgstr "Iniciando sesi��n..."
+
+msgid "Host"
+msgstr "Host"
+
+msgid "Guests"
+msgstr "Invitados"
+
+msgid "Templates"
+msgstr "Plantillas"
+
+msgid "Failed to get application configuration"
+msgstr "No se ha podido obtener la configuraci��n de la aplicaci��n"
+
+msgid "This is not a valid Linux path"
+msgstr "No es una v��a de acceso de Linux v��lida"
+
+msgid "This is not a valid URL."
+msgstr "No es un URL v��lido."
+
+msgid "No such data available."
+msgstr "No hay datos de ese tipo disponibles."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"No se puede contactar con el sistema host, Verifique que el sistema host "
+"est�� activo y que tiene conectividad de red con ��l. Respuesta de solicitud "
+"HTTP %1. "
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "Confirmaci��n de supresi��n"
+
+msgid "OK"
+msgstr "Aceptar"
+
+msgid "Confirm"
+msgstr "Confirmar"
+
+msgid "Warning"
+msgstr "Aviso"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "Cargando..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "Reintentar"
+
+msgid "Detailed message:"
+msgstr "Mensaje detallado:"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "No es un archivo ISO v��lido."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "Tardar�� mucho tiempo. ��Desea continuar?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "Esto suprimir�� permanentemente la plantilla. ��Desea continuar?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"No se puede concluir el sistema ya que hay algunas m��quinas virtuales en "
+"ejecuci��n."
+
+msgid "Max:"
+msgstr "M��x.:"
+
+msgid "Utilization"
+msgstr "Utilizaci��n"
+
+msgid "Available"
+msgstr "Disponible"
+
+msgid "Read Rate"
+msgstr "Velocidad de lectura"
+
+msgid "Write Rate"
+msgstr "Velocidad de escritura"
+
+msgid "Received"
+msgstr "Recibido"
+
+msgid "Sent"
+msgstr "Enviado"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"Concluir o reiniciar el host har�� que se pierda el trabajo no guardado. "
+"��Desea continuar para concluir/reiniciar?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"El repositorio se eliminar�� de forma permanente y no se puede recuperar. "
+"��Desea continuar?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "URL base"
+
+msgid "Is Mirror"
+msgstr "Es duplicado"
+
+msgid "URL Args"
+msgstr "Args de URL"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "GPG Check"
+msgstr "Comprobaci��n GPG"
+
+msgid "GPG Key"
+msgstr "Clave GPG"
+
+msgid "Add"
+msgstr "A��adir"
+
+msgid "Remove"
+msgstr "Eliminar"
+
+msgid "Enable"
+msgstr "Habilitar"
+
+msgid "Disable"
+msgstr "Inhabilitar"
+
+msgid "Package Name"
+msgstr "Nombre de paquete"
+
+msgid "Version"
+msgstr "Versi��n"
+
+msgid "Architecture"
+msgstr "Arquitectura"
+
+msgid "Repository"
+msgstr "Repositorio"
+
+msgid "Update All"
+msgstr "Actualizar todo"
+
+msgid "Updating..."
+msgstr "Actualizando..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "No se han podido actualizar paquetes."
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"El informe de depuraci��n se eliminar�� permanentemente y no se puede "
+"recuperar. ��Desea continuar?"
+
+msgid "Generated Time"
+msgstr "Tiempo generado"
+
+msgid "Generate"
+msgstr "Generar"
+
+msgid "Generating..."
+msgstr "Generando..."
+
+msgid "Rename"
+msgstr "Redenominar"
+
+msgid "Download"
+msgstr "Descargar"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+"El nombre de informe debe contener s��lo letras, d��gitos y/o gui��n ('-')."
+
+msgid "Pending..."
+msgstr "Cargando..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"Esto suprimir�� la m��quina virtual y sus discos virtuales. Esta operaci��n no "
+"puede deshacerse. ��Desea continuar?"
+
+msgid "Power off Confirmation"
+msgstr "Confirmaci��n de supresi��n"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "Confirmaci��n de supresi��n"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "Confirmaci��n de supresi��n"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "Esto suprimir�� permanentemente la plantilla. ��Desea continuar?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"Este CDROM se desconectar�� de forma permanente pero puede volver a "
+"conectarlo. ��Desea continuar para desconectarlo?"
+
+msgid "Attaching..."
+msgstr "Conectando..."
+
+msgid "Replacing..."
+msgstr "Sustituyendo..."
+
+msgid "Successfully attached!"
+msgstr "��Conectado correctamente!"
+
+msgid "Successfully replaced!"
+msgstr "��Sustituido correctamente!"
+
+msgid "Successfully detached!"
+msgstr "��Desconectado correctamente!"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "El ID de VLAN debe estar entre 1 y 4094."
+
+msgid "unavailable"
+msgstr "no disponible"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"Esta acci��n interrumpir�� la conectividad de red para cualquier m��quina "
+"virtual que dependa de esta red."
+
+msgid "Create a network"
+msgstr "Crear una red"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Esta agrupaci��n de almacenamiento no es persistente. En lugar de desactivar, "
+"esta acci��n la suprimir�� permanentemente. ��Desea continuar?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr ""
+"Esto suprimir�� permanentemente la agrupaci��n de almacenamiento. ��Desea "
+"continuar?"
+
+msgid "This storage pool is empty."
+msgstr "Esta agrupaci��n de almacenamiento est�� vac��a."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"Dar�� formato al disco y se perder��n los datos que tenga en ��l. ��Est�� seguro "
+"de que desea continuar? "
+
+msgid "SCSI Fibre Channel"
+msgstr "Canal de fibra de SCSI"
+
+msgid "No SCSI adapters found."
+msgstr "No se han encontrado adaptadores SCSI."
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "El nombre de la agrupaci��n de almacenamiento no puede estar en blanco."
+
+msgid "The storage pool path can not be blank."
+msgstr ""
+"La v��a de acceso de la agrupaci��n de almacenamiento no puede estar en blanco."
+
+msgid "NFS server mount path can not be blank."
+msgstr "La v��a de acceso de montaje del servidor NFS no puede estar en blanco."
+
+msgid "Invalid NFS mount path."
+msgstr "V��a de acceso de montaje de NFS no v��lida."
+
+msgid "No logical device selected."
+msgstr "No se ha seleccionado ning��n dispositivo l��gico."
+
+msgid "The iSCSI target can not be blank."
+msgstr "El destino iSCSI no puede estar en blanco."
+
+msgid "Server name can not be blank."
+msgstr "El nombre de servidor no puede estar en blanco."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "Buscando particiones disponibles..."
+
+msgid "No available partitions found."
+msgstr "No se han encontrado particiones disponibles."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Esta agrupaci��n de almacenamiento no es persistente. En lugar de desactivar, "
+"esta acci��n la suprimir�� permanentemente. ��Desea continuar?"
+
+msgid "Unable to retrieve partitions information."
+msgstr "No se puede recuperar informaci��n del repositorio. Detalles: '%(err)s'"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "El nombre de la agrupaci��n de almacenamiento no puede estar en blanco."
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "Nombre de red"
+
+msgid "State"
+msgstr "Estado"
+
+msgid "Network Type"
+msgstr "Tipo de red"
+
+msgid "Address Space"
+msgstr "Espacio de direcciones"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr ""
+"Nombre de agrupaci��n de almacenamiento no v��lido. No debe contener '/'."
+
+msgid "Isolated: no external network connection"
+msgstr "Aislado: no hay conexi��n de red f��sica"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: conexi��n de red f��sica saliente solamente"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+"Puenteado: Las m��quinas virtuales est��n conectadas a la red f��sica "
+"directamente"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "Destino:"
+
+msgid "Enable VLAN"
+msgstr "Habilitar VLAN:"
+
+msgid "VLAN ID"
+msgstr "ID de VLAN:"
+
+msgid "Stop"
+msgstr "Detener"
+
+msgid "Generate a New Debug Report"
+msgstr "Generar un Informe de depuraci��n nuevo"
+
+msgid "Report Name"
+msgstr "Nombre de informe"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"El nombre que se utiliza para identificar el informe. Si se omite, se "
+"elegir�� un nombre bas��ndose en la hora actual. El nombre puede contener: "
+"letras, d��gitos y gui��n (\"-\")."
+
+msgid "Rename a Debug Report"
+msgstr "Generar un Informe de depuraci��n nuevo"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"El nombre que se utiliza para identificar el informe. Si se omite, se "
+"elegir�� un nombre bas��ndose en la hora actual. El nombre puede contener: "
+"letras, d��gitos y gui��n (\"-\")."
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr "A��adir un repositorio"
+
+msgid "Identifier"
+msgstr "Identificador"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "Identificador exclusivo de una sola palabra para el repositorio."
+
+msgid "Textual name for the repository."
+msgstr "Nombre textual para el repositorio."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "Campo obligatorio"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "URL al repositorio. Los protocolos soportados son http, ftp y archivo."
+
+msgid "Repository is a mirror"
+msgstr "El repositorio es un duplicado."
+
+msgid "Distribution"
+msgstr "Distribuci��n"
+
+msgid "Distribution of the DEB repository."
+msgstr "Distribuci��n del repositorio DEB."
+
+msgid "Components"
+msgstr "Componentes"
+
+msgid "List of components in DEB repository."
+msgstr "Lista de componentes en el repositorio DEB."
+
+msgid "Edit Repository"
+msgstr "Editar repositorio"
+
+msgid "Mirror List URL"
+msgstr "URL de lista duplicada"
+
+msgid "Yes"
+msgstr "S��"
+
+msgid "No"
+msgstr "No"
+
+msgid "Capacity"
+msgstr "Capacidad"
+
+msgid "Allocated"
+msgstr "Asignado"
+
+msgid "Location"
+msgstr "Ubicaci��n"
+
+msgid "Device path"
+msgstr "V��a de acceso del dispositivo"
+
+msgid "active"
+msgstr "activo"
+
+msgid "inactive"
+msgstr "inactivo"
+
+msgid "Deactivate"
+msgstr "Desactivar"
+
+msgid "Activate"
+msgstr "Activar"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "No definir"
+
+msgid "Format"
+msgstr "Formato:"
+
+msgid "Allocation"
+msgstr "Asignado:"
+
+msgid "Define a New Storage Pool"
+msgstr "Definir una agrupaci��n de almacenamiento nueva"
+
+msgid "Storage Pool Name"
+msgstr "Nombre de agrupaci��n de almacenamiento"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+"El nombre que se utiliza para identificar las agrupaciones de almacenamiento "
+"y no debe estar vac��o."
+
+msgid "Storage Pool Type"
+msgstr "Tipo de agrupaci��n de almacenamiento"
+
+msgid "Storage Path"
+msgstr "V��a de acceso de almacenamiento"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+"La v��a de acceso de la agrupaci��n de almacenamiento. Cada agrupaci��n de "
+"almacenamiento debe tener una v��a de acceso exclusiva."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr "Kimchi intentar�� crear el directorio cuando no existe en el sistema."
+
+msgid "NFS Server IP"
+msgstr "IP de Servidor NFS"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"IP o nombre de host de servidor NFS. Puede especificarse o elegirse del "
+"historial."
+
+msgid "NFS Path"
+msgstr "V��a de acceso NFS"
+
+msgid "The NFS exported path on NFS server."
+msgstr "La v��a de acceso exportada de NFS en el servidor NFS."
+
+msgid "iSCSI Server"
+msgstr "Servidor iSCSI"
+
+msgid "Server"
+msgstr "Servidor"
+
+msgid "Port"
+msgstr "Puerto"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "IP o nombre de host de servidor iSCSI. No debe estar vac��o."
+
+msgid "Target"
+msgstr "Destino"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "El destino iSCSI en el servidor iSCSI"
+
+msgid "Add iSCSI Authentication"
+msgstr "A��adir Autenticaci��n iSCSI"
+
+msgid "iSCSI Authentication"
+msgstr "Autenticaci��n iSCSI"
+
+msgid "User Name"
+msgstr "Nombre de usuario"
+
+msgid "Password"
+msgstr "Contrase��a"
+
+msgid "SCSI Adapter"
+msgstr "Adaptador SCSI"
+
+msgid "Please, wait..."
+msgstr "Por favor, espere..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "A��adir plantilla"
+
+msgid "Where is the source media for this template? "
+msgstr "��D��nde est�� el soporte de origen para esta plantilla?"
+
+msgid "Local ISO Image"
+msgstr "Imagen ISO local"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "Imagen ISO remota"
+
+msgid "Search ISOs"
+msgstr "Buscar ISOs"
+
+msgid "The following ISOs are available:"
+msgstr "Las siguientes ISO est��n disponibles:"
+
+msgid "OS: "
+msgstr "SO: "
+
+msgid "Version: "
+msgstr "Versi��n: "
+
+msgid "Size: "
+msgstr "Tama��o: "
+
+msgid "Search more ISOs"
+msgstr "Buscar m��s ISO"
+
+msgid "Create Templates from Selected ISO"
+msgstr "Crear plantillas a partir de ISO seleccionadas"
+
+msgid "I want to use a specific ISO file"
+msgstr "Deseo utilizar un archivo ISO espec��fico"
+
+msgid "Loading default remote ISOs ..."
+msgstr "Cargando ISO remotas predeterminadas ..."
+
+msgid "Arch: "
+msgstr "Arch: "
+
+msgid "I want to use a custom URL"
+msgstr "Deseo utilizar un URL personalizado"
+
+msgid "Edit Template"
+msgstr "Editar plantilla"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "Gr��ficos"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "N��mero de CPU"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "No se han encontrado plantillas."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "Suprimir no est�� permitido para %(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s no implementa m��todo de actualizaci��n"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "Crear no est�� permitido para %(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "No se puede analizar la solicitud JSON"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "Esta API s��lo da soporte a JSON"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "El almac��n de datos no se ha iniciado en el objeto de modelo."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "No se puede iniciar la tarea debido a un error: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "La autenticaci��n ha fallado para el usuario '%(username)s'. [C��digo de "
+#~ "error: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "No tiene autorizaci��n para acceder a Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Especifique %(item)s para iniciar la sesi��n en Kimchi"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "No se puede encontrar %(item)s en el almac��n de datos"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "Tiempo de espera excedido al ejecutar el mandato '%(cmd)s' despu��s de "
+#~ "%(seconds)s segundos"
+
+#~ msgid "Help"
+#~ msgstr "Ayuda"
+
+#~ msgid "About"
+#~ msgstr "Acerca de"
+
+#~ msgid "Log out"
+#~ msgstr "Finalizar sesi��n"
+
+#~ msgid "Version:"
+#~ msgstr "Versi��n:"
diff --git a/plugins/gingerbase/po/fr_FR.po b/plugins/gingerbase/po/fr_FR.po
new file mode 100644
index 0000000..6c9dd09
--- /dev/null
+++ b/plugins/gingerbase/po/fr_FR.po
@@ -0,0 +1,2338 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2014-08-27 21:30+0000\n"
+"Last-Translator: BobSynfig\n"
+"Language-Team: French (http://www.transifex.com/projects/p/kimchi/language/"
+"fr/)\n"
+"Language: fr_FR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr "Param��tre inconnu %(value)s"
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr "\"_cap\" sp��cifi��e inconnue"
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr "\"_passthrough\" doit ��tre \"true\" ou \"false\""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr "\"_passthrough_affected_by\" doit ��tre un nom de p��riph��rique"
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "Erreur durant l'acc��s aux p��riph��riques de bloc. D��tails: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr ""
+"Erreur durant l'obtention de l'information sur le p��riph��rique de bloc %"
+"(device)s."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "Impossible de trouver le fichier de distro: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"Impossible de parser le fichier de distro: %(filename)s. Veuillez vous "
+"assurer qu'il s'agit d'un fichier JSON."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+"Impossible de se connecter �� l'h��te cible iSCSI %(portal)s. D��tails: %(err)s "
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "Impossible de se connecter �� l'h��te iSCSI %(host)s cible %(target)s"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr "Impossible de trouver le fichier ISO %(filename)s"
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "Le fichier ISO %(filename)s n'est pas bootable"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr ""
+"Le fichier ISO %(filename)s n'a pas d'enregistrement de boot El Torito valide"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "Entr��e de validation El Torito invalide dans l'ISO %(filename)s"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "Indicateur de boot El Torito invalide dans l'ISO %(filename)s"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+"Type de volume inattendu pour le volume primaire dans l'ISO %(filename)s"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+"Mauvais format durant la lecture du descripteur de volume dans l'ISO %"
+"(filename)s"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the '%"
+"(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"L'hyperviseur n'a pas la permission d'utiliser cet ISO %(filename)s. "
+"Veuillez consid��rer de le d��placer sous /var/lib/libvirt,, ou de d��finir la "
+"permission de recherche sur les listes de contrpole d'acc��s fichier pour "
+"l'utilisateur '%(user)s' si possible, ou ajouter le '%(user)s' au groupe de "
+"chemins d'ISO, ou (non recommand��) 'chmod -R o+x 'chemin_vers_iso'.D��tails: "
+"%(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+"Une erreur est survenue lors de la d��tection de l'information d'OS de "
+"l'image."
+
+msgid "No OS information found in given image."
+msgstr "Aucune information d'OS trouv��e sur l'image donn��e."
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr "Impossible de lire le fichier image %(filename)s"
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+"Le fichier image doit ��tre un fichier existant sur le syst��me. %(filename)s "
+"n'est pas une donn��e valide."
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "La machine virtuelle %(name)s existe d��j��"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "La machine virtuelle %(name)s n'existe pas"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+"Impossible de renommer la machine virtuelle %(name)s. Le nom %(new_name)s "
+"est d��ja utilis�� ou la machine virtuelle n'est pas ��teinte."
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+"Impossible de r��cup��rer une capture d'��cran pour la machine virtuelle "
+"stopp��e %(name)s"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "L'image ISO distante n'est pas support��e par le serveur."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr "Copie d'��cran non support��e par la machine virtuelle %(name)s"
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossible de cr��er la machine virtuelle %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de mettre �� jour la machine virtuelle %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de r��cup��rer la machine virtuelle %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr "Impossible de se connecter �� la machine virtuelle ��teinte %(name)s."
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr "L'adresse d'��coute du graphics doit ��tre IPv4 ou IPv6"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "Sp��cifier un mod��le �� partir duquel cr��er une machine virtuelle"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossible de d��marrer la machine virtuelle %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de mettre hors tension la machine virtuelle %(name)s. D��tails: %"
+"(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de supprimer la machine virtuelle %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de r��initrialiser la machine virtuelle %(name)s. D��tails: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "Le nom d'utilisateur doit ��tre une cha��ne de caract��res"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "Le nom de groupe doit ��tre une cha��ne de caract��res"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "Le(s) utilisateur(s) '%(users)s' n'existe(nt) pas"
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "Le(s) groupe(s) '%(groups)s' n'existe(nt) pas"
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossible d'��teindre la machine virtuelle %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible d'acc��der aux metadata de la machine virtuelle %(name)s. D��tails: "
+"%(err)s"
+
+msgid "The guest console password must be a string."
+msgstr "Le mot de passe de console invit��e doit ��tre une cha��ne de caract��res."
+
+msgid "The life time for the guest console password must be a number."
+msgstr "La dur��e de vie du mot de passe de console invit��e doit ��tre un nombre"
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+"La machine virtuelle %(vmid)s ne peut pas contenir le p��riph��rique h��te "
+"directement assign�� %(dev_name)s."
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+"The p��riph��rique h��te %(dev_name)s ne peut ��tre directement assign�� �� la "
+"machine virtuelle"
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr "\"name\" doit ��tre un nom de p��riph��rique"
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "L'interface %(iface)s n'existe pas dans la machine virtuelle %(name)s"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"Le r��seau %(network)s sp��cifi�� pour la machine virtuelle %(name)s n'existe "
+"pas"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr ""
+"Le type d'interface de machine virtuelle support�� est r��seau uniquement"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+"Le nom de r��seau pour l'interface de la machine virtuelle doit ��tre une "
+"cha��ne de caract��res"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"Mod��le de carte r��seau sp��cifi�� invalide pour l'interface de machine "
+"virtuelle"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+"Sp��cifier le type et le r��seau �� ajouter �� la nouvelle interface de la "
+"machine virtuelle"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "Le mod��le %(name)s existe d��j��"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+"Le r��seau '%(network)s' sp��cifi�� pour le mod��le %(template)s n'existe pas"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"Le pool de stockage sp��cifi�� %(pool)s pour le mod��le %(template)s n'existe "
+"pas"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"Le pool de stockage sp��cifi�� %(pool)s pour le mod��le %(template)s n'est pas "
+"actif"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "Param��tres '%(param)s' sp��cifi�� invalide pour le CDROM"
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+"Le r��seau %(network)s sp��cifi�� pour le mod��le %(template)s n'est pas actif"
+
+msgid "Template name must be a string"
+msgstr "Le mod��le de nom doit ��tre une cha��ne de caract��res"
+
+msgid "Template icon must be a path to the image"
+msgstr "Le mod��le d'icone doit ��tre un chemin vers l'image"
+
+msgid "Template distribution must be a string"
+msgstr "Le mod��le de distribution doit ��tre une cha��ne de caract��res"
+
+msgid "Template distribution version must be a string"
+msgstr ""
+"Le mod��le de version de distribution doit ��tre une cha��ne de caract��res"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "Le nombre de CPU doit ��tre un nombre entier sup��rieur �� 0"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "La quantit�� de m��moire (Mo) doit ��tre un nombre entier sup��rieur �� 512"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "Le CDROM mod��le doit ��tre un fichier ISO local ou distant"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "URI %(value)s du pool de stockage sp��cifi��e invalide pour le mod��le"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr ""
+"Sp��cifiez une image ISO comme CDROM ou une image de base pour cr��er un mod��le"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "Tous les r��seaux pour le mod��le doivent ��tre sp��cifi��s dans une liste"
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr "Le volume %(volume)s n'est pas dans le pool de stockage %(pool)s"
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "Impossible de cr��er le mod��le �� cause de l'erreur: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "Impossilbe de supprimer le mod��le �� cause de l'erreur: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr "La taille de disque doit ��tre un entier sup��rieur �� 1Go."
+
+msgid "Template base image must be a valid local image file"
+msgstr "L'image de base de mod��le doit petre un fichier image local valide"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr "Ne peut identifier le format de l'image de base %(path)s"
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+"Dans la topologie de CPU, chaque ��l��ment doit ��tre un entier strictement "
+"positif."
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "Le pool de stockage %(name)s existe d��j��"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "Le pool de stockage %(name)s n'existe pas"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "Sp��cifier %(item)s afin de cr��er le pool de stockage %(name)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "Impossible de supprimer le pool de stockage actif %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "Impossible de lister les pools de stockage. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "Impossilble de cr��er le pool de stockage %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: %"
+"(err)s"
+msgstr ""
+"Impossible d'obtenir le nombre de volumes de stockage dans le pool de "
+"stockage%(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "Impossible d'activer le pool de stockage %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de d��sactiver le pool de stockage %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de supprimer le pool de stockage %(name)s. D��tails: %(err)s "
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"Impossible de cr��er le Pool NFS du fait que le chemin d'export %(path)s "
+"pourrait se bloquer durant le montage"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"Impossible de cr��er le pool NFS du fait que le montage du chemin d'export %"
+"(path)s a ��chou��"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "Type de pool de stockage non support��: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+"Les types de pool de stockage support��s sont: dir, netfs, logical, iscsi, "
+"isci et kimchi-iso"
+
+msgid "Storage pool path must be a string"
+msgstr "Le chemin du pool de stockage doit ��tre une cha��ne de caract��res"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "L'h��te du pool de stockage doit ��tre une IP ou un nom d'h��te"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "Le param��tre de p��riph��rique de pool de stockage doit ��tre une list"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "La cible IQN d'un pool iSCSI doit ��tre une cha��ne de caract��res"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+"Le port d'un serveur de stockage distant doit ��tre un nombre entier entre 1 "
+"et 65535"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+"Le nom d'utilisateur de la cible iSCSI doit ��tre une cha��ne de caract��res"
+
+msgid "iSCSI target password must be a string"
+msgstr "Le mot de passe de la cible iSCSI doit ��tre une cha��ne de caract��res"
+
+msgid "Specify name and type to create a storage pool"
+msgstr "Sp��cifier un nom et un type pour cr��er un pool de stockage"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool %(pool)"
+"s."
+msgstr ""
+"%(disk)s n'est pas un(e) disque/partition valide. N'a pu l'ajouter au pool %"
+"(pool)s."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr "Impossible d'agrandir le pool logique %(pool)s. D��tails: %(err)s"
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+"Les disques en param��tre peuvent seulement ��tre mis �� jour pour un pool de "
+"stockage logique."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "Le nom d'adaptateur de l'h��te SCSI doit ��tre une chapine de caract��res"
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "Le pool de stockage kimchi_isos est r��serv�� �� un usage interne"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"Impossible d'activer le pool de stockage NFS%(name)s. Le serveur NFS %"
+"(server)s n'est pas joignable."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"Impossible de d��sactiver le pool de stockage NFS%(name)s. Le serveur NFS %"
+"(server)s n'est pas joignable."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"Impossible de d��sactiver le pool %(name)s du fait qu'il est associ�� �� des "
+"mod��les"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+"Impossible de supprimer le pool %(name)s du fait qu'il est associ�� �� des "
+"mod��les"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"Un groupe de volume appel�� '%(name)s' existe d��j��. Veuillez choisir un autre "
+"nom pour cr��er le pool logique."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"Impossible de mettre �� jour la base de donn��es avec les informations de scan "
+"profond �� cause de l'erreur: %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "Le volume de stockage %(name)s existe d��j��"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr ""
+"Le volume de stockage %(name)s n'existe pas dans le pool de stockage %(pool)s"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+"Impossible de cr��er le volume de stockage %(volume)s car le pool de stockage "
+"%(pool)s n'est pas actif"
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "Sp��cifier %(item)s afin de cr��er le volume de stockage %(volume)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"Impossible de lister les volumes de stockage car le pool de stockage %(pool)"
+"s n'est pas actif"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: %"
+"(err)s"
+msgstr ""
+"Impossible de cr��er le volume de stockage %(name)s dans le pool de stockage %"
+"(pool)s. D��tails: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"Impossible de lister les volumes de stockage dans le pool de stockage %(pool)"
+"s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "Impossible de wiper les volumes de stockage %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de supprimer le volume de stockage %(name)s. D��tails: %(err)s "
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de redimensionner le volume de stockage %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+"Le type de stockage %(type)s ne supporte pas ni la cr��ation ni la "
+"suppression de volume"
+
+msgid "Storage volume name must be a string"
+msgstr "Le nom de volume de stockage doit ��tre une cha��ne de caract��res"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "L'allocation de volume de stockage doit ��tre une nombre entier"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "Le volume de stockage requiert un nom de volume"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"Impossible de mettre �� jour la base de donn��es avec les informations du "
+"volume de stockage �� cause de l'erreur: %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr "Seulement un seul des param��tre %(param)s peut ��tre sp��cifi��"
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr "La cr��ation de volume avec %(param)s n'est pas support��e"
+
+msgid "Storage volume capacity must be an integer number."
+msgstr "La capacit�� du volume de stockage doit ��tre un nombre entier."
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+"L'URL du volume de stockage doit ��tre http://, https://, ftp:// ou ftps://."
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr "Impossible d'acc��der au fichier %(url)s. Veuillez le v��rifier."
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: %(err)"
+"s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "L'interface %(name)s n'existe pas"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "Le r��seau %(name)s existe d��j��"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "Le r��seau %(name)s n'existe pas"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"Le sous-r��seau %(subnet)s sp��cifi�� pour le r��seau %(network)s n'est pas "
+"valide"
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr "Sp��cifier une interface r��seau pour cr��er le r��seau bridge %(name)s"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "Impossible de supprimer le r��seau actif %(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"L'interface %(iface)s sp��cifi��e pour le r��seau %(network)s est d��j�� utilis��e"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "L'interface doit ��tre un p��riph��rique NIC vide, bonding ou bridg��."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "Impossible de cr��er le r��seau %(name)s. D��tails: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "Impossible de trouver une adresse IP libre pour le r��seau '%(name)s'"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr "L'interface %(iface)s existe d��j��"
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "Les types de r��seaux support��s sont isolated, NAT et bridge"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"Le sous-r��seau doit ��tre une chaine de caract��res avec une adresse IP et un "
+"pr��fixe ou un masque de r��seau"
+
+msgid "Network interface must be a string"
+msgstr "L'interface de r��seau doit ��tre une cha��ne de caract��res"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "L'ID de VLAN du r��seau doit ��tre un nombre entier entre 1 et 4094"
+
+msgid "Specify name and type to create a Network"
+msgstr "Sp��cifiez un nom et un type pour cr��er un r��seau"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+"Impossible de supprimer le r��seau %(name)s. Il y a des machines virtuelles %"
+"(vms)s et/ou des mod��les li��s �� ce r��seau. "
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines %(vms)"
+"s and/or templates linked to this network."
+msgstr ""
+"Impossible de d��sactiver r��seau %(name)s. Il y a des machines virtuelles%"
+"(vms)s et/ou des mod��les li��s �� ce r��seau. "
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+"Le p��riph��rique bridge %(name)s ne peut ��tre le p��riph��rique tronc d'un VLAN."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "��chec durant l'activation de l'interface %(iface)s: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"��chec durant l'activation de l'interface %(iface)s. Veuillez v��rifier le "
+"statut du lien physique."
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "Le rapport de d��boggage %(name)s n'existe pas"
+
+msgid "Debug report tool not found in system"
+msgstr "L'outil de rapport de d��boggage n'a pas ��t�� trouv�� dans le syst��me"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr ""
+"Impossible de cr��er le rapport de d��boggage %(name)s. D��tails: %(err)s."
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+"Impossible de trouver un rapport de d��boggage avec le nom fourni %(name)s"
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr ""
+"Impossible de g��n��rer le rapport de d��boggage %(name)s. D��tails: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr "Vous devriez donner un nom au fichier de rapport de d��boggage."
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+"Le nom du rapport de d��boggage doit ��tre une cha��ne de caract��res. Seulement "
+"les lettres, chiffres, blanc soulign�� ('_') et tirets ('-') sont accept��s."
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"Le rapport de d��boggage avec le nom sp��cifi�� \"%(name)s\" existe d��j��. "
+"Veuillez en utiliser un autre."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "Le server de stockage %(server)s n'��tait pas utilis�� par Kimchi"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "La distro '%(name)s' n'existe pas"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "La partition %(name)s n'existe pas sur cet h��te"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+"Impossible d'��teindre la machine h��te car des machines virtuelles en sont "
+"cours d'ex��cution"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+"Impossible de red��marrer la machine h��te car des machines virtuelles en sont "
+"cours d'ex��cution"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "P��riph��rique de noeud '%(name)s' non trouv��"
+
+msgid "Conflicting flag filters specified."
+msgstr "Filtres incompatibles sp��cifi��s."
+
+msgid "No packages marked for update"
+msgstr "Aucun paquet marqu�� pour mise �� jour"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "Le paquet %(name)s n'est pas marqu�� pour mise �� jour"
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+"Erreur durant la r��cup��ration des paquets marqu��s pour la mise�� jour. "
+"D��tails: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "Il n'y a pas de gestionnaire de paquets compatible avec ce syst��me."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "URI %(uri)s invalide"
+
+msgid "Unable to choose a virtual machine name"
+msgstr "Impossible de s��lectionner un nom de machine virtuelle"
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "Type de stockage invalide. Les Types support��s sont: 'cdrom', 'disk'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr "Seulement le chemin d'un CDROM peut ��tre modifi��."
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine %"
+"(vm_name)s"
+msgstr ""
+"Le p��riph��rique de stockage %(dev_name)s n'existe pas dans la machine "
+"virtuelle %(vm_name)s"
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr ""
+"Erreur durant la cr��ation du nouveau p��riph��rique de stockage: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "Erreur durant la mise �� jour du p��riph��rique de stockage: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "Erreur durant le retrait du p��riph��rique de stockage: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr "Ne pas supporter le branchement �� chaud de p��riph��rique IDE"
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+"Sp��cifier le type et le chemin ou le type et le pool/volume pour ajouter un "
+"nouveau disque de machine virtuelle."
+
+msgid "Specify path to update virtual machine disk"
+msgstr "Sp��cifier un chemin pour mettre �� jour le disque de machine virtuelle"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+"La limitation de %(limit)s p��riph��riques a ��t�� atteinte pour le contr��leur "
+"de type %(type)s "
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+"Seul un chemin ou pool/volume peut ��tre sp��cifi�� pour ajouter un nouveau "
+"disque de machine virtuelle"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type %(type)"
+"s"
+msgstr ""
+"Le volume de format %(format)s s��lectionn�� ne correspond pas au type de "
+"stockage %(type)s"
+
+msgid "YUM Repository ID must be one word only string."
+msgstr ""
+"L'ID du d��p��t YUM doit ��tre une cha��ne de caract��res ne comportant qu'un "
+"seul mot"
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "L'URL du d��p��t doit ��tre une URL en http://, ftp:// ou file://."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"La configuration du d��p��t est un dictionaire avec des valeurs sp��cifiques en "
+"accord avec le type de d��p��t."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr ""
+"La distribution dans le nom de d��p��t DEB doit ��tre une cha��ne de caract��res"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "Les composants dans le d��p��t DEB doivent ��tre list��s dans un tableau"
+
+msgid "Components to DEB repository must be a string"
+msgstr "Les composants dans le d��p��t DEB doivent ��tre une cha��ne de caract��res"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "Le nom du d��p��t YUM doit ��tre une cha��ne de caract��res"
+
+msgid "GPG check must be a boolean value."
+msgstr "La v��rification GPG doit ��tre une valeur bool��enne."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "La cl�� GPG doit ��tre une URL pointant vers un fichier ASCII non arm��."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "Ne peut mettre �� jour le d��p��t %(repo_id)s."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "Le d��p��t %(repo_id)s n'existe pas."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "L'outil de gestion de d��p��t n'a pas ��t�� reconnu pour votre syst��me."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "Le d��p��t %(repo_id)s est d��j�� activ��."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "Le d��p��t %(repo_id)s est d��j�� d��sactiv��."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "Ne peut supprimer le d��p��t %(repo_id)s. "
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr "Ne peut ��crire le fichier de configuration du d��p��t %(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr "Sp��cifier la distribution du d��p��t afin de cr��er un d��p��t DEB."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "Ne peut activer le d��p��t %(repo_id)s."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "Ne peut d��sactiver le d��p��t %(repo_id)s."
+
+msgid "YUM Repository ID already exists"
+msgstr "L'ID du d��p��t YUM existe d��j��"
+
+msgid "YUM Repository name must be a string"
+msgstr "Le nom du d��p��t YUM doit ��tre une cha��ne de caract��res"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "Impossible de lister les d��p��ts. D��tails: '%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "Impossible de r��cup��rer les informations du d��p��t. D��tails: '%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "Impossible d'ajouter un d��p��t. D��tails: '%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "Impossible de supprimer un d��p��t. D��tails: '%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+"��l��ments de configurations: %(items)s ne sont pas support��s par le "
+"gestionnaire de d��p��t"
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "ERROR CODE"
+
+msgid "REASON"
+msgstr "REASON"
+
+msgid "STACK"
+msgstr "STACK"
+
+msgid "Go to Homepage"
+msgstr "Aller �� la page d'accueil"
+
+msgid "Create a New Virtual Machine"
+msgstr "Cr��er une nouvelle Machine Virtuelle"
+
+msgid "Virtual Machine Name"
+msgstr "Nom de Machine Virtuelle"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"Le nm est utilis�� pour identifier une machine virtuelle. Si omis, un nom "
+"sera choisi en se basant sur le mod��le utilis��."
+
+msgid "Template"
+msgstr "Mod��le"
+
+msgid "Please create a template first."
+msgstr "Veuillez d'abord cr��er un mod��le."
+
+msgid "Create a Template"
+msgstr "Cr��er un mod��le"
+
+msgid "Please choose a template."
+msgstr "Veuillez choisir un mod��le"
+
+msgid "OS"
+msgstr "OS"
+
+msgid "OS Version"
+msgstr "Version de l'OS"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "M��moire"
+
+msgid "Create"
+msgstr "Cr��er"
+
+msgid "Creating..."
+msgstr "Cr��ation en cours..."
+
+msgid "Cancel"
+msgstr "Annuler"
+
+msgid "Edit Guest"
+msgstr "��diter l'Invit��"
+
+msgid "General"
+msgstr "G��n��ral"
+
+msgid "Storage"
+msgstr "Stockage"
+
+msgid "Interface"
+msgstr "Interface"
+
+msgid "Permission"
+msgstr "Permission"
+
+msgid "Host PCI Device"
+msgstr "P��riph��rique PCI H��te"
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "Nom"
+
+msgid "CPUs"
+msgstr "CPUs"
+
+msgid "Memory (MB)"
+msgstr "M��moire (Mo)"
+
+msgid "Icon"
+msgstr "Icone"
+
+msgid "Device"
+msgstr "P��riph��rique"
+
+msgid "Path"
+msgstr "Chemin"
+
+msgid "Network"
+msgstr "R��seau"
+
+msgid "Type"
+msgstr "Type"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr "Utilisateurs et groupes syst��mes disponibles"
+
+msgid "Selected system users and groups"
+msgstr "Utilisateurs et groupes syst��mes s��lectionn��s"
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "Tous"
+
+msgid "To Add"
+msgstr "�� Ajouter"
+
+msgid "Added"
+msgstr "Ajouter"
+
+msgid "filter"
+msgstr "Filtre"
+
+msgid "Product"
+msgstr "Produit"
+
+msgid "Vendor"
+msgstr "Vendeur"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "Enregistrer"
+
+msgid "Replace"
+msgstr "Remplacer"
+
+msgid "Detach"
+msgstr "D��tacher"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "D��marrer"
+
+msgid "Reset"
+msgstr "R��initialiser"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr "Mettre hors tension"
+
+msgid "Actions"
+msgstr "Actions"
+
+msgid "Connect"
+msgstr "Connecter"
+
+msgid "Clone"
+msgstr "Cloner"
+
+msgid "Edit"
+msgstr "��diter"
+
+msgid "Shut Down"
+msgstr "��teindre"
+
+msgid "Delete"
+msgstr "Supprimer"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "E/S Disque"
+
+msgid "Network I/O"
+msgstr "E/S R��seau"
+
+msgid "Livetile"
+msgstr "Livetile"
+
+msgid "No guests found."
+msgstr "Aucun invit�� trouv��."
+
+msgid "Add a Storage Device to VM"
+msgstr "Ajouter un P��riph��rique de Stockage �� la VM"
+
+msgid "Device Type"
+msgstr "Type de P��riph��rique"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr ""
+"Le type de p��riph��rique. Actuellement, \"cdrom\" et \"disk\" sont support��s."
+
+msgid "Storage Pool"
+msgstr "Pool de Stockage"
+
+msgid "Storage pool which volume located in"
+msgstr "Pool de Stockage dans lequel le volume est situ��"
+
+msgid "Storage Volume"
+msgstr "Volume de Stockage"
+
+msgid "Storage volume to be attached"
+msgstr "Le volume de stockage �� attacher"
+
+msgid "File Path"
+msgstr "Chemin de Fichier"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "Le chemin de fichier ISO sur le serveur comme CDROM."
+
+msgid "Attach"
+msgstr "Attacher"
+
+msgid "Shut down"
+msgstr "��teindre"
+
+msgid "Restart"
+msgstr "Red��marrer"
+
+msgid "Basic Information"
+msgstr "Informations de Base"
+
+msgid "OS Distro"
+msgstr "Distro de l'OS"
+
+msgid "OS Code Name"
+msgstr "Nom de code de l'OS"
+
+msgid "Processor"
+msgstr "Processeur"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "Statistiques Syst��me"
+
+msgid "Software Updates"
+msgstr "Mises �� jour Logiciel"
+
+msgid "Update Progress"
+msgstr "Progr��s de la Mise �� Jour"
+
+msgid "Repositories"
+msgstr "D��p��ts"
+
+msgid "Debug Reports"
+msgstr "Rapports de D��boggage"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+"Le nom d'utilisateur ou le mot de passe que vous avez entr�� est incorrect. "
+"Veuillez essayer �� nouveau."
+
+msgid "This field is required."
+msgstr "Ce champ est requis."
+
+msgid "Log in"
+msgstr "Se connecter"
+
+msgid "Logging in..."
+msgstr "En cours de connexion..."
+
+msgid "Host"
+msgstr "H��te"
+
+msgid "Guests"
+msgstr "Invit��s"
+
+msgid "Templates"
+msgstr "Mod��les"
+
+msgid "Failed to get application configuration"
+msgstr "��chec lors de l'obtention de la configuration de l'application"
+
+msgid "This is not a valid Linux path"
+msgstr "Ce n'est pas un chemin Linux valide"
+
+msgid "This is not a valid URL."
+msgstr "Ce n'est pas une URL valide."
+
+msgid "No such data available."
+msgstr "De telles donn��es ne sont pas disponibles."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"Ne peut contacter le syst��me h��te. V��rifiez que le syst��me h��te est allum�� "
+"et que vous avez une connectivit�� r��seau avec lui. R��ponse de requ��te HTTP %"
+"1."
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "Confirmation de Suppression"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Confirm"
+msgstr "Confirmer"
+
+msgid "Warning"
+msgstr "Avertissement"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "Chargement en cours..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "Essayer �� nouveau"
+
+msgid "Detailed message:"
+msgstr "Message d��taill��:"
+
+msgid "No ISO found"
+msgstr "Aucune ISO d��tect��e"
+
+msgid "This is not a valid ISO file."
+msgstr "Ce n'est pas un fichier ISO valide."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "Cela va prendre un long moment. Voulez-vous continuer ?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr ""
+"Cela va supprimer de mani��re permanent le mod��le. Souhaites-vous continuer ?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"Impossible d'��teindre le syst��me du fait que certaines machines virtuelles "
+"sont lanc��es !"
+
+msgid "Max:"
+msgstr "Max:"
+
+msgid "Utilization"
+msgstr "Utilisation"
+
+msgid "Available"
+msgstr "Disponible"
+
+msgid "Read Rate"
+msgstr "Taux en Lecture"
+
+msgid "Write Rate"
+msgstr "Taux en ��criture"
+
+msgid "Received"
+msgstr "Re��u"
+
+msgid "Sent"
+msgstr "Envoy��"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"��teindre ou red��marrer l'h��te causera la perte de tout travail non "
+"enregistr��. Continuer �� ��teindre/red��marrer ?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Le d��p��t sera retir�� de fa��on permanente et ne pourra ��tre r��tabli. Voulez-"
+"vous continuer ?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "URL de base"
+
+msgid "Is Mirror"
+msgstr "Est un miroir"
+
+msgid "URL Args"
+msgstr "Arguments d'URL"
+
+msgid "Enabled"
+msgstr "Activ��"
+
+msgid "GPG Check"
+msgstr "V��rification GPG"
+
+msgid "GPG Key"
+msgstr "Cl�� GPG"
+
+msgid "Add"
+msgstr "Ajouter"
+
+msgid "Remove"
+msgstr "Retirer"
+
+msgid "Enable"
+msgstr "Activer"
+
+msgid "Disable"
+msgstr "D��sactiver"
+
+msgid "Package Name"
+msgstr "Nom de paquet"
+
+msgid "Version"
+msgstr "Version"
+
+msgid "Architecture"
+msgstr "Architecture"
+
+msgid "Repository"
+msgstr "D��p��t"
+
+msgid "Update All"
+msgstr "Tout mettre �� jour"
+
+msgid "Updating..."
+msgstr "En cours de mise �� jour..."
+
+msgid "Failed to retrieve packages update information."
+msgstr "��chec de r��cup��ration des informations de mise-��-jour des paquets."
+
+msgid "Failed to update package(s)."
+msgstr "��chec durant la mise �� jour du/des paquet(s)"
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Le rapport de d��boggage sera enlev�� de fa��on permanente et ne pourra ��tre "
+"r��tabli. Voulez-vous continuer ?"
+
+msgid "Generated Time"
+msgstr "Horodatage de g��n��ration"
+
+msgid "Generate"
+msgstr "G��n��rer"
+
+msgid "Generating..."
+msgstr "En cours de g��n��ration..."
+
+msgid "Rename"
+msgstr "Renommer"
+
+msgid "Download"
+msgstr "T��l��charger"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+"Le nom de rapport devrait contenir uniquement des lettres, nombres, "
+"soulignement ('_') et/ou tiret ('-')."
+
+msgid "Pending..."
+msgstr "En attente..."
+
+msgid "Report name is the same as the original one."
+msgstr "Le nom du rapport est le m��me que celui d'origine."
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"Cela va supprimer la machine virtuelle et tous ses disques virtuels. Cette "
+"op��ration est irr��versible. Voulez-vous continuer ?"
+
+msgid "Power off Confirmation"
+msgstr "Confirmation de mise hors tension"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+"Cette action pourrait produire des r��sultats ind��sirables, par exemple un "
+"cache disque non flush�� dans l'invit��. Voulez-vous continuer ?"
+
+msgid "Reset Confirmation"
+msgstr "Confirmation de R��initialisation"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+"Il y a un risque de perte de donn��es caus��es par une r��initialisation sans "
+"extinction de l'OS invit��. Voulez-vous continuer ?"
+
+msgid "Shut Down Confirmation"
+msgstr "Confirmation d'Extinction"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr ""
+"Noter que l'OS invit�� pourrait ignorer cette requ��te. Voulez-vous continuer ?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr "Confirmation de suppression de Machine Virtuelle"
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"Ce CDROM sera d��tach�� de fa��on permanente et vous pourrez le r��-attacher. "
+"Continuer le d��tachement ?"
+
+msgid "Attaching..."
+msgstr "En cours d'attachement..."
+
+msgid "Replacing..."
+msgstr "En cours de Remplacement..."
+
+msgid "Successfully attached!"
+msgstr "Attach�� avec succ��s !"
+
+msgid "Successfully replaced!"
+msgstr "Remplac�� avec succ��s !"
+
+msgid "Successfully detached!"
+msgstr "D��tach�� avec Succ��s !"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+"Ce disque sera d��finitivement d��tach�� et peut ��tre r��-attach��. Continuer �� "
+"le d��tacher ?"
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "L'id du VLAN doit ��tre entre 1 et 4094."
+
+msgid "unavailable"
+msgstr "non disponible"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"Cette action va interrompre la connectivit�� r��seau pour tout machine "
+"virtuelle qui d��pend de ce r��seau."
+
+msgid "Create a network"
+msgstr "Cr��er un r��seau"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Ce r��seau n'est pas persistant. Au lieu de s'arr��ter, cette actionva le "
+"suppromer de mani��re permanente. Voulez-vous continuer ?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr ""
+"Cela va effacer de mani��re permanente le pool de stockage. Voulez-vous "
+"continuer ?"
+
+msgid "This storage pool is empty."
+msgstr "Ce pool de stockage est vide."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"Cela va formater votre disque et vous allez perdre toutes les donn��es qui "
+"s'y trouvent, ��tes-vous s��r de continuer ?"
+
+msgid "SCSI Fibre Channel"
+msgstr "Canal Fibre SCSI"
+
+msgid "No SCSI adapters found."
+msgstr "Aucun adaptateur SCSI trouv��."
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "Le nom de pool de stockage ne peut ��tre vierge."
+
+msgid "The storage pool path can not be blank."
+msgstr "Le chemin de pool de stockage ne peut ��tre vierge."
+
+msgid "NFS server mount path can not be blank."
+msgstr "Le chemin de montage du serveur NFS ne peut ��tre vierge."
+
+msgid "Invalid NFS mount path."
+msgstr "Chemin de montage NFS invalide."
+
+msgid "No logical device selected."
+msgstr "Aucun p��riph��rique logique s��lectionn��."
+
+msgid "The iSCSI target can not be blank."
+msgstr "La cible iSCSI ne peut ��tre vierge."
+
+msgid "Server name can not be blank."
+msgstr "Le nom de serveur ne peut ��tre vierge."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "En cours de recherche de partitions disponibles..."
+
+msgid "No available partitions found."
+msgstr "Aucune partition disponible trouv��e."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Le pool de stockage n'est pas persistent. Au lieu de le d��sactiver, cette "
+"action va le supprimer de mani��re permanente. Voulez-vous continuer ?"
+
+msgid "Unable to retrieve partitions information."
+msgstr "Impossible de r��cup��rer les informations des partitions."
+
+msgid "In progress..."
+msgstr "En cours..."
+
+msgid "Failed!"
+msgstr "��chec!"
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+"Le chemin de CDROM doit ��tre un chemin local/distant valide et ne peut ��tre "
+"virge."
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "Le pool de disque ou le volume ne peut ��tre vierge."
+
+#, fuzzy
+msgid "Filter"
+msgstr "Filtre"
+
+msgid "Network Name"
+msgstr "Nom de R��seau"
+
+msgid "State"
+msgstr "��tat"
+
+msgid "Network Type"
+msgstr "Type de R��seau"
+
+msgid "Address Space"
+msgstr "Espace d'adressage"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "Le nom ne devrait pas contenir '/' et '\"'."
+
+msgid "Isolated: no external network connection"
+msgstr "Isol��: pas de connexion �� un r��seau externe"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: connexion physique au r��seau sortant uniquement"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+"Bridg��: Les macines virtuelles sont connect��es directement au r��seau physique"
+
+msgid "(No interfaces found)"
+msgstr "(Aucune interface trouv��e)"
+
+msgid "Destination"
+msgstr "Destination"
+
+msgid "Enable VLAN"
+msgstr "Activer le VLAN"
+
+msgid "VLAN ID"
+msgstr "ID de VLAN"
+
+msgid "Stop"
+msgstr "Arr��ter"
+
+msgid "Generate a New Debug Report"
+msgstr "G��n��rer un Nouveau Rapport de D��boggage"
+
+msgid "Report Name"
+msgstr "Nom du Rapport"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"Le nom utilis�� pour identifier le rapport. Si omis, un nom sera choisi bas�� "
+"sur l'heure courante. Le nom peut contenir des lettres, des nombres, le "
+"soulignement (\"_\") et le tiret (\"-\")."
+
+msgid "Rename a Debug Report"
+msgstr "Renommer un Rapport de D��boggage"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"Le nom utilis�� pour identifer le rapport. Le nom peut contenir des lettres, "
+"nombres et tirets (\"-\")."
+
+msgid "Submit"
+msgstr "Soumettre"
+
+msgid "Add a Repository"
+msgstr "Ajouter un D��p��t"
+
+msgid "Identifier"
+msgstr "Identificateur"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "Mot unique, identifiant unique pour le d��p��t."
+
+msgid "Textual name for the repository."
+msgstr "Nom textuel pour le d��p��t."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "Champ requis"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "URL du d��p��t. Les protocoles support��s sont http, ftp et ficheir."
+
+msgid "Repository is a mirror"
+msgstr "Le d��p��t est un miroir"
+
+msgid "Distribution"
+msgstr "Distribution"
+
+msgid "Distribution of the DEB repository."
+msgstr "Distribution du d��p��t DEB."
+
+msgid "Components"
+msgstr "Composants"
+
+msgid "List of components in DEB repository."
+msgstr "Liste des composants dans le d��p��t DEB."
+
+msgid "Edit Repository"
+msgstr "Editer le D��p��t"
+
+msgid "Mirror List URL"
+msgstr "URL de Liste de Miroir"
+
+msgid "Yes"
+msgstr "Oui"
+
+msgid "No"
+msgstr "Non"
+
+msgid "Capacity"
+msgstr "Capacit��"
+
+msgid "Allocated"
+msgstr "Allou��"
+
+msgid "Location"
+msgstr "Emplacement"
+
+msgid "Device path"
+msgstr "Chemin du P��riph��rique"
+
+msgid "active"
+msgstr "actif"
+
+msgid "inactive"
+msgstr "inactif"
+
+msgid "Deactivate"
+msgstr "D��sactiver"
+
+msgid "Activate"
+msgstr "Activer"
+
+msgid "Add Volume"
+msgstr "Ajouter un Volume"
+
+msgid "Extend"
+msgstr "��tendre"
+
+msgid "Undefine"
+msgstr "Supprimer"
+
+msgid "Format"
+msgstr "Format"
+
+msgid "Allocation"
+msgstr "Allocation"
+
+msgid "Define a New Storage Pool"
+msgstr "D��finir un Nouveau Pool de Stockage"
+
+msgid "Storage Pool Name"
+msgstr "Nom de Pool de Stockage"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+"Le nom utilis�� pour identifier les pools de stockage, et il ne doit pas ��tre "
+"vide."
+
+msgid "Storage Pool Type"
+msgstr "Type de Pool de Stockage"
+
+msgid "Storage Path"
+msgstr "Chemin de Stockage"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+"Le chemin du Pool de Stockage. Chaque Pool de Stockage doit avoir un chemin "
+"unique."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+"Kimchi va essayer de cr��er un r��pertoire quand il n'existe pas d��j�� dans "
+"votre syst��me."
+
+msgid "NFS Server IP"
+msgstr "IP du Serveur NFS"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"IP du Serveur NFS ou nom d'h��te. Il peut ��tre saisi ou entr�� �� partir de "
+"l'historique."
+
+msgid "NFS Path"
+msgstr "Chemin NFS"
+
+msgid "The NFS exported path on NFS server."
+msgstr "Le chemin NFS export�� sur le serveur NFS."
+
+msgid "iSCSI Server"
+msgstr "Serveur iSCSI"
+
+msgid "Server"
+msgstr "Serveur"
+
+msgid "Port"
+msgstr "Port"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "IP du Serveur iSCSI ou nom d'h��te. Il ne devrait pas ��tre vide."
+
+msgid "Target"
+msgstr "Cible"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "La cible iSCSI sur le serveur iSCSI"
+
+msgid "Add iSCSI Authentication"
+msgstr "Ajouter l'Authentification iSCSI"
+
+msgid "iSCSI Authentication"
+msgstr "Authentification iSCSI"
+
+msgid "User Name"
+msgstr "Nom d'Utilisateur"
+
+msgid "Password"
+msgstr "Mot de Passe"
+
+msgid "SCSI Adapter"
+msgstr "Adaptateur SCSI"
+
+msgid "Please, wait..."
+msgstr "Veuillez patienter..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr "iAjouter un Volume au Pool de Stockage"
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr "Saisir une URL distante ici"
+
+msgid "Upload a file"
+msgstr "Charger un fichier"
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "Ajouter un Mod��le"
+
+msgid "Where is the source media for this template? "
+msgstr "O�� se trouve le media source pour le mod��le ?"
+
+msgid "Local ISO Image"
+msgstr "Image ISO Locale"
+
+msgid "Local Image File"
+msgstr "Fichier Image Local"
+
+msgid "Remote ISO Image"
+msgstr "Image ISO Distante"
+
+msgid "Search ISOs"
+msgstr "Rechercher des ISOs"
+
+msgid "The following ISOs are available:"
+msgstr "Les ISOs suivants sont disponibles:"
+
+msgid "OS: "
+msgstr "OS: "
+
+msgid "Version: "
+msgstr "Version: "
+
+msgid "Size: "
+msgstr "Taille: "
+
+msgid "Search more ISOs"
+msgstr "Chercher plus d'ISOs"
+
+msgid "Create Templates from Selected ISO"
+msgstr "Cr��er des mod��les depuis l'ISO s��lectionn��"
+
+msgid "I want to use a specific ISO file"
+msgstr "Je veux utiliser un fichier ISO sp��cifique"
+
+msgid "Loading default remote ISOs ..."
+msgstr "Chargement des ISOs distants par d��faut en cours..."
+
+msgid "Arch: "
+msgstr "Arch: "
+
+msgid "I want to use a custom URL"
+msgstr "Je veux utiliser une URL personnalis��e"
+
+msgid "Edit Template"
+msgstr "��diter un Mod��le"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr "Fichier Image"
+
+msgid "Graphics"
+msgstr "Graphiques"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "Nombre de CPU"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "Aucun mod��le trouv��."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "La suppression n'est pas autoris��e pour %(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s n'impl��mente pas de m��thode de mise �� jour"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "La cr��ation n'est pas autoris��e pour %(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "Impossible de parser la requ��te JSON"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "Cette API supporte uniquement le JSON"
+
+#~ msgid "Parameters does not match requirement in schema: %(err)s"
+#~ msgstr ""
+#~ "Les param��tres ne correspondent pas �� ce qui est requis dans le sch��ma: %"
+#~ "(err)s"
+
+#~ msgid "You don't have permission to perform this operation."
+#~ msgstr "Vous n'avez pas la permission d'effectuer cette op��ration."
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "Le magasin de donn��es n'est pas initi�� dans l'objet mod��le."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "Impossible de d��marrer la t��che �� cause de l'erreur: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "L'authentification a ��chou�� pour l'utilisateur '%(username)s'. [Code "
+#~ "d'Erreur: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "Vous n'��tes pas autoris�� �� acc��der �� Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Sp��cifiez %(item)s pour vous logguer dans Kimchi"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "Impossible de trouver %(item)s dans le magasin de donn��es"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "Timeout durant l'ex��cution de la commande '%(cmd)s' apr��s %(seconds)s "
+#~ "secondes"
+
+#~ msgid "Help"
+#~ msgstr "Aide"
+
+#~ msgid "About"
+#~ msgstr "A propos..."
+
+#~ msgid "Log out"
+#~ msgstr "Se d��connecter"
+
+#~ msgid "Version:"
+#~ msgstr "Version:"
+
+#~ msgid "Session timeout, please re-login."
+#~ msgstr "Session expir��e, veuillez vous reconnecter."
diff --git a/plugins/gingerbase/po/gen-pot.in b/plugins/gingerbase/po/gen-pot.in
new file mode 100644
index 0000000..507f0aa
--- /dev/null
+++ b/plugins/gingerbase/po/gen-pot.in
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+for src in $@; do
+ if [ ${src: -3} == ".py" ]; then
+ cat $src
+ else
+ cat $src | @CHEETAH@ compile -
+ fi
+done | xgettext --no-location -o gingerbase.pot -L Python -
diff --git a/plugins/gingerbase/po/gingerbase.pot b/plugins/gingerbase/po/gingerbase.pot
new file mode 100755
index 0000000..d4605c7
--- /dev/null
+++ b/plugins/gingerbase/po/gingerbase.pot
@@ -0,0 +1,2074 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr ""
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr ""
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the '%"
+"(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+
+msgid "Remote ISO image is not supported by this server."
+msgstr ""
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr ""
+
+msgid "Specify a template to create a virtual machine from"
+msgstr ""
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr ""
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr ""
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr ""
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr ""
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr ""
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr ""
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+
+msgid "Template name must be a string"
+msgstr ""
+
+msgid "Template icon must be a path to the image"
+msgstr ""
+
+msgid "Template distribution must be a string"
+msgstr ""
+
+msgid "Template distribution version must be a string"
+msgstr ""
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr ""
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr ""
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr ""
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr ""
+
+msgid "All networks for the template must be specified in a list."
+msgstr ""
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr ""
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr ""
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr ""
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr ""
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr ""
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr ""
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr ""
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr ""
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool %(pool)"
+"s."
+msgstr ""
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+
+msgid "The SCSI host adapter name must be a string."
+msgstr ""
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+
+msgid "Storage volume name must be a string"
+msgstr ""
+
+msgid "Storage volume allocation must be an integer number"
+msgstr ""
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: %(err)"
+"s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr ""
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr ""
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr ""
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr ""
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+
+msgid "Network interface must be a string"
+msgstr ""
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr ""
+
+msgid "Specify name and type to create a Network"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines %(vms)"
+"s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr ""
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr ""
+
+msgid "Debug report tool not found in system"
+msgstr ""
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr ""
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr ""
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr ""
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr ""
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr ""
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr ""
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr ""
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+
+msgid "There is no compatible package manager for this system."
+msgstr ""
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr ""
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr ""
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine %"
+"(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr ""
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr ""
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr ""
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+
+msgid "Specify path to update virtual machine disk"
+msgstr ""
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type %(type)"
+"s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr ""
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+
+msgid "Distribution to DEB repository must be a string"
+msgstr ""
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr ""
+
+msgid "Components to DEB repository must be a string"
+msgstr ""
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr ""
+
+msgid "GPG check must be a boolean value."
+msgstr ""
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr ""
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr ""
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr ""
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr ""
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr ""
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr ""
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr ""
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr ""
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr ""
+
+msgid "YUM Repository ID already exists"
+msgstr ""
+
+msgid "YUM Repository name must be a string"
+msgstr ""
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr ""
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: %"
+"(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr ""
+
+msgid "REASON"
+msgstr ""
+
+msgid "STACK"
+msgstr ""
+
+msgid "Go to Homepage"
+msgstr ""
+
+msgid "Create a New Virtual Machine"
+msgstr ""
+
+msgid "Virtual Machine Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+
+msgid "Template"
+msgstr ""
+
+msgid "Please create a template first."
+msgstr ""
+
+msgid "Create a Template"
+msgstr ""
+
+msgid "Please choose a template."
+msgstr ""
+
+msgid "OS"
+msgstr ""
+
+msgid "OS Version"
+msgstr ""
+
+msgid "CPUS"
+msgstr ""
+
+msgid "Memory"
+msgstr ""
+
+msgid "Create"
+msgstr ""
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Edit Guest"
+msgstr ""
+
+msgid "General"
+msgstr ""
+
+msgid "Storage"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Permission"
+msgstr ""
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "CPUs"
+msgstr ""
+
+msgid "Memory (MB)"
+msgstr ""
+
+msgid "Icon"
+msgstr ""
+
+msgid "Device"
+msgstr ""
+
+msgid "Path"
+msgstr ""
+
+msgid "Network"
+msgstr ""
+
+msgid "Type"
+msgstr ""
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr ""
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr ""
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Detach"
+msgstr ""
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr ""
+
+msgid "Reset"
+msgstr ""
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr ""
+
+msgid "Connect"
+msgstr ""
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Shut Down"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+msgid "CPU"
+msgstr ""
+
+msgid "Disk I/O"
+msgstr ""
+
+msgid "Network I/O"
+msgstr ""
+
+msgid "Livetile"
+msgstr ""
+
+msgid "No guests found."
+msgstr ""
+
+msgid "Add a Storage Device to VM"
+msgstr ""
+
+msgid "Device Type"
+msgstr ""
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr ""
+
+msgid "Storage Pool"
+msgstr ""
+
+msgid "Storage pool which volume located in"
+msgstr ""
+
+msgid "Storage Volume"
+msgstr ""
+
+msgid "Storage volume to be attached"
+msgstr ""
+
+msgid "File Path"
+msgstr ""
+
+msgid "The ISO file path in the server for CDROM."
+msgstr ""
+
+msgid "Attach"
+msgstr ""
+
+msgid "Shut down"
+msgstr ""
+
+msgid "Restart"
+msgstr ""
+
+msgid "Basic Information"
+msgstr ""
+
+msgid "OS Distro"
+msgstr ""
+
+msgid "OS Code Name"
+msgstr ""
+
+msgid "Processor"
+msgstr ""
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr ""
+
+msgid "Software Updates"
+msgstr ""
+
+msgid "Update Progress"
+msgstr ""
+
+msgid "Repositories"
+msgstr ""
+
+msgid "Debug Reports"
+msgstr ""
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+
+msgid "This field is required."
+msgstr ""
+
+msgid "Log in"
+msgstr ""
+
+msgid "Logging in..."
+msgstr ""
+
+msgid "Host"
+msgstr ""
+
+msgid "Guests"
+msgstr ""
+
+msgid "Templates"
+msgstr ""
+
+msgid "Failed to get application configuration"
+msgstr ""
+
+msgid "This is not a valid Linux path"
+msgstr ""
+
+msgid "This is not a valid URL."
+msgstr ""
+
+msgid "No such data available."
+msgstr ""
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr ""
+
+msgid "OK"
+msgstr ""
+
+msgid "Confirm"
+msgstr ""
+
+msgid "Warning"
+msgstr ""
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr ""
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr ""
+
+msgid "Detailed message:"
+msgstr ""
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr ""
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr ""
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr ""
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+
+msgid "Max:"
+msgstr ""
+
+msgid "Utilization"
+msgstr ""
+
+msgid "Available"
+msgstr ""
+
+msgid "Read Rate"
+msgstr ""
+
+msgid "Write Rate"
+msgstr ""
+
+msgid "Received"
+msgstr ""
+
+msgid "Sent"
+msgstr ""
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+
+msgid "ID"
+msgstr ""
+
+msgid "Base URL"
+msgstr ""
+
+msgid "Is Mirror"
+msgstr ""
+
+msgid "URL Args"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "GPG Check"
+msgstr ""
+
+msgid "GPG Key"
+msgstr ""
+
+msgid "Add"
+msgstr ""
+
+msgid "Remove"
+msgstr ""
+
+msgid "Enable"
+msgstr ""
+
+msgid "Disable"
+msgstr ""
+
+msgid "Package Name"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "Architecture"
+msgstr ""
+
+msgid "Repository"
+msgstr ""
+
+msgid "Update All"
+msgstr ""
+
+msgid "Updating..."
+msgstr ""
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr ""
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+
+msgid "Generated Time"
+msgstr ""
+
+msgid "Generate"
+msgstr ""
+
+msgid "Generating..."
+msgstr ""
+
+msgid "Rename"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+
+msgid "Pending..."
+msgstr ""
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+
+msgid "Power off Confirmation"
+msgstr ""
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr ""
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr ""
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr ""
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+
+msgid "Attaching..."
+msgstr ""
+
+msgid "Replacing..."
+msgstr ""
+
+msgid "Successfully attached!"
+msgstr ""
+
+msgid "Successfully replaced!"
+msgstr ""
+
+msgid "Successfully detached!"
+msgstr ""
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr ""
+
+msgid "unavailable"
+msgstr ""
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+
+msgid "Create a network"
+msgstr ""
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr ""
+
+msgid "This storage pool is empty."
+msgstr ""
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+
+msgid "SCSI Fibre Channel"
+msgstr ""
+
+msgid "No SCSI adapters found."
+msgstr ""
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr ""
+
+msgid "The storage pool path can not be blank."
+msgstr ""
+
+msgid "NFS server mount path can not be blank."
+msgstr ""
+
+msgid "Invalid NFS mount path."
+msgstr ""
+
+msgid "No logical device selected."
+msgstr ""
+
+msgid "The iSCSI target can not be blank."
+msgstr ""
+
+msgid "Server name can not be blank."
+msgstr ""
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr ""
+
+msgid "No available partitions found."
+msgstr ""
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+
+msgid "Unable to retrieve partitions information."
+msgstr ""
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr ""
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr ""
+
+msgid "State"
+msgstr ""
+
+msgid "Network Type"
+msgstr ""
+
+msgid "Address Space"
+msgstr ""
+
+msgid "Name should not contain '/' and '\"'."
+msgstr ""
+
+msgid "Isolated: no external network connection"
+msgstr ""
+
+msgid "NAT: outbound physical network connection only"
+msgstr ""
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr ""
+
+msgid "Enable VLAN"
+msgstr ""
+
+msgid "VLAN ID"
+msgstr ""
+
+msgid "Stop"
+msgstr ""
+
+msgid "Generate a New Debug Report"
+msgstr ""
+
+msgid "Report Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+
+msgid "Rename a Debug Report"
+msgstr ""
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr ""
+
+msgid "Identifier"
+msgstr ""
+
+msgid "Single word, unique identifier for the repository."
+msgstr ""
+
+msgid "Textual name for the repository."
+msgstr ""
+
+msgid "URL"
+msgstr ""
+
+msgid "Required Field"
+msgstr ""
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr ""
+
+msgid "Repository is a mirror"
+msgstr ""
+
+msgid "Distribution"
+msgstr ""
+
+msgid "Distribution of the DEB repository."
+msgstr ""
+
+msgid "Components"
+msgstr ""
+
+msgid "List of components in DEB repository."
+msgstr ""
+
+msgid "Edit Repository"
+msgstr ""
+
+msgid "Mirror List URL"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Capacity"
+msgstr ""
+
+msgid "Allocated"
+msgstr ""
+
+msgid "Location"
+msgstr ""
+
+msgid "Device path"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "inactive"
+msgstr ""
+
+msgid "Deactivate"
+msgstr ""
+
+msgid "Activate"
+msgstr ""
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr ""
+
+msgid "Format"
+msgstr ""
+
+msgid "Allocation"
+msgstr ""
+
+msgid "Define a New Storage Pool"
+msgstr ""
+
+msgid "Storage Pool Name"
+msgstr ""
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+
+msgid "Storage Pool Type"
+msgstr ""
+
+msgid "Storage Path"
+msgstr ""
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+
+msgid "NFS Server IP"
+msgstr ""
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+
+msgid "NFS Path"
+msgstr ""
+
+msgid "The NFS exported path on NFS server."
+msgstr ""
+
+msgid "iSCSI Server"
+msgstr ""
+
+msgid "Server"
+msgstr ""
+
+msgid "Port"
+msgstr ""
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "The iSCSI target on iSCSI server"
+msgstr ""
+
+msgid "Add iSCSI Authentication"
+msgstr ""
+
+msgid "iSCSI Authentication"
+msgstr ""
+
+msgid "User Name"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "SCSI Adapter"
+msgstr ""
+
+msgid "Please, wait..."
+msgstr ""
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr ""
+
+msgid "Where is the source media for this template? "
+msgstr ""
+
+msgid "Local ISO Image"
+msgstr ""
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr ""
+
+msgid "Search ISOs"
+msgstr ""
+
+msgid "The following ISOs are available:"
+msgstr ""
+
+msgid "OS: "
+msgstr ""
+
+msgid "Version: "
+msgstr ""
+
+msgid "Size: "
+msgstr ""
+
+msgid "Search more ISOs"
+msgstr ""
+
+msgid "Create Templates from Selected ISO"
+msgstr ""
+
+msgid "I want to use a specific ISO file"
+msgstr ""
+
+msgid "Loading default remote ISOs ..."
+msgstr ""
+
+msgid "Arch: "
+msgstr ""
+
+msgid "I want to use a custom URL"
+msgstr ""
+
+msgid "Edit Template"
+msgstr ""
+
+msgid "CDROM"
+msgstr ""
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr ""
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr ""
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr ""
diff --git a/plugins/gingerbase/po/it_IT.po b/plugins/gingerbase/po/it_IT.po
new file mode 100644
index 0000000..268d536
--- /dev/null
+++ b/plugins/gingerbase/po/it_IT.po
@@ -0,0 +1,2274 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: it_IT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr ""
+"Errore durante il richiamo dei dispositivi del blocco. Dettagli: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr ""
+"Errore durante il richiamo delle informazioni sul dispositivo del blocco per "
+"%(device)s."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "Impossibile trovare il file distro: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"Impossibile analizzare il file distro: %(filename)s. Verificare che sia un "
+"file JSON."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+"Impossibile accedere a %(portal)s di destinazione host iSCSI. Dettagli: "
+"%(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "Impossibile accedere alla destinazione %(target)s host %(host)s iSCSI"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "Il file ISO %(filename)s non �� avviabile"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr "Il file ISO %(filename)s non ha un record di avvio El Torito valido"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "Voce di convalida El Torito non valida in ISO %(filename)s"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "Indicatore di avvio El Torito non valido in ISO %(filename)s"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr "Tipo di volume imprevisto per il volume primario in ISO %(filename)s"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+"Formato non corretto durante la lettura del descrittore volume in ISO "
+"%(filename)s"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"L'hypervisor non dispone dell'autorizzazione per utilizzare questo ISO "
+"%(filename)s. Spostarlo in /var/lib/libvirt o impostare l'autorizzazione di "
+"ricerca per gli elenchi di controllo accesso ai file per l'utente "
+"'%(user)s', se possibile, o aggiungere '%(user)s' al gruppo percorso ISO o "
+"(non consigliato) 'chmod -R o+x 'path_to_iso'. Dettagli: %(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "Macchina virtuale %(name)s gi�� esistente"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "La macchina virtuale %(name)s non esiste"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+"Impossibile richiamare l'immagine per la macchina virtuale arrestata %(name)s"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "L'immagine ISO remota non �� supportata da questo server."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile creare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile creare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossibile richiamare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr ""
+"L'indirizzo dei grafici su cui rimanere in ascolto deve essere IPv4 o IPv6"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "Specificare un modello da cui creare una macchina virtuale"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile avviare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile arrestare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile eliminare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"Impossibile ridenominare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "Il nome della rete deve essere una stringa"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "Il nome della rete deve essere una stringa"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "L'utente '%(users)s' non esiste."
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "L'utente '%(groups)s' non esiste."
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile arrestare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "Impossibile avviare la macchina virtuale %(name)s. Dettagli: %(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "L'interfaccia %(iface)s non esiste nella macchina virtuale %(name)s"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"La rete %(network)s specificata per la macchina virtuale %(name)s non esiste"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr ""
+"Il tipo supportato per le interfacce della macchina virtuale �� solo rete"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+"Il nome di rete per l'interfaccia della macchina virtuale deve essere una "
+"stringa"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"Scheda modello di rete non valida per l'interfaccia della macchina virtuale"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+"Specificare il tipo e la rete per aggiungere una nuova interfaccia della "
+"macchina virtuale"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "Modello %(name)s gi�� esistente"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+"La rete '%(network)s' specificata per il modello %(template)s non esiste"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"Il pool di memoria %(pool)s specificato per il modello %(template)s non "
+"esiste"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"Il pool di memoria %(pool)s specificato per il modello %(template)s non �� "
+"attivo"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "Parametro non valido %(param)s' specificato per CDROM."
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+"La rete %(network)s specificata per il modello %(template)s non �� attiva"
+
+msgid "Template name must be a string"
+msgstr "Il nome del modello deve essere una stringa"
+
+msgid "Template icon must be a path to the image"
+msgstr "L'icona del modello deve essere un percorso all'immagine"
+
+msgid "Template distribution must be a string"
+msgstr "La distribuzione del modello deve essere una stringa"
+
+msgid "Template distribution version must be a string"
+msgstr "La versione della distribuzione del modello deve essere una stringa"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "Il numero di CPU deve essere un numero intero"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr ""
+"La quantit�� di memoria (MB) deve essere un numero intero maggiore di 512"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "Il CDROM del modello deve essere un file ISO locale o remoto"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "URI pool di memoria non valido: %(value)s specificato per il modello"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "Specificare un'immagine ISO come CDROM per creare un modello"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "Tutte le reti per il modello devono essere specificate in un elenco."
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "Impossibile creare il modello a causa dell'errore: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "Impossibile eliminare il modello a causa dell'errore: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr "Il CDROM del modello deve essere un file ISO locale o remoto"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "Pool di memoria %(name)s gi�� esistente"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "Il pool di memoria %(name)s non esiste"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "Specificare %(item)s per poter creare il pool di memoria %(name)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "Impossibile eliminare il pool di memoria attivo %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "Impossibile elencare i pool di memoria. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "Impossibile creare il pool di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"Impossibile ottenere il numero di volumi di memoria nel pool di memoria "
+"%(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "Impossibile attivare il pool di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "Impossibile disattivare il pool di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "Impossibile eliminare il pool di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"Impossibile creare il pool NFS poich�� il percorso di esportazione %(path)s "
+"potrebbe bloccarsi durante il montaggio"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"Impossibile creare il pool NFS poich�� il montaggio del percorso di "
+"esportazione %(path)s ha avuto esito negativo"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "Tipo di pool di memoria non supportato: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "Il percorso del pool di memoria deve essere una stringa"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "L'host del pool di memoria deve essere un nome host o IP"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "Il parametro dispositivi pool di memoria deve essere un elenco"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "L'IQN di destinazione di un pool iSCSI deve essere una stringa"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+"La porta di un server di memoria remoto deve essere un numero intero tra 1 e "
+"65535"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr "Specificare nome e tipo per creare un pool di memoria"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s non �� un disco/partizione valido. Impossibile aggiungerlo al pool "
+"%(pool)s."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+"Solo il parametro dischi pu�� essere aggiornato per il pool di memoria logico."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "Il nome adattatore host SCSI deve essere una stringa."
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "Il pool di memoria kimchi_isos �� riservato per uso interno"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"Impossibile attivare il pool di memoria NFS %(name)s. Il server NFS "
+"%(server)s �� irraggiungibile."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"Impossibile disattivare il pool di memoria NFS %(name)s. Il server NFS "
+"%(server)s �� irraggiungibile."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"Impossibile disattivare il pool %(name)s poich�� �� associato ad alcuni modelli"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+"Impossibile eliminare il pool %(name)s poich�� �� associato ad alcuni modelli"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"Un gruppo di volumi denominato '%(name)s' esiste gi��. Scegliere un altro "
+"nome per creare il pool logico."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"Impossibile aggiornare il database con informazioni approfondite sulla "
+"scansione a causa dell'errore: %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "Volume di memoria %(name)s gi�� esistente"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr "Il volume di memoria %(name)s non esiste nel pool di memoria %(pool)s"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "Specificare %(item)s per poter creare il volume di memoria %(volume)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"Impossibile elencare i volumi di memoria poich�� il pool di memoria %(pool)s "
+"non �� attivo"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"Impossibile creare il volume di memoria %(name)s nel pool di memoria "
+"%(pool)s. Dettagli: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"Impossibile elencare i volumi di memoria nel pool di memoria %(pool)s. "
+"Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "Impossibile ripulire i volumi di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "Impossibile eliminare il volume di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr ""
+"Impossibile ridimensionare il volume di memoria %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+"Il tipo di memoria %(type)s non supporta la creazione ed eliminazione del "
+"volume"
+
+msgid "Storage volume name must be a string"
+msgstr "Il nome del volume di memoria deve essere una stringa"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "L'assegnazione del volume di memoria deve essere un numero intero"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "Il volume di memoria richiede un nome volume"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"Impossibile aggiornare il database con informazioni sul volume di memoria a "
+"causa dell'errore: %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "L'interfaccia %(name)s non esiste"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "Rete %(name)s gi�� esistente"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "La rete %(name)s non esiste"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"La sottorete %(subnet)s specificata per la rete %(network)s non �� valida ."
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+"Specificare un'interfaccia di rete per creare la rete con bridge %(name)s"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "Impossibile eliminare la rete attiva %(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"L'interfaccia %(iface)s specificata per la rete %(network)s �� gi�� in uso"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr ""
+"L'interfaccia deve essere un dispositivo bridge o di collegamento NIC bare-"
+"metal."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "Impossibile creare la rete %(name)s. Dettagli: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "Impossibile trovare un indirizzo IP libero per la rete '%(name)s'"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr "L'interfaccia %(iface)s gi�� esistente."
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "I tipi di rete supportati sono isolata, NAT e bridge"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"La sottorete della rete deve essere una stringa con indirizzo IP e prefisso "
+"o maschera di rete"
+
+msgid "Network interface must be a string"
+msgstr "L'interfaccia di rete deve essere una stringa"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "L'ID VLAN di rete deve essere un numero intero tra 1 e 4094"
+
+msgid "Specify name and type to create a Network"
+msgstr "Specificare nome e tipo per creare una rete"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+"Impossibile eliminare la rete %(name)s. Ci sono alcune macchine virtuali "
+"%(vms)s e/o modelli collegati a tale rete."
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+"Impossibile disattivare la rete %(name)s. Ci sono alcune macchine virtualie "
+"%(vms)s e/o modelli collegati a tale rete."
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+"Il dispositivo bridge %(name)s non pu�� essere il dispositivo trunk di una "
+"VLAN."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "Impossibile attivare l'interfaccia %(iface)s: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"Impossibile attivare l'interfaccia %(iface)s. Controllare lo stato del link "
+"fisico."
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "Il report di debug %(name)s non esiste"
+
+msgid "Debug report tool not found in system"
+msgstr "Strumento report di debug non trovato nel sistema"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "Impossibile creare il report di debug %(name)s. Dettagli: %(err)s."
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "Impossibile generare il report di debug %(name)s. Dettagli: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"Un gruppo di volumi denominato '%(name)s' esiste gi��. Scegliere un altro "
+"nome per creare il pool logico."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "Il server di memoria %(server)s non �� stato utilizzato da Kimchi"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "Distro '%(name)s' non esistente"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "La partizione %(name)s non esiste nell'host"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+"Impossibile arrestare la macchina host poich�� sono presenti macchine "
+"virtuali in esecuzione"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+"Impossibile riavviare la macchina host poich�� sono presenti macchine "
+"virtuali in esecuzione"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "Dispositivo nodo '%(name)s' non trovato"
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "Nessun pacchetto contrassegnato per l'aggiornamento"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "Il pacchetto %(name)s non �� contrassegnato per l'aggiornamento."
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+"Errore durante il richiamo dei pacchetti contrassegnati per l'aggiornamento. "
+"Dettagli: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "Non �� presente un gestore pacchetti compatibile per questo sistema."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "URI %(uri)s non valido"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "Tipo di memoria non valido. I tipi supportati sono: 'cdrom'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr ""
+"Errore durante la creazione del nuovo dispositivo di memoria: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "Errore durante l'aggiornamento del dispositivo di memoria: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "Errore durante la rimozione del dispositivo di memoria: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+"Specificare tipo e percorso per aggiungere un nuovo disco della macchina "
+"virtuale"
+
+msgid "Specify path to update virtual machine disk"
+msgstr ""
+"Specificare il percorso per aggiornare il disco della macchina virtuale"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+"Specificare tipo e percorso per aggiungere un nuovo disco della macchina "
+"virtuale"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "L'ID repository YUM deve essere una stringa di una sola parola."
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "L'URL del repository deve essere http://, ftp:// o file:// URL."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"La configurazione del repository �� un dizionario con valori specifici in "
+"base al tipo di repository."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "La distribuzione al repository DEB deve essere una stringa"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "I componenti per il repository DEB devono essere elencati in un array"
+
+msgid "Components to DEB repository must be a string"
+msgstr "I componenti per il repository DEB devono essere una stringa"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "Il nome del repository YUM deve essere una stringa."
+
+msgid "GPG check must be a boolean value."
+msgstr "Il controllo GPG deve essere un valore booleano."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "La chiave GPG deve essere un URL che punta al file blindato ASCII."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "Impossibile aggiornare il repository %(repo_id)s."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "Il repository %(repo_id)s non esiste."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr ""
+"Lo strumento di gestione del repository non �� stato riconosciuto per il "
+"sistema."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "Il repository %(repo_id)s �� gi�� abilitato."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "Il repository %(repo_id)s �� gi�� disabilitato."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "Impossibile rimuovere il repository %(repo_id)s."
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+"Impossibile scrivere il file di configurazione del repository %(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+"Specificare la distribuzione del repository per poter creare un repository "
+"DEB."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "Impossibile abilitare il repository %(repo_id)s."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "Impossibile disabilitare il repository %(repo_id)s."
+
+msgid "YUM Repository ID already exists"
+msgstr "ID repository YUM gi�� esistente"
+
+msgid "YUM Repository name must be a string"
+msgstr "Il nome del repository YUM deve essere una stringa"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "Impossibile elencare i repository. Dettagli: '%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr ""
+"Impossibile richiamare le informazioni sul repository. Dettagli: '%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "Impossibile aggiungere il repository. Dettagli: '%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "Impossibile rimuovere il repository. Dettagli: '%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "CODICE DI ERRORE"
+
+msgid "REASON"
+msgstr "CAUSA"
+
+msgid "STACK"
+msgstr "STACK"
+
+msgid "Go to Homepage"
+msgstr "Vai alla home page"
+
+msgid "Create a New Virtual Machine"
+msgstr "Crea una nuova macchina virtuale"
+
+msgid "Virtual Machine Name"
+msgstr "Nome macchina virtuale"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"Il nome utilizzato per identificare la macchina virtuale. Se il nome viene "
+"omesso ne verr�� scelto uno in base al modello utilizzato."
+
+msgid "Template"
+msgstr "Modello"
+
+msgid "Please create a template first."
+msgstr "Creare prima un modello."
+
+msgid "Create a Template"
+msgstr "Crea un modello"
+
+msgid "Please choose a template."
+msgstr "Scegliere un modello."
+
+msgid "OS"
+msgstr "SO"
+
+msgid "OS Version"
+msgstr "Versione SO"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "Memoria"
+
+msgid "Create"
+msgstr "Crea"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Annulla"
+
+msgid "Edit Guest"
+msgstr "Modifica guest"
+
+msgid "General"
+msgstr "Generale"
+
+msgid "Storage"
+msgstr "Memoria"
+
+msgid "Interface"
+msgstr "Interfaccia"
+
+msgid "Permission"
+msgstr "Versione"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "Nome"
+
+msgid "CPUs"
+msgstr "CPU"
+
+msgid "Memory (MB)"
+msgstr "Memoria"
+
+msgid "Icon"
+msgstr "Icona"
+
+msgid "Device"
+msgstr "Nome dispositivo"
+
+msgid "Path"
+msgstr "Percorso NFS"
+
+msgid "Network"
+msgstr "Rete"
+
+msgid "Type"
+msgstr "Tipo"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "Tutti"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "Fornitore"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "Salva"
+
+msgid "Replace"
+msgstr "Sostituisci"
+
+msgid "Detach"
+msgstr "Scollega"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "Avvia"
+
+msgid "Reset"
+msgstr "Reimposta"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr "Azioni"
+
+msgid "Connect"
+msgstr "Connetti"
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr "Modifica"
+
+msgid "Shut Down"
+msgstr "Arresta"
+
+msgid "Delete"
+msgstr "Elimina"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "I/O disco"
+
+msgid "Network I/O"
+msgstr "I/O di rete"
+
+msgid "Livetile"
+msgstr "Riquadro animato"
+
+msgid "No guests found."
+msgstr "Nessuna macchina guest trovata."
+
+msgid "Add a Storage Device to VM"
+msgstr "Aggiungi un dispositivo di memoria alla VM"
+
+msgid "Device Type"
+msgstr "Tipo dispositivo"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "Il tipo di dispositivo. Attualmente, �� supportato solo \"cdrom\"."
+
+msgid "Storage Pool"
+msgstr "Pool di memoria"
+
+msgid "Storage pool which volume located in"
+msgstr "Il percorso del pool di memoria deve essere una stringa"
+
+msgid "Storage Volume"
+msgstr "Nome pool di memoria"
+
+msgid "Storage volume to be attached"
+msgstr "Il nome del volume di memoria deve essere una stringa"
+
+msgid "File Path"
+msgstr "Percorso file"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "Il percorso file ISO nel server per CDROM."
+
+msgid "Attach"
+msgstr "Allega"
+
+msgid "Shut down"
+msgstr "Arresta"
+
+msgid "Restart"
+msgstr "Riavvia"
+
+msgid "Basic Information"
+msgstr "Informazioni di base"
+
+msgid "OS Distro"
+msgstr "Distro SO"
+
+msgid "OS Code Name"
+msgstr "Nome codice SO"
+
+msgid "Processor"
+msgstr "Processore"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "Statistiche di sistema"
+
+msgid "Software Updates"
+msgstr "Aggiornamenti del software"
+
+msgid "Update Progress"
+msgstr "Avanzamento aggiornamento"
+
+msgid "Repositories"
+msgstr "Repository"
+
+msgid "Debug Reports"
+msgstr "Report di debug"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+"Il nome utente o la password immessi non sono corretti. Ripetere "
+"l'operazione."
+
+msgid "This field is required."
+msgstr "Questo campo �� obbligatorio."
+
+msgid "Log in"
+msgstr "Accedi"
+
+msgid "Logging in..."
+msgstr "Accesso in corso..."
+
+msgid "Host"
+msgstr "Host"
+
+msgid "Guests"
+msgstr "Guest"
+
+msgid "Templates"
+msgstr "Modelli"
+
+msgid "Failed to get application configuration"
+msgstr "Richiamo della configurazione dell'applicazione non riuscito"
+
+msgid "This is not a valid Linux path"
+msgstr "Non �� un percorso Linux valido"
+
+msgid "This is not a valid URL."
+msgstr "Non �� un URL valido."
+
+msgid "No such data available."
+msgstr "Dati indicati non disponibili."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"Impossibile contattare il sistema host. Verificare che il sistema host sia "
+"attivo e che si disponga della connettivit�� di rete per tale sistema. "
+"Risposta alla richiesta HTTP %1. "
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "Conferma eliminazione"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Confirm"
+msgstr "Conferma"
+
+msgid "Warning"
+msgstr "Avvertenza"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "Caricamento in corso..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "Riprova"
+
+msgid "Detailed message:"
+msgstr "Messaggio dettagliato:"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "Non �� un file ISO valido."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "Richieder�� molto tempo. Continuare?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "L'azione eliminer�� permanentemente il modello. Continuare?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"Impossibile arrestare il sistema poich�� sono in esecuzione alcune macchine "
+"virtuali."
+
+msgid "Max:"
+msgstr "Massimo:"
+
+msgid "Utilization"
+msgstr "Utilizzo"
+
+msgid "Available"
+msgstr "Disponibile"
+
+msgid "Read Rate"
+msgstr "Velocit�� di lettura"
+
+msgid "Write Rate"
+msgstr "Velocit�� di scrittura"
+
+msgid "Received"
+msgstr "Ricevuti"
+
+msgid "Sent"
+msgstr "Inviati"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"L'arresto o il riavvio dell'host provocher�� la perdita del lavoro non "
+"salvato. Continuare con l'arresto o il riavvio?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Il repository verr�� rimosso permanentemente e non potr�� essere ripristinato. "
+"Si desidera continuare?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "URL di base"
+
+msgid "Is Mirror"
+msgstr "�� speculare"
+
+msgid "URL Args"
+msgstr "Argomenti URL"
+
+msgid "Enabled"
+msgstr "Abilitato"
+
+msgid "GPG Check"
+msgstr "Controllo GPG"
+
+msgid "GPG Key"
+msgstr "Chiave GPG"
+
+msgid "Add"
+msgstr "Aggiungi"
+
+msgid "Remove"
+msgstr "Rimuovi"
+
+msgid "Enable"
+msgstr "Abilita"
+
+msgid "Disable"
+msgstr "Disabilita"
+
+msgid "Package Name"
+msgstr "Nome pacchetto"
+
+msgid "Version"
+msgstr "Versione"
+
+msgid "Architecture"
+msgstr "Architettura"
+
+msgid "Repository"
+msgstr "Repository"
+
+msgid "Update All"
+msgstr "Aggiorna tutto"
+
+msgid "Updating..."
+msgstr "Aggiornamento in corso..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "Aggiornamento dei pacchetti non riuscito."
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Il report del debug verr�� rimosso permanentemente e non potr�� essere "
+"ripristinato. Si desidera continuare?"
+
+msgid "Generated Time"
+msgstr "Ora di creazione"
+
+msgid "Generate"
+msgstr "Crea"
+
+msgid "Generating..."
+msgstr "Creazione in corso..."
+
+msgid "Rename"
+msgstr "Ridenomina"
+
+msgid "Download"
+msgstr "Scarica"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+"Il nome del report pu�� contenere solo lettere, cifre e/o trattini ('-')."
+
+msgid "Pending..."
+msgstr "Caricamento in corso..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"L'operazione eliminer�� la macchina virtuale e i relativi dischi virtuali e "
+"non �� reversibile. Continuare?"
+
+msgid "Power off Confirmation"
+msgstr "Conferma eliminazione"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "Conferma eliminazione"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "Conferma eliminazione"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "L'azione eliminer�� permanentemente il modello. Continuare?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"Il CDROM verr�� scollegato permanentemente e non sar�� possibile ricollegarlo. "
+"Continuare con lo scollegamento?"
+
+msgid "Attaching..."
+msgstr "Collegamento in corso..."
+
+msgid "Replacing..."
+msgstr "Sostituzione in corso..."
+
+msgid "Successfully attached!"
+msgstr "Collegamento riuscito."
+
+msgid "Successfully replaced!"
+msgstr "Sostituzione riuscita."
+
+msgid "Successfully detached!"
+msgstr "Scollegamento riuscito."
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "L'ID VLAN deve essere compreso tra 1 e 4094."
+
+msgid "unavailable"
+msgstr "non disponibile"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"L'azione interromper�� la connettivit�� di rete per qualsiasi macchina "
+"virtuale che dipende da questa rete."
+
+msgid "Create a network"
+msgstr "Crea una rete"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Il pool di memoria non �� permanente. Invece di disattivarlo, l'azione lo "
+"eliminer�� permanentemente. Continuare?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "L'azione eliminer�� permanentemente il pool di memoria. Continuare?"
+
+msgid "This storage pool is empty."
+msgstr "Il pool di memoria �� vuoto."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"Il disco verr�� formattato e tutti i dati su di esso andranno persi, sicuri "
+"di voler continuare? "
+
+msgid "SCSI Fibre Channel"
+msgstr "Canale a fibre ottiche SCSI"
+
+msgid "No SCSI adapters found."
+msgstr "Nessun adattatore SCSI trovato."
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "Il campo per il nome del pool di memoria non pu�� essere vuoto."
+
+msgid "The storage pool path can not be blank."
+msgstr "Il campo per il percorso del pool di memoria non pu�� essere vuoto."
+
+msgid "NFS server mount path can not be blank."
+msgstr ""
+"Il campo per il percorso di montaggio del server NFS non pu�� essere vuoto."
+
+msgid "Invalid NFS mount path."
+msgstr "Percorso di montaggio NFS non valido."
+
+msgid "No logical device selected."
+msgstr "Nessun dispositivo logico selezionato."
+
+msgid "The iSCSI target can not be blank."
+msgstr "Il campo per la destinazione iSCSI non pu�� essere vuoto."
+
+msgid "Server name can not be blank."
+msgstr "Il campo per il nome del server non pu�� essere vuoto."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "Ricerca di partizioni disponibili in corso..."
+
+msgid "No available partitions found."
+msgstr "Nessuna partizione disponibile trovata."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Il pool di memoria non �� permanente. Invece di disattivarlo, l'azione lo "
+"eliminer�� permanentemente. Continuare?"
+
+msgid "Unable to retrieve partitions information."
+msgstr ""
+"Impossibile richiamare le informazioni sul repository. Dettagli: '%(err)s'"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "Il campo per il nome del pool di memoria non pu�� essere vuoto."
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "Nome rete"
+
+msgid "State"
+msgstr "Stato"
+
+msgid "Network Type"
+msgstr "Tipo di Rete"
+
+msgid "Address Space"
+msgstr "Spazio indirizzo"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "Nome pool di memoria non valido. Non deve contenere '/'."
+
+msgid "Isolated: no external network connection"
+msgstr "Isolata: nessuna connessione di rete fisica"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: solo connessione di rete fisica in uscita"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+"Con bridge: le macchine virtuali sono connesse direttamente alla rete fisica"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "Destinazione:"
+
+msgid "Enable VLAN"
+msgstr "Abilita VLAN:"
+
+msgid "VLAN ID"
+msgstr "ID VLAN:"
+
+msgid "Stop"
+msgstr "Arresta"
+
+msgid "Generate a New Debug Report"
+msgstr "Crea un nuovo report di debug"
+
+msgid "Report Name"
+msgstr "Nome report"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"Il nome utilizzato per identificare il report. Se il nome viene omesso, ne "
+"viene scelto uno in base all'ora corrente. Il nome pu�� contenere lettere, "
+"cifre e trattini (\"-\")."
+
+msgid "Rename a Debug Report"
+msgstr "Crea un nuovo report di debug"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"Il nome utilizzato per identificare il report. Se il nome viene omesso, ne "
+"viene scelto uno in base all'ora corrente. Il nome pu�� contenere lettere, "
+"cifre e trattini (\"-\")."
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr "Aggiungi un repository"
+
+msgid "Identifier"
+msgstr "Identificativo"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "Identificativo univoco di una sola parola per il repository."
+
+msgid "Textual name for the repository."
+msgstr "Nome in formato testo per il repository."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "Campo obbligatorio"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "URL al repository. I protocolli supportati sono http, ftp e file."
+
+msgid "Repository is a mirror"
+msgstr "Il repository �� un elemento speculare."
+
+msgid "Distribution"
+msgstr "Distribuzione"
+
+msgid "Distribution of the DEB repository."
+msgstr "Distribuzione del repository DEB."
+
+msgid "Components"
+msgstr "Componenti"
+
+msgid "List of components in DEB repository."
+msgstr "Elenco di componenti nel repository DEB."
+
+msgid "Edit Repository"
+msgstr "Modifica repository"
+
+msgid "Mirror List URL"
+msgstr "URL elenco elementi speculari"
+
+msgid "Yes"
+msgstr "S��"
+
+msgid "No"
+msgstr "No"
+
+msgid "Capacity"
+msgstr "Capacit��"
+
+msgid "Allocated"
+msgstr "Assegnato"
+
+msgid "Location"
+msgstr "Ubicazione"
+
+msgid "Device path"
+msgstr "Percorso dispositivo"
+
+msgid "active"
+msgstr "attivo"
+
+msgid "inactive"
+msgstr "non attivo"
+
+msgid "Deactivate"
+msgstr "Disattiva"
+
+msgid "Activate"
+msgstr "Attiva"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "Rimuovi definizione"
+
+msgid "Format"
+msgstr "Formato:"
+
+msgid "Allocation"
+msgstr "Allocazione:"
+
+msgid "Define a New Storage Pool"
+msgstr "Definisci un nuovo pool di memoria"
+
+msgid "Storage Pool Name"
+msgstr "Nome pool di memoria"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+"Il nome utilizzato per identificare i pool di memoria; il campo non deve "
+"essere vuoto."
+
+msgid "Storage Pool Type"
+msgstr "Tipo di pool di memoria"
+
+msgid "Storage Path"
+msgstr "Percorso di memoria"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+"Il percorso del pool di memoria. Ogni pool di memoria deve avere un percorso "
+"univoco."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+"Kimchi tenter�� di creare la directory nel caso non esista ancora sul sistema."
+
+msgid "NFS Server IP"
+msgstr "IP server NFS"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"Il nome host o l'indirizzo IP del server NFS. �� possibile immetterlo o "
+"sceglierlo dalla cronologia."
+
+msgid "NFS Path"
+msgstr "Percorso NFS"
+
+msgid "The NFS exported path on NFS server."
+msgstr "Il percorso esportato NFS sul server NFS."
+
+msgid "iSCSI Server"
+msgstr "Server iSCSI"
+
+msgid "Server"
+msgstr "Server"
+
+msgid "Port"
+msgstr "Porta"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr ""
+"Il nome host o l'indirizzo IP del server iSCSI. Il campo non deve essere "
+"vuoto."
+
+msgid "Target"
+msgstr "Destinazione"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "La destinazione iSCSI sul server iSCSI"
+
+msgid "Add iSCSI Authentication"
+msgstr "Aggiungi autenticazione iSCSI"
+
+msgid "iSCSI Authentication"
+msgstr "Autenticazione iSCSI"
+
+msgid "User Name"
+msgstr "Nome utente"
+
+msgid "Password"
+msgstr "Password"
+
+msgid "SCSI Adapter"
+msgstr "Adattatore SCSI"
+
+msgid "Please, wait..."
+msgstr "Attendere..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "Aggiungi modello"
+
+msgid "Where is the source media for this template? "
+msgstr "Dov'�� il supporto di origine per questo modello?"
+
+msgid "Local ISO Image"
+msgstr "Immagine ISO locale"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "Immagine ISO remota"
+
+msgid "Search ISOs"
+msgstr "Ricerca ISO"
+
+msgid "The following ISOs are available:"
+msgstr "Sono disponibili i seguenti file ISO:"
+
+msgid "OS: "
+msgstr "SO: "
+
+msgid "Version: "
+msgstr "Versione: "
+
+msgid "Size: "
+msgstr "Dimensione: "
+
+msgid "Search more ISOs"
+msgstr "Ricerca pi�� ISO"
+
+msgid "Create Templates from Selected ISO"
+msgstr "Crea modelli da ISO selezionato"
+
+msgid "I want to use a specific ISO file"
+msgstr "Utilizzare un file ISO specifico"
+
+msgid "Loading default remote ISOs ..."
+msgstr "Caricamento di ISO remoti predefiniti in corso..."
+
+msgid "Arch: "
+msgstr "Arch: "
+
+msgid "I want to use a custom URL"
+msgstr "Utilizzare un URL personalizzato"
+
+msgid "Edit Template"
+msgstr "Modifica modello"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "Grafici"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "Numero CPU"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "Nessun modello trovato."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "Eliminazione non consentita per %(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s non implementa il metodo di aggiornamento"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "Creazione non consentita per %(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "Impossibile analizzare la richiesta JSON"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "L'API supporta solo JSON"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "Archivio dati non inizializzato nell'oggetto modello."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "Impossibile avviare l'attivit�� a causa dell'errore: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "Autenticazione non riuscita per l'utente '%(username)s'. [Codice di "
+#~ "errore: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "Non si dispone dell'autorizzazione ad accedere a Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Specificare %(item)s per accedere a Kimchi"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "Impossibile trovare %(item)s nell'archivio dati"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "�� stato raggiunto il timeout durante l'esecuzione del comando '%(cmd)s' "
+#~ "dopo %(seconds)s secondi"
+
+#~ msgid "Help"
+#~ msgstr "Guida"
+
+#~ msgid "About"
+#~ msgstr "Info su"
+
+#~ msgid "Log out"
+#~ msgstr "Disconnetti"
+
+#~ msgid "Version:"
+#~ msgstr "Versione:"
diff --git a/plugins/gingerbase/po/ja_JP.po b/plugins/gingerbase/po/ja_JP.po
new file mode 100644
index 0000000..3084d21
--- /dev/null
+++ b/plugins/gingerbase/po/ja_JP.po
@@ -0,0 +1,2269 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: ja_JP\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr ""
+"������������������������������������������������������������������������������������������������: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr ""
+"%(device)s ���������������������������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "������������������������������������������������ %(filename)s ������������������������"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"������������������������������������������������ %(filename)s ���������������������������JSON ������������"
+"���������������������������������������������"
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+"iSCSI ��������������������������� %(portal)s ���������������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "iSCSI ��������� %(host)s ��������������� %(target)s ������������������������������"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "ISO ������������ %(filename)s ������������������������������������������"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr ""
+"ISO ������������ %(filename)s ������������������ El Torito ������������������������������������������"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "��������� El Torito ������������������������ ISO %(filename)s ���������������"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "��������� El Torito ������������������������������������ ISO %(filename)s ���������������"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+"1 ������������������������������������������������������������������ ISO %(filename)s ���������������"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+"��������������������������������������������� ISO %(filename)s ���������������������������������������"
+"������������������������������������"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"��������������������������������� ISO %(filename)s ������������������������������������������/var/lib/"
+"libvirt ���������������������������������������������������������������%(user)s���������������������������"
+"���������������������������������������������������������%(user)s������ISO ���������������������������������"
+"���������������������chmod -R o+x path_to_iso������������ (���������������������) ���������������"
+"������������: %(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "��������������� %(name)s ������������������������"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "��������������� %(name)s ���������������������"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr "��������������������������������� %(name)s ���������������������������������������������������������"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "������������ ISO ������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr ""
+"listen ���������������������������������������������������IPv4 ��������� IPv6 ���������������������������"
+"���"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "���������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������������: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "���������������������������������������������������������������������"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "���������������������������������������������������������������������"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "���������������%(users)s���������������������������"
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "���������������%(groups)s���������������������������"
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������� %(name)s ���������������������������������: %(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "������������������������ %(iface)s ������������������ %(name)s ������������������������"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"��������������� %(name)s ��������������������������������������������� %(network)s ���������������������"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"���"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"���������"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "������������������ %(name)s ������������������������"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr ""
+"������������������ %(template)s ������������������������������������������������%(network)s������������"
+"������������"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"������������������ %(template)s ������������������������������������������������������ %(pool)s ������"
+"���������������"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"������������������ %(template)s ������������������������������������������������������ %(pool)s ������"
+"���������������������������������"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "CDROM ���������������������������������������������%(param)s���������������������"
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+"������������������ %(template)s ��������������������������������������������� %(network)s ���������"
+"������������������������������"
+
+msgid "Template name must be a string"
+msgstr "���������������������������������������������������������������������"
+
+msgid "Template icon must be a path to the image"
+msgstr "���������������������������������������������������������������������������������������"
+
+msgid "Template distribution must be a string"
+msgstr "������������������������������������������������������������������������������������������������������"
+
+msgid "Template distribution version must be a string"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "CPU ������������������������������������������"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "������������������ (MB ������) ������512 ���������������������������������������������������"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr ""
+"������������������ CDROM ��������������������������������������� ISO ���������������������������������������"
+"���"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr ""
+"������������������������������������ URI %(value)s ������������������������������������������������"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr ""
+"CDROM ������������������������������������������������������ ISO ���������������������������������������"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "������������������������������������������������������������������������������������������������������"
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "���������������������������������������������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "���������������������������������������������������������������������: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr ""
+"������������������ CDROM ��������������������������������������� ISO ���������������������������������������"
+"���"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "��������������������������� %(name)s ������������������������"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "��������������������������� %(name)s ���������������������"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr ""
+"��������������������������� %(name)s ������������������������������%(item)s ���������������������������"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "��������������������������������������������� %(name)s ������������������������"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "���������������������������������������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"��������������������������� %(name)s ������������������������������������������������������������������������"
+"���:%(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s ���������������������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s ������������������������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"��������������������������������������������� %(path)s ���������������������������������������������������"
+"������NFS ���������������������������������"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"��������������������������� %(path)s ���������������������������������������NFS ���������������������������"
+"������"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "���������������������������������������������������������������������: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "������������������������������������������������������������������������������������"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "���������������������������������������������IP ���������������������������������������������������"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "���������������������������������������������������������������������������������������������������������"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "iSCSI ��������������������������� IQN ������������������������������������������������"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+"���������������������������������������������������������������1 ������ 65535 ���������������������������������"
+"������������"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr "������������������������������������������������������������������������������������������������"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s ���������������������������/��������������������������������������������������� %(pool)s ������"
+"������������������������������"
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+"���������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "SCSI ���������������������������������������������������������������������������������"
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "��������������������������� kimchi_isos ������������������������������������������������������"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"NFS ��������������������������� %(name)s ���������������������������������������NFS ������������ "
+"%(server)s ���������������������������"
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"NFS ��������������������������� %(name)s ������������������������������������������NFS ������������ "
+"%(server)s ���������������������������"
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"��������� %(name)s ������������������������������������������������������������������������������������������"
+"���������������������"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+"��������� %(name)s ������������������������������������������������������������������������������������������"
+"������"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"���������%(name)s���������������������������������������������������������������������������������������������"
+"���������������������������������������������������"
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"���������������������������������������������������������������������������������������������������������: "
+"%(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "��������������������������������� %(name)s ������������������������"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr ""
+"��������������������������������� %(name)s ��������������������������������� %(pool)s ������������������"
+"���"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr ""
+"��������������������������������� %(volume)s ������������������������������%(item)s ���������������������"
+"������"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"��������������������������� %(pool)s ������������������������������������������������������������������������"
+"���������������������������"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"��������������������������������� %(name)s ������������������������������ %(pool)s ���������������������"
+"������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"��������������������������� %(pool)s ���������������������������������������������������������������������"
+"���: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s ������������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "��������������������������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr "��������������������������������� %(name)s ������������������������������������������: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr ""
+"��������������������������� %(type)s ������������������������������������������������������������������������"
+"���������"
+
+msgid "Storage volume name must be a string"
+msgstr "������������������������������������������������������������������������������������"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "������������������������������������������������������������������������������������"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "������������������������������������������������������������������������"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"���������������������������������������������������������������������������������������������������������������: "
+"%(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "������������������������ %(name)s ���������������������"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "������������������ %(name)s ������������������������"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "������������������ %(name)s ���������������������"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"������������������ %(network)s ������������������������������������������ %(subnet)s ������������������"
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+"������������������������������������ %(name)s ���������������������������������������������������������"
+"���������������������������������������"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "������������������������������������ %(name)s ������������������������"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"������������������ %(network)s ��������������������������������������������������� %(iface)s ���������"
+"���������������������������"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr ""
+"��������������������������������� NIC���������������������������������������������������������������������������"
+"������"
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "������������������ %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "���������������������%(name)s��������������� IP ���������������������������������������"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "���������������������������������������������������������������������NAT������������������������������"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"������������������������������������������IP ������������������������������������������������������������������"
+"������������������������������������������������������"
+
+msgid "Network interface must be a string"
+msgstr "���������������������������������������������������������������������������������������������"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "������������������ VLAN ID ������1 ������ 4094 ���������������������������������������������"
+
+msgid "Specify name and type to create a Network"
+msgstr "���������������������������������������������������������������������������������������"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+"��������������������������� %(name)s ������VLAN ������������������������������������������������������������"
+"������"
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "������������������������ %(iface)s ���������������������������������: %(err)s���"
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"������������������������ %(iface)s ���������������������������������������������������������������������������"
+"������������"
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "��������������������������� %(name)s ������������������������"
+
+msgid "Debug report tool not found in system"
+msgstr "������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "��������������������������� %(name)s ���������������������������������: %(err)s"
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s ���������������������������������: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"���������%(name)s���������������������������������������������������������������������������������������������"
+"���������������������������������������������������"
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr ""
+"������������������������������ %(server)s ������Kimchi ������������������������������������������������"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "������������������������������������%(name)s������������������������"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "��������������������� %(name)s ������������������������������������"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr "���������������������������������������������������������������������������������������������������������"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr "������������������������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "���������������������������%(name)s���������������������������"
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "���������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "��������������� %(name)s ���������������������������������������������������������������"
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "���������������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "��������� URI %(uri)s"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr ""
+"���������������������������������������������������������������������������������������cdrom������������"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr ""
+"���������������������������������������������������������������������������������������������������: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr ""
+"������������������������������������������������������������������������������������������: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr ""
+"������������������������������������������������������������������������������������������: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr "������������������������������������������������������������������������������������������������"
+
+msgid "Specify path to update virtual machine disk"
+msgstr "���������������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr "������������������������������������������������������������������������������������������������"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "YUM ������������������ ID ������1 ���������������������������������������������������������������"
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr ""
+"������������������ URL ��� http://���ftp://������������ file:// URL ���������������������������"
+"������"
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������"
+
+msgid "Distribution to DEB repository must be a string"
+msgstr ""
+"DEB ������������������������������������������������������������������������������������������������������������"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr ""
+"DEB ������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid "Components to DEB repository must be a string"
+msgstr "DEB ������������������������������������������������������������������������������������������������"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "YUM ������������������������������������������������������������������������"
+
+msgid "GPG check must be a boolean value."
+msgstr "GPG ������������������������������������������������������������"
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "GPG ���������ASCII ��������������������������������������� URL ���������������������������������"
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "������������������ %(repo_id)s ������������������������������������"
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "������������������ %(repo_id)s ������������������������"
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "���������������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "������������������ %(repo_id)s ���������������������������������������"
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "������������������ %(repo_id)s ���������������������������������������"
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "������������������ %(repo_id)s ������������������������������������"
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+"������������������������������������ %(repo_file)s ������������������������������������������������"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+"DEB ������������������������������������������������������������������������������������������������������������"
+"������������������������"
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "������������������ %(repo_id)s ���������������������������������������"
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "������������������ %(repo_id)s ���������������������������������������"
+
+msgid "YUM Repository ID already exists"
+msgstr "YUM ������������������ ID ������������������������"
+
+msgid "YUM Repository name must be a string"
+msgstr "YUM ���������������������������������������������������������������������"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "������������������������������������������������������: ���%(err)s���"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "���������������������������������������������������������: ���%(err)s���"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "���������������������������������������������������: ���%(err)s���"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "���������������������������������������������������: ���%(err)s���"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "���������������������"
+
+msgid "REASON"
+msgstr "������"
+
+msgid "STACK"
+msgstr "������������"
+
+msgid "Go to Homepage"
+msgstr "������������������������������������"
+
+msgid "Create a New Virtual Machine"
+msgstr "������������������������������"
+
+msgid "Virtual Machine Name"
+msgstr "������������������"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������������������������������������"
+
+msgid "Template"
+msgstr "������������������"
+
+msgid "Please create a template first."
+msgstr "������������������������������������������������������"
+
+msgid "Create a Template"
+msgstr "���������������������������"
+
+msgid "Please choose a template."
+msgstr "������������������������������������������������"
+
+msgid "OS"
+msgstr "OS"
+
+msgid "OS Version"
+msgstr "OS ���������������"
+
+msgid "CPUS"
+msgstr "CPU"
+
+msgid "Memory"
+msgstr "������������"
+
+msgid "Create"
+msgstr "������"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "������"
+
+msgid "Edit Guest"
+msgstr "������������������"
+
+msgid "General"
+msgstr "������"
+
+msgid "Storage"
+msgstr "���������������"
+
+msgid "Interface"
+msgstr "������������������������"
+
+msgid "Permission"
+msgstr "���������������"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "������"
+
+msgid "CPUs"
+msgstr "CPU"
+
+msgid "Memory (MB)"
+msgstr "������������"
+
+msgid "Icon"
+msgstr "������������"
+
+msgid "Device"
+msgstr "���������������"
+
+msgid "Path"
+msgstr "NFS ������"
+
+msgid "Network"
+msgstr " ������������������"
+
+msgid "Type"
+msgstr "���������"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "���������"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "������������"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "������"
+
+msgid "Replace"
+msgstr "������"
+
+msgid "Detach"
+msgstr "������������"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "������"
+
+msgid "Reset"
+msgstr "������������"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr "���������������"
+
+msgid "Connect"
+msgstr "������"
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr "������"
+
+msgid "Shut Down"
+msgstr "���������������������"
+
+msgid "Delete"
+msgstr "������"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "���������������������"
+
+msgid "Network I/O"
+msgstr "���������������������������"
+
+msgid "Livetile"
+msgstr "������������������"
+
+msgid "No guests found."
+msgstr "������������������������������������"
+
+msgid "Add a Storage Device to VM"
+msgstr "VM ������������������������������������������"
+
+msgid "Device Type"
+msgstr "������������������������"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "������������������������������������������������������������������ \"cdrom\" ���������������"
+
+msgid "Storage Pool"
+msgstr "���������������������������"
+
+msgid "Storage pool which volume located in"
+msgstr "������������������������������������������������������������������������������������"
+
+msgid "Storage Volume"
+msgstr "������������������������������"
+
+msgid "Storage volume to be attached"
+msgstr "������������������������������������������������������������������������������������"
+
+msgid "File Path"
+msgstr "���������������������"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "��������������������� CDROM ��� ISO ������������������������"
+
+msgid "Attach"
+msgstr "������"
+
+msgid "Shut down"
+msgstr "���������������������"
+
+msgid "Restart"
+msgstr "���������"
+
+msgid "Basic Information"
+msgstr "������������"
+
+msgid "OS Distro"
+msgstr "OS ���������������������������������"
+
+msgid "OS Code Name"
+msgstr "OS ������������"
+
+msgid "Processor"
+msgstr "������������������"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "������������������������"
+
+msgid "Software Updates"
+msgstr "������������������������"
+
+msgid "Update Progress"
+msgstr "���������������������"
+
+msgid "Repositories"
+msgstr "������������������"
+
+msgid "Debug Reports"
+msgstr "���������������������������"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr "���������������������������������������������������������������������������������������������������������"
+
+msgid "This field is required."
+msgstr "���������������������������������������"
+
+msgid "Log in"
+msgstr "������������"
+
+msgid "Logging in..."
+msgstr "���������������������������..."
+
+msgid "Host"
+msgstr "���������"
+
+msgid "Guests"
+msgstr "���������"
+
+msgid "Templates"
+msgstr "������������������"
+
+msgid "Failed to get application configuration"
+msgstr "���������������������������������������������������������������"
+
+msgid "This is not a valid Linux path"
+msgstr "��������� Linux ���������������������������"
+
+msgid "This is not a valid URL."
+msgstr "��������� URL ������������������������"
+
+msgid "No such data available."
+msgstr "���������������������������������������������"
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������������������������������������������������������HTTP ������������ %1"
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "���������������"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Confirm"
+msgstr "������"
+
+msgid "Warning"
+msgstr "������"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "������������������������..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "���������"
+
+msgid "Detailed message:"
+msgstr "���������������������:"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "��������� ISO ������������������������������������"
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "������������������������������������������������������������������������?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "���������������������������������������������������������������������?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������!"
+
+msgid "Max:"
+msgstr "������:"
+
+msgid "Utilization"
+msgstr "���������"
+
+msgid "Available"
+msgstr "������������"
+
+msgid "Read Rate"
+msgstr "������������������"
+
+msgid "Write Rate"
+msgstr "������������������"
+
+msgid "Received"
+msgstr "������������"
+
+msgid "Sent"
+msgstr "������������"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"���������������������/������������������������������?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"���������������������������������������������������������������������������������������������������������?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "��������� URL"
+
+msgid "Is Mirror"
+msgstr "���������"
+
+msgid "URL Args"
+msgstr "URL ������"
+
+msgid "Enabled"
+msgstr "������������"
+
+msgid "GPG Check"
+msgstr "GPG ������������"
+
+msgid "GPG Key"
+msgstr "GPG ���"
+
+msgid "Add"
+msgstr "������"
+
+msgid "Remove"
+msgstr "������"
+
+msgid "Enable"
+msgstr "������������"
+
+msgid "Disable"
+msgstr "������������"
+
+msgid "Package Name"
+msgstr "������������������"
+
+msgid "Version"
+msgstr "���������������"
+
+msgid "Architecture"
+msgstr "������������������������"
+
+msgid "Repository"
+msgstr "������������������"
+
+msgid "Update All"
+msgstr "���������������"
+
+msgid "Updating..."
+msgstr "���������������������..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "���������������������������������������������������"
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������?"
+
+msgid "Generated Time"
+msgstr "������������"
+
+msgid "Generate"
+msgstr "������"
+
+msgid "Generating..."
+msgstr "���������������������..."
+
+msgid "Rename"
+msgstr "������������"
+
+msgid "Download"
+msgstr "������������������"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr "��������������������������������������������������������������������������������� (-) ���������������"
+
+msgid "Pending..."
+msgstr "������������������������..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������������?"
+
+msgid "Power off Confirmation"
+msgstr "���������������"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "���������������"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "���������������"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "���������������������������������������������������������������������?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"������ CDROM ������������������������������������������������������������������������������������������������?"
+
+msgid "Attaching..."
+msgstr "���������������������..."
+
+msgid "Replacing..."
+msgstr "���������������������..."
+
+msgid "Successfully attached!"
+msgstr "���������������������������!"
+
+msgid "Successfully replaced!"
+msgstr "���������������������������!"
+
+msgid "Successfully detached!"
+msgstr "������������������������������!"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "VLAN ID ������1 ������ 4094 ���������������������������������������"
+
+msgid "unavailable"
+msgstr "������������"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������"
+
+msgid "Create a network"
+msgstr "���������������������������"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"���������������������������������������������������������������������������������?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "������������������������������������������������������������������������������?"
+
+msgid "This storage pool is empty."
+msgstr "������������������������������������������������"
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"���������������������������������������������������������������������������������������������������������������?"
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI ������������������������������"
+
+msgid "No SCSI adapters found."
+msgstr "SCSI ������������������������������������������"
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "���������������������������������������������������������������������������������"
+
+msgid "The storage pool path can not be blank."
+msgstr "���������������������������������������������������������������������������������������"
+
+msgid "NFS server mount path can not be blank."
+msgstr "NFS ���������������������������������������������������������������������������������������"
+
+msgid "Invalid NFS mount path."
+msgstr "NFS ���������������������������������������"
+
+msgid "No logical device selected."
+msgstr "���������������������������������������������������"
+
+msgid "The iSCSI target can not be blank."
+msgstr "iSCSI ������������������������������������������������������������������"
+
+msgid "Server name can not be blank."
+msgstr "������������������������������������������������������������������"
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "���������������������������������������������������������..."
+
+msgid "No available partitions found."
+msgstr "���������������������������������������������������������������"
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"���������������������������������������������������������������������������������?"
+
+msgid "Unable to retrieve partitions information."
+msgstr "���������������������������������������������������������: ���%(err)s���"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "���������������������������������������������������������������������������������"
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "���������������������"
+
+msgid "State"
+msgstr "������"
+
+msgid "Network Type"
+msgstr "������������������������������"
+
+msgid "Address Space"
+msgstr "���������������������������"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr ""
+
+msgid "Isolated: no external network connection"
+msgstr "������: ������������������������������������"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: ���������������������������������������������������������"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr "������������: ������������������������������������������������������������������"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "������:"
+
+msgid "Enable VLAN"
+msgstr "VLAN ������������������������:"
+
+msgid "VLAN ID"
+msgstr "VLAN ID:"
+
+msgid "Stop"
+msgstr "������"
+
+msgid "Generate a New Debug Report"
+msgstr "������������������������������������������"
+
+msgid "Report Name"
+msgstr "���������������"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"��������������������������������������������������������������������� (-) ������������������������"
+
+msgid "Rename a Debug Report"
+msgstr "������������������������������������������"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"��������������������������������������������������������������������� (-) ������������������������"
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr "���������������������������"
+
+msgid "Identifier"
+msgstr "ID"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "��������������������������� ID ������������������������������"
+
+msgid "Textual name for the repository."
+msgstr "���������������������������������������"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "���������������������"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr ""
+"��������������������� URL ��������������������������������������������������� http���ftp������������ file "
+"���������"
+
+msgid "Repository is a mirror"
+msgstr "���������������������������������������"
+
+msgid "Distribution"
+msgstr "���������������������������������"
+
+msgid "Distribution of the DEB repository."
+msgstr "DEB ���������������������������������������������������������"
+
+msgid "Components"
+msgstr "���������������������"
+
+msgid "List of components in DEB repository."
+msgstr "DEB ������������������������������������������������������������"
+
+msgid "Edit Repository"
+msgstr "���������������������������"
+
+msgid "Mirror List URL"
+msgstr "��������������������� URL"
+
+msgid "Yes"
+msgstr " ������"
+
+msgid "No"
+msgstr " ���������"
+
+msgid "Capacity"
+msgstr "������"
+
+msgid "Allocated"
+msgstr "������������������"
+
+msgid "Location"
+msgstr "������������������"
+
+msgid "Device path"
+msgstr "���������������������"
+
+msgid "active"
+msgstr "���������������"
+
+msgid "inactive"
+msgstr "������������������"
+
+msgid "Deactivate"
+msgstr "���������������������������"
+
+msgid "Activate"
+msgstr "������������������������"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "���������������������"
+
+msgid "Format"
+msgstr "������������������:"
+
+msgid "Allocation"
+msgstr "������������:"
+
+msgid "Define a New Storage Pool"
+msgstr "������������������������������������������"
+
+msgid "Storage Pool Name"
+msgstr "������������������������������"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid "Storage Pool Type"
+msgstr "���������������������������������������"
+
+msgid "Storage Path"
+msgstr "������������������������"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+"���������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+"���������������������������������������������������������������Kimchi ���������������������������������"
+
+msgid "NFS Server IP"
+msgstr "NFS ������������ IP"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"NFS ������������ IP ������������������������������������������������������������������������������������������"
+"���������������"
+
+msgid "NFS Path"
+msgstr "NFS ������"
+
+msgid "The NFS exported path on NFS server."
+msgstr "NFS ������������ NFS ������������������������������������������������"
+
+msgid "iSCSI Server"
+msgstr "iSCSI ������������"
+
+msgid "Server"
+msgstr "������������"
+
+msgid "Port"
+msgstr "���������"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "iSCSI ������������ IP ���������������������������������������������������������������"
+
+msgid "Target"
+msgstr "���������������"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "iSCSI ������������������ iSCSI ���������������"
+
+msgid "Add iSCSI Authentication"
+msgstr "iSCSI ���������������"
+
+msgid "iSCSI Authentication"
+msgstr "iSCSI ������"
+
+msgid "User Name"
+msgstr "���������������"
+
+msgid "Password"
+msgstr "���������������"
+
+msgid "SCSI Adapter"
+msgstr "SCSI ���������������"
+
+msgid "Please, wait..."
+msgstr "���������������������..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "���������������������������"
+
+msgid "Where is the source media for this template? "
+msgstr "������������������������������������������������������������������������������?"
+
+msgid "Local ISO Image"
+msgstr "������������ ISO ������������"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "������������ ISO ������������"
+
+msgid "Search ISOs"
+msgstr "ISO ���������"
+
+msgid "The following ISOs are available:"
+msgstr "������ ISO ���������������������:"
+
+msgid "OS: "
+msgstr "OS: "
+
+msgid "Version: "
+msgstr "���������������: "
+
+msgid "Size: "
+msgstr "���������: "
+
+msgid "Search more ISOs"
+msgstr "ISO ������������������"
+
+msgid "Create Templates from Selected ISO"
+msgstr "������������ ISO ���������������������������������"
+
+msgid "I want to use a specific ISO file"
+msgstr "��������� ISO ���������������������������"
+
+msgid "Loading default remote ISOs ..."
+msgstr "������������������������������ ISO ���������������������������..."
+
+msgid "Arch: "
+msgstr "������������������������: "
+
+msgid "I want to use a custom URL"
+msgstr "������������ URL ���������������"
+
+msgid "Edit Template"
+msgstr "���������������������������"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "���������������������"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "CPU ���"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "���������������������������������������������"
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "%(resource)s ���������������������������������"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s ������������������������������������������������"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "%(resource)s ���������������������������������"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "JSON ������������������������������"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "������ API ��� JSON ���������������������������"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "������������������������������������������������������������������������������������������"
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "������������������������������������������������������������: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "���������������%(username)s������������������������������������[���������������������: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "Kimchi ������������������������������������������������"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Kimchi ������������������������������%(item)s ������������������"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "%(item)s ������������������������������������������������"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "���������������%(cmd)s������������������������������������%(seconds)s ������������������������������"
+#~ "������������������������"
+
+#~ msgid "Help"
+#~ msgstr "���������"
+
+#~ msgid "About"
+#~ msgstr "������������"
+
+#~ msgid "Log out"
+#~ msgstr "���������������"
+
+#~ msgid "Version:"
+#~ msgstr "���������������: "
diff --git a/plugins/gingerbase/po/ko_KR.po b/plugins/gingerbase/po/ko_KR.po
new file mode 100644
index 0000000..7a5233e
--- /dev/null
+++ b/plugins/gingerbase/po/ko_KR.po
@@ -0,0 +1,2197 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: ko_KR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "������ ��������� ������������ ������ ��������� ������������������. ������������: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr "%(device)s��� ������ ������ ������ ��������� ������������ ������ ��������� ������������������."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "distro ��������� ������ ��� ������: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"distro ������(%(filename)s)��� ������ ��������� ��� ������������. JSON ������������ ���������������"
+"���."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr "iSCSI ��������� ������ %(portal)s��� ������������ ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "iSCSI host %(host)s ������ %(target)s��� ������������ ��� ������������."
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "ISO ������ %(filename)s���(���) ������ ������������ ������������."
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr "ISO ������ %(filename)s��� ��������� El Torito ������ ������������ ������������."
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr ""
+"ISO %(filename)s��� ������������ ������ El Torito ��������� ������ ��������� ������������."
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "ISO %(filename)s��� ������������ ������ El Torito ������ ������������ ������������."
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr "ISO %(filename)s������ ������ ��������� ��������� ������ ������ ���������������."
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr ""
+"ISO %(filename)s������ ������ ������������������ ������ ������ ��������� ��������� ������������������"
+"���."
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"��������������������� ��� ISO %(filename)s���(���) ��������� ��������� ������������. ������ /var/"
+"lib/libvirt ��������� ������������������, (��������� ������) ������ ��������� '%(user)s' ���������"
+"��� ������ ��������� ������ ��������� ���������������, '%(user)s'���(���) ISO ������ ��������� ������"
+"���������, 'chmod -R o+x 'path_to_iso'(������������ ������)��� ������������������. ������������: "
+"%(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "������ ������ %(name)s���(���) ������ ���������������."
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "������ ������ %(name)s���(���) ������������."
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr "��������� ������ ������ %(name)s��� ������ ��������������� ��������� ��� ������������."
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "������ ISO ������������ ��� ������������ ������������ ������������."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr "������ ������ ��������� ��������� IPv4 ������ IPv6������ ���������."
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "������ ��������� ������������ ������ ��������������� ������������������."
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s��� ��������� ������ ��� ������������. ������������: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "������������ ��������� ������������������ ���������."
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "������������ ��������� ������������������ ���������."
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "'%(users)s' ������������ ������������."
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "'%(groups)s' ������������ ������������."
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "������ ������ %(name)s��� %(iface)s ������������������ ������������."
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr "������ ������ %(name)s��� ������ ��������� %(network)s ��������������� ������������."
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "������������ ������ ������ ��������������� ��������� ������������������������."
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr "������ ������ ������������������ ������������ ��������� ������������������ ���������."
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"������ ������ ������������������ ������ ������������ ������ ������������ ������ ��������� ������������������"
+"���."
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr "��� ������ ������ ������������������ ��������� ������ ��� ��������������� ������������������."
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "������������ %(name)s���(���) ������ ���������������."
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr "������������ %(template)s��� ������ ��������� '%(network)s' ��������������� ������������."
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"������������ %(template)s��� ������ ��������� ������������ ��� %(pool)s���(���) ������������."
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"������������ %(template)s��� ������ ��������� ������������ ��� %(pool)s���(���) ��������� ���������"
+"���."
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "CDROM��� ������ ������������ ������ ������������ '%(param)s'���(���) ���������������������."
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr ""
+"������������ %(template)s��� ������ ��������� %(network)s ��������������� ��������� ������������."
+
+msgid "Template name must be a string"
+msgstr "������������ ��������� ������������������ ���������."
+
+msgid "Template icon must be a path to the image"
+msgstr "������������ ������������ ������������ ������������ ���������."
+
+msgid "Template distribution must be a string"
+msgstr "������������ ��������� ������������������ ���������."
+
+msgid "Template distribution version must be a string"
+msgstr "������������ ������ ��������� ������������������ ���������."
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "CPU ������ ������������ ���������."
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "��������� ������(MB)��� 512������ ��� ������������ ���������."
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "������������ CDROM��� ������ ������ ������ ISO ��������������� ���������."
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr ""
+"��������������� ������ ������������ ������ ������������ ��� URI %(value)s���(���) ���������������������."
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "��������������� ��������������� ISO ������������ CDROM������ ������������������."
+
+msgid "All networks for the template must be specified in a list."
+msgstr "��������������� ������ ��������������� ��������� ��������������� ���������."
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "������ ��������� ��������������� ��������� ��� ������: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "������ ��������� ��������������� ��������� ��� ������: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr "������������ CDROM��� ������ ������ ������ ISO ��������������� ���������."
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "������������ ��� %(name)s���(���) ������ ���������������."
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "������������ ��� %(name)s���(���) ������������."
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "������������ ��� %(name)s���(���) ��������������� %(item)s���(���) ������������������."
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "������ ������������ ��� %(name)s���(���) ��������� ��� ������������."
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "������������ ������ ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "������������ ��� %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"������������ ��� %(name)s��� ������ ������������ ��������� ������ ��������� ��� ������������. ���������"
+"���: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "������������ ��� %(name)s���(���) ������������ ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "������������ ��� %(name)s���(���) ��������������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "������������ ��� %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"������������ ������ %(path)s���(���) ��������� ������ ��������� ��� ������������ NFS ������ ��������� "
+"��� ������������."
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"������������ ������ %(path)s ������������ ������������������ NFS ������ ��������� ��� ������������."
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "������������ ������ ������������ ��� ������: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "������������ ��� ��������� ������������������ ���������."
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "������������ ��� ������������ IP ������ ��������� ��������������� ���������."
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "������������ ��� ��������� ��������������� ���������."
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "iSCSI ������ ������ IQN��� ������������������ ���������."
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr "������ ������������ ��������� ��������� 1��� 65535 ��������� ������������ ���������."
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr "������������ ������ ��������������� ������ ��� ��������� ������������������."
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s���(���) ��������� ���������/������������ ������������. ������ %(pool)s ������ ��������� ��� "
+"������������."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr "������ ������������ ������ ������������ ������������ ��������������� ��� ������������."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "SCSI ��������� ��������� ��������� ������������������ ���������."
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "������������ ��� kimchi_isos��� ������ ��������� ���������������������."
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"NFS ������������ ��� %(name)s���(���) ������������ ��� ������������. NFS ������ %(server)s��� ���"
+"������ ��� ������������."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"NFS ������������ ��� %(name)s���(���) ��������������� ��� ������������. NFS ������ %(server)s��� "
+"��������� ��� ������������."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"������ ��������������� ������������ ������������ %(name)s ������ ��������������� ��� ������������."
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr "������ ��������������� ������������ ������������ %(name)s ������ ��������� ��� ������������."
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"��������� '%(name)s'��� ������ ��������� ������ ���������������. ������ ������ ��������������� ������ ���"
+"������ ������������������."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"������ ��������� ��������� ������ ��������� ��������������������� ��������������� ��� ������: %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "������������ ������ %(name)s���(���) ������ ���������������."
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr "������������ ������ %(name)s���(���) ������������ ��� %(pool)s��� ������������."
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "������������ ������ %(volume)s���(���) ��������������� %(item)s���(���) ������������������."
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"������������ ��� %(pool)s���(���) ��������� ������������ ������������ ��������� ��������� ��� ���������"
+"���."
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"������������ ������ %(name)s���(���) ������������ ��� %(pool)s��� ��������� ��� ������������. ������"
+"������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"������������ ��� %(pool)s��� ������������ ��������� ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "������������ ��� %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "������������ ������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr "������������ ������ %(name)s��� ��������� ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr "������������ ������ %(type)s���(���) ������ ������ ��� ��������� ������������ ������������."
+
+msgid "Storage volume name must be a string"
+msgstr "������������ ������ ��������� ������������������ ���������."
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "������������ ������ ��������� ������������ ���������."
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "������������ ��������� ������ ��������� ���������������."
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"������ ��������� ������������ ������ ��������� ��������������������� ��������������� ��� ������: %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "��������������� %(name)s���(���) ������������."
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "������������ %(name)s���(���) ������ ���������������."
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "������������ %(name)s���(���) ������������."
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"������������ %(network)s��� ������ ��������� ��������� %(subnet)s���(���) ������������ ������������."
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+"������������ ������������ %(name)s���(���) ��������� ������������ ������������������ ������������������."
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "������ ������������ %(name)s���(���) ��������� ��� ������������."
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"������������ %(network)s��� ������ ��������� ��������������� %(iface)s���(���) ������ ������ ������"
+"������."
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "������������������ ������ NIC, ������ ������ ��������� ������������ ���������."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "������������ %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "������������ '%(name)s'��� ������ ������ IP ��������� ������ ��� ������������."
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "������������ ������������ ��������� ������, NAT ��� ������������������."
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"������������ ������������ IP ������ ��� ��������� ������ ��������������� ������ ������������������ ���������."
+
+msgid "Network interface must be a string"
+msgstr "������������ ������������������ ������������������ ���������."
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "������������ VLAN ID��� 1��� 4094 ��������� ������������ ���������."
+
+msgid "Specify name and type to create a Network"
+msgstr "��������������� ��������������� ������ ��� ��������� ������������������."
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr "��������� ������ %(name)s���(���) VLAN��� ��������� ��������� ��� ��� ������������."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "%(iface)s ������������������ ��������������� ������: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"%(iface)s ������������������ ��������������� ���������������. ��������� ������ ��������� ���������������"
+"���."
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "��������� ��������� %(name)s���(���) ������������."
+
+msgid "Debug report tool not found in system"
+msgstr "��������� ��������� ��������� ������������ ������������."
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "��������� ��������� %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "��������� ��������� %(name)s���(���) ��������� ��� ������������. ������������: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"��������� '%(name)s'��� ������ ��������� ������ ���������������. ������ ������ ��������������� ������ ���"
+"������ ������������������."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "������������ ������ %(server)s���(���) Kimchi������ ������������ ���������������."
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "Distro '%(name)s'���(���) ������������."
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "��������� %(name)s���(���) ������������ ������������."
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr "������ ��������� ������ ������ ��������� ��������� ��������� ��� ������������."
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr "������ ��������� ������ ������ ��������� ��������� ������ ��������� ��� ������������."
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "������ ������ '%(name)s'���(���) ������������."
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "������������ ��������� ������������ ������������."
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "��������� %(name)s���(���) ��������������������� ������������ ���������������."
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr ""
+"��������������������� ��������� ������������ ������������ ������ ��������� ������������������. ������������: "
+"%(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "��� ������������ ������ ������ ��������� ��������� ������������ ������������."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "������������ ������ URI %(uri)s"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "������������ ������ ������������ ���������������. ������������ ������: 'cdrom'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr "��� ������������ ��������� ������������ ������ ������ ������: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "������������ ��������� ������������������ ������ ������ ������: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "������������ ��������� ������������ ������ ������ ������: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr "��� ������ ������ ������������ ��������� ������ ��� ��������� ������������������."
+
+msgid "Specify path to update virtual machine disk"
+msgstr "������ ������ ������������ ��������������� ��������� ������������������."
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr "��� ������ ������ ������������ ��������� ������ ��� ��������� ������������������."
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "YUM ��������� ID��� ������ ��������� ������������������ ���������."
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "��������� URL��� http://, ftp:// ������ file:// URL��������� ���������."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr "��������� ��������� ��������� ��������� ������ ������ ������ ������ ���������������."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "DEB ������������ ������ ��������� ������������������ ���������."
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "DEB ������������ ������ ��������������� ��������� ��������������� ���������."
+
+msgid "Components to DEB repository must be a string"
+msgstr "DEB ������������ ������ ��������������� ������������������ ���������."
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "YUM ��������� ��������� ������������������ ���������."
+
+msgid "GPG check must be a boolean value."
+msgstr "GPG ��������� ������ ������������ ���������."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "GPG ������ ASCII ������ ��������� ������������ URL��������� ���������."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "%(repo_id)s ������������ ��������������� ��� ������������."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "%(repo_id)s ������������ ������������."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "������ ������������ ������ ��������� ������ ��������� ������������ ���������������."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "%(repo_id)s ������������ ������ ������������ ������������ ������������."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "%(repo_id)s ������������ ������ ������ ������������ ������������ ������������."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "%(repo_id)s ������������ ��������� ��� ������������."
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr "��������� ������ ������ %(repo_file)s���(���) ��������� ��� ������������."
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr "DEB ������������ ��������������� ��������� ��������� ������������������."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "%(repo_id)s ������������ ������������ ��������� ��� ������������."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "%(repo_id)s ������������ ������ ������������ ��������� ��� ������������."
+
+msgid "YUM Repository ID already exists"
+msgstr "YUM ��������� ID��� ������ ���������������."
+
+msgid "YUM Repository name must be a string"
+msgstr "YUM ��������� ��������� ������������������ ���������."
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "������������ ��������� ��� ������������. ������������: '%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "��������� ��������� ��������� ��� ������������. ������������: '%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "������������ ��������� ��� ������������. ������������: '%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "������������ ��������� ��� ������������. ������������: '%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "������ ������"
+
+msgid "REASON"
+msgstr "������"
+
+msgid "STACK"
+msgstr "������"
+
+msgid "Go to Homepage"
+msgstr "��� ������������ ������"
+
+msgid "Create a New Virtual Machine"
+msgstr "��� ������ ������ ������"
+
+msgid "Virtual Machine Name"
+msgstr "������ ������ ������"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"������ ��������� ������������ ��� ������������ ���������������. ������������ ��������� ��������� ������������"
+"��� ������������ ���������������."
+
+msgid "Template"
+msgstr "������������"
+
+msgid "Please create a template first."
+msgstr "��������������� ������ ������������������."
+
+msgid "Create a Template"
+msgstr "������������ ������"
+
+msgid "Please choose a template."
+msgstr "��������������� ������������������."
+
+msgid "OS"
+msgstr "OS"
+
+msgid "OS Version"
+msgstr "OS ������"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "���������"
+
+msgid "Create"
+msgstr "������"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "������"
+
+msgid "Edit Guest"
+msgstr "��������� ������"
+
+msgid "General"
+msgstr "������"
+
+msgid "Storage"
+msgstr "������������"
+
+msgid "Interface"
+msgstr "���������������"
+
+msgid "Permission"
+msgstr "������"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "������"
+
+msgid "CPUs"
+msgstr "CPU"
+
+msgid "Memory (MB)"
+msgstr "���������"
+
+msgid "Icon"
+msgstr "���������"
+
+msgid "Device"
+msgstr "������ ������"
+
+msgid "Path"
+msgstr "NFS ������"
+
+msgid "Network"
+msgstr "������������"
+
+msgid "Type"
+msgstr "������"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "������"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "������������"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "������"
+
+msgid "Replace"
+msgstr "������"
+
+msgid "Detach"
+msgstr "������"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "������"
+
+msgid "Reset"
+msgstr "������ ������"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr "������"
+
+msgid "Connect"
+msgstr "������"
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr "������"
+
+msgid "Shut Down"
+msgstr "��������� ������"
+
+msgid "Delete"
+msgstr "������"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "��������� I/O"
+
+msgid "Network I/O"
+msgstr "������������ I/O"
+
+msgid "Livetile"
+msgstr "���������������"
+
+msgid "No guests found."
+msgstr "������������ ������������."
+
+msgid "Add a Storage Device to VM"
+msgstr "������������ ��������� VM��� ������"
+
+msgid "Device Type"
+msgstr "������ ������"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "������ ���������������. ������ \"cdrom\"��� ���������������."
+
+msgid "Storage Pool"
+msgstr "������������ ���"
+
+msgid "Storage pool which volume located in"
+msgstr "������������ ��� ��������� ������������������ ���������."
+
+msgid "Storage Volume"
+msgstr "������������ ��� ������"
+
+msgid "Storage volume to be attached"
+msgstr "������������ ������ ��������� ������������������ ���������."
+
+msgid "File Path"
+msgstr "������ ������"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "CDROM��� ������ ��������� ISO ������ ���������������."
+
+msgid "Attach"
+msgstr "������"
+
+msgid "Shut down"
+msgstr "��������� ������"
+
+msgid "Restart"
+msgstr "������ ������"
+
+msgid "Basic Information"
+msgstr "������ ������"
+
+msgid "OS Distro"
+msgstr "OS Distro"
+
+msgid "OS Code Name"
+msgstr "OS ������ ������"
+
+msgid "Processor"
+msgstr "������������"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "��������� ������"
+
+msgid "Software Updates"
+msgstr "��������������� ������������"
+
+msgid "Update Progress"
+msgstr "������������ ������������"
+
+msgid "Repositories"
+msgstr "���������"
+
+msgid "Debug Reports"
+msgstr "��������� ���������"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+"��������� ��������� ������ ������ ��������������� ������������ ������������. ������ ������������������."
+
+msgid "This field is required."
+msgstr "��� ��������� ���������������."
+
+msgid "Log in"
+msgstr "���������"
+
+msgid "Logging in..."
+msgstr "��������� ���..."
+
+msgid "Host"
+msgstr "���������"
+
+msgid "Guests"
+msgstr "���������"
+
+msgid "Templates"
+msgstr "������������"
+
+msgid "Failed to get application configuration"
+msgstr "������������������ ��������� ������������ ���������������."
+
+msgid "This is not a valid Linux path"
+msgstr "��������� Linux ��������� ������������."
+
+msgid "This is not a valid URL."
+msgstr "��������� URL��� ������������."
+
+msgid "No such data available."
+msgstr "������ ������������ ������������."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"��������� ������������ ��������� ��� ������������. ��������� ������������ ��������������� ������ ������ ������"
+"������ ��������� ��������� ������������������. HTTP ������ ������ %1. "
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "������ ������"
+
+msgid "OK"
+msgstr "������"
+
+msgid "Confirm"
+msgstr "������"
+
+msgid "Warning"
+msgstr "������"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "������ ���..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "���������"
+
+msgid "Detailed message:"
+msgstr "������ ���������:"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "��������� ISO ��������� ������������."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "��������� ������ ������������. ������������������������?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "��������������� ��������������� ���������������. ������������������������?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr "������ ������ ��������� ������ ������������ ������������ ��������� ��� ������������."
+
+msgid "Max:"
+msgstr "������:"
+
+msgid "Utilization"
+msgstr "���������"
+
+msgid "Available"
+msgstr "������ ������"
+
+msgid "Read Rate"
+msgstr "������ ������"
+
+msgid "Write Rate"
+msgstr "������ ������"
+
+msgid "Received"
+msgstr "������"
+
+msgid "Sent"
+msgstr "������"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"������������ ��������������� ������ ������������ ������������ ������ ��������� ���������������. ��������� ���"
+"���/������ ��������� ������������������������?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr "������������ ��������������� ������������ ��������� ��� ������������. ������������������������?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "������ URL"
+
+msgid "Is Mirror"
+msgstr "���������"
+
+msgid "URL Args"
+msgstr "URL ������"
+
+msgid "Enabled"
+msgstr "���������"
+
+msgid "GPG Check"
+msgstr "GPG ������"
+
+msgid "GPG Key"
+msgstr "GPG ���"
+
+msgid "Add"
+msgstr "������"
+
+msgid "Remove"
+msgstr "������"
+
+msgid "Enable"
+msgstr "������"
+
+msgid "Disable"
+msgstr "������ ������"
+
+msgid "Package Name"
+msgstr "��������� ������"
+
+msgid "Version"
+msgstr "������"
+
+msgid "Architecture"
+msgstr "������������"
+
+msgid "Repository"
+msgstr "���������"
+
+msgid "Update All"
+msgstr "������ ������������"
+
+msgid "Updating..."
+msgstr "������������ ���..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "������������ ������������������ ���������������."
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"��������� ������������ ��������������� ������������ ��������� ��� ������������. ������������������������?"
+
+msgid "Generated Time"
+msgstr "������ ������"
+
+msgid "Generate"
+msgstr "������"
+
+msgid "Generating..."
+msgstr "������ ���..."
+
+msgid "Rename"
+msgstr "������ ���������"
+
+msgid "Download"
+msgstr "������������"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr "��������� ������������ ������, ������ ���/������ ���������('-')��� ��������������� ���������."
+
+msgid "Pending..."
+msgstr "������ ���..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"������ ������ ��� ������ ������ ������������ ���������������. ��� ��������� ������ ��������� ��� ���������"
+"���. ������������������������?"
+
+msgid "Power off Confirmation"
+msgstr "������ ������"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "������ ������"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "������ ������"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "��������������� ��������������� ���������������. ������������������������?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"��� CDROM��� ��������������� ������������ ������ ��������� ��� ������������. ��������� ���������������������"
+"���?"
+
+msgid "Attaching..."
+msgstr "������ ���..."
+
+msgid "Replacing..."
+msgstr "������ ���..."
+
+msgid "Successfully attached!"
+msgstr "���������������������."
+
+msgid "Successfully replaced!"
+msgstr "���������������������."
+
+msgid "Successfully detached!"
+msgstr "���������������������."
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "VLAN ID��� 1��� 4094 ������������ ���������."
+
+msgid "unavailable"
+msgstr "������ ���������"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"��� ��������� ��� ��������������� ������������ ������ ��������� ������������ ��������� ���������������������."
+
+msgid "Create a network"
+msgstr "������������ ������"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"��� ������������ ������ ��������������� ������������. ��� ��������� ������ ������������������ ������ ���������"
+"������ ���������������. ������������������������?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "������������ ������ ��������������� ���������������. ������������������������?"
+
+msgid "This storage pool is empty."
+msgstr "��� ������������ ������ ������ ������������."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr "������������ ������������ ������������ ���������������. ������������������������? "
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI ��������� ������"
+
+msgid "No SCSI adapters found."
+msgstr "SCSI ������������ ������������."
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "������������ ��� ��������� ��������� ��� ������������."
+
+msgid "The storage pool path can not be blank."
+msgstr "������������ ��� ��������� ��������� ��� ������������."
+
+msgid "NFS server mount path can not be blank."
+msgstr "NFS ������ ��������� ��������� ��������� ��� ������������."
+
+msgid "Invalid NFS mount path."
+msgstr "������������ ������ NFS ��������� ���������������."
+
+msgid "No logical device selected."
+msgstr "������ ��������� ������������ ���������������."
+
+msgid "The iSCSI target can not be blank."
+msgstr "iSCSI ��������� ��������� ��� ������������."
+
+msgid "Server name can not be blank."
+msgstr "������ ��������� ��������� ��� ������������."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "������ ��������� ������������ ������ ���..."
+
+msgid "No available partitions found."
+msgstr "������ ��������� ������������ ������������."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"��� ������������ ������ ��������������� ������������. ��� ��������� ������ ������������������ ������ ���������"
+"������ ���������������. ������������������������?"
+
+msgid "Unable to retrieve partitions information."
+msgstr "��������� ��������� ��������� ��� ������������. ������������: '%(err)s'"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "������������ ��� ��������� ��������� ��� ������������."
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "������������ ������"
+
+msgid "State"
+msgstr "������"
+
+msgid "Network Type"
+msgstr "������������ ������"
+
+msgid "Address Space"
+msgstr "������ ������"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "������������ ������ ������������ ��� ���������������. '/'��� ������������ ��������� ���������."
+
+msgid "Isolated: no external network connection"
+msgstr "���������: ��������� ������������ ������ ������"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: ��������������� ��������� ������������ ���������"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr "������������: ������ ��������� ��������� ��������������� ������ ���������"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "������:"
+
+msgid "Enable VLAN"
+msgstr "VLAN ������:"
+
+msgid "VLAN ID"
+msgstr "VLAN ID:"
+
+msgid "Stop"
+msgstr "������"
+
+msgid "Generate a New Debug Report"
+msgstr "��� ��������� ��������� ������"
+
+msgid "Report Name"
+msgstr "��������� ������"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"������������ ������������ ��� ������������ ���������������. ������������ ��������� ������ ��������� ���������"
+"��� ���������������. ��������� ������, ������ ��� ���������(\"-\")��� ��������� ��� ������������."
+
+msgid "Rename a Debug Report"
+msgstr "��� ��������� ��������� ������"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"������������ ������������ ��� ������������ ���������������. ������������ ��������� ������ ��������� ���������"
+"��� ���������������. ��������� ������, ������ ��� ���������(\"-\")��� ��������� ��� ������������."
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr "��������� ������"
+
+msgid "Identifier"
+msgstr "ID"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "������������ ������ ������ ��������� ������ ID���������."
+
+msgid "Textual name for the repository."
+msgstr "������������ ������ ��������� ���������������."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "������ ������"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "������������ ������ URL���������. ������������ ��������������� http, ftp ��� file���������."
+
+msgid "Repository is a mirror"
+msgstr "������������ ���������������."
+
+msgid "Distribution"
+msgstr "������"
+
+msgid "Distribution of the DEB repository."
+msgstr "DEB ������������ ���������������."
+
+msgid "Components"
+msgstr "������������"
+
+msgid "List of components in DEB repository."
+msgstr "DEB ������������ ������������ ���������������."
+
+msgid "Edit Repository"
+msgstr "��������� ������"
+
+msgid "Mirror List URL"
+msgstr "������ ������ URL"
+
+msgid "Yes"
+msgstr "���"
+
+msgid "No"
+msgstr "���������"
+
+msgid "Capacity"
+msgstr "������"
+
+msgid "Allocated"
+msgstr "���������"
+
+msgid "Location"
+msgstr "������"
+
+msgid "Device path"
+msgstr "������ ������"
+
+msgid "active"
+msgstr "������"
+
+msgid "inactive"
+msgstr "���������"
+
+msgid "Deactivate"
+msgstr "������������"
+
+msgid "Activate"
+msgstr "���������"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "������ ������"
+
+msgid "Format"
+msgstr "������:"
+
+msgid "Allocation"
+msgstr "������:"
+
+msgid "Define a New Storage Pool"
+msgstr "��� ������������ ��� ������"
+
+msgid "Storage Pool Name"
+msgstr "������������ ��� ������"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr "������������ ������ ������������ ��� ������������ ������������ ������ ������ ��������� ���������."
+
+msgid "Storage Pool Type"
+msgstr "������������ ��� ������"
+
+msgid "Storage Path"
+msgstr "������������ ������"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr "������������ ������ ���������������. ��� ������������ ������ ������ ��������� ��������� ���������."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+"��������������� ������������ ������ ������������ ��������� Kimchi��� ������������ ��������� ���������������."
+
+msgid "NFS Server IP"
+msgstr "NFS ������ IP"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"NFS ������ IP ������ ��������� ���������������. ��������� ��������������� ������������������ ��������� ��� "
+"������������."
+
+msgid "NFS Path"
+msgstr "NFS ������"
+
+msgid "The NFS exported path on NFS server."
+msgstr "NFS ������������ NFS��� ��������� ���������������."
+
+msgid "iSCSI Server"
+msgstr "iSCSI ������"
+
+msgid "Server"
+msgstr "������"
+
+msgid "Port"
+msgstr "������"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "iSCSI ������ IP ������ ��������� ���������������. ������ ������ ��������� ���������."
+
+msgid "Target"
+msgstr "������"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "iSCSI ��������� iSCSI ������"
+
+msgid "Add iSCSI Authentication"
+msgstr "iSCSI ������ ������"
+
+msgid "iSCSI Authentication"
+msgstr "iSCSI ������"
+
+msgid "User Name"
+msgstr "��������� ������"
+
+msgid "Password"
+msgstr "������������"
+
+msgid "SCSI Adapter"
+msgstr "SCSI ���������"
+
+msgid "Please, wait..."
+msgstr "������ ��������� ������������."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "������������ ������"
+
+msgid "Where is the source media for this template? "
+msgstr "��� ��������������� ������ ��������� ��������� ������������?"
+
+msgid "Local ISO Image"
+msgstr "������ ISO ���������"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "������ ISO ���������"
+
+msgid "Search ISOs"
+msgstr "ISO ������"
+
+msgid "The following ISOs are available:"
+msgstr "������ ISO��� ������ ���������������."
+
+msgid "OS: "
+msgstr "OS: "
+
+msgid "Version: "
+msgstr "������: "
+
+msgid "Size: "
+msgstr "������: "
+
+msgid "Search more ISOs"
+msgstr "������ ISO ������"
+
+msgid "Create Templates from Selected ISO"
+msgstr "��������� ISO��������� ������������ ������"
+
+msgid "I want to use a specific ISO file"
+msgstr "������ ISO ��������� ��������������� ���������."
+
+msgid "Loading default remote ISOs ..."
+msgstr "������ ������ ISO ������ ���..."
+
+msgid "Arch: "
+msgstr "Arch: "
+
+msgid "I want to use a custom URL"
+msgstr "��������� ������ URL��� ��������������� ���������."
+
+msgid "Edit Template"
+msgstr "������������ ������"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "���������"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "CPU ������"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "��������������� ������������."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "%(resource)s��� ��������� ������������ ������"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s��������� ������������ ������������ ������������ ������"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "%(resource)s��� ��������� ������������ ������"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "JSON ��������� ������ ��������� ��� ������������."
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "��� API��� JSON��� ���������������."
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "��������� ������������ ������ ������������������ ������������ ���������������."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "������ ��������� ��������� ��������� ��� ������: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr "��������� '%(username)s'��� ��������� ������������������. [������ ������: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "Kimchi��� ������������ ��������� ������������."
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Kimchi��� ������������������ %(item)s���(���) ������������������."
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "��������� ��������������� %(item)s���(���) ������ ��� ������������."
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "%(seconds)s��� ������ '%(cmd)s' ������ ������ ��� ��������������� ���������������������."
+
+#~ msgid "Help"
+#~ msgstr "���������"
+
+#~ msgid "About"
+#~ msgstr "������"
+
+#~ msgid "Log out"
+#~ msgstr "������������"
+
+#~ msgid "Version:"
+#~ msgstr "������: "
diff --git a/plugins/gingerbase/po/pt_BR.po b/plugins/gingerbase/po/pt_BR.po
new file mode 100644
index 0000000..78a1435
--- /dev/null
+++ b/plugins/gingerbase/po/pt_BR.po
@@ -0,0 +1,2369 @@
+# i18n portable object for gingerbase.
+# Copyright (C) IBM, Corp. 2013-2014
+# ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>, 2013-04-18.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2015-03-23 12:57+0000\n"
+"Last-Translator: Cr��stian Deives dos Santos Viana <cristiandeives@gmail."
+"com>\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
+"kimchi/language/pt_BR/)\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr "Par��metro desconhecido: %(value)s"
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+"Limite de tempo de %(seconds)s segundos expirado ao executar a tarefa "
+"'%(task)s'."
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr "Usu��rio %(user_id)s n��o encontrado com as configura����es LDAP dadas."
+
+msgid "Unknown \"_cap\" specified"
+msgstr "\"_cap\" desconhecido especificado"
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr "\"_passthrough\" deve ser \"true\" ou \"false\""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr "\"_passthrough_affected_by\" deve ser um texto do nome do dispositivo"
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "Erro ao consultar block devices. Detalhes %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr "Erro ao consultar informa����es de block devices para %(device)s."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "N��o foi poss��vel encontrar o arquivo da distribui����o: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"N��o foi poss��vel ler o arquivo da distribui����o: %(filename)s. Confirme se �� "
+"um arquivo JSON."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel logar na m��quina alvo do iSCSI %(portal)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "N��o foi poss��vel logar na m��quina %(host)s alvo %(target)s do iSCSI"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr "N��o foi poss��vel encontrar a ISO %(filename)s"
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "A ISO %(filename)s n��o �� boot��vel"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr "A ISO %(filename)s n��o possui uma grava����o v��lida de boot El Torito"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "Valida����o El Torito inv��lida na ISO %(filename)s"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "Indicador de boot El Torito inv��lido na ISO %(filename)s"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr ""
+"Tipo de volume n��o esperado para um volume prim��rio na ISO %(filename)s"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr "Formato errado na leitura do descritor de volume na ISO %(filename)s"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"O servidor n��o tem permiss��o para acessar a ISO %(filename)s. Considere mud��-"
+"la para o diret��rio /var/lib/libvirt, ou mude as permiss��es para que o "
+"usu��rio '%(user)s' tenha acesso, ou, adicione o usu��rio '%(user)s' no grupo "
+"do caminho da ISO, ou (n��o recomendado) 'chmod -R o+x 'caminho_para_iso'. "
+"Detalhes: %(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr "Ocorreu um erro ao identificar o sistema operacional da imagem."
+
+msgid "No OS information found in given image."
+msgstr ""
+"Nenhuma informa����o de sistema operacional encontrada na imagem fornecida."
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr "N��o foi poss��vel ler o arquivo de imagem %(filename)s."
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+"Arquivo de imagem deve ser um arquivo existente no sistema. %(filename)s n��o "
+"�� uma entrada v��lida."
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "M��quina virtual %(name)s j�� existe"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "M��quina virtual %(name)s n��o existe"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+"N��o foi poss��vel renomear a m��quina virtual %(name)s. O nome %(new_name)s j�� "
+"est�� em uso ou a m��quina virtual n��o est�� ligada."
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+"N��o foi poss��vel tirar uma foto da tela para a m��quina virtual %(name)s que "
+"est�� desligada"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "Imagem de ISO remota n��o �� suportada por esse servidor."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr "Foto da tela n��o �� suportado na m��quina virtual %(name)s"
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel criar a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel atualizar a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel encontrar a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr "N��o foi poss��vel conectar �� m��quina virtual desligada %(name)s."
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr "URI do Modelo inv��lida %(value)s especificada para m��quina virtual"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+"URI do Storage pool URI inv��lida %(value)s especificada para m��quina virtual"
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr "Gr��ficos suportados para a m��quina virtual s��o Spice ou VNC"
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr "Endere��o para receber eventos gr��ficos deve ser IPv4 ou IPv6"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "Especifique um modelo para ser base da cria����o da m��quina virtual"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel iniciar a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel for��ar o desligamento da m��quina virtual %(name)s. "
+"Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel remover a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel reiniciar a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+msgid "User name list must be an array"
+msgstr "Lista de nomes de usu��rio deve ser um array"
+
+msgid "User name must be a string"
+msgstr "Nome de usu��rio deve ser um texto"
+
+msgid "Group name list must be an array"
+msgstr "Lista de nomes de grupo deve ser um array"
+
+msgid "Group name must be a string"
+msgstr "Nome de grupo deve ser um texto"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "Usu��rio(s) '%(users)s' n��o existe(m)"
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "Grupo(s) '%(groups)s' n��o existe(m)"
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel desligar a m��quina virtual %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel acessar os metadados da m��quina virtual %(name)s. Detalhes: "
+"%(err)s"
+
+msgid "The guest console password must be a string."
+msgstr "A senha para o console do guest deve ser um texto."
+
+msgid "The life time for the guest console password must be a number."
+msgstr "O tempo de vida da senha do console do guest deve ser um n��mero."
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr "A m��quina virtual '%(name)s' deve estar parada antes de clon��-la."
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr "Espa��o em disco insuficiente para clonar a m��quina virtual '%(name)s'"
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr "N��o foi poss��vel clonar a VM '%(name)s'. Detalhes: %(err)s"
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr "Opera����o inv��lida para m��quina virtual n��o-persistente %(name)s"
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+"A VM %(vmid)s n��o cont��m o dispositivo de host atribu��do diretamente "
+"%(dev_name)s."
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+"N��o �� permitido atribuir diretamente o dispositivo de host %(dev_name)s."
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+"Nenhum grupo IOMMU encontrado. Passthrough de host PCI necessita do grupo "
+"IOMMU para funcionar corretamente. Por favor, habilite o suporte ao Intel VT-"
+"d ou AMD IOMMU. Para uma CPU Intel, adicione \"intel_iommu=on\" nos seus "
+"par��metros de kernel em \"/boot/grub2/grub.conf\". Para uma CPU AMD, "
+"adicione \"iommu=pt iommu=1\"."
+
+msgid "\"name\" should be a device name string"
+msgstr "\"nome\" deve ser um texto do nome do dispositivo."
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "Interface %(iface)s n��o existe na m��quina virtual %(name)s"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"Rede %(network)s especificada para a m��quina virtual %(name)s n��o existe"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "Tipo de interface suportado das m��quinas virtuais �� somente rede"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr "Nome da rede para a interface da m��quina virtual deve ser texto"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr "Modelo de placa de rede inv��lido para a interface da m��quina virtual"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr ""
+"Especifique o tipo e a rede para adicionar uma nova interface da m��quina "
+"virtual"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "Modelo %(name)s j�� existe"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr "Rede '%(network)s' especificada para o modelo %(template)s n��o existe"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr ""
+"Storage pool %(pool)s especificado para o modelo %(template)s n��o existe"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr ""
+"Storage pool %(pool)s especificado para o modelo %(template)s n��o est�� ativo"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "Par��metro inv��lido '%(param)s' especificado para CDROM"
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr "Rede %(network)s especificada para modelo %(template)s n��o est�� ativa"
+
+msgid "Template name must be a string"
+msgstr "Nome do modelo deve ser um texto"
+
+msgid "Template icon must be a path to the image"
+msgstr "��cone do modelo deve ser um caminho para uma imagem"
+
+msgid "Template distribution must be a string"
+msgstr "Distribui����o do modelo deve ser um texto"
+
+msgid "Template distribution version must be a string"
+msgstr "Vers��o da distribui����o do modelo deve ser um texto"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "O n��mero de CPUs deve ser um inteiro maior do que 0"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "Quantidade de mem��ria (MB) deve ser um inteiro maior que 512"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "Modelo do CDROM deve ser um arquivo ISO local ou remoto"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "URI de storage pool inv��lido %(value)s especificado para modelo"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr ""
+"Especifique uma imagem ISO como CD-ROM ou uma imagem base para criar um "
+"modelo"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "Todas redes para o modelo devem ser especificadas em uma lista"
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+"Especifique um volume para o template quando o storage pool for iSCSI or SCSI"
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr "O volume %(volume)s n��o est�� no storage pool %(pool)s"
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "N��o foi poss��vel criar o modelo devido a um erro: %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "N��o foi poss��vel remover o modelo devido a um erro: %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr "O tamanho do disco deve ser um n��mero inteiro maior que 1GB."
+
+msgid "Template base image must be a valid local image file"
+msgstr "Imagem base do modelo deve ser um arquivo de imagem local v��lido"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr "N��o foi poss��vel identificar o formato da imagem base %(path)s"
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+"Ao especificar a topologia de CPU, VCPUs deve ser um produto de sockets, "
+"cores e threads."
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+"Ao especificar a topologia de CPU, cada elemento deve ser um n��mero inteiro "
+"maior do que zero."
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+"Formato de imagem de disco inv��lido. Formatos v��lidos: bochs, cloop, cow, "
+"dmg, qcow, qcow2, qed, raw, vmdk, vpc."
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "Storage pool %(name)s j�� existe"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "Storage pool %(name)s n��o existe"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "Especifique %(item)s para criar o storage pool %(name)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "N��o foi poss��vel remover o storage pool ativo %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "N��o foi poss��vel listar os storage pools. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel criar o storage pool %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel saber o n��mero de volumes no storage pool %(name)s. "
+"Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "N��o foi possivel ativar o storage pool %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "N��o foi possivel desativar o storage pool %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "N��o foi possivel remover o storage pool %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"N��o foi poss��vel criar Pool NFS uma vez que o caminho de exporta����o %(path)s "
+"pode bloquear durante a montagem"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"N��o foi poss��vel criar NFS Pool uma vez que a montagem do caminho de "
+"exporta����o %(path)s falhou"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "Tipo de storage pool n��o suportado: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr "Erro durante a leitura do XML do storage pool %(pool)s"
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+"Tipos de storage pool supportados s��o dir, netfs, logical, iscsi, scsi e "
+"kimchi-iso"
+
+msgid "Storage pool path must be a string"
+msgstr "Caminho para storage pool deve ser um texto"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "Host do storage pool deve ser um IP ou um hostname"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+"Dispositivo do storage pool deve ser o caminho absoluto para o block device"
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "Par��metro dos dispositivos do storage pool devem ser uma lista"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "Alvo IQN de um pool iSCSI deve ser um texto"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr ""
+"Porta de um servidor remoto de storage deve ser um inteiro entre 1 e 65535"
+
+msgid "iSCSI target username must be a string"
+msgstr "Usu��rio do iSCSI target deve ser um texto"
+
+msgid "iSCSI target password must be a string"
+msgstr "Senha do iSCSI target deve ser um texto"
+
+msgid "Specify name and type to create a storage pool"
+msgstr "Especifique o nome e o tipo para criar um storage pool"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s n��o �� um disco/parti����o v��lido. N��o foi poss��vel adicion��-lo ao "
+"pool %(pool)s."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr "N��o foi poss��vel extender o pool l��gico %(pool)s. Detalhes: %(err)s"
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr ""
+"O par��metro discos somente pode ser atualizado para storage pool l��gicos."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "O nome do adaptador SCSI host deve ser um texto"
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "O storage pool kimchi_isos �� reservado para uso interno"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"N��o foi poss��vel ativar o storage pool NFS %(name)s. Servidor NFS %(server)s "
+"est�� inacess��vel."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"N��o foi poss��vel desativar o storage pool NFS %(name)s. Servidor NFS "
+"%(server)s est�� inacess��vel."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"N��o foi poss��vel desativar o pool %(name)s uma vez que ele est�� associado "
+"com algum dos modelos"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr ""
+"N��o foi poss��vel remover o pool %(name)s uma vez que ele est�� associado com "
+"algum dos modelos"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"Um grupo de volume chamado '%(name)s' j�� existe. Por favor, escolha outro "
+"nome para criar o pool l��gico."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"N��o foi poss��vel atualizar a base de dados com informa����es de mais ISOs "
+"devido a um erro: %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "Volume de storage %(name)s j�� existe"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr "Volume de storage %(name)s n��o existe no storage pool %(pool)s"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+"N��o foi poss��vel criar o storaget volume %(volume)s pois o storage pool "
+"%(pool)s n��o est�� ativo"
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "Especifique %(item)s para poder criar o volume %(volume)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr ""
+"N��o foi poss��vel listar volumes pois o storage pool %(pool)s n��o est�� ativo"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel criar o volume %(name)s no storage pool %(pool)s. Detalhes: "
+"%(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel listar os volumes do storage pool %(pool)s. Detalhes: "
+"%(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel limpar o volume %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel remover o volume %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel redimensionar o volume %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr "Storage do tipo %(type)s n��o suporta cria����o ou remo����o de volume"
+
+msgid "Storage volume name must be a string"
+msgstr "Nome do volume deve ser um texto"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "Aloca����o do volume de storage deve ser um n��mero inteiro"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+"Formato de volume de storage inv��lido. Formatos v��lidos: bochs, cloop, cow, "
+"dmg, qcow, qcow2, qed, raw, vmdk, vpc."
+
+msgid "Storage volume requires a volume name"
+msgstr "Volume de storage requer um nome"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"N��o foi poss��vel atualizar a base de dados com informa����es de volume de "
+"storage devido a um erro: %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr "Somente um par��metro %(param)s pode ser especificado"
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr "Criar um volume a partir de %(param)s n��o �� suportado"
+
+msgid "Storage volume capacity must be an integer number."
+msgstr "A capacidade do storage volume deve ser um n��mero inteiro."
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+"URL para o storage volume deve ser http://, https://, ftp:// ou ftps://."
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr "Erro ao acessar arquivo %(url)s. Por favor, verifique isso."
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel clonar o volume de storage '%(name)s' no pool '%(pool)s'. "
+"Detalhes: %(err)s"
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "Interface %(name)s n��o existe"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "Rede %(name)s j�� existe"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "Rede %(name)s n��o existe"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr ""
+"A subrede %(subnet)s especificada para a rede %(network)s n��o �� v��lida."
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr "Especifique uma interface de rede para criar a rede de bridge %(name)s"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "N��o foi poss��vel remover a rede ativa %(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr ""
+"A interface %(iface)s especificada para a rede %(network)s j�� est�� em uso"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "Interface deve ser 'bare NIC', 'bonding' ou 'dispositivo de bridge'."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel criar a rede %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "N��o foi poss��vel encontrar um endere��o IP livre para a rede '%(name)s'"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr "A interface %(iface)s j�� existe"
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "Tipos de rede suportados s��o isolada, NAT e bridge"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"Subrede deve ser um texto com endere��o IP e prefixo, ou m��scara de rede"
+
+msgid "Network interface must be a string"
+msgstr "Interface de rede deve ser um texto"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "ID da rede VLAN deve ser um inteiro entre 1 e 4094"
+
+msgid "Specify name and type to create a Network"
+msgstr "Especifique o nome e o tipo para criar uma rede"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+"N��o foi poss��vel desativar a rede %(name)s. H�� alguma m��quina virtual "
+"%(vms)s e/ou modelo associados a esta rede."
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+"N��o foi poss��vel desativar a rede %(name)s. H�� alguma m��quina virtual "
+"%(vms)s e/ou modelo associados a esta rede."
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+"Dispositivo da bridge %(name)s n��o pode ser um dispositivo vinculado a uma "
+"VLAN."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "N��o foi poss��vel ativar a interface %(iface)s: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"N��o foi poss��vel ativar a interface %(iface)s. Por favor, verifique o status "
+"da conex��o f��sica."
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr "N��o foi poss��vel iniciar a rede %(name)s. Detalhes: %(err)s"
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "Relat��rio de debug %(name)s n��o existe"
+
+msgid "Debug report tool not found in system"
+msgstr "Ferramenta de relat��rio de debug n��o encontrada no sistema"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr ""
+"N��o foi poss��vel criar o relat��rio de debug %(name)s. Detalhes: %(err)s."
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr "N��o foi poss��vel encontrar nenhum relat��rio com o nome %(name)s"
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel gerar o relat��rio de debug %(name)s. Detalhes: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr "Voc�� deve dar um nome para o arquivo do relat��rio de debug."
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+"Nome do relat��rio deve ser um texto. Somente letras, digitos, underscore "
+"('_') e h��fem ('-') s��o permitidos."
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"O relat��rio de debug com o nome especificado \"%(name)s\" j�� existe. Por "
+"favor, use outro nome."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "Servidor de storage %(server)s n��o foi usado pelo Kimchi"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "Distribui����o '%(name)s' n��o existe"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "Parti����o %(name)s n��o existe no host"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+"N��o foi poss��vel desligar o host uma vez que h�� m��quinas virtuais ligadas"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr ""
+"N��o foi poss��vel resetar o host uma vez que h�� m��quinas virtuais ligadas"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "Dispositivo de n�� '%(name)s' n��o encontrado"
+
+msgid "Conflicting flag filters specified."
+msgstr "Foram especificados filtros de flag com conflito."
+
+msgid "No packages marked for update"
+msgstr "Nenhum pacote marcado para atualiza����o"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "Pacote %(name)s n��o est�� marcado para atualiza����o."
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr "Erro ao buscar pacotes marcados para atualiza����o. Detalhes: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "N��o h�� gerenciador de pacotes compat��vel para este sistema."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "URI %(uri)s inv��lida"
+
+msgid "Unable to choose a virtual machine name"
+msgstr "N��o foi poss��vel escolher um nome para a m��quina virtual"
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "Tipo de storage inv��lido. Tipos suportados: 'cdrom', 'disco'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+"O caminho '%(value)s' n��o �� um caminho local/remoto v��lido para este "
+"dispositivo"
+
+msgid "Only CDROM path can be update."
+msgstr "Apenas o caminho do CD-ROM pode ser atualizado."
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr "O disco %(dev_name)s n��o existe na m��quina virtual %(vm_name)s"
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr "Erro ao criar novo dispositivo de storage: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "Erro ao atualizar dispositivo de storage: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "Erro ao remover dispositivo de storage: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr "Dispositivo IDE hot plug n��o �� suportado"
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr ""
+"Especifique o tipo e o caminho, ou o tipo e o pool/volume, para adicionar um "
+"novo disco da m��quina virtual"
+
+msgid "Specify path to update virtual machine disk"
+msgstr "Especifique o caminho para atualizar o disco da m��quina virtual"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+"Limita����o do tipo do controlador %(type)s de %(limit)s dispositivos foi "
+"alcan��ada"
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+"N��o foi poss��vel buscar informa����es do caminho do disco para o pool/volume "
+"dado: %(error)s"
+
+msgid "Volume already in use by other virtual machine."
+msgstr "Volume j�� em uso por outra m��quina virtual."
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr ""
+"Somente um caminho ou pool/volume pode ser especificado para adicionar um "
+"novo disco da m��quina virtual."
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+"Volume escolhido com formato %(format)s n��o se enquadra no tipo de storage "
+"%(type)s"
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "ID do reposit��rio YUM deve ser apenas uma palavra."
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "URL do reposit��rio deve ser uma URL http://, ftp:// ou file://."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"Configura����o do reposit��rio �� um dicion��rio com valores espec��ficos de "
+"acordo com o tipo do reposit��rio."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "Distribui����o para o reposit��rio DEB deve ser um texto"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "Componentes para o reposit��rio DEB deve ser um array"
+
+msgid "Components to DEB repository must be a string"
+msgstr "Componentes para o reposit��rio DEB deve ser um texto"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "Nome do reposit��rio YUM deve ser um texto."
+
+msgid "GPG check must be a boolean value."
+msgstr "Verifica����o de GPG deve ser um valor booleano."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr ""
+"Chave GPG deve ser uma URL apontando para o arquivo no formato ASCII-armor."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "N��o foi poss��vel atualizar o reposit��rio %(repo_id)s."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "Reposit��rio %(repo_id)s n��o existe."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr ""
+"Ferramenta de gerenciamento de reposit��rio n��o foi reconhecida no seu "
+"sistema."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "Reposit��rio %(repo_id)s j�� est�� habilitado."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "Reposit��rio %(repo_id)s j�� est�� desabilitado."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "N��o foi poss��vel remover o reposit��rio %(repo_id)s."
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr ""
+"N��o foi poss��vel gravar o arquivo de configura����o do reposit��rio "
+"%(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr ""
+"Especificar o reposit��rio de distribui����o para poder criar o reposit��rio DEB."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "N��o foi poss��vel habilitar o reposit��rio %(repo_id)s."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "N��o foi poss��vel desabilitar o reposit��rio %(repo_id)s."
+
+msgid "YUM Repository ID already exists"
+msgstr "ID do reposit��rio YUM j�� existe"
+
+msgid "YUM Repository name must be a string"
+msgstr "Nome do reposit��rio YUM deve ser um texto"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "N��o �� poss��vel listar os reposit��rios. Detalhes: '%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr ""
+"N��o foi poss��vel carregar as informa����es do reposit��rio. Detalhes: '%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "N��o foi poss��vel adicionar o reposit��rio. Detalhes: '%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "N��o foi poss��vel remover o reposit��rio. Detalhes: '%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+"Itens de configura����o '%(items)s' n��o s��o suportados pelo gerenciador de "
+"reposit��rios."
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+"A m��quina virtual '%(vm)s' deve estar parada antes de criar um snapshot dela"
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel criar o snapshot '%(name)s' na m��quina virtual '%(vm)s'. "
+"Detalhes: %(err)s"
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr "O snapshot '%(name)s' n��o existe na m��quina virtual '%(vm)s'."
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel recuperar o snapshot '%(name)s' da m��quina virtual "
+"'%(vm)s'. Detalhes: %(err)s"
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+"N��o foi poss��vel listar os snapshots da m��quina virtual '%(vm)s'. Detalhes: "
+"%(err)s"
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel remover o snapshot '%(name)s' da m��quina virtual '%(vm)s'. "
+"Detalhes: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel recuperar o snapshot atual da m��quina virtual '%(vm)s'. "
+"Detalhes: %(err)s."
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+"N��o foi poss��vel reverter a m��quina virtual '%(vm)s' para o snapshot "
+"'%(name)s'. Detalhes: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+"N��o foi poss��vel criar o snapshot para a m��quina virtual '%(vm)s' porque ela "
+"cont��m discos no formato '%(format)s'; somente 'qcow2' �� suportado."
+
+msgid "The number of vCPUs is too large for this system."
+msgstr "O n��mero de VCPUs �� grande demais para esse sistema."
+
+msgid "Invalid vCPU/topology combination."
+msgstr "Combina����o inv��lida de VCPU/topologia."
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr "Este host (ou configura����o atual) n��o permite topologia de CPU."
+
+msgid "ERROR CODE"
+msgstr "C��DIGO DE ERRO"
+
+msgid "REASON"
+msgstr "MOTIVO"
+
+msgid "STACK"
+msgstr "PILHA"
+
+msgid "Go to Homepage"
+msgstr "Ir para a P��gina Inicial"
+
+msgid "Create a New Virtual Machine"
+msgstr "Criar nova M��quina Virtual"
+
+msgid "Virtual Machine Name"
+msgstr "Nome da M��quina Virtual"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"O nome usado para identificar a m��quina virtual. Se ele for omitido, a "
+"escolha ser�� baseada no modelo selecionado."
+
+msgid "Template"
+msgstr "Modelo"
+
+msgid "Please create a template first."
+msgstr "Por favor, crie um modelo primeiro."
+
+msgid "Create a Template"
+msgstr "Criar um Modelo"
+
+msgid "Please choose a template."
+msgstr "Por favor, escolha um modelo."
+
+msgid "OS"
+msgstr "Sistema Operacional"
+
+msgid "OS Version"
+msgstr "Vers��o do Sistema Speracional"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "Mem��ria"
+
+msgid "Create"
+msgstr "Criar"
+
+msgid "Creating..."
+msgstr "Criando..."
+
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgid "Edit Guest"
+msgstr "Editar Guest"
+
+msgid "General"
+msgstr "Geral"
+
+msgid "Storage"
+msgstr "Storage"
+
+msgid "Interface"
+msgstr "Interface"
+
+msgid "Permission"
+msgstr "Permiss��o"
+
+msgid "Host PCI Device"
+msgstr "Dispositivo de host PCI"
+
+msgid "Snapshot"
+msgstr "Snapshot"
+
+msgid "Name"
+msgstr "Nome"
+
+msgid "CPUs"
+msgstr "CPUs"
+
+msgid "Memory (MB)"
+msgstr "Mem��ria (MB)"
+
+msgid "Icon"
+msgstr "��cone"
+
+msgid "Device"
+msgstr "Dispositivo"
+
+msgid "Path"
+msgstr "Caminho"
+
+msgid "Network"
+msgstr "Rede"
+
+msgid "Type"
+msgstr "Tipo"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr "Usu��rios e grupos de sistema dispon��veis"
+
+msgid "Selected system users and groups"
+msgstr "Usu��rios e grupos de sistema selecionados"
+
+msgid "User"
+msgstr "Usu��rio"
+
+msgid "All"
+msgstr "Todos"
+
+msgid "To Add"
+msgstr "Para adicionar"
+
+msgid "Added"
+msgstr "Adicionado"
+
+msgid "filter"
+msgstr "filtro"
+
+msgid "Product"
+msgstr "Produto"
+
+msgid "Vendor"
+msgstr "Vendor"
+
+msgid "Created"
+msgstr "Criado"
+
+msgid "Save"
+msgstr "Salvar"
+
+msgid "Replace"
+msgstr "Substituir"
+
+msgid "Detach"
+msgstr "Remover"
+
+msgid "revert"
+msgstr "Reverter"
+
+msgid "Start"
+msgstr "Iniciar"
+
+msgid "Reset"
+msgstr "Reiniciar"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr "For��ar desligamento"
+
+msgid "Actions"
+msgstr "A����es"
+
+msgid "Connect"
+msgstr "Conectar"
+
+msgid "Clone"
+msgstr "Clonar"
+
+msgid "Edit"
+msgstr "Editar"
+
+msgid "Shut Down"
+msgstr "Desligar"
+
+msgid "Delete"
+msgstr "Remover"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "Disco E/S"
+
+msgid "Network I/O"
+msgstr "Rede E/S"
+
+msgid "Livetile"
+msgstr "Tela ao vivo"
+
+msgid "No guests found."
+msgstr "Nenhum guest encontrado."
+
+msgid "Add a Storage Device to VM"
+msgstr "Adicionar um dispositivo de storage �� VM"
+
+msgid "Device Type"
+msgstr "Tipo do Dispositivo"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr ""
+"O tipo do dispositivo. Atualmente, \"cdrom\" e \"disco\" s��o suportados."
+
+msgid "Storage Pool"
+msgstr "Storage Pool"
+
+msgid "Storage pool which volume located in"
+msgstr "Storage pool no qual o volume est�� localizado"
+
+msgid "Storage Volume"
+msgstr "Volume de storage"
+
+msgid "Storage volume to be attached"
+msgstr "Volume de storage a ser adicionado"
+
+msgid "File Path"
+msgstr "Caminho do Arquivo"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "O caminho do arquivo ISO para o CDROM no servidor."
+
+msgid "Attach"
+msgstr "Adicionar"
+
+msgid "Shut down"
+msgstr "Desligar"
+
+msgid "Restart"
+msgstr "Reiniciar"
+
+msgid "Basic Information"
+msgstr "Informa����es b��sicas"
+
+msgid "OS Distro"
+msgstr "Distribui����o"
+
+msgid "OS Code Name"
+msgstr "Nome-c��digo do sistema operacional"
+
+msgid "Processor"
+msgstr "Processador"
+
+msgid "CPU(s)"
+msgstr "CPU(s)"
+
+msgid "System Statistics"
+msgstr "Estat��sticas do sistema"
+
+msgid "Software Updates"
+msgstr "Atualiza����es de software"
+
+msgid "Update Progress"
+msgstr "Progresso da atualiza����o"
+
+msgid "Repositories"
+msgstr "Reposit��rios"
+
+msgid "Debug Reports"
+msgstr "Relat��rios de Debug"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr ""
+"O usu��rio ou senha inseridos est��o incorretos. Por favor, tente novamente."
+
+msgid "This field is required."
+msgstr "Esse campo �� obrigat��rio."
+
+msgid "Log in"
+msgstr "Entrar"
+
+msgid "Logging in..."
+msgstr "Entrando..."
+
+msgid "Host"
+msgstr "Host"
+
+msgid "Guests"
+msgstr "Guests"
+
+msgid "Templates"
+msgstr "Modelos"
+
+msgid "Failed to get application configuration"
+msgstr "N��o foi poss��vel carregar as configura����es da aplica����o"
+
+msgid "This is not a valid Linux path"
+msgstr "Este n��o �� um caminho v��lido no Linux"
+
+msgid "This is not a valid URL."
+msgstr "Essa n��o �� uma URL v��lida."
+
+msgid "No such data available."
+msgstr "N��o h�� dados dispon��veis."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"N��o foi poss��vel contactar o sistema host. Verique se o sistema do host est�� "
+"ligado e se voc�� possui conectividade de rede com ele. Resposta da "
+"requisi����o HTTP %1. "
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "Confirma����o de remo����o"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Confirm"
+msgstr "Confirmar"
+
+msgid "Warning"
+msgstr "Aviso"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "Carregando..."
+
+msgid "An error occurred while retrieving system information."
+msgstr "Ocorreu um erro ao recuperar informa����es do sistema."
+
+msgid "Retry"
+msgstr "Tentar novamente"
+
+msgid "Detailed message:"
+msgstr "Mensagem detalhada:"
+
+msgid "No ISO found"
+msgstr "Nenhuma ISO encontrada"
+
+msgid "This is not a valid ISO file."
+msgstr "Esse n��o �� um arquivo ISO v��lido."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "Isso vai levar um longo tempo. Deseja continuar?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "O modelo vai ser permanentemente removido. Deseja continuar?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"N��o foi poss��vel desligar o sistema porque algumas m��quinas virtuais est��o "
+"ligadas!"
+
+msgid "Max:"
+msgstr "M��ximo:"
+
+msgid "Utilization"
+msgstr "Utiliza����o"
+
+msgid "Available"
+msgstr "Dispon��vel"
+
+msgid "Read Rate"
+msgstr "Taxa de leitura"
+
+msgid "Write Rate"
+msgstr "Taxa de escrita"
+
+msgid "Received"
+msgstr "Recebido"
+
+msgid "Sent"
+msgstr "Enviado"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"Desligar ou reiniciar o host causar�� perda de trabalho que n��o foi salvo. "
+"Continuar o processo de desligar/reiniciar?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Reposit��rio ser�� removido permanentemente e n��o poder�� ser recuperado. "
+"Deseja continuar?"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "URL Base"
+
+msgid "Is Mirror"
+msgstr "�� mirror"
+
+msgid "URL Args"
+msgstr "Argumentos da URL"
+
+msgid "Enabled"
+msgstr "Ativado"
+
+msgid "GPG Check"
+msgstr "Verifica����o GPG"
+
+msgid "GPG Key"
+msgstr "Chave GPG"
+
+msgid "Add"
+msgstr "Adicionar"
+
+msgid "Remove"
+msgstr "Remover"
+
+msgid "Enable"
+msgstr "Ativar"
+
+msgid "Disable"
+msgstr "Desativar"
+
+msgid "Package Name"
+msgstr "Nome do pacote"
+
+msgid "Version"
+msgstr "Vers��o"
+
+msgid "Architecture"
+msgstr "Arquitetura"
+
+msgid "Repository"
+msgstr "Reposit��rio"
+
+msgid "Update All"
+msgstr "Atualizar todos"
+
+msgid "Updating..."
+msgstr "Atualizando..."
+
+msgid "Failed to retrieve packages update information."
+msgstr "N��o foi poss��vel recuperar as informa����es de atualiza����o de pacoates."
+
+msgid "Failed to update package(s)."
+msgstr "Erro ao atualizar pacote(s)."
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"Relat��rio de debug ser�� permanentemente removido e n��o poder�� ser "
+"recuperado. Deseja continuar?"
+
+msgid "Generated Time"
+msgstr "Tempo gerado"
+
+msgid "Generate"
+msgstr "Gerar"
+
+msgid "Generating..."
+msgstr "Gerando..."
+
+msgid "Rename"
+msgstr "Renomear"
+
+msgid "Download"
+msgstr "Baixar"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr ""
+"Nome do relat��rio deve apenas conter letras, n��meros, underscore ('_') e/ou "
+"h��fen ('-')."
+
+msgid "Pending..."
+msgstr "Pendente..."
+
+msgid "Report name is the same as the original one."
+msgstr "Nome do relat��rio �� o mesmo que o original."
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"A m��quina virtual vai ser removida com todos seus discos. Essa opera����o �� "
+"irrevers��vel. Deseja continuar?"
+
+msgid "Power off Confirmation"
+msgstr "Confirma����o de desligamento for��ado"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+"Essa a����o pode produzir resultados n��o desej��veis, como por exemplo cache de "
+"disco n��o-atualizado no guest. Deseja continuar?"
+
+msgid "Reset Confirmation"
+msgstr "Confirma����o de reinicializa����o"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+"Existe um risco de perda de dados causado pela reinicializa����o sem o "
+"desligamento do sistema operacional do guest. Deseja continuar?"
+
+msgid "Shut Down Confirmation"
+msgstr "Confirma����o de desligamento"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr ""
+"O sistema operacional do guest pode ignorar essa requisi����o. Deseja "
+"continuar?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr "Confirma����o de Remo����o da M��quina Virtual"
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+"Essa m��quina virtual n��o �� persistente. O desligamento ir�� remov��-la. Deseja "
+"continuar?"
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+"Quando o guest de destino tiver volumes SCSI ou iSCSI, eles ser��o clonados "
+"no storage pool padr��o. O mesmo vai acontecer quando o pool de destino n��o "
+"tiver espa��o suficiente para clonar os volumes. Voc�� deseja continuar?"
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"Esse CDROM ser�� desconectado permanentemente e voc�� pode reconect��-lo. "
+"Deseja continuar a remo����o? "
+
+msgid "Attaching..."
+msgstr "Adicionando..."
+
+msgid "Replacing..."
+msgstr "Substituindo..."
+
+msgid "Successfully attached!"
+msgstr "Adicionado com sucesso!"
+
+msgid "Successfully replaced!"
+msgstr "Substitu��do com sucesso!"
+
+msgid "Successfully detached!"
+msgstr "Removido com sucesso!"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+"Esse disco ser�� desconectado permanentemente e voc�� pode reconect��-lo. "
+"Deseja continuar a remo����o? "
+
+msgid "interface:"
+msgstr "interface:"
+
+msgid "address:"
+msgstr "endere��o:"
+
+msgid "link_type:"
+msgstr "tipo do link:"
+
+msgid "block:"
+msgstr "bloco:"
+
+msgid "drive_type:"
+msgstr "tipo do drive:"
+
+msgid "model:"
+msgstr "modelo:"
+
+msgid "Affected devices:"
+msgstr "Dispositivos afetados:"
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "ID da VLAN deve ser um n��mero entre 1 e 4094."
+
+msgid "unavailable"
+msgstr "indispon��vel"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"Esta a����o ir�� interromper a conectividade da rede para qualquer m��quina "
+"virtual que depende dessa rede."
+
+msgid "Create a network"
+msgstr "Criar uma rede"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"Essa rede n��o �� persistente. Ao inv��s de parar, essa a����o ir�� remov��-la "
+"permantemente. Deseja continuar?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "O storage pool vai ser permanentemente removido. Deseja continuar?"
+
+msgid "This storage pool is empty."
+msgstr "Esse storage pool est�� vazio."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"Isso formatar�� seu disco e voc�� perder�� toda informa����o, voc�� tem certeza "
+"que quer continuar?"
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI Fibre Channel"
+
+msgid "No SCSI adapters found."
+msgstr "Nenhum adaptador SCSI encontrado."
+
+msgid "Loading iSCSI targets..."
+msgstr "Carregando iSCSI targets..."
+
+msgid "No iSCSI found. Please input one."
+msgstr "Nenhum iSCSI encontrado. Por favor, forne��a um."
+
+msgid "Failed to load iSCSI targets."
+msgstr "Erro ao carregar iSCSI targets."
+
+msgid "The storage pool name can not be blank."
+msgstr "O nome do storage pool n��o pode ser vazio."
+
+msgid "The storage pool path can not be blank."
+msgstr "O caminho do storage pool n��o pode ser vazio."
+
+msgid "NFS server mount path can not be blank."
+msgstr "Caminho de montagem do servidor de NFS n��o pode ser vazio."
+
+msgid "Invalid NFS mount path."
+msgstr "Caminho de montagem do NFS inv��lido."
+
+msgid "No logical device selected."
+msgstr "Nenhum dispositivo l��gico selecionado."
+
+msgid "The iSCSI target can not be blank."
+msgstr "O alvo iSCSI n��o pode ser vazio."
+
+msgid "Server name can not be blank."
+msgstr "Nome do servidor n��o pode ser vazio."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr "Este n��o �� um nome ou IP de servidor v��lido. Por favor, modifique-o."
+
+msgid "Looking for available partitions ..."
+msgstr "Procurando por parti����es dispon��veis ..."
+
+msgid "No available partitions found."
+msgstr "Nenhuma parti����o dispon��vel encontrada."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"O storage pool n��o �� persistente. Ao inv��s de desativar, essa a����o vai "
+"remov��-lo permanentemente. Deseja continuar?"
+
+msgid "Unable to retrieve partitions information."
+msgstr "N��o foi poss��vel recuperar as informa����es das parti����es."
+
+msgid "In progress..."
+msgstr "Em progresso..."
+
+msgid "Failed!"
+msgstr "Falhou!"
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+"Caminho do CDROM precisa ser um caminho local v��lido e n��o pode ser vazio."
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "Pool ou volume do disco n��o pode ser vazio."
+
+#, fuzzy
+msgid "Filter"
+msgstr "filtro"
+
+msgid "Network Name"
+msgstr "Nome da rede"
+
+msgid "State"
+msgstr "Estado"
+
+msgid "Network Type"
+msgstr "Tipo da rede"
+
+msgid "Address Space"
+msgstr "Espa��o de endere��o"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "O nome n��o deve conter '/' and '\"'."
+
+msgid "Isolated: no external network connection"
+msgstr "Isolada: nenhuma conex��o externa"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: somente conex��o de rede f��sica de sa��da"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr ""
+"Bridged: M��quinas virtuais est��o conectadas diretamente com a rede f��sica"
+
+msgid "(No interfaces found)"
+msgstr "(Nenhuma interface encontrada)"
+
+msgid "Destination"
+msgstr "Destino"
+
+msgid "Enable VLAN"
+msgstr "Habilitar VLAN"
+
+msgid "VLAN ID"
+msgstr "ID da VLAN"
+
+msgid "Stop"
+msgstr "Parar"
+
+msgid "Generate a New Debug Report"
+msgstr "Gerar um novo Relat��rio de Debug"
+
+msgid "Report Name"
+msgstr "Nome do Relat��rio"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"O nome usado para identificar o relat��rio. Se omitido, um nome ser�� "
+"escolhido baseado no hor��rio atual. O nome pode conter: letras, n��meros, "
+"underscore ('_') e h��fen ('-')."
+
+msgid "Rename a Debug Report"
+msgstr "Renomear um Relat��rio de Debug"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"O nome usado para identificar o relat��rio. O nome pode conter: letras, "
+"d��gitos e h��fen (\"-\")."
+
+msgid "Submit"
+msgstr "Enviar"
+
+msgid "Add a Repository"
+msgstr "Adicionar um Reposit��rio"
+
+msgid "Identifier"
+msgstr "Identificador"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "Uma ��nica palavra, identificador ��nico para o reposit��rio."
+
+msgid "Textual name for the repository."
+msgstr "Nome textual para o reposit��rio."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "Campo Obrigat��rio"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "URL para o reposit��rio. Protocolos suportados s��o http, ftp e file."
+
+msgid "Repository is a mirror"
+msgstr "Reposit��rio �� um mirror"
+
+msgid "Distribution"
+msgstr "Distribui����o"
+
+msgid "Distribution of the DEB repository."
+msgstr "Distribui����o para o reposit��rio DEB."
+
+msgid "Components"
+msgstr "Componentes"
+
+msgid "List of components in DEB repository."
+msgstr "Lista de componentes para o reposit��rio DEB."
+
+msgid "Edit Repository"
+msgstr "Editar Reposit��rio"
+
+msgid "Mirror List URL"
+msgstr "URL para a lista de mirror"
+
+msgid "Yes"
+msgstr "Sim"
+
+msgid "No"
+msgstr "N��o"
+
+msgid "Capacity"
+msgstr "Capacidade"
+
+msgid "Allocated"
+msgstr "Alocado"
+
+msgid "Location"
+msgstr "Localiza����o"
+
+msgid "Device path"
+msgstr "Caminho do dispositivo"
+
+msgid "active"
+msgstr "ativo"
+
+msgid "inactive"
+msgstr "inativo"
+
+msgid "Deactivate"
+msgstr "Desativar"
+
+msgid "Activate"
+msgstr "Ativar"
+
+msgid "Add Volume"
+msgstr "Adicionar volume"
+
+msgid "Extend"
+msgstr "Aumentar"
+
+msgid "Undefine"
+msgstr "Indefinir"
+
+msgid "Format"
+msgstr "Formato"
+
+msgid "Allocation"
+msgstr "Aloca����o"
+
+msgid "Define a New Storage Pool"
+msgstr "Definir novo Storage Pool"
+
+msgid "Storage Pool Name"
+msgstr "Nome do Storage Pool"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr "O nome usado para identificar o storage pool e n��o deve ser vazio."
+
+msgid "Storage Pool Type"
+msgstr "Tipo do Storage Pool"
+
+msgid "Storage Path"
+msgstr "Caminho do storage"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr ""
+"O caminho do Storage Pool. Cada Storage Pool deve ter um caminho ��nico."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr ""
+"O Kimchi vai tentar criar o diret��rio se ainda n��o existir no seu sistema."
+
+msgid "NFS Server IP"
+msgstr "IP do servidor NFS"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"IP ou hostname do servidor NFS. Pode ser inserido ou escolhido do hist��rico."
+
+msgid "NFS Path"
+msgstr "Caminho do NFS"
+
+msgid "The NFS exported path on NFS server."
+msgstr "O caminho exportado do servidor NFS."
+
+msgid "iSCSI Server"
+msgstr "Servidor iSCSI"
+
+msgid "Server"
+msgstr "Servidor"
+
+msgid "Port"
+msgstr "Porta"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "IP ou hostname do servidor iSCSI. N��o deve ser vazio."
+
+msgid "Target"
+msgstr "Alvo"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "O alvo iSCSI no servidor iSCSI"
+
+msgid "Add iSCSI Authentication"
+msgstr "Adicionar as credenciais do iSCSI"
+
+msgid "iSCSI Authentication"
+msgstr "Credenciais do iSCSI"
+
+msgid "User Name"
+msgstr "Usu��rio"
+
+msgid "Password"
+msgstr "Senha"
+
+msgid "SCSI Adapter"
+msgstr "Adaptador SCSI"
+
+msgid "Please, wait..."
+msgstr "Por favor, aguarde..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr "Adicionar um volume ao Storage Pool"
+
+msgid "Fetch from remote URL"
+msgstr "Fazer download de uma URL remota"
+
+msgid "Enter the remote URL here."
+msgstr "Digite a URL remota aqui."
+
+msgid "Upload a file"
+msgstr "Fazer upload de um arquivo"
+
+msgid "Choose the file you want to upload."
+msgstr "Escolha o arquivo que voc�� quer fazer upload."
+
+msgid "Add Template"
+msgstr "Adicionar Modelo"
+
+msgid "Where is the source media for this template? "
+msgstr "Onde est�� a m��dia de origem desse modelo? "
+
+msgid "Local ISO Image"
+msgstr "Imagem ISO Local"
+
+msgid "Local Image File"
+msgstr "Arquivo de Imagem Local"
+
+msgid "Remote ISO Image"
+msgstr "Imagem ISO Remota"
+
+msgid "Search ISOs"
+msgstr "Procurar ISOs"
+
+msgid "The following ISOs are available:"
+msgstr "As seguintes ISOs est��o dispon��veis:"
+
+msgid "OS: "
+msgstr "Sistema Operacional: "
+
+msgid "Version: "
+msgstr "Vers��o: "
+
+msgid "Size: "
+msgstr "Tamanho: "
+
+msgid "Search more ISOs"
+msgstr "Procurar por mais ISOs"
+
+msgid "Create Templates from Selected ISO"
+msgstr "Criar Modelos a partir das ISOs selecionadas"
+
+msgid "I want to use a specific ISO file"
+msgstr "Eu quero usar um arquivo ISO espec��fico"
+
+msgid "Loading default remote ISOs ..."
+msgstr "Carregando ISOs remotas ..."
+
+msgid "Arch: "
+msgstr "Arquitetura: "
+
+msgid "I want to use a custom URL"
+msgstr "Eu quero usar uma URL personalizada"
+
+msgid "Edit Template"
+msgstr "Editar Modelo"
+
+msgid "CDROM"
+msgstr "CD-ROM"
+
+msgid "Image File"
+msgstr "Arquivo de imagem"
+
+msgid "Graphics"
+msgstr "Gr��ficos"
+
+msgid "Disk(GB)"
+msgstr "Disco (GB)"
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "Quantidade de CPUs"
+
+msgid "Manually set CPU topology"
+msgstr "Configurar manualmente a topologia de CPU"
+
+msgid "Cores"
+msgstr "Cores"
+
+msgid "Threads"
+msgstr "Threads"
+
+msgid "No templates found."
+msgstr "Nenhum modelo encontrado."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "M��todo de remo����o n��o �� permitido em %(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s n��o implementa m��todo de atualiza����o"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "M��todo de cria����o n��o �� permitido em %(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "N��o �� poss��vel realizar a leitura da requisi����o do JSON"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "Essa API suporta apenas JSON"
+
+#~ msgid "Parameters does not match requirement in schema: %(err)s"
+#~ msgstr "Par��metros n��o correspondem �� especifica����o do esquema: %(err)s"
+
+#~ msgid "You don't have permission to perform this operation."
+#~ msgstr "Voc�� n��o tem permiss��o para executar esta opera����o."
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "Datastore n��o est�� inicializado no objeto modelo."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "N��o foi poss��vel iniciar a tarefa devido a um erro: %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "Autentica����o falhou para o usu��rio '%(username)s'. [C��digo de erro: "
+#~ "%(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "Voc�� n��o est�� autorizado para acessar o Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "Especifique %(item)s para autenticar no Kimchi"
+
+#~ msgid "Invalid LDAP configuration: %(item)s : %(value)s"
+#~ msgstr "Configura����es LDAP inv��lidas: %(item)s : %(value)s"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "N��o foi poss��vel encontrar %(item)s no datastore"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr ""
+#~ "Fim do limite de tempo ao rodar comando '%(cmd)s' ap��s %(seconds)s "
+#~ "segundos"
+
+#~ msgid "Invalid data value '%(value)s'"
+#~ msgstr "Valor inv��lido '%(value)s'"
+
+#~ msgid "Invalid data unit '%(unit)s'"
+#~ msgstr "Unidade inv��lida '%(unit)s'"
+
+#~ msgid "Peers"
+#~ msgstr "Peers"
+
+#~ msgid "Searching"
+#~ msgstr "Procurando"
+
+#~ msgid "No peers found."
+#~ msgstr "Nenhum peer encontrado."
+
+#~ msgid "Help"
+#~ msgstr "Ajuda"
+
+#~ msgid "About"
+#~ msgstr "Sobre"
+
+#~ msgid "Log out"
+#~ msgstr "Sair"
+
+#~ msgid "Version:"
+#~ msgstr "Vers��o:"
+
+#~ msgid "Session timeout, please re-login."
+#~ msgstr ""
+#~ "Fim do limite do tempo da sess��o, por favor se autentique novamente."
diff --git a/plugins/gingerbase/po/ru_RU.po b/plugins/gingerbase/po/ru_RU.po
new file mode 100644
index 0000000..f466a2b
--- /dev/null
+++ b/plugins/gingerbase/po/ru_RU.po
@@ -0,0 +1,2199 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2014-08-28 17:32+0000\n"
+"Last-Translator: Aline Manera <aline.manera(a)gmail.com>\n"
+"Language-Team: Russian (http://www.transifex.com/projects/p/kimchi/language/"
+"ru/)\n"
+"Language: ru_RU\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "������������ ������������������ �������������� ������������������. ����������������: %(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr "������������ ������������������ �������������������� �� �������������� ���������������������� ������ %(device)s."
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "���� ������������ �������� ���������������� ����: %(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr ""
+"������������ �������������� ���������� ���������������� ���� %(filename)s. ������������������, ������ ������ �������� JSON."
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr "���� �������������� ���������� �� �������������� %(portal)s ���������� iSCSI. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "���� �������������� ���������� �� �������������� %(target)s ���������� iSCSI %(host)s"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "�������� ISO %(filename)s ���� ����������������������"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr ""
+"�������� ISO %(filename)s ���� ���������������� �������������������� ���������������������� ������������ El Torito"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "������������������������ ������������ ���������������� El Torito �� ������������ ISO %(filename)s"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "������������������������ ������������������ ���������������� El Torito �� ������������ ISO %(filename)s"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr "���������������������� ������ �������� ������ ���������������� �������� �� ������������ ISO %(filename)s"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr "���������������� ������������ ���������������������� �������� �� ������������ ISO %(filename)s"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"�� ���������������������� ������ �������� �������������� ������ �������������������������� ���������� ������������ ISO "
+"%(filename)s. ���������������������� ������ �� �������������� /var/lib/libvirt, ���������������� "
+"�������������������� ���� ���������� �� ������������ ���������������� �������������� ������ ������������������������ %(user)s, "
+"�������� ������ ����������������, ���������������� %(user)s �� ������������ �������� �� ������������ ISO ������ (���� "
+"��������������������������) ������������������ �������������� 'chmod -R o+x 'path_to_iso'. ����������������: "
+"%(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "���������������������� ������������ %(name)s ������ ��������������������"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "���������������������� ������������ %(name)s ���� ��������������������"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr ""
+"���� �������������� ���������������� ������������ ������������ ������ �������������������������� ���������������������� ������������ "
+"%(name)s"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "������������������ ���������� ISO ���� ���������������������������� �������� ����������������."
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� ���������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr ""
+"���������� ������������ ���������������� ������ ���������������������� �������������������� ������������ �������� IPv4 ������ IPv6"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "�������������� ������������ ������ ���������������� ���������������������� ������������"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� ������������������ ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr ""
+"���� �������������� �������������������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "������ �������� ������������ �������� ��������������"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "������ �������� ������������ �������� ��������������"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "������������������������ %(users)s ���� ��������������������."
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "������������������������ %(groups)s ���� ��������������������."
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������������� ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "���� �������������� ������������������ ���������������������� ������������ %(name)s. ����������������: %(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "������������������ %(iface)s ���� �������������������� �� ���������������������� ������������ %(name)s"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr ""
+"�������� %(network)s, ������������������ ������ ���������������������� ������������ %(name)s, ���� ��������������������"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "���������������������������� ������������ �������� ������ ���������������������� ���������������������� ������������ - ��������"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr "������ �������� ������ �������������������� ���������������������� ������������ ������������ �������� ��������������"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr ""
+"�������������� ������������������������ ���������� ������������ �������� ������ �������������������� ���������������������� ������������"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr "�������������� ������ �� �������� ������ �������������������� ������������ �������������������� ���������������������� ������������"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "������������ %(name)s ������ ��������������������"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr "�������� %(network)s, ������������������ ������ �������������� %(template)s, ���� ��������������������"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr "������ ������������ %(pool)s, ������������������ ������ �������������� %(template)s, ���� ��������������������"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr "������ ������������ %(pool)s, ������������������ ������ �������������� %(template)s, ���� ��������������"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "������������ ������������������������ ���������������� %(param)s ������ CDROM."
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr "�������� %(network)s, ������������������ ������ �������������� %(template)s, ���� ��������������"
+
+msgid "Template name must be a string"
+msgstr "������ �������������� ������������ �������� ��������������"
+
+msgid "Template icon must be a path to the image"
+msgstr "������������ �������������� ������������ �������� ���������� �� ������������"
+
+msgid "Template distribution must be a string"
+msgstr "�������������� �������������� ������������ �������� ��������������"
+
+msgid "Template distribution version must be a string"
+msgstr "������������ ���������������� �������������� ������������ �������� ��������������"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "���������� ���������������������� ������������ �������� ���������� ������������"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "���������� ������������ (����) ������������ �������� ���������� ������������ ������������ 512"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "CDROM �������������� ������������ �������� ������������������ ������ ������������������ ������������ ISO"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "������ �������������� ������������ ������������������������ URI �������� ������������ %(value)s"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "�������������� ���������� ISO �� ���������������� CDROM ������ ���������������� ��������������"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "������ �������� ������ �������������� ������������ �������� �������������� �� ������������."
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "���� �������������� �������������� ������������ ����-���� ������������ %(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "���� �������������� �������������� ������������ ����-���� ������������ %(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr "CDROM �������������� ������������ �������� ������������������ ������ ������������������ ������������ ISO"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "������ ������������ %(name)s ������ ��������������������"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "������ ������������ %(name)s ���� ��������������������"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "�������������� %(item)s ������ ���������������� �������� ������������ %(name)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "���� �������������� �������������� ���������������� ������ ������������ %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "���� �������������� �������������� ������������ ���������� ������������. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� ������ ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr ""
+"���� �������������� ���������������� ���������� ���������� �� �������� ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "���� �������������� ������������������������ ������ ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "���� �������������� ���������������������������� ������ ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� ������ ������������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr ""
+"���� �������������� �������������� ������ NFS: �������������������������������� �������� %(path)s ������ �������� "
+"������������������������ ���� ���������� ������������������������"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr ""
+"���� �������������� �������������� ������ NFS: ���� �������������� ������������������������ �������������������������������� �������� "
+"%(path)s"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "�������������������������������� ������ �������� ������������: %(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "�������� �� �������� ������������ ������������ �������� ��������������"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "�������� �������� ������������ ������������ �������� IP-�������������� ������ ������������ ����������"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "���������������� ������������������ �������� ������������ ������������ �������� ��������������"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "�������������� IQN �������� iSCSI ������������ �������� ��������������"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr "�������� �������������������� �������������� ������������ ������������ �������� ���������� ������������ ���� 1 ���� 65535"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr "�������������� ������ �� ������ ������ ���������������� �������� ������������"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr ""
+"%(disk)s ���� ���������������� �������������������� ������������/����������������. ���� �������������� ���������������� ������ �� "
+"������ %(pool)s."
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr "���������� �������������������� ���������� ������������������ ������������ ������ ���������������������� �������� ������������."
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "������ ���������������� ���������� SCSI ������������ �������� ��������������."
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "kimchi_isos �������� ������������ ���������������������������� ������ ���������������������� ��������������������������"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"���� �������������� ������������������������ ������ ������������ NFS %(name)s. ������������ NFS %(server)s "
+"��������������������."
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr ""
+"���� �������������� ���������������������������� ������ ������������ NFS %(name)s. ������������ NFS %(server)s "
+"��������������������."
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr ""
+"���� �������������� ���������������������������� ������ %(name)s: ������ ������������ �� �������������������� ������������������"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr "���� �������������� �������������� ������ %(name)s: ������ ������������ �� �������������������� ������������������"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr ""
+"������������ ���������� �� ������������ %(name)s ������ ��������������������. ���������������� ������������ ������ ������ "
+"���������������� ���������������������� ��������."
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr ""
+"���� �������������� ���������������� �������� ������������ �� ���������������������� ������������������ ������������������������ ����-���� "
+"������������ %(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "������ %(name)s ������ ��������������������"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr "������ %(name)s ���� �������������������� �� �������� ������������ %(pool)s"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "�������������� %(item)s ������ ���������������� �������� %(volume)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr "���� �������������� �������������� ������������ ����������: ������ ������������ %(pool)s ���� ��������������"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr ""
+"���� �������������� �������������� ������ %(name)s �� �������� ������������ %(pool)s. ����������������: %(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr ""
+"���� �������������� �������������� ������������ ���������� �� �������� ������������ %(pool)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� �������� %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� ������ %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr "���� �������������� ���������������� ������������ �������� %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr "������ ������������ %(type)s ���� ������������������������ ���������������� �� ���������������� ����������"
+
+msgid "Storage volume name must be a string"
+msgstr "������ �������� ������������ �������� ��������������"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "������������������ �������� ������������ �������� ���������� ������������"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "�������� ������������������ ������"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr ""
+"���� �������������� ���������������� �������� ������������ �� ���������������������� �� ���������� ����-���� ������������ %(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "������������������ %(name)s ���� ��������������������"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "�������� %(name)s ������ ��������������������"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "�������� %(name)s ���� ��������������������"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr "�������������� %(subnet)s, ������������������ ������ �������� %(network)s, ����������������������."
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr ""
+"�������������� �������������� ������������������ ������ ���������������� �������� %(name)s �� ���������������� ���������� ��������"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "���� �������������� �������������� ���������������� �������� %(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr "������������������ %(iface)s, ������������������ ������ �������� %(network)s, ������ ������������������������"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr ""
+"������������������ ������������ �������� �������������� ������������, ���������������������� ���������� ������ ������������������ "
+"����������������������."
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� �������� %(name)s. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "���� ������������ ������������������ IP-���������� ������ �������� %(name)s"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "���������������������������� �������� ����������: isolated, NAT �� bridge"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr ""
+"�������������� �������� ������������ �������� ��������������, �������������������� IP-����������, �������������� ������ ���������� ��������"
+
+msgid "Network interface must be a string"
+msgstr "�������������� ������������������ ������������ �������� ��������������"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "�������������� ���� VLAN ������������ �������� ���������� ������������ ���� 1 ���� 4094"
+
+msgid "Specify name and type to create a Network"
+msgstr "�������������� ������ �� ������ ������ ���������������� ��������"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr ""
+"�������������������� ���������� %(name)s ���� ���������� �������� �������������������������� ���������������������� VLAN."
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "���� �������������� ������������������������ ������������������ %(iface)s: %(err)s."
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr ""
+"���� ������������ ������������������������ ������������������ %(iface)s. ������������������ ������������������ �������������������� "
+"���������� ����������. "
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "�������������������� ���������� %(name)s ���� ��������������������"
+
+msgid "Debug report tool not found in system"
+msgstr "�������������������� ���������������������� ������������ ���� ������������ �� ��������������"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "���� �������������� �������������� �������������������� ���������� %(name)s. ����������������: %(err)s."
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "���� �������������� �������������� �������������������� ���������� %(name)s. ����������������: %(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr ""
+"������������ ���������� �� ������������ %(name)s ������ ��������������������. ���������������� ������������ ������ ������ "
+"���������������� ���������������������� ��������."
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "������������ ������������ %(server)s ���� �������������������������� Kimchi"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "�������������� ���� %(name)s ���� ��������������������"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "������������ %(name)s ���� �������������������� ���� ����������"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr ""
+"���� �������������� ������������������ ������������ �������������� ����������: ���������������������� ���������������������� ������������"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr "���� �������������� �������������������������� �������������� ����������: ���������������������� ���������������������� ������������"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "�������������������� %(name)s �������� ���� ��������������"
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "������ ��������������, �������������������� ������ ��������������������"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "���������� %(name)s ���� �������������� ������ ��������������������."
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr "������������ ������������������ ��������������, �������������������� ������ ��������������������. ����������������: %(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "������ ������������������������ ���������������������������� �������������� ������ �������� ��������������."
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "������������������������ URI %(uri)s"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "������������������������ ������ ������������. ���������������������������� ��������: cdrom"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr "������������ ���������������� �������������������� ����������������: %(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "������������ �������������������� �������������������� ����������������: %(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "������������ ���������������� �������������������� ����������������: %(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr "�������������� ������ �� �������� ������ �������������������� ������������ ���������� ���������������������� ������������"
+
+msgid "Specify path to update virtual machine disk"
+msgstr "�������������� �������� ������ �������������������� ���������� ���������������������� ������������"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr "�������������� ������ �� �������� ������ �������������������� ������������ ���������� ���������������������� ������������"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr ""
+"���� ������������������ YUM ������������ �������� ��������������, ������������������ ������������ ���� ������������ ����������."
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "URL ������������������ ������������ �������� http://, ftp:// ������ file:// ."
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr ""
+"������������������������ ������������������ ������������������������ ���������� �������������� ����������������, ������������������������ "
+"���������� ������������������."
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "�������������� ������ ������������������ DEB ������������ �������� ��������������"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "�������������������� ������ ������������������ DEB ������������ �������� ���������������������� �� ��������������"
+
+msgid "Components to DEB repository must be a string"
+msgstr "�������������������� ������ ������������������ DEB ������������ �������� ��������������"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "������ ������������������ YUM ������������ �������� ��������������."
+
+msgid "GPG check must be a boolean value."
+msgstr "���������������� GPG ������������ �������� ������������������ ������������������."
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr ""
+"�������� GPG ������������ �������� URL, ���������������������� ���� �������������������� �������� �� ������������������������ "
+"ASCII."
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "���� �������������� ���������������� ������������������ %(repo_id)s."
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "������������������ %(repo_id)s ���� ��������������������."
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "���� ������������������ �������������������� �������������������� �������������������� ������ ��������������."
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "������������������ %(repo_id)s ������ ����������������."
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "������������������ %(repo_id)s ������ ������������������."
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "���� �������������� �������������� ������������������ %(repo_id)s."
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr "���� �������������� ���������������� �� �������� ������������������������ ������������������ %(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr "�������������� �������������� ������������������ ������ ���������������� ������������������ DEB."
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "���� �������������� ���������������� ������������������ %(repo_id)s."
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "���� �������������� ������������������ ������������������ %(repo_id)s."
+
+msgid "YUM Repository ID already exists"
+msgstr "���� ������������������ YUM ������ ��������������������"
+
+msgid "YUM Repository name must be a string"
+msgstr "������ ������������������ YUM ������������ �������� ��������������"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "���� �������������� �������������� ������������ ����������������. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "���� �������������� ���������������� �������������������� �� ������������������. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "���� �������������� ���������������� ������������������. ����������������: %(err)s"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "���� �������������� �������������� ������������������. ����������������: %(err)s"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "������ ������������"
+
+msgid "REASON"
+msgstr "��������������"
+
+msgid "STACK"
+msgstr "��������"
+
+msgid "Go to Homepage"
+msgstr "�������������� ���� �������������� ����������������"
+
+msgid "Create a New Virtual Machine"
+msgstr "�������������� ���������� ���������������������� ������������"
+
+msgid "Virtual Machine Name"
+msgstr "������ ���������������������� ������������"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr ""
+"������ ������ �������������������������� ���������������������� ������������. �������� ���� ��������������, ������ ���������� �������������� "
+"�� ���������������������� ���� �������������������������� ��������������."
+
+msgid "Template"
+msgstr "������������"
+
+msgid "Please create a template first."
+msgstr "��������������������, ���������������� ������������ �� ������������ ��������������."
+
+msgid "Create a Template"
+msgstr "�������������� ������������"
+
+msgid "Please choose a template."
+msgstr "��������������������, ���������������� ������������."
+
+msgid "OS"
+msgstr "����"
+
+msgid "OS Version"
+msgstr "������������ ����"
+
+msgid "CPUS"
+msgstr "��������������������"
+
+msgid "Memory"
+msgstr "������������"
+
+msgid "Create"
+msgstr "��������������"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "������������"
+
+msgid "Edit Guest"
+msgstr "���������������� ���������������� ��������������"
+
+msgid "General"
+msgstr "����������"
+
+msgid "Storage"
+msgstr "������������������"
+
+msgid "Interface"
+msgstr "������������������"
+
+msgid "Permission"
+msgstr "������������"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "������"
+
+msgid "CPUs"
+msgstr "��������������������"
+
+msgid "Memory (MB)"
+msgstr "������������ (����)"
+
+msgid "Icon"
+msgstr "������������"
+
+msgid "Device"
+msgstr "������ ��������������������"
+
+msgid "Path"
+msgstr "�������� NFS"
+
+msgid "Network"
+msgstr "��������"
+
+msgid "Type"
+msgstr "������"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "������"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "������������"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "������������������"
+
+msgid "Replace"
+msgstr "����������������"
+
+msgid "Detach"
+msgstr "������������������"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "������������������"
+
+msgid "Reset"
+msgstr "����������������"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr "������������������"
+
+msgid "Actions"
+msgstr "����������������"
+
+msgid "Connect"
+msgstr "��������������������"
+
+msgid "Clone"
+msgstr "����������������������"
+
+msgid "Edit"
+msgstr "��������������������������"
+
+msgid "Shut Down"
+msgstr "������������������ ������������"
+
+msgid "Delete"
+msgstr "��������������"
+
+msgid "CPU"
+msgstr "������������������"
+
+msgid "Disk I/O"
+msgstr "���������������� ��������-����������"
+
+msgid "Network I/O"
+msgstr "�������������� ��������-����������"
+
+msgid "Livetile"
+msgstr "Livetile"
+
+msgid "No guests found."
+msgstr "���� �������������� ���������������� ��������������."
+
+msgid "Add a Storage Device to VM"
+msgstr "���������������� �������������������� ���������������� �� VM"
+
+msgid "Device Type"
+msgstr "������ ��������������������"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "������ ��������������������. �� ������������ ������������ ���������������������������� ������������ \"cdrom\"."
+
+msgid "Storage Pool"
+msgstr "������ ������������"
+
+msgid "Storage pool which volume located in"
+msgstr "�������� �� �������� ������������ ������������ �������� ��������������"
+
+msgid "Storage Volume"
+msgstr "������ �������� ������������"
+
+msgid "Storage volume to be attached"
+msgstr "������ �������� ������������ �������� ��������������"
+
+msgid "File Path"
+msgstr "�������� �� ����������"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "�������� �� ���������� ISO ������ CDROM ���� ��������������."
+
+msgid "Attach"
+msgstr "��������������������"
+
+msgid "Shut down"
+msgstr "����������������"
+
+msgid "Restart"
+msgstr "��������������������"
+
+msgid "Basic Information"
+msgstr "�������������� ��������������������"
+
+msgid "OS Distro"
+msgstr "�������������� ����"
+
+msgid "OS Code Name"
+msgstr "�������������� ������ ����"
+
+msgid "Processor"
+msgstr "������������������"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "������������������ ��������������������"
+
+msgid "Software Updates"
+msgstr "�������������������� ������������������������ ����������������������"
+
+msgid "Update Progress"
+msgstr "������ ��������������������"
+
+msgid "Repositories"
+msgstr "������������������"
+
+msgid "Debug Reports"
+msgstr "�������������������� ������������"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr "�������������� ���������������� ������ ������������������������ ������ ������������. �������������� ������ ������."
+
+msgid "This field is required."
+msgstr "������ ������������������������ ��������."
+
+msgid "Log in"
+msgstr "����������"
+
+msgid "Logging in..."
+msgstr "��������..."
+
+msgid "Host"
+msgstr "��������"
+
+msgid "Guests"
+msgstr "���������������� ��������������"
+
+msgid "Templates"
+msgstr "��������������"
+
+msgid "Failed to get application configuration"
+msgstr "���� �������������� ���������������� ������������������������ ��������������������"
+
+msgid "This is not a valid Linux path"
+msgstr "�������� ������������������������ �������� �� Linux"
+
+msgid "This is not a valid URL."
+msgstr "������ ������������������������ URL."
+
+msgid "No such data available."
+msgstr "������ ���������� ������������."
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"������ ���������� �� ���������������� ����������. ������������������, ������ �������������� ���������� ���������������� �� ���������������� "
+"������ ����������������������. ���������� ���� ������������ HTTP: %1. "
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "�������������������������� ����������������"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Confirm"
+msgstr "����������������������"
+
+msgid "Warning"
+msgstr "����������������������������"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "����������������������..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "������������������"
+
+msgid "Detailed message:"
+msgstr "������������������ ������������������:"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "�������� �������� ���� ���������������� �������������������� �������������� ISO."
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "������ ������������ ���������� ��������������. ��������������������?"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "������������ ���������� ������������������������ ������������. ��������������������?"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr ""
+"�������������������� ������������������ ������������ ��������������, ������������������ �� ������ ���������������� ���������������������� "
+"������������!"
+
+msgid "Max:"
+msgstr "��������.:"
+
+msgid "Utilization"
+msgstr "��������������������������"
+
+msgid "Available"
+msgstr "����������������"
+
+msgid "Read Rate"
+msgstr "���������������� ������������"
+
+msgid "Write Rate"
+msgstr "���������������� ������������"
+
+msgid "Received"
+msgstr "����������������"
+
+msgid "Sent"
+msgstr "��������������������"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr ""
+"�������������������� ������������ �� �������������������� ���������� ���������������� �� ������������ �������������������������� ������������. "
+"�������������������� �������������������� ������������/��������������������?"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr "������������������ ���������� �������������� ������ ���������������������� ����������������������������. ��������������������?"
+
+msgid "ID"
+msgstr "����"
+
+msgid "Base URL"
+msgstr "�������������� URL"
+
+msgid "Is Mirror"
+msgstr "�������������������� ����������"
+
+msgid "URL Args"
+msgstr "������������������ URL"
+
+msgid "Enabled"
+msgstr "����������������"
+
+msgid "GPG Check"
+msgstr "���������������� GPG"
+
+msgid "GPG Key"
+msgstr "�������� GPG"
+
+msgid "Add"
+msgstr "����������������"
+
+msgid "Remove"
+msgstr "��������������"
+
+msgid "Enable"
+msgstr "����������������"
+
+msgid "Disable"
+msgstr "������������������"
+
+msgid "Package Name"
+msgstr "������ ������������"
+
+msgid "Version"
+msgstr "������������"
+
+msgid "Architecture"
+msgstr "����������������������"
+
+msgid "Repository"
+msgstr "������������������"
+
+msgid "Update All"
+msgstr "���������������� ������"
+
+msgid "Updating..."
+msgstr "��������������������..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "���� �������������� ���������������� ������������."
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr ""
+"�������������������� ���������� ���������� ������������ ������ ���������������������� ����������������������������. ��������������������?"
+
+msgid "Generated Time"
+msgstr "���������� ����������������"
+
+msgid "Generate"
+msgstr "��������������"
+
+msgid "Generating..."
+msgstr "����������������..."
+
+msgid "Rename"
+msgstr "��������������������������"
+
+msgid "Download"
+msgstr "������������������"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr "������ ������������ ������������ ������������������ ������������ ����������, ���������� �� ������������ ('-')."
+
+msgid "Pending..."
+msgstr "����������������������..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr ""
+"���������� �������������� ���������������������� ������������ ������������ ���� ������������ ������������������������ ��������������. ������ "
+"���������������������� ����������������. ��������������������?"
+
+msgid "Power off Confirmation"
+msgstr "�������������������������� ����������������"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "�������������������������� ����������������"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "�������������������������� ����������������"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "������������ ���������� ������������������������ ������������. ��������������������?"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"�������� CDROM ���������� ����������������. ������ ���������� ���������� ���������� ��������������������. ������������������?"
+
+msgid "Attaching..."
+msgstr "����������������������..."
+
+msgid "Replacing..."
+msgstr "������������..."
+
+msgid "Successfully attached!"
+msgstr "�������������� ������������������!"
+
+msgid "Successfully replaced!"
+msgstr "�������������� ��������������!"
+
+msgid "Successfully detached!"
+msgstr "�������������� ����������������!"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "���� VLAN ������������ �������� ���� 1 ���� 4094."
+
+msgid "unavailable"
+msgstr "��������������������"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr ""
+"������ ���������������� �������������� �������������� �������������������� �� �������� ���������������������� ����������, �������������� "
+"�������������� ���� �������� ��������."
+
+msgid "Create a network"
+msgstr "�������������� ��������"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"�������� ������ ������������ ���� ��������������������. ������������ ����������������������, ������ ���������������� ������������������������ "
+"������ ������������. ��������������������?"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "������ ������������ ���������� ������������������������ ������������. ��������������������?"
+
+msgid "This storage pool is empty."
+msgstr "�������� ������ ������������ ������������."
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr ""
+"�������� ���������� ����������������������������, �� ������ ������������ ���� ������ ���������� ����������������. ���� "
+"�������������������������� ������������ ��������������������? "
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI Fibre Channel"
+
+msgid "No SCSI adapters found."
+msgstr "���� �������������� ���������������� SCSI."
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "���� �������������� ������ �������� ������������."
+
+msgid "The storage pool path can not be blank."
+msgstr "���� ������������ �������� �� �������� ������������."
+
+msgid "NFS server mount path can not be blank."
+msgstr "���� ������������ �������� ������������������������ �������������� NFS."
+
+msgid "Invalid NFS mount path."
+msgstr "������������������������ �������� ������������������������ NFS."
+
+msgid "No logical device selected."
+msgstr "���� �������������� �������������������� ��������������������."
+
+msgid "The iSCSI target can not be blank."
+msgstr "���� ������������ �������������� ������������ iSCSI."
+
+msgid "Server name can not be blank."
+msgstr "���� �������������� ������ ��������������."
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "���������� ������������������ ����������������..."
+
+msgid "No available partitions found."
+msgstr "���� �������������� ������������������ ��������������."
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"�������� ������ ������������ ���� ��������������������. ������������ ����������������������, ������ ���������������� ������������������������ "
+"������ ������������. ��������������������?"
+
+msgid "Unable to retrieve partitions information."
+msgstr "���� �������������� ���������������� �������������������� �� ������������������. ����������������: %(err)s"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "���� �������������� ������ �������� ������������."
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "������ ��������"
+
+msgid "State"
+msgstr "������������������"
+
+msgid "Network Type"
+msgstr "������ ��������"
+
+msgid "Address Space"
+msgstr "���������������� ������������������������"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "������������������������ ������ �������� ������������. �� ���������� ���� ������������ �������� ���������������� '/'."
+
+msgid "Isolated: no external network connection"
+msgstr "�������������������������� (������ �������������������� �������������� ��������������������)"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT (������������ ������������������ �������������������� �������������� ��������������������)"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr "���������� �������� (������������ ���������������������� ���������������������� ���������� �� �������������������� ��������)"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "�������������� ������������������������:"
+
+msgid "Enable VLAN"
+msgstr "���������������� VLAN:"
+
+msgid "VLAN ID"
+msgstr ""
+
+msgid "Stop"
+msgstr "������������������"
+
+msgid "Generate a New Debug Report"
+msgstr "�������������� ���������� �������������������� ����������"
+
+msgid "Report Name"
+msgstr "������ ������������"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"������ ������ �������������������������� ������������. �������� ���� ��������������, ������ ���������� ������������������������ ���� "
+"������������ ���������������� ��������������. ������ ���������� ������������������: ����������, ���������� �� ������������ (\"-\")."
+
+msgid "Rename a Debug Report"
+msgstr "�������������� ���������� �������������������� ����������"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"������ ������ �������������������������� ������������. �������� ���� ��������������, ������ ���������� ������������������������ ���� "
+"������������ ���������������� ��������������. ������ ���������� ������������������: ����������, ���������� �� ������������ (\"-\")."
+
+msgid "Submit"
+msgstr "����������������������"
+
+msgid "Add a Repository"
+msgstr "���������������� ������������������"
+
+msgid "Identifier"
+msgstr "��������������������������"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "������������������ ���������� - �������������������� �������������������������� ������������������."
+
+msgid "Textual name for the repository."
+msgstr "������������������ ������ ������������������."
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "������������������������ ��������"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "URL ������������������. ���������������������������� ������������������: http, ftp, file."
+
+msgid "Repository is a mirror"
+msgstr "������������������ ���������������� �������������������� ������������."
+
+msgid "Distribution"
+msgstr "��������������"
+
+msgid "Distribution of the DEB repository."
+msgstr "�������������� ������������������ DEB."
+
+msgid "Components"
+msgstr "��������������������"
+
+msgid "List of components in DEB repository."
+msgstr "������������ ���������������������� �� ������������������ DEB."
+
+msgid "Edit Repository"
+msgstr "���������������� ������������������"
+
+msgid "Mirror List URL"
+msgstr "URL ������������ �������������������� ����������"
+
+msgid "Yes"
+msgstr "����"
+
+msgid "No"
+msgstr "������"
+
+msgid "Capacity"
+msgstr "��������������"
+
+msgid "Allocated"
+msgstr "����������������"
+
+msgid "Location"
+msgstr "������������������������"
+
+msgid "Device path"
+msgstr "�������� �� ��������������������"
+
+msgid "active"
+msgstr "��������������"
+
+msgid "inactive"
+msgstr "������������������"
+
+msgid "Deactivate"
+msgstr "������������������"
+
+msgid "Activate"
+msgstr "������������������������"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "��������������"
+
+msgid "Format"
+msgstr "������������:"
+
+msgid "Allocation"
+msgstr "������������������ ����������������:"
+
+msgid "Define a New Storage Pool"
+msgstr "�������������� ������ ������������"
+
+msgid "Storage Pool Name"
+msgstr "������ �������� ������������"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr "������ ������ �������������������������� ���������� ������������. ���� ���������� �������� ������������."
+
+msgid "Storage Pool Type"
+msgstr "������ �������� ������������"
+
+msgid "Storage Path"
+msgstr "�������� �� ����������"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr "�������� �� �������� ������������. ������������ ������ ������������ ������������ ���������� �������������������� ��������."
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr "Kimchi �������������������� �������������� ��������������, �������� ���� ���� �������������������� �� ��������������."
+
+msgid "NFS Server IP"
+msgstr "IP-���������� �������������� NFS"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr ""
+"IP-���������� ������ ������ ���������� �������������� NFS. ������ ���������� ������������ ������ �������������� �� "
+"��������������������."
+
+msgid "NFS Path"
+msgstr "�������� NFS"
+
+msgid "The NFS exported path on NFS server."
+msgstr "�������������������������������� �������� NFS ���� �������������� NFS."
+
+msgid "iSCSI Server"
+msgstr "������������ iSCSI"
+
+msgid "Server"
+msgstr "������������"
+
+msgid "Port"
+msgstr "��������"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "IP-���������� ������ ������ ���������� �������������� iSCSI. ���� ���������� �������� ������������."
+
+msgid "Target"
+msgstr "�������������� ������������"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "�������������� ������������ iSCSI ���� �������������� iSCSI"
+
+msgid "Add iSCSI Authentication"
+msgstr "���������������� �������������������������� iSCSI"
+
+msgid "iSCSI Authentication"
+msgstr "�������������������������� iSCSI"
+
+msgid "User Name"
+msgstr "������ ������������������������"
+
+msgid "Password"
+msgstr "������������"
+
+msgid "SCSI Adapter"
+msgstr "�������������� SCSI"
+
+msgid "Please, wait..."
+msgstr "������������������..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "���������������� ������������"
+
+msgid "Where is the source media for this template? "
+msgstr "������ ������������������ ���������������� ���������������� ������ ���������� ��������������?"
+
+msgid "Local ISO Image"
+msgstr "������������������ ���������� ISO"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "������������������ ���������� ISO"
+
+msgid "Search ISOs"
+msgstr "���������� �������������� ISO"
+
+msgid "The following ISOs are available:"
+msgstr "������������������ ������������ ISO:"
+
+msgid "OS: "
+msgstr "����: "
+
+msgid "Version: "
+msgstr "������������: "
+
+msgid "Size: "
+msgstr "������������: "
+
+msgid "Search more ISOs"
+msgstr "���������� ���������������������������� �������������� ISO"
+
+msgid "Create Templates from Selected ISO"
+msgstr "�������������� �������������� ���� ������������������ �������������� ISO"
+
+msgid "I want to use a specific ISO file"
+msgstr "������������������������ �������������������� �������� ISO"
+
+msgid "Loading default remote ISOs ..."
+msgstr "���������������� ������������������ ISO ���� ������������������..."
+
+msgid "Arch: "
+msgstr "����������������������: "
+
+msgid "I want to use a custom URL"
+msgstr "������������������������ ������������ URL"
+
+msgid "Edit Template"
+msgstr "���������������� ������������"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "��������������"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "�������������������� ����������������������"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "���� �������������� ��������������."
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "���������������� ������������������ ������ %(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s ���� ������������������ ���������� ��������������������"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "���������������� ������������������ ������ %(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "������������ �������������� �������������� JSON"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "������ �������������� API ������������������������ ������������ JSON"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "������������������ ������������ �� �������������� ������������ ���� ��������������������������������."
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "���� �������������� ������������������ ������������ ����-���� ������������ %(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr ""
+#~ "�������� �������������������������� ������������������������ %(username)s. [������ ������������: %(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "������ �������� �������������� �� Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "�������������� %(item)s ������ ���������� �� Kimchi"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "���� ������������ %(item)s �� ������������������ ������������"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr "���������� ��������-������ �������������������� �������������� %(cmd)s (%(seconds)s ��)"
+
+#~ msgid "Help"
+#~ msgstr "������������"
+
+#~ msgid "About"
+#~ msgstr "�� ������������������"
+
+#~ msgid "Log out"
+#~ msgstr "����������"
+
+#~ msgid "Version:"
+#~ msgstr "������������:"
diff --git a/plugins/gingerbase/po/zh_CN.po b/plugins/gingerbase/po/zh_CN.po
new file mode 100644
index 0000000..f1bebff
--- /dev/null
+++ b/plugins/gingerbase/po/zh_CN.po
@@ -0,0 +1,2186 @@
+# i18n portable object for gingerbase.
+# Copyright (C) IBM, Corp. 2013-2014
+# ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>, 2013-04-18.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-06-27 10:48+0000\n"
+"Last-Translator: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
+"Language-Team: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Poedit-Country: CHINA\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr "������������ %(value)s"
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr "������'%(task)s������%(seconds)s������"
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr "���������������LDAP���������������%(user_id)s������"
+
+msgid "Unknown \"_cap\" specified"
+msgstr "������������\"_cap\""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr "\"_passthrough\"���������\"true\"������\"false\""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr "\"_passthrough_affected_by\"���������������������������������"
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "������������������������������������%(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr "��������������� %(device)s ������������������"
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "���������������������������%(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr "������������������������������%(filename)s������������������������JSON������������������"
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr "������������ %(portal)s ������iSCSI���������������������������%(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "������������iSCSI������%(host)s������������%(target)s���"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr "������������ISO������ %(filename)s"
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "ISO������%(filename)s���������������"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr "ISO������%(filename)s���������������El Torito���������������"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "���ISO������%(filename)s������������������El Torito������������������"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "ISO������%(filename)s���El Torito������������������������"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr "������������ISO������%(filename)s���������������"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr "ISO������%(filename)s���������������������������"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"hypervisor������������ISO������%(filename)s���������������������ISO������/var/lib/libvirt���"
+"���������������'%(user)s'���������������������������������'%(user)s'���������������ISO������������������"
+"������������������������������������������ 'chmod -R o+x '���������������������������%(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr "������������������������������������������������"
+
+msgid "No OS information found in given image."
+msgstr "���������������������������������������������������������"
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr "������������������������ %(filename)s"
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr "���������������������������������������%(filename)s���������������������"
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "���������%(name)s������������"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "���������%(name)s���������"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+"��������������������� %(name)s ������������������ %(new_name)s ������������������������������������"
+"������"
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr "������������������������������������%(name)s���������"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "���������������������������ISO���������"
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr "��������� %(name)s ���������������"
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr "���������%(name)s���������������������������"
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr "������������������������URI %(value)s"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr "���������������������������URI %(value)s"
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr "������������������������������Spice������VNC"
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr "������������������������������������������IPv4���IPv6���������"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "������������������������������������"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s. ���������%(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+msgid "User name list must be an array"
+msgstr "������������������������������������"
+
+msgid "User name must be a string"
+msgstr "���������������������������������"
+
+msgid "Group name list must be an array"
+msgstr "������������������������������������"
+
+msgid "Group name must be a string"
+msgstr "���������������������������������������"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "������'%(users)s'���������"
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "���������'%(groups)s'���������"
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s������������������������%(err)s"
+
+msgid "The guest console password must be a string."
+msgstr "���������������������������������������������������"
+
+msgid "The life time for the guest console password must be a number."
+msgstr "������������������������������������������������������������"
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr "���������'%(name)s'���������������������������������"
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr "���������������'%(name)s'���������������������������������"
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr "���������������������������'%(name)s'������������������%(err)s"
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr "���������%(vmid)s���������������������������������%(dev_name)s���"
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr "������������%(dev_name)s������������������������������������"
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+"���������IOMMU groups���������PCI pass through������IOMMU group������������������������������"
+"BIOS������������Intel VT-d ������ AMD IOMMU ���������������������������������������IOMMU���������"
+"Intel CPU������������/boot/grub2/grub.conf���������������������intel_iommu=on���������AMD "
+"CPU������������iommu=pt iommu=1���"
+
+msgid "\"name\" should be a device name string"
+msgstr "\"name\"���������������������������������������"
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "��������� %(name)s ��������������� %(iface)s"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr "������������%(name)s���������������%(network)s���������"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "���������������������������������������"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr "������������������������������������������������"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr "���������������������������������������������"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr "���������������������������������������������"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "������ %(name)s ������������"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr "��������� %(template)s ��������������� '%(network)s' ���������"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr "��������� %(template)s ������������������ '%(pool)s' ���������"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr "��������� %(template)s ������������������ '%(pool)s' ������������"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "���CDROM��������������� '%(param)s' ������"
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr "��������� %(template)s ��������������� '%(network)s' ������������"
+
+msgid "Template name must be a string"
+msgstr "���������������������������������������"
+
+msgid "Template icon must be a path to the image"
+msgstr "���������������������������������������������������"
+
+msgid "Template distribution must be a string"
+msgstr "������������������������������������������"
+
+msgid "Template distribution version must be a string"
+msgstr "���������������������������������������������������"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "CPU���������������������������0���������"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "���������������MB���������������������������������512���������"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "���������CDROM������������������������������������ISO������"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "������������������������������������URI %(value)s"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "������������ISO���������������������������CDROM������������������"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "������������������������������������������������"
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr "���������������������iSCSI������SCSI������������������������������������"
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr "���%(volume)s���������������%(pool)s���"
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "������������������������������%(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "���������������%(err)s���������������������"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr "������������������������1GB���"
+
+msgid "Template base image must be a valid local image file"
+msgstr "������������������������������������������������������������"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr "������������������������%(path)s������"
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr "CPU������������VCPUs������������sockets, cores ������threads���"
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr "CPU���������������������������������������������������������"
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+"���������������������������������������������������bochs, cloop, cow, dmg, qcow, qcow2, qed, "
+"raw, vmdk, vpc���"
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "���������%(name)s������������"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "���������%(name)s���������"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "���������������%(name)s������%(item)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "������������������������������ %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "������������������������ ��������� %(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s������������ %(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr "���������������������%(name)s��������������������������� %(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������ %(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������ %(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������ %(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr "������������NFS������������������������������%(path)s������������������������"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr "������������NFS������������������������������%(path)s������"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "������������������������������%(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr "���������������XML���%(pool)s���������������"
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr "������������������������dir���netfs���logical���iscsi���isci������kimchi-iso"
+
+msgid "Storage pool path must be a string"
+msgstr "���������������������������������"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "������������������������������IP���������������"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr "������������������������������������������������������"
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "������������������������������������������"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "iSCSI������������������IQN������������������"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr "���������������������������������������1���65535���������������"
+
+msgid "iSCSI target username must be a string"
+msgstr "iSCSI���������������������������������������"
+
+msgid "iSCSI target password must be a string"
+msgstr "iSCSI������������������������������������"
+
+msgid "Specify name and type to create a storage pool"
+msgstr "������������������������������������"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr "%(disk)s ���������������������/������������������������������������%(pool)s���"
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr "���������������������%(pool)s���������������������%(err)s"
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr "������������������������������������������������"
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "SCSI���������������������������������������"
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "���������kimchi_isos������������������"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr "������������NFS���������%(name)s���NFS���������%(server)s���������������"
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr "������������NFS���������%(name)s���NFS���������%(server)s���������������"
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr "���������������������%(name)s������������������������������������"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr "���������������������%(name)s������������������������������������"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr "������'%(name)s'������������������������������������������������������������������"
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr "������������������������������������������%(err)s���"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "���������%(name)s������������"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr "���������%(pool)s������������������%(name)s"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr "���������������������%(volume)s������������������%(pool)s ������������"
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "���������������%(volume)s������������%(item)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr "���������������������������������������%(pool)s������������"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr "������������������%(pool)s������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr "������������������%(pool)s������������������������������%(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr "���������������������%(name)s���������������������%(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr "������������%(type)s������������������������������"
+
+msgid "Storage volume name must be a string"
+msgstr "������������������������������������"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "���������������������������������"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+"������������������������������������������������bochs, cloop, cow, dmg, qcow, qcow2, qed, "
+"raw, vmdk, vpc���"
+
+msgid "Storage volume requires a volume name"
+msgstr "���������������������"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr "���������������������������������������%(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr "���������������%(param)s������������������������"
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr "������������%(param)s���������������"
+
+msgid "Storage volume capacity must be an integer number."
+msgstr "������������������������������������"
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr "���������URL���������http://���https://���ftp://���ftps://"
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr "������������������%(url)s������������������������������������"
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr "������������������'%(pool)s'���������������'%(name)s'���������������������%(err)s"
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "������%(name)s���������"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "������%(name)s������������"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "������%(name)s���������"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr "���������%(network)s���������������%(subnet)s������"
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr "������������������������������������������������������%(name)s"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "���������������������������%(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr "���������%(network)s���������������%(iface)s������������"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "���������������������������������������������bonding���������������������"
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "���������������'%(name)s'������������������������IP���������������"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "���������������������������������NAT���������"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr "���������������������������IP������������������������������������������������"
+
+msgid "Network interface must be a string"
+msgstr "������������������������������������"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "������VLAN������������1���4094���������������"
+
+msgid "Specify name and type to create a Network"
+msgstr "���������������������������������"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr "������������������%(name)s������VLAN���trunk���������"
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "������������������������ %(iface)s���%(err)s���"
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr "������������%(iface)s���������������������������������������������"
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr "������������%(name)s������������������%(err)s"
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "������������%(name)s���������"
+
+msgid "Debug report tool not found in system"
+msgstr "���������������������������������"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "������������������������%(name)s������������%(err)s"
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr "������������������������%(name)s���������������"
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "������������������������%(name)s������������%(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr "������������������������%(name)s������������%(err)s"
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+"������������������������������������������������������������������������������������('_')���������������('-')"
+"������������������"
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr "���������\"'%(name)s\"���������������������������������������������������������"
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "���������������%(server)s������Kimchi������"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "������������'%(name)s'���������"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "������������������������%(name)s"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr "������������������������������������������"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr "������������������������������������������"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "������������������������'%(name)s'"
+
+msgid "Conflicting flag filters specified."
+msgstr "flag filters���������"
+
+msgid "No packages marked for update"
+msgstr "������������������������������"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "���������%(name)s������������������������"
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr "���������������������������������������������������������%(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "������������������������������������������"
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "���������URI %(uri)s"
+
+msgid "Unable to choose a virtual machine name"
+msgstr "���������������������������������"
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "������������������������������������������'cdrom'���'disk'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr "������'%(value)s'���������������������������/������������"
+
+msgid "Only CDROM path can be update."
+msgstr "���������CDROM���������������"
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr "������������%(dev_name)s������������%(vm_name)s������������"
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr "������������������������������������%(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "������������������������������%(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "������������������������������%(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr "���������IDE������������������"
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr "���������������������������������������������������������������������������/���������"
+
+msgid "Specify path to update virtual machine disk"
+msgstr "������������������������������������"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr "������������������%(type)s���������������������%(limit)s"
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr "���������������������������/������������������������������������������%(error)s"
+
+msgid "Volume already in use by other virtual machine."
+msgstr "���������������������������������������"
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr "���������������������������������������������������������/���������������������"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr "���������%(format)s���������������������������%(type)s"
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "YUM������������ID������������������������������������������"
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "������������URL���������http://��� ftp:// ��� file://"
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr "������������������������������������������������������������������"
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "DEB���������������������������������������������"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "DEB������������������������������������������"
+
+msgid "Components to DEB repository must be a string"
+msgstr "DEB���������������������������������������"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "YUM���������������������������������������"
+
+msgid "GPG check must be a boolean value."
+msgstr "GPG������������������������������"
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "GPG������������������������ASCII���������������.asc������������URL"
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "������������������������%(repo_id)s"
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "������������%(repo_id)s������������"
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "������������������������������������������"
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "������������%(repo_id)s���������������"
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "������������%(repo_id)s���������������"
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "������������������������%(repo_id)s"
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr "������������������������������������%(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr "���������������������������������������������DEB���������"
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "������������������������%(repo_id)s"
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "������������������������%(repo_id)s"
+
+msgid "YUM Repository ID already exists"
+msgstr "YUM������ID������������"
+
+msgid "YUM Repository name must be a string"
+msgstr "YUM������������������������������������"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "������������������������������������'%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "���������������������������������������������'%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "������������������������������������'%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "������������������������������������'%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr "���������������������������������: %(items)s"
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr "���������'%(vm)s'���������������������������������"
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr "������������������'%(vm)s'������������'%(name)s'������������%(err)s"
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr "������'%(name)s'������������������'%(vm)s'������"
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr "������������������'%(vm)s'������������'%(name)s'������������%(err)s"
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr "���������������������'%(vm)s'���������������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr "���������������������'%(vm)s'������'%(name)s'������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr "���������������������'%(vm)s'������������������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr "���������������������'%(vm)s'���������'%(name)s'������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+"������������������'%(vm)s'���������������������������������������'%(format)s'������������������������"
+"���'qcow2'���������"
+
+msgid "The number of vCPUs is too large for this system."
+msgstr "vCPUs������������������������������������"
+
+msgid "Invalid vCPU/topology combination."
+msgstr "���������vCPU/topology���������"
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr "������������������������������������������CPU���������"
+
+msgid "ERROR CODE"
+msgstr "���������"
+
+msgid "REASON"
+msgstr "������"
+
+msgid "STACK"
+msgstr "���������"
+
+msgid "Go to Homepage"
+msgstr "������������"
+
+msgid "Create a New Virtual Machine"
+msgstr "���������������������������"
+
+msgid "Virtual Machine Name"
+msgstr "���������������"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr "���������������������������������������������������������������������������������������������"
+
+msgid "Template"
+msgstr "������"
+
+msgid "Please create a template first."
+msgstr "������������������������"
+
+msgid "Create a Template"
+msgstr "������������������"
+
+msgid "Please choose a template."
+msgstr "������������������"
+
+msgid "OS"
+msgstr "������������"
+
+msgid "OS Version"
+msgstr "������������������"
+
+msgid "CPUS"
+msgstr "���������������"
+
+msgid "Memory"
+msgstr "������"
+
+msgid "Create"
+msgstr "������"
+
+msgid "Creating..."
+msgstr "������������..."
+
+msgid "Cancel"
+msgstr "������"
+
+msgid "Edit Guest"
+msgstr "���������������"
+
+msgid "General"
+msgstr "������"
+
+msgid "Storage"
+msgstr "������"
+
+msgid "Interface"
+msgstr "������������"
+
+msgid "Permission"
+msgstr "������"
+
+msgid "Host PCI Device"
+msgstr "������PCI������"
+
+msgid "Snapshot"
+msgstr "������"
+
+msgid "Name"
+msgstr "������"
+
+msgid "CPUs"
+msgstr "���������������"
+
+msgid "Memory (MB)"
+msgstr "������(MB)"
+
+msgid "Icon"
+msgstr "������"
+
+msgid "Device"
+msgstr "������������"
+
+msgid "Path"
+msgstr "������"
+
+msgid "Network"
+msgstr "������"
+
+msgid "Type"
+msgstr "������"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr "���������������������������������"
+
+msgid "Selected system users and groups"
+msgstr "���������������������������������"
+
+msgid "User"
+msgstr "������"
+
+msgid "All"
+msgstr "������"
+
+msgid "To Add"
+msgstr "���������"
+
+msgid "Added"
+msgstr "���������"
+
+msgid "filter"
+msgstr "���������"
+
+msgid "Product"
+msgstr "������"
+
+msgid "Vendor"
+msgstr "������"
+
+msgid "Created"
+msgstr "���������"
+
+msgid "Save"
+msgstr "������"
+
+msgid "Replace"
+msgstr "������"
+
+msgid "Detach"
+msgstr "������"
+
+msgid "revert"
+msgstr "������"
+
+msgid "Start"
+msgstr "������"
+
+msgid "Reset"
+msgstr "������"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr "������������"
+
+msgid "Actions"
+msgstr "������"
+
+msgid "Connect"
+msgstr "���������"
+
+msgid "Clone"
+msgstr "������������"
+
+msgid "Edit"
+msgstr "������"
+
+msgid "Shut Down"
+msgstr "������"
+
+msgid "Delete"
+msgstr "������"
+
+msgid "CPU"
+msgstr "���������"
+
+msgid "Disk I/O"
+msgstr "������I/O"
+
+msgid "Network I/O"
+msgstr "������I/O"
+
+msgid "Livetile"
+msgstr "������"
+
+msgid "No guests found."
+msgstr "���������������������"
+
+msgid "Add a Storage Device to VM"
+msgstr "������������������������������������"
+
+msgid "Device Type"
+msgstr "������������"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "������������������������������������������\"cdrom\"���\"disk\"��� "
+
+msgid "Storage Pool"
+msgstr "���������"
+
+msgid "Storage pool which volume located in"
+msgstr "���������������������������"
+
+msgid "Storage Volume"
+msgstr "���������"
+
+msgid "Storage volume to be attached"
+msgstr "���������������������"
+
+msgid "File Path"
+msgstr "������������"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "������������CDROM������������ISO������������"
+
+msgid "Attach"
+msgstr "������"
+
+msgid "Shut down"
+msgstr "������"
+
+msgid "Restart"
+msgstr "������"
+
+msgid "Basic Information"
+msgstr "������������"
+
+msgid "OS Distro"
+msgstr "���������������������"
+
+msgid "OS Code Name"
+msgstr "������������������"
+
+msgid "Processor"
+msgstr "���������"
+
+msgid "CPU(s)"
+msgstr "CPU(s)"
+
+msgid "System Statistics"
+msgstr "������������������"
+
+msgid "Software Updates"
+msgstr "������������"
+
+msgid "Update Progress"
+msgstr "������������"
+
+msgid "Repositories"
+msgstr "������������"
+
+msgid "Debug Reports"
+msgstr "������������������"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr "���������������������������������������������"
+
+msgid "This field is required."
+msgstr "������������������"
+
+msgid "Log in"
+msgstr "������"
+
+msgid "Logging in..."
+msgstr "���������..."
+
+msgid "Host"
+msgstr "������"
+
+msgid "Guests"
+msgstr "���������"
+
+msgid "Templates"
+msgstr "������"
+
+msgid "Failed to get application configuration"
+msgstr "������������������������"
+
+msgid "This is not a valid Linux path"
+msgstr "������������������������Linux������"
+
+msgid "This is not a valid URL."
+msgstr "������������������������URL"
+
+msgid "No such data available."
+msgstr "���������������������"
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"������������������������������������������������������������������������������������������HTTP���������������%1"
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "������������"
+
+msgid "OK"
+msgstr "������"
+
+msgid "Confirm"
+msgstr "������"
+
+msgid "Warning"
+msgstr "������"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "������������..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "������"
+
+msgid "Detailed message:"
+msgstr "���������������"
+
+msgid "No ISO found"
+msgstr "������������ISO������"
+
+msgid "This is not a valid ISO file."
+msgstr "������������������������ISO������"
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "���������������������������������������"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "������������������������������������������"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr "���������������������������������������������"
+
+msgid "Max:"
+msgstr "���������"
+
+msgid "Utilization"
+msgstr "���������"
+
+msgid "Available"
+msgstr "������������"
+
+msgid "Read Rate"
+msgstr "���������"
+
+msgid "Write Rate"
+msgstr "���������"
+
+msgid "Received"
+msgstr "������"
+
+msgid "Sent"
+msgstr "������"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr "���������������������������������������������������������������������������/���������"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr "���������������������������������������������������������������"
+
+msgid "ID"
+msgstr "���������"
+
+msgid "Base URL"
+msgstr "������URL"
+
+msgid "Is Mirror"
+msgstr "���������������"
+
+msgid "URL Args"
+msgstr "URL������"
+
+msgid "Enabled"
+msgstr "���������"
+
+msgid "GPG Check"
+msgstr "GPG������"
+
+msgid "GPG Key"
+msgstr "GPG���"
+
+msgid "Add"
+msgstr "������"
+
+msgid "Remove"
+msgstr "������"
+
+msgid "Enable"
+msgstr "������"
+
+msgid "Disable"
+msgstr "������"
+
+msgid "Package Name"
+msgstr "���������������"
+
+msgid "Version"
+msgstr "������"
+
+msgid "Architecture"
+msgstr "������������"
+
+msgid "Repository"
+msgstr "������������"
+
+msgid "Update All"
+msgstr "������������"
+
+msgid "Updating..."
+msgstr "������������..."
+
+msgid "Failed to retrieve packages update information."
+msgstr "������������������������������������"
+
+msgid "Failed to update package(s)."
+msgstr "���������������������"
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr "���������������������������������������������������������������������"
+
+msgid "Generated Time"
+msgstr "������������"
+
+msgid "Generate"
+msgstr "������"
+
+msgid "Generating..."
+msgstr "������������..."
+
+msgid "Rename"
+msgstr "���������"
+
+msgid "Download"
+msgstr "������"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr "������������������������������������������������������('_')������������('-')"
+
+msgid "Pending..."
+msgstr "������������..."
+
+msgid "Report name is the same as the original one."
+msgstr "������������������������������������"
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr "���������������������������������������������������������������������������������"
+
+msgid "Power off Confirmation"
+msgstr "������������������"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr "������������������������������������������������������������������������������������������������"
+
+msgid "Reset Confirmation"
+msgstr "������������"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr "������������������������������������������������������������������������������������������������������"
+
+msgid "Shut Down Confirmation"
+msgstr "������������"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "���������������������������������������������������������������������������������"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr "���������������������"
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr "������������������������������������������������������������������������������������"
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+"������������������������SCSI������iSCSI���������������������������������������������������������������������"
+"������������������������������������������������������������������������������������������������������"
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr "CDROM���������������������������������������������������������������"
+
+msgid "Attaching..."
+msgstr "������������"
+
+msgid "Replacing..."
+msgstr "������������..."
+
+msgid "Successfully attached!"
+msgstr "������������"
+
+msgid "Successfully replaced!"
+msgstr "������������"
+
+msgid "Successfully detached!"
+msgstr "������������"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr "���������������������������������������������������������������������������������������?"
+
+msgid "interface:"
+msgstr "���������"
+
+msgid "address:"
+msgstr "���������"
+
+msgid "link_type:"
+msgstr "���������������"
+
+msgid "block:"
+msgstr "������"
+
+msgid "drive_type:"
+msgstr "���������������"
+
+msgid "model:"
+msgstr "���������"
+
+msgid "Affected devices:"
+msgstr "���������������������"
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "VLAN ������������������1���4094������"
+
+msgid "unavailable"
+msgstr "������������"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr "������������������������������������������������������������������"
+
+msgid "Create a network"
+msgstr "������������������"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"���������"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "���������������������������������������������"
+
+msgid "This storage pool is empty."
+msgstr "���������������������"
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr "������������������������������������������������������������������������������������"
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI������������"
+
+msgid "No SCSI adapters found."
+msgstr "������������SCSI���������"
+
+msgid "Loading iSCSI targets..."
+msgstr "������iSCSI������..."
+
+msgid "No iSCSI found. Please input one."
+msgstr "������������iSCSI,������������������"
+
+msgid "Failed to load iSCSI targets."
+msgstr "������iSCSI���������������"
+
+msgid "The storage pool name can not be blank."
+msgstr "���������������������������������"
+
+msgid "The storage pool path can not be blank."
+msgstr "���������������������������������"
+
+msgid "NFS server mount path can not be blank."
+msgstr "NFS������������������������������������"
+
+msgid "Invalid NFS mount path."
+msgstr "���������NFS���������������"
+
+msgid "No logical device selected."
+msgstr "���������������������������"
+
+msgid "The iSCSI target can not be blank."
+msgstr "iSCSI���������������������"
+
+msgid "Server name can not be blank."
+msgstr "������������������������"
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr "������������������������������������������IP���������������������������������"
+
+msgid "Looking for available partitions ..."
+msgstr "��������������������� ..."
+
+msgid "No available partitions found."
+msgstr "���������������������"
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr "���������������������������������������������������������������������������������������������������"
+
+msgid "Unable to retrieve partitions information."
+msgstr "���������������������������"
+
+msgid "In progress..."
+msgstr "������������..."
+
+msgid "Failed!"
+msgstr "���������"
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr "CDROM���������������������������������/������������������������������"
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "���������������������������"
+
+#, fuzzy
+msgid "Filter"
+msgstr "���������"
+
+msgid "Network Name"
+msgstr "������������"
+
+msgid "State"
+msgstr "������"
+
+msgid "Network Type"
+msgstr "������������"
+
+msgid "Address Space"
+msgstr "������������"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "������������������������/������'\"'���"
+
+msgid "Isolated: no external network connection"
+msgstr "������: ������������������������"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT: ���������������������������������������"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr "���������������������������������������������������������"
+
+msgid "(No interfaces found)"
+msgstr "(������������������������)"
+
+msgid "Destination"
+msgstr "������������"
+
+msgid "Enable VLAN"
+msgstr "������VLAN"
+
+msgid "VLAN ID"
+msgstr "VLAN���"
+
+msgid "Stop"
+msgstr "������"
+
+msgid "Generate a New Debug Report"
+msgstr "������������������������������"
+
+msgid "Report Name"
+msgstr "���������������"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������������������ ('_') ���������������'-'���"
+
+msgid "Rename a Debug Report"
+msgstr "���������������������������"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr "������������������������������������������������������������������������������������(\"-\")���"
+
+msgid "Submit"
+msgstr "������"
+
+msgid "Add a Repository"
+msgstr "������������������������"
+
+msgid "Identifier"
+msgstr "���������"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "���������������������������������������"
+
+msgid "Textual name for the repository."
+msgstr "���������������������������"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "���������������"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "���������������URL���������������������http���ftp������file"
+
+msgid "Repository is a mirror"
+msgstr "���������������������������"
+
+msgid "Distribution"
+msgstr "���������"
+
+msgid "Distribution of the DEB repository."
+msgstr "DEB������������������"
+
+msgid "Components"
+msgstr "������"
+
+msgid "List of components in DEB repository."
+msgstr "DEB������������������������"
+
+msgid "Edit Repository"
+msgstr "������������������"
+
+msgid "Mirror List URL"
+msgstr "������������URL"
+
+msgid "Yes"
+msgstr "���"
+
+msgid "No"
+msgstr "���"
+
+msgid "Capacity"
+msgstr "������"
+
+msgid "Allocated"
+msgstr "���������"
+
+msgid "Location"
+msgstr "������"
+
+msgid "Device path"
+msgstr "������������"
+
+msgid "active"
+msgstr "���������"
+
+msgid "inactive"
+msgstr "���������"
+
+msgid "Deactivate"
+msgstr "������"
+
+msgid "Activate"
+msgstr "������"
+
+msgid "Add Volume"
+msgstr "���������"
+
+msgid "Extend"
+msgstr "������"
+
+msgid "Undefine"
+msgstr "������������"
+
+msgid "Format"
+msgstr "������"
+
+msgid "Allocation"
+msgstr "������"
+
+msgid "Define a New Storage Pool"
+msgstr "���������������������������"
+
+msgid "Storage Pool Name"
+msgstr "���������������"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr "���������������������������������������������������������������"
+
+msgid "Storage Pool Type"
+msgstr "���������������"
+
+msgid "Storage Path"
+msgstr "������������"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr "������������������.���������������������������������������"
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr "������������������������KIMCHI���������������������������������������������"
+
+msgid "NFS Server IP"
+msgstr "NFS���������IP"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr "NFS���������IP���������������������������������������������������������������������"
+
+msgid "NFS Path"
+msgstr "NFS ������"
+
+msgid "The NFS exported path on NFS server."
+msgstr "NFS���������������������NFS������"
+
+msgid "iSCSI Server"
+msgstr "iSCSI���������"
+
+msgid "Server"
+msgstr "���������"
+
+msgid "Port"
+msgstr "������"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "iSCSI���������IP������������������ ���������������"
+
+msgid "Target"
+msgstr "������"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "iSCSI������"
+
+msgid "Add iSCSI Authentication"
+msgstr "������ISCSI������"
+
+msgid "iSCSI Authentication"
+msgstr "iSCSI������"
+
+msgid "User Name"
+msgstr "���������"
+
+msgid "Password"
+msgstr "������"
+
+msgid "SCSI Adapter"
+msgstr "SCSI���������"
+
+msgid "Please, wait..."
+msgstr "���������..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr "���������������������������"
+
+msgid "Fetch from remote URL"
+msgstr "���������URL������"
+
+msgid "Enter the remote URL here."
+msgstr "���������������������URL���"
+
+msgid "Upload a file"
+msgstr "������������������"
+
+msgid "Choose the file you want to upload."
+msgstr "������������������������������"
+
+msgid "Add Template"
+msgstr "������������"
+
+msgid "Where is the source media for this template? "
+msgstr "������������������������������"
+
+msgid "Local ISO Image"
+msgstr "������ISO������"
+
+msgid "Local Image File"
+msgstr "������������������"
+
+msgid "Remote ISO Image"
+msgstr "������ISO������"
+
+msgid "Search ISOs"
+msgstr "������ISO"
+
+msgid "The following ISOs are available:"
+msgstr "������ISO������������"
+
+msgid "OS: "
+msgstr "��������������� "
+
+msgid "Version: "
+msgstr "��������� "
+
+msgid "Size: "
+msgstr "���������"
+
+msgid "Search more ISOs"
+msgstr "������������ISO"
+
+msgid "Create Templates from Selected ISO"
+msgstr "������������ISO���������������"
+
+msgid "I want to use a specific ISO file"
+msgstr "������������ISO������"
+
+msgid "Loading default remote ISOs ..."
+msgstr "���������������������ISOs ..."
+
+msgid "Arch: "
+msgstr "���������������"
+
+msgid "I want to use a custom URL"
+msgstr "���������������������������URL"
+
+msgid "Edit Template"
+msgstr "������������"
+
+msgid "CDROM"
+msgstr "������"
+
+msgid "Image File"
+msgstr "������������"
+
+msgid "Graphics"
+msgstr "������"
+
+msgid "Disk(GB)"
+msgstr "������(GB)"
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "CPU������"
+
+msgid "Manually set CPU topology"
+msgstr "������������CPU������"
+
+msgid "Cores"
+msgstr "���������"
+
+msgid "Threads"
+msgstr "������"
+
+msgid "No templates found."
+msgstr "������������������"
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "���������������%(resource)s"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "���������������%(resource)s"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "���������������%(resource)s"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "������������JSON������"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "������API���������JSON"
+
+#~ msgid "Parameters does not match requirement in schema: %(err)s"
+#~ msgstr "���������������������������������%(err)s"
+
+#~ msgid "You don't have permission to perform this operation."
+#~ msgstr "������������������������������������"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "���������model������������������������������"
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "������������%(err)s������������������"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr "������'%(username)s'������������������.[���������������%(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "������������������������Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "������������Kimchi���%(item)s"
+
+#~ msgid "Invalid LDAP configuration: %(item)s : %(value)s"
+#~ msgstr "���������LDAP���������%(item)s : %(value)s"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "���������������������������%(item)s"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr "������'%(cmd)s'������%(seconds)s���������������"
+
+#~ msgid "Peers"
+#~ msgstr "���������"
+
+#~ msgid "Searching"
+#~ msgstr "������������"
+
+#~ msgid "No peers found."
+#~ msgstr "������������������������"
+
+#~ msgid "Help"
+#~ msgstr "������"
+
+#~ msgid "About"
+#~ msgstr "������"
+
+#~ msgid "Log out"
+#~ msgstr "������"
+
+#~ msgid "Version:"
+#~ msgstr "���������"
+
+#~ msgid "Session timeout, please re-login."
+#~ msgstr "���������������������������������"
diff --git a/plugins/gingerbase/po/zh_TW.po b/plugins/gingerbase/po/zh_TW.po
new file mode 100644
index 0000000..635e81c
--- /dev/null
+++ b/plugins/gingerbase/po/zh_TW.po
@@ -0,0 +1,2138 @@
+# English translations for gingerbase package.
+# Copyright (C) 2013 ORGANIZATION
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gingerbase 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:11-0300\n"
+"PO-Revision-Date: 2013-07-11 17:32-0400\n"
+"Last-Translator: Cr��stian Viana <vianac(a)linux.vnet.ibm.com>\n"
+"Language-Team: English\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid "Unknown parameter %(value)s"
+msgstr ""
+
+#, python-format
+msgid "Timeout of %(seconds)s seconds expired while running task '%(task)s."
+msgstr ""
+
+#, python-format
+msgid "User %(user_id)s not found with given LDAP settings."
+msgstr ""
+
+msgid "Unknown \"_cap\" specified"
+msgstr ""
+
+msgid "\"_passthrough\" should be \"true\" or \"false\""
+msgstr ""
+
+msgid "\"_passthrough_affected_by\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid "Error while getting block devices. Details: %(err)s"
+msgstr "���������������������������������������������������%(err)s"
+
+#, python-format
+msgid "Error while getting block device information for %(device)s."
+msgstr "������ %(device)s ���������������������������������������"
+
+#, python-format
+msgid "Unable to find distro file: %(filename)s"
+msgstr "��������� distro ���������%(filename)s"
+
+#, python-format
+msgid ""
+"Unable to parse distro file: %(filename)s. Make sure, it is a JSON file."
+msgstr "������������ distro ���������%(filename)s������������������ JSON ���������"
+
+#, python-format
+msgid "Unable to login to iSCSI host target %(portal)s. Details: %(err)s"
+msgstr "������������ iSCSI ������������ %(portal)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to login to iSCSI host %(host)s target %(target)s"
+msgstr "������������ iSCSI ������ %(host)s ������ %(target)s"
+
+#, python-format
+msgid "Unable to find ISO file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid "The ISO file %(filename)s is not bootable"
+msgstr "ISO ������ %(filename)s ������������"
+
+#, python-format
+msgid "The ISO file %(filename)s does not have a valid El Torito boot record"
+msgstr "ISO ������ %(filename)s ��������������� El Torito ������������"
+
+#, python-format
+msgid "Invalid El Torito validation entry in ISO %(filename)s"
+msgstr "ISO %(filename)s ��������������� El Torito ������������"
+
+#, python-format
+msgid "Invalid El Torito boot indicator in ISO %(filename)s"
+msgstr "ISO %(filename)s ��������������� El Torito ���������������"
+
+#, python-format
+msgid "Unexpected volume type for primary volume in ISO %(filename)s"
+msgstr "ISO %(filename)s ���������������������������������������������"
+
+#, python-format
+msgid "Bad format while reading volume descriptor in ISO %(filename)s"
+msgstr "������ ISO %(filename)s ���������������������������������������������"
+
+#, python-format
+msgid ""
+"The hypervisor doesn't have permission to use this ISO %(filename)s. "
+"Consider moving it under /var/lib/libvirt, or set the search permission to "
+"file access control lists for '%(user)s' user if possible, or add the "
+"'%(user)s' to the ISO path group, or (not recommended) 'chmod -R o+x "
+"'path_to_iso'.Details: %(err)s"
+msgstr ""
+"Hypervisor ��������������� ISO %(filename)s ��������������������������������������� /var/lib/"
+"libvirt ������������������������������'%(user)s' ���������������������������������������������������������"
+"��� '%(user)s' ��������� ISO ������������������������������������������������������ 'chmod -R o+x "
+"'path_to_iso'������������������%(err)s"
+
+msgid "An error occurred when probing image OS information."
+msgstr ""
+
+msgid "No OS information found in given image."
+msgstr ""
+
+#, python-format
+msgid "Unable to read image file %(filename)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Image file must be an existing file on system. %(filename)s is not a valid "
+"input."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine %(name)s already exists"
+msgstr "������������ %(name)s ���������"
+
+#, python-format
+msgid "Virtual machine %(name)s does not exist"
+msgstr "������������ %(name)s ���������"
+
+#, python-format
+msgid ""
+"Unable to rename virtual machine %(name)s. The name %(new_name)s is already "
+"in use or the virtual machine is not powered off."
+msgstr ""
+
+#, python-format
+msgid "Unable to retrieve screenshot for stopped virtual machine %(name)s"
+msgstr "��������������������������������� %(name)s ���������"
+
+msgid "Remote ISO image is not supported by this server."
+msgstr "��������������������������� ISO ������������"
+
+#, python-format
+msgid "Screenshot is not supported on virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to update virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to retrieve virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to connect to powered off virtual machine %(name)s."
+msgstr ""
+
+msgid "Virtual machine name must be a string without slashes (/)"
+msgstr ""
+
+#, python-format
+msgid "Invalid template URI %(value)s specified for virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for virtual machine"
+msgstr ""
+
+msgid "Supported virtual machine graphics are Spice or VNC"
+msgstr ""
+
+msgid "Graphics address to listen on must be IPv4 or IPv6"
+msgstr "������������������������������������ IPv4 ��� IPv6"
+
+msgid "Specify a template to create a virtual machine from"
+msgstr "���������������������������������������"
+
+#, python-format
+msgid "Unable to start virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to power off virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to delete virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to reset virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������������ %(name)s������������������%(err)s"
+
+msgid "User name list must be an array"
+msgstr ""
+
+msgid "User name must be a string"
+msgstr "���������������������������"
+
+msgid "Group name list must be an array"
+msgstr ""
+
+msgid "Group name must be a string"
+msgstr "���������������������������"
+
+#, python-format
+msgid "User(s) '%(users)s' do not exist"
+msgstr "��������� '%(users)s' ������������"
+
+#, python-format
+msgid "Group(s) '%(groups)s' do not exist"
+msgstr "��������� '%(groups)s' ������������"
+
+#, python-format
+msgid "Unable to shutdown virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to get access metadata of virtual machine %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+msgid "The guest console password must be a string."
+msgstr ""
+
+msgid "The life time for the guest console password must be a number."
+msgstr ""
+
+#, python-format
+msgid "Virtual machine '%(name)s' must be stopped before cloning it."
+msgstr ""
+
+#, python-format
+msgid "Insufficient disk space to clone virtual machine '%(name)s'"
+msgstr ""
+
+#, python-format
+msgid "Unable to clone VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Invalid operation for non-persistent virtual machine %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot suspend VM '%(name)s' because it is not running."
+msgstr ""
+
+#, python-format
+msgid "Unable to suspend VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Cannot resume VM '%(name)s' because it is not paused."
+msgstr ""
+
+#, python-format
+msgid "Unable to resume VM '%(name)s'. Details: %(err)s"
+msgstr ""
+
+msgid "Memory assigned is higher then the maximum allowed in the host."
+msgstr ""
+
+#, python-format
+msgid ""
+"VM '%(name)s' does not support live memory update. Update the memory with "
+"the machine offline to enable this feature."
+msgstr ""
+
+msgid "Only increase memory is allowed in active VMs"
+msgstr ""
+
+msgid ""
+"For live memory update, new memory value must be equal old memory value plus "
+"multiples of 1024 Mib"
+msgstr ""
+
+msgid "There are not enough free slots of 1024 Mib in the guest."
+msgstr ""
+
+msgid ""
+"Host's libvirt version does not support memory devices. Libvirt must be >= "
+"1.2.14"
+msgstr ""
+
+#, python-format
+msgid "Error attaching memory device. Details: %(error)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"VM %(vmid)s does not contain directly assigned host device %(dev_name)s."
+msgstr ""
+
+#, python-format
+msgid "The host device %(dev_name)s is not allowed to directly assign to VM."
+msgstr ""
+
+msgid ""
+"No IOMMU groups found. Host PCI pass through needs IOMMU group to function "
+"correctly. Please enable Intel VT-d or AMD IOMMU in your BIOS, then verify "
+"the Kernel is compiled with IOMMU support. For Intel CPU, add intel_iommu=on "
+"to your Kernel parameter in /boot/grub2/grub.conf. For AMD CPU, add iommu=pt "
+"iommu=1."
+msgstr ""
+
+msgid "\"name\" should be a device name string"
+msgstr ""
+
+#, python-format
+msgid ""
+"The device %(name)s is probably in use by the host. Unable to attach it to "
+"the guest."
+msgstr ""
+
+#, python-format
+msgid "Interface %(iface)s does not exist in virtual machine %(name)s"
+msgstr "������ %(iface)s ������������������������ %(name)s ���"
+
+#, python-format
+msgid ""
+"Network %(network)s specified for virtual machine %(name)s does not exist"
+msgstr "��������������� %(name)s ��������������� %(network)s ���������"
+
+msgid "Supported virtual machine interfaces type is only network"
+msgstr "���������������������������������������������������"
+
+msgid "Network name for virtual machine interface must be a string"
+msgstr "������������������������������������������������"
+
+msgid "Invalid network model card specified for virtual machine interface"
+msgstr "���������������������������������������������������"
+
+msgid "Specify type and network to add a new virtual machine interface"
+msgstr "������������������������������������������������"
+
+msgid "MAC Address must respect this format FF:FF:FF:FF:FF:FF"
+msgstr ""
+
+#, python-format
+msgid "MAC Address %(mac)s already exists in virtual machine %(name)s"
+msgstr ""
+
+msgid "Invalid MAC Address"
+msgstr ""
+
+msgid "Cannot change MAC address of a running virtual machine"
+msgstr ""
+
+#, python-format
+msgid "Template %(name)s already exists"
+msgstr "������ %(name)s ���������"
+
+#, python-format
+msgid ""
+"Network '%(network)s' specified for template %(template)s does not exist"
+msgstr "��������� %(template)s ��������������� '%(network)s' ���������"
+
+#, python-format
+msgid ""
+"Storage pool %(pool)s specified for template %(template)s does not exist"
+msgstr "��������� %(template)s ������������������ '%(pool)s' ���������"
+
+#, python-format
+msgid "Storage pool %(pool)s specified for template %(template)s is not active"
+msgstr "��������� %(template)s ������������������ '%(pool)s' ������������������������"
+
+#, python-format
+msgid "Invalid parameter '%(param)s' specified for CDROM."
+msgstr "��� CDROM ��������������� '%(param)s' ���������"
+
+#, python-format
+msgid "Network %(network)s specified for template %(template)s is not active"
+msgstr "��������� %(template)s ��������������� %(network)s ������������������������"
+
+msgid "Template name must be a string"
+msgstr "���������������������������"
+
+msgid "Template icon must be a path to the image"
+msgstr "������������������������������������"
+
+msgid "Template distribution must be a string"
+msgstr "���������������������������������"
+
+msgid "Template distribution version must be a string"
+msgstr "���������������������������������"
+
+msgid "The number of CPUs must be an integer greater than 0"
+msgstr "CPU ���������������������"
+
+msgid "Amount of memory (MB) must be an integer greater than 512"
+msgstr "��������������� (MB) ��������������� 512 ���������"
+
+msgid "Template CDROM must be a local or remote ISO file"
+msgstr "������ CDROM ������������������������ ISO ������"
+
+#, python-format
+msgid "Invalid storage pool URI %(value)s specified for template"
+msgstr "��������������������������� URI %(value)s ������"
+
+msgid "Specify an ISO image as CDROM or a base image to create a template"
+msgstr "������ ISO ��������������� CDROM ���������������"
+
+msgid "All networks for the template must be specified in a list."
+msgstr "���������������������������������������������������"
+
+msgid "Specify a volume to a template when storage pool is iSCSI or SCSI"
+msgstr ""
+
+#, python-format
+msgid "The volume %(volume)s is not in storage pool %(pool)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to create template due error: %(err)s"
+msgstr "������������������������������������������%(err)s"
+
+#, python-format
+msgid "Unable to delete template due error: %(err)s"
+msgstr "������������������������������������������%(err)s"
+
+msgid "Disk size must be an integer greater than 1GB."
+msgstr ""
+
+msgid "Template base image must be a valid local image file"
+msgstr "������ CDROM ������������������������ ISO ������"
+
+#, python-format
+msgid "Cannot identify base image %(path)s format"
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, VCPUs must be a product of sockets, cores, and "
+"threads."
+msgstr ""
+
+msgid ""
+"When specifying CPU topology, each element must be an integer greater than "
+"zero."
+msgstr ""
+
+msgid ""
+"Invalid disk image format. Valid formats: bochs, cloop, cow, dmg, qcow, "
+"qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+#, python-format
+msgid "Storage pool %(name)s already exists"
+msgstr "��������� %(name)s ���������"
+
+#, python-format
+msgid "Storage pool %(name)s does not exist"
+msgstr "��������� %(name)s ���������"
+
+#, python-format
+msgid "Specify %(item)s in order to create the storage pool %(name)s"
+msgstr "������ %(item)s ������������������ %(name)s"
+
+#, python-format
+msgid "Unable to delete active storage pool %(name)s"
+msgstr "��������������������������������� %(name)s"
+
+#, python-format
+msgid "Unable to list storage pools. Details: %(err)s"
+msgstr "���������������������������������������%(err)s"
+
+#, python-format
+msgid "Unable to create storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s������������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to get number of storage volumes in storage pool %(name)s. Details: "
+"%(err)s"
+msgstr "��������������������� %(name)s ������������������������������������������%(err)s"
+
+#, python-format
+msgid "Unable to activate storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to deactivate storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������������� %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to delete storage pool %(name)s. Details: %(err)s"
+msgstr "��������������������� %(name)s������������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to create NFS Pool as export path %(path)s may block during mount"
+msgstr "������������ NFS ������������������������������������������������ %(path)s ���������������"
+
+#, python-format
+msgid "Unable to create NFS Pool as export path %(path)s mount failed"
+msgstr "������������ NFS ������������������������������ %(path)s ������������"
+
+#, python-format
+msgid "Unsupported storage pool type: %(type)s"
+msgstr "���������������������������������%(type)s"
+
+#, python-format
+msgid "Error while retrieving storage pool XML to %(pool)s"
+msgstr ""
+
+msgid "Storage pool name must be a string without slashes (/)"
+msgstr ""
+
+msgid ""
+"Supported storage pool types are dir, netfs, logical, iscsi, isci and kimchi-"
+"iso"
+msgstr ""
+
+msgid "Storage pool path must be a string"
+msgstr "������������������������������"
+
+msgid "Storage pool host must be a IP or hostname"
+msgstr "������������������������ IP ���������������"
+
+msgid "Storage pool device must be the absolute path to the block device"
+msgstr ""
+
+msgid "Storage pool devices parameter must be a list"
+msgstr "������������������������������������"
+
+msgid "Target IQN of an iSCSI pool must be a string"
+msgstr "iSCSI ������������������ IQN ���������������"
+
+msgid "Port of a remote storage server must be an integer between 1 and 65535"
+msgstr "��������������������������������������������� 1 ��� 65535 ���������������"
+
+msgid "iSCSI target username must be a string"
+msgstr ""
+
+msgid "iSCSI target password must be a string"
+msgstr ""
+
+msgid "Specify name and type to create a storage pool"
+msgstr "���������������������������������������"
+
+#, python-format
+msgid ""
+"%(disk)s is not a valid disk/partition. Could not add it to the pool "
+"%(pool)s."
+msgstr "%(disk)s ���������������������/������������������������������������������%(pool)s���"
+
+#, python-format
+msgid "Unable to extend logical pool %(pool)s. Details: %(err)s"
+msgstr ""
+
+msgid "The parameter disks only can be updated for logical storage pool."
+msgstr "������������������������������������������������������������"
+
+msgid "The SCSI host adapter name must be a string."
+msgstr "SCSI ���������������������������������������"
+
+msgid "The storage pool kimchi_isos is reserved for internal use"
+msgstr "��������� kimchi_isos ���������������������"
+
+#, python-format
+msgid ""
+"Unable to activate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr "������������ NFS ��������� %(name)s���NFS ��������� %(server)s���������������"
+
+#, python-format
+msgid ""
+"Unable to deactivate NFS storage pool %(name)s. NFS server %(server)s is "
+"unreachable."
+msgstr "������������������ NFS ��������� %(name)s���NFS ��������� %(server)s���������������"
+
+#, python-format
+msgid ""
+"Unable to deactivate pool %(name)s as it is associated with some templates"
+msgstr "��������������������������� %(name)s������������������������������������"
+
+#, python-format
+msgid "Unable to delete pool %(name)s as it is associated with some templates"
+msgstr "��������������������� %(name)s������������������������������������"
+
+#, python-format
+msgid ""
+"A volume group named '%(name)s' already exists. Please, choose another name "
+"to create the logical pool."
+msgstr "������ '%(name)s' ������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Unable to update database with deep scan information due error: %(err)s"
+msgstr "������������������������������������������������������������������������%(err)s"
+
+#, python-format
+msgid "Storage volume %(name)s already exists"
+msgstr "������������ %(name)s ���������"
+
+#, python-format
+msgid "Storage volume %(name)s does not exist in storage pool %(pool)s"
+msgstr "������������ %(name)s ��������������������� %(pool)s ���"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(volume)s because storage pool %(pool)s is "
+"not active"
+msgstr ""
+
+#, python-format
+msgid "Specify %(item)s in order to create storage volume %(volume)s"
+msgstr "������ %(item)s ��������������������� %(volume)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes because storage pool %(pool)s is not active"
+msgstr "������������������������������������������ %(pool)s ������������������������"
+
+#, python-format
+msgid ""
+"Unable to create storage volume %(name)s in storage pool %(pool)s. Details: "
+"%(err)s"
+msgstr "������������������ %(pool)s ��������������������� %(name)s������������������%(err)s"
+
+#, python-format
+msgid ""
+"Unable to list storage volumes in storage pool %(pool)s. Details: %(err)s"
+msgstr "��������������������� %(pool)s ������������������������������������%(err)s"
+
+#, python-format
+msgid "Unable to wipe storage volumes %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to delete storage volume %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to resize storage volume %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s ���������������������������%(err)s"
+
+#, python-format
+msgid "Storage type %(type)s does not support volume create and delete"
+msgstr "��������������� %(type)s ������������������������������"
+
+msgid "Storage volume name must be a string"
+msgstr "���������������������������������"
+
+msgid "Storage volume allocation must be an integer number"
+msgstr "���������������������������������"
+
+msgid ""
+"Storage volume format not supported. Valid formats: bochs, cloop, cow, dmg, "
+"qcow, qcow2, qed, raw, vmdk, vpc."
+msgstr ""
+
+msgid "Storage volume requires a volume name"
+msgstr "������������������������������"
+
+#, python-format
+msgid ""
+"Unable to update database with storage volume information due error: %(err)s"
+msgstr "������������������������������������������������������������������������%(err)s"
+
+#, python-format
+msgid "Only one of parameter %(param)s can be specified"
+msgstr ""
+
+#, python-format
+msgid "Create volume from %(param)s is not supported"
+msgstr ""
+
+msgid "Storage volume capacity must be an integer number."
+msgstr ""
+
+msgid "Storage volume URL must be http://, https://, ftp:// or ftps://."
+msgstr ""
+
+#, python-format
+msgid "Unable to access file %(url)s. Please, check it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: "
+"%(err)s"
+msgstr ""
+
+msgid "Specify chunk data and its size to upload a file."
+msgstr ""
+
+msgid "In order to upload a storage volume, specify the 'upload' parameter."
+msgstr ""
+
+msgid ""
+"Unable to upload chunk data as it does not match with requested chunk size."
+msgstr ""
+
+#, python-format
+msgid "The storage volume %(vol)s is not under an upload process."
+msgstr ""
+
+msgid "The upload chunk data will exceed the storage volume size."
+msgstr ""
+
+#, python-format
+msgid "Unable to upload chunk data to storage volume. Details: %(err)s."
+msgstr ""
+
+#, python-format
+msgid "Interface %(name)s does not exist"
+msgstr "������ %(name)s ���������"
+
+#, python-format
+msgid "Network %(name)s already exists"
+msgstr "������ %(name)s ���������"
+
+#, python-format
+msgid "Network %(name)s does not exist"
+msgstr "������ %(name)s ���������"
+
+#, python-format
+msgid "Subnet %(subnet)s specified for network %(network)s is not valid."
+msgstr "��������� %(network)s ������������������ %(subnet)s ���������"
+
+#, python-format
+msgid "Specify a network interface to create bridged network %(name)s"
+msgstr "������������������������������������������ %(name)s"
+
+#, python-format
+msgid "Unable to delete active network %(name)s"
+msgstr "������������������������������ %(name)s"
+
+#, python-format
+msgid "Interface %(iface)s specified for network %(network)s is already in use"
+msgstr "��������� %(network)s ��������������� %(iface)s ���������������"
+
+msgid "Interface should be bare NIC, bonding or bridge device."
+msgstr "��������������������� NIC������������������������������������"
+
+#, python-format
+msgid "Unable to create network %(name)s. Details: %(err)s"
+msgstr "������������������ %(name)s������������������%(err)s"
+
+#, python-format
+msgid "Unable to find a free IP address for network '%(name)s'"
+msgstr "��������������� '%(name)s' ��������� IP ������"
+
+#, python-format
+msgid "The interface %(iface)s already exists."
+msgstr ""
+
+msgid "Network name must be a string without slashes (/) or quotes (\")"
+msgstr ""
+
+msgid "Supported network types are isolated, NAT and bridge"
+msgstr "���������������������������������������NAT ������������"
+
+msgid "Network subnet must be a string with IP address and prefix or netmask"
+msgstr "��������������������������������� IP ���������������������������������������"
+
+msgid "Network interface must be a string"
+msgstr "���������������������������"
+
+msgid "Network VLAN ID must be an integer between 1 and 4094"
+msgstr "������ VLAN ID ��������������� 1 ��� 4094 ���������������"
+
+msgid "Specify name and type to create a Network"
+msgstr "������������������������������������"
+
+#, python-format
+msgid ""
+"Unable to delete network %(name)s. There are some virtual machines %(vms)s "
+"and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to deactivate network %(name)s. There are some virtual machines "
+"%(vms)s and/or templates linked to this network."
+msgstr ""
+
+#, python-format
+msgid "Bridge device %(name)s can not be the trunk device of a VLAN."
+msgstr "��������������� %(name)s ��������� VLAN ������������������"
+
+#, python-format
+msgid "Failed to activate interface %(iface)s: %(err)s."
+msgstr "������������������ %(iface)s���%(err)s���"
+
+#, python-format
+msgid ""
+"Failed to activate interface %(iface)s. Please check the physical link "
+"status."
+msgstr "������������������ %(iface)s���������������������������������"
+
+#, python-format
+msgid "Failed to start network %(name)s. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid "Debug report %(name)s does not exist"
+msgstr "������������ %(name)s ���������"
+
+msgid "Debug report tool not found in system"
+msgstr "���������������������������������������"
+
+#, python-format
+msgid "Unable to create debug report %(name)s. Details: %(err)s."
+msgstr "������������������������ %(name)s������������������%(err)s���"
+
+#, python-format
+msgid "Can not find any debug report with the given name %(name)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to generate debug report %(name)s. Details: %(err)s"
+msgstr "������������������������ %(name)s������������������%(err)s"
+
+msgid "You should give a name for the debug report file."
+msgstr ""
+
+msgid ""
+"Debug report name must be a string. Only letters, digits, underscore ('_') "
+"and hyphen ('-') are allowed."
+msgstr ""
+
+#, python-format
+msgid ""
+"The debug report with specified name \"%(name)s\" already exists. Please use "
+"another one."
+msgstr "������ '%(name)s' ������������������������������������������������������������������������������"
+
+#, python-format
+msgid "Storage server %(server)s was not used by Kimchi"
+msgstr "Kimchi ��������������������������� %(server)s"
+
+#, python-format
+msgid "Distro '%(name)s' does not exist"
+msgstr "Distro '%(name)s' ���������"
+
+#, python-format
+msgid "Partition %(name)s does not exist in the host"
+msgstr "��������� %(name)s ���������������������"
+
+msgid "Unable to shutdown host machine as there are running virtual machines"
+msgstr "���������������������������������������������������������������"
+
+msgid "Unable to reboot host machine as there are running virtual machines"
+msgstr "������������������������������������������������������������������������"
+
+#, python-format
+msgid "Node device '%(name)s' not found"
+msgstr "��������������������� '%(name)s'"
+
+msgid "Conflicting flag filters specified."
+msgstr ""
+
+msgid "No packages marked for update"
+msgstr "������������������������������������"
+
+#, python-format
+msgid "Package %(name)s is not marked to be updated."
+msgstr "������ %(name)s ������������������������������"
+
+#, python-format
+msgid "Error while getting packages marked to be updated. Details: %(err)s"
+msgstr "������������������������������������������������������������������������%(err)s"
+
+msgid "There is no compatible package manager for this system."
+msgstr "���������������������������������������������"
+
+#, python-format
+msgid "Invalid URI %(uri)s"
+msgstr "URI %(uri)s ������"
+
+msgid "Unable to choose a virtual machine name"
+msgstr ""
+
+msgid "Invalid storage type. Types supported: 'cdrom', 'disk'"
+msgstr "���������������������������������������������'cdrom'"
+
+#, python-format
+msgid "The path '%(value)s' is not a valid local/remote path for the device"
+msgstr ""
+
+msgid "Only CDROM path can be update."
+msgstr ""
+
+#, python-format
+msgid ""
+"The storage device %(dev_name)s does not exist in the virtual machine "
+"%(vm_name)s"
+msgstr ""
+
+#, python-format
+msgid "Error while creating new storage device: %(error)s"
+msgstr "������������������������������������������%(error)s"
+
+#, python-format
+msgid "Error while updating storage device: %(error)s"
+msgstr "������������������������������������%(error)s"
+
+#, python-format
+msgid "Error while removing storage device: %(error)s"
+msgstr "������������������������������������%(error)s"
+
+msgid "Do not support IDE device hot plug"
+msgstr ""
+
+msgid ""
+"Specify type and path or type and pool/volume to add a new virtual machine "
+"disk"
+msgstr "������������������������������������������������"
+
+msgid "Specify path to update virtual machine disk"
+msgstr "���������������������������������������"
+
+#, python-format
+msgid "Controller type %(type)s limitation of %(limit)s devices reached"
+msgstr ""
+
+#, python-format
+msgid "Cannot retrieve disk path information for given pool/volume: %(error)s"
+msgstr ""
+
+msgid "Volume already in use by other virtual machine."
+msgstr ""
+
+msgid ""
+"Only one of path or pool/volume can be specified to add a new virtual "
+"machine disk"
+msgstr "������������������������������������������������"
+
+#, python-format
+msgid ""
+"Volume chosen with format %(format)s does not fit in the storage type "
+"%(type)s"
+msgstr ""
+
+msgid "YUM Repository ID must be one word only string."
+msgstr "YUM ��������� ID ���������������������������������������"
+
+msgid "Repository URL must be an http://, ftp:// or file:// URL."
+msgstr "��������� URL ��������� http://���ftp:// ��� file:// URL���"
+
+msgid ""
+"Repository configuration is a dictionary with specific values according to "
+"repository type."
+msgstr "������������������������������������������������������������������������������"
+
+msgid "Distribution to DEB repository must be a string"
+msgstr "DEB ���������������������������������������"
+
+msgid "Components to DEB repository must be listed in a array"
+msgstr "DEB ������������������������������������������������"
+
+msgid "Components to DEB repository must be a string"
+msgstr "DEB ���������������������������������"
+
+msgid "Mirror list to repository must be a string"
+msgstr ""
+
+msgid "YUM Repository name must be string."
+msgstr "YUM ���������������������������������"
+
+msgid "GPG check must be a boolean value."
+msgstr "GPG ���������������������������"
+
+msgid "GPG key must be a URL pointing to the ASCII-armored file."
+msgstr "GPG ��������������������� ASCII ��������������� URL���"
+
+#, python-format
+msgid "Could not update repository %(repo_id)s."
+msgstr "��������������������� %(repo_id)s���"
+
+#, python-format
+msgid "Repository %(repo_id)s does not exist."
+msgstr "��������� %(repo_id)s ������������"
+
+msgid ""
+"Specify repository base URL, mirror list or metalink in order to create or "
+"update a YUM repository."
+msgstr ""
+
+msgid "Repository management tool was not recognized for your system."
+msgstr "���������������������������������������������"
+
+#, python-format
+msgid "Repository %(repo_id)s is already enabled."
+msgstr "������������������ %(repo_id)s���"
+
+#, python-format
+msgid "Repository %(repo_id)s is already disabled."
+msgstr "������������������ %(repo_id)s���"
+
+#, python-format
+msgid "Could not remove repository %(repo_id)s."
+msgstr "��������������������� %(repo_id)s���"
+
+#, python-format
+msgid "Could not write repository configuration file %(repo_file)s"
+msgstr "������������������������������ %(repo_file)s"
+
+msgid "Specify repository distribution in order to create a DEB repository."
+msgstr "������������������������������������ DEB ������������"
+
+#, python-format
+msgid "Could not enable repository %(repo_id)s."
+msgstr "��������������������� %(repo_id)s���"
+
+#, python-format
+msgid "Could not disable repository %(repo_id)s."
+msgstr "��������������������� %(repo_id)s���"
+
+msgid "YUM Repository ID already exists"
+msgstr "YUM ��������� ID ���������"
+
+msgid "YUM Repository name must be a string"
+msgstr "YUM ������������������������������"
+
+#, python-format
+msgid "Unable to list repositories. Details: '%(err)s'"
+msgstr "���������������������������������������'%(err)s'"
+
+#, python-format
+msgid "Unable to retrieve repository information. Details: '%(err)s'"
+msgstr "���������������������������������������������'%(err)s'"
+
+#, python-format
+msgid "Unable to add repository. Details: '%(err)s'"
+msgstr "���������������������������������������'%(err)s'"
+
+#, python-format
+msgid "Unable to remove repository. Details: '%(err)s'"
+msgstr "���������������������������������������'%(err)s'"
+
+#, python-format
+msgid ""
+"Configuration items: '%(items)s' are not supported by repository manager"
+msgstr ""
+
+msgid "Repository metalink must be an http://, ftp:// or file:// URL."
+msgstr ""
+
+msgid "Cannot specify mirrorlist and metalink at the same time."
+msgstr ""
+
+#, python-format
+msgid ""
+"Virtual machine '%(vm)s' must be stopped before creating a snapshot of it."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Snapshot '%(name)s' does not exist on virtual machine '%(vm)s'."
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid "Unable to list snapshots on virtual machine '%(vm)s'. Details: %(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to delete snapshot '%(name)s' on virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to retrieve current snapshot of virtual machine '%(vm)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to revert virtual machine '%(vm)s' to snapshot '%(name)s'. Details: "
+"%(err)s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Unable to create snapshot of virtual machine '%(vm)s' because it contains a "
+"disk with format '%(format)s'; only 'qcow2' is supported."
+msgstr ""
+
+msgid "The number of vCPUs is too large for this system."
+msgstr ""
+
+msgid "Invalid vCPU/topology combination."
+msgstr ""
+
+msgid "This host (or current configuration) does not allow CPU topology."
+msgstr ""
+
+msgid "ERROR CODE"
+msgstr "���������"
+
+msgid "REASON"
+msgstr "������"
+
+msgid "STACK"
+msgstr "������"
+
+msgid "Go to Homepage"
+msgstr "������������"
+
+msgid "Create a New Virtual Machine"
+msgstr "������������������������"
+
+msgid "Virtual Machine Name"
+msgstr "������������������"
+
+msgid ""
+"The name used to identify the virtual machine. If omitted, a name will be "
+"chosen based on the template used."
+msgstr "���������������������������������������������������������������������������������������������"
+
+msgid "Template"
+msgstr "������"
+
+msgid "Please create a template first."
+msgstr "���������������������"
+
+msgid "Create a Template"
+msgstr "������������"
+
+msgid "Please choose a template."
+msgstr "������������������"
+
+msgid "OS"
+msgstr "OS"
+
+msgid "OS Version"
+msgstr "OS ������"
+
+msgid "CPUS"
+msgstr "CPUS"
+
+msgid "Memory"
+msgstr "���������"
+
+msgid "Create"
+msgstr "������"
+
+msgid "Creating..."
+msgstr ""
+
+msgid "Cancel"
+msgstr "������ "
+
+msgid "Edit Guest"
+msgstr "������������"
+
+msgid "General"
+msgstr "������"
+
+msgid "Storage"
+msgstr "���������"
+
+msgid "Interface"
+msgstr "������"
+
+msgid "Permission"
+msgstr "������"
+
+msgid "Host PCI Device"
+msgstr ""
+
+msgid "Snapshot"
+msgstr ""
+
+msgid "Name"
+msgstr "������"
+
+msgid "CPUs"
+msgstr "CPU"
+
+msgid "Memory (MB)"
+msgstr "���������"
+
+msgid "Icon"
+msgstr "������"
+
+msgid "Device"
+msgstr "������������"
+
+msgid "Path"
+msgstr "NFS ������"
+
+msgid "Network"
+msgstr "������"
+
+msgid "Type"
+msgstr "������"
+
+msgid "MAC Address"
+msgstr ""
+
+msgid "Available system users and groups"
+msgstr ""
+
+msgid "Selected system users and groups"
+msgstr ""
+
+msgid "User"
+msgstr ""
+
+msgid "All"
+msgstr "������"
+
+msgid "To Add"
+msgstr ""
+
+msgid "Added"
+msgstr ""
+
+msgid "filter"
+msgstr ""
+
+msgid "Product"
+msgstr ""
+
+msgid "Vendor"
+msgstr "���������"
+
+msgid "Created"
+msgstr ""
+
+msgid "Save"
+msgstr "������"
+
+msgid "Replace"
+msgstr "������"
+
+msgid "Detach"
+msgstr "������"
+
+msgid "revert"
+msgstr ""
+
+msgid "Start"
+msgstr "������"
+
+msgid "Reset"
+msgstr "������"
+
+msgid "Pause"
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Power Off"
+msgstr ""
+
+msgid "Actions"
+msgstr "������"
+
+msgid "Connect"
+msgstr "������"
+
+msgid "Clone"
+msgstr ""
+
+msgid "Edit"
+msgstr "������"
+
+msgid "Shut Down"
+msgstr "������"
+
+msgid "Delete"
+msgstr "������"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "Disk I/O"
+msgstr "������ I/O"
+
+msgid "Network I/O"
+msgstr "������ I/O"
+
+msgid "Livetile"
+msgstr "Livetile"
+
+msgid "No guests found."
+msgstr "������������������"
+
+msgid "Add a Storage Device to VM"
+msgstr "������������������������ VM"
+
+msgid "Device Type"
+msgstr "������������"
+
+msgid "The device type. Currently, \"cdrom\" and \"disk\" are supported."
+msgstr "������������������������������ \"cdrom\"���"
+
+msgid "Storage Pool"
+msgstr "���������"
+
+msgid "Storage pool which volume located in"
+msgstr "������������������������������"
+
+msgid "Storage Volume"
+msgstr "���������������"
+
+msgid "Storage volume to be attached"
+msgstr "���������������������������������"
+
+msgid "File Path"
+msgstr "������������"
+
+msgid "The ISO file path in the server for CDROM."
+msgstr "CDROM ��� ISO ������������������������������"
+
+msgid "Attach"
+msgstr "������"
+
+msgid "Shut down"
+msgstr "������"
+
+msgid "Restart"
+msgstr "������������"
+
+msgid "Basic Information"
+msgstr "������������"
+
+msgid "OS Distro"
+msgstr "OS Distro"
+
+msgid "OS Code Name"
+msgstr "OS ���������������"
+
+msgid "Processor"
+msgstr "���������"
+
+msgid "CPU(s)"
+msgstr ""
+
+msgid "System Statistics"
+msgstr "������������������"
+
+msgid "Software Updates"
+msgstr "������������"
+
+msgid "Update Progress"
+msgstr "������������"
+
+msgid "Repositories"
+msgstr "���������"
+
+msgid "Debug Reports"
+msgstr "������������"
+
+msgid "The username or password you entered is incorrect. Please try again."
+msgstr "������������������������������������������������������������"
+
+msgid "This field is required."
+msgstr "������������������������"
+
+msgid "Log in"
+msgstr "������"
+
+msgid "Logging in..."
+msgstr "������������..."
+
+msgid "Host"
+msgstr "������"
+
+msgid "Guests"
+msgstr "������"
+
+msgid "Templates"
+msgstr "������"
+
+msgid "Failed to get application configuration"
+msgstr "������������������������������"
+
+msgid "This is not a valid Linux path"
+msgstr "��������������� Linux ������"
+
+msgid "This is not a valid URL."
+msgstr "��������������� URL���"
+
+msgid "No such data available."
+msgstr "���������������������������"
+
+msgid ""
+"Can not contact the host system. Verify the host system is up and that you "
+"have network connectivity to it. HTTP request response %1. "
+msgstr ""
+"������������������������������������������������������������������������������������������������������������HTTP "
+"��������������� %1���"
+
+msgid "Unable to read file."
+msgstr ""
+
+msgid "Error while uploading file."
+msgstr ""
+
+msgid "Delete Confirmation"
+msgstr "������������"
+
+msgid "OK"
+msgstr "������"
+
+msgid "Confirm"
+msgstr "������"
+
+msgid "Warning"
+msgstr "������"
+
+msgid "Cloning..."
+msgstr ""
+
+msgid "Loading..."
+msgstr "������������..."
+
+msgid "An error occurred while retrieving system information."
+msgstr ""
+
+msgid "Retry"
+msgstr "������"
+
+msgid "Detailed message:"
+msgstr "������������������"
+
+msgid "No ISO found"
+msgstr ""
+
+msgid "This is not a valid ISO file."
+msgstr "��������������� ISO ���������"
+
+msgid "This may take a long time. Do you want to continue?"
+msgstr "������������������������������������������"
+
+msgid "This will permanently delete the template. Would you like to continue?"
+msgstr "���������������������������������������������������"
+
+msgid "Unable to shut down system as there are some virtual machines running!"
+msgstr "������������������������������������������������������������������"
+
+msgid "Max:"
+msgstr "���������"
+
+msgid "Utilization"
+msgstr "���������"
+
+msgid "Available"
+msgstr "������"
+
+msgid "Read Rate"
+msgstr "������������"
+
+msgid "Write Rate"
+msgstr "������������"
+
+msgid "Received"
+msgstr "���������"
+
+msgid "Sent"
+msgstr "���������"
+
+msgid ""
+"Shutting down or restarting host will cause unsaved work lost. Continue to "
+"shut down/restarting?"
+msgstr "������������������������������������������������������������������������������/������������������"
+
+msgid ""
+"Repository will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr "������������������������������������������������������������������"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "Base URL"
+msgstr "������ URL"
+
+msgid "Is Mirror"
+msgstr "���������"
+
+msgid "URL Args"
+msgstr "URL ������"
+
+msgid "Enabled"
+msgstr "���������"
+
+msgid "GPG Check"
+msgstr "GPG ������"
+
+msgid "GPG Key"
+msgstr "GPG ������"
+
+msgid "Add"
+msgstr "������"
+
+msgid "Remove"
+msgstr "������"
+
+msgid "Enable"
+msgstr "������"
+
+msgid "Disable"
+msgstr "������"
+
+msgid "Package Name"
+msgstr "������������"
+
+msgid "Version"
+msgstr "������"
+
+msgid "Architecture"
+msgstr "������"
+
+msgid "Repository"
+msgstr "���������"
+
+msgid "Update All"
+msgstr "������������"
+
+msgid "Updating..."
+msgstr "������������..."
+
+msgid "Failed to retrieve packages update information."
+msgstr ""
+
+msgid "Failed to update package(s)."
+msgstr "���������������������"
+
+msgid ""
+"Debug report will be removed permanently and can't be recovered. Do you want "
+"to continue?"
+msgstr "���������������������������������������������������������������������"
+
+msgid "Generated Time"
+msgstr "������������"
+
+msgid "Generate"
+msgstr "������"
+
+msgid "Generating..."
+msgstr "������������..."
+
+msgid "Rename"
+msgstr "������������"
+
+msgid "Download"
+msgstr "������"
+
+msgid ""
+"Report name should contain only letters, digits, underscore ('_') and/or "
+"hyphen ('-')."
+msgstr "���������������������������������������������/������������ ('-')���"
+
+msgid "Pending..."
+msgstr "������������..."
+
+msgid "Report name is the same as the original one."
+msgstr ""
+
+msgid ""
+"This will delete the virtual machine and its virtual disks. This operation "
+"cannot be undone. Would you like to continue?"
+msgstr "���������������������������������������������������������������������������������������������"
+
+msgid "Power off Confirmation"
+msgstr "������������"
+
+msgid ""
+"This action may produce undesirable results, for example unflushed disk "
+"cache in the guest. Would you like to continue?"
+msgstr ""
+
+msgid "Reset Confirmation"
+msgstr "������������"
+
+msgid ""
+"There is a risk of data loss caused by reset without the guest OS shutdown. "
+"Would you like to continue?"
+msgstr ""
+
+msgid "Shut Down Confirmation"
+msgstr "������������"
+
+msgid "Note the guest OS may ignore this request. Would you like to continue?"
+msgstr "���������������������������������������������������"
+
+msgid "Virtual Machine delete Confirmation"
+msgstr ""
+
+msgid ""
+"This virtual machine is not persistent. Power Off will delete it. Continue?"
+msgstr ""
+
+msgid ""
+"When the target guest has SCSI or iSCSI volumes, they will be cloned on "
+"default storage pool. The same will happen when the target pool does not "
+"have enough space to clone the volumes. Do you want to continue?"
+msgstr ""
+
+msgid ""
+"This CDROM will be detached permanently and you can re-attach it. Continue "
+"to detach it?"
+msgstr ""
+"������������������������ CDROM��������������������������������������������������������� CDROM ������"
+
+msgid "Attaching..."
+msgstr "������������..."
+
+msgid "Replacing..."
+msgstr "������������..."
+
+msgid "Successfully attached!"
+msgstr "������������������"
+
+msgid "Successfully replaced!"
+msgstr "������������������"
+
+msgid "Successfully detached!"
+msgstr "������������������"
+
+msgid ""
+"This disk will be detached permanently and you can re-attach it. Continue to "
+"detach it?"
+msgstr ""
+
+msgid "interface:"
+msgstr ""
+
+msgid "address:"
+msgstr ""
+
+msgid "link_type:"
+msgstr ""
+
+msgid "block:"
+msgstr ""
+
+msgid "drive_type:"
+msgstr ""
+
+msgid "model:"
+msgstr ""
+
+msgid "Affected devices:"
+msgstr ""
+
+msgid "The VLAN id must be between 1 and 4094."
+msgstr "VLAN ID ������������ 1 ��� 4094 ���������"
+
+msgid "unavailable"
+msgstr "������������"
+
+msgid ""
+"This action will interrupt network connectivity for any virtual machine that "
+"depend on this network."
+msgstr "������������������������������������������������������������������������������������"
+
+msgid "Create a network"
+msgstr "������������"
+
+msgid ""
+"This network is not persistent. Instead of stop, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid ""
+"The bridged VLAN tag may not work well with NetworkManager enabled. You "
+"should consider disabling it."
+msgstr ""
+
+msgid ""
+"This will permanently delete the storage pool. Would you like to continue?"
+msgstr "������������������������������������������������������"
+
+msgid "This storage pool is empty."
+msgstr "������������������������"
+
+msgid ""
+"It will format your disk and you will loose any data in there, are you sure "
+"to continue? "
+msgstr "������������������������������������������������������������������������������������������������������"
+
+msgid "SCSI Fibre Channel"
+msgstr "SCSI ������������"
+
+msgid "No SCSI adapters found."
+msgstr "��������� SCSI ������������"
+
+msgid "Loading iSCSI targets..."
+msgstr ""
+
+msgid "No iSCSI found. Please input one."
+msgstr ""
+
+msgid "Failed to load iSCSI targets."
+msgstr ""
+
+msgid "The storage pool name can not be blank."
+msgstr "������������������������������"
+
+msgid "The storage pool path can not be blank."
+msgstr "������������������������������"
+
+msgid "NFS server mount path can not be blank."
+msgstr "NFS ������������������������������������"
+
+msgid "Invalid NFS mount path."
+msgstr "NFS ���������������������"
+
+msgid "No logical device selected."
+msgstr "������������������������"
+
+msgid "The iSCSI target can not be blank."
+msgstr "iSCSI ���������������������"
+
+msgid "Server name can not be blank."
+msgstr "������������������������������"
+
+msgid "This is not a valid Server Name or IP. Please, modify it."
+msgstr ""
+
+msgid "Looking for available partitions ..."
+msgstr "������������������������������ ..."
+
+msgid "No available partitions found."
+msgstr "������������������������������"
+
+msgid ""
+"This storage pool is not persistent. Instead of deactivate, this action will "
+"permanently delete it. Would you like to continue?"
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������"
+
+msgid "Unable to retrieve partitions information."
+msgstr "���������������������������������������������'%(err)s'"
+
+msgid "In progress..."
+msgstr ""
+
+msgid "Failed!"
+msgstr ""
+
+msgid "CDROM path needs to be a valid local/remote path and cannot be blank."
+msgstr ""
+
+msgid "Disk pool or volume cannot be blank."
+msgstr "������������������������������"
+
+msgid "Filter"
+msgstr ""
+
+msgid "Network Name"
+msgstr "������������"
+
+msgid "State"
+msgstr "������"
+
+msgid "Network Type"
+msgstr "������������"
+
+msgid "Address Space"
+msgstr "������������"
+
+msgid "Name should not contain '/' and '\"'."
+msgstr "������������������������������������������ '/'���"
+
+msgid "Isolated: no external network connection"
+msgstr "������������������������������������"
+
+msgid "NAT: outbound physical network connection only"
+msgstr "NAT���������������������������������"
+
+msgid "Bridged: Virtual machines are connected to physical network directly"
+msgstr "������������������������������������������������������"
+
+msgid "(No interfaces found)"
+msgstr ""
+
+msgid "Destination"
+msgstr "������������"
+
+msgid "Enable VLAN"
+msgstr "������ VLAN���"
+
+msgid "VLAN ID"
+msgstr "VLAN ID���"
+
+msgid "Stop"
+msgstr "������"
+
+msgid "Generate a New Debug Report"
+msgstr "������������������������"
+
+msgid "Report Name"
+msgstr "������������"
+
+msgid ""
+"The name used to identify the report. If omitted, a name will be chosen "
+"based on current time. Name can contain: letters, digits, underscore (\"_\") "
+"and hyphen (\"-\")."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������ (\"-\")���"
+
+msgid "Rename a Debug Report"
+msgstr "������������������������"
+
+msgid ""
+"The name used to identify the report. Name can contain: letters, digits and "
+"hyphen (\"-\")."
+msgstr ""
+"������������������������������������������������������������������������������������������������������������������"
+"������������������ (\"-\")���"
+
+msgid "Submit"
+msgstr ""
+
+msgid "Add a Repository"
+msgstr "���������������"
+
+msgid "Identifier"
+msgstr "ID"
+
+msgid "Single word, unique identifier for the repository."
+msgstr "��������������������������� ID���"
+
+msgid "Textual name for the repository."
+msgstr "���������������������������"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Required Field"
+msgstr "������������"
+
+msgid "URL to the repository. Supported protocols are http, ftp, and file."
+msgstr "������������ URL��������������������������������� http���ftp ��� file���"
+
+msgid "Repository is a mirror"
+msgstr "���������������������"
+
+msgid "Distribution"
+msgstr "������������"
+
+msgid "Distribution of the DEB repository."
+msgstr "DEB ���������������������������"
+
+msgid "Components"
+msgstr "������"
+
+msgid "List of components in DEB repository."
+msgstr "DEB ������������������������������"
+
+msgid "Edit Repository"
+msgstr "���������������"
+
+msgid "Mirror List URL"
+msgstr "������������ URL"
+
+msgid "Yes"
+msgstr "���"
+
+msgid "No"
+msgstr "���"
+
+msgid "Capacity"
+msgstr "������"
+
+msgid "Allocated"
+msgstr "���������"
+
+msgid "Location"
+msgstr "������"
+
+msgid "Device path"
+msgstr "������������"
+
+msgid "active"
+msgstr "���������"
+
+msgid "inactive"
+msgstr "������������"
+
+msgid "Deactivate"
+msgstr "������������"
+
+msgid "Activate"
+msgstr "������"
+
+msgid "Add Volume"
+msgstr ""
+
+msgid "Extend"
+msgstr ""
+
+msgid "Undefine"
+msgstr "������������"
+
+msgid "Format"
+msgstr "���������"
+
+msgid "Allocation"
+msgstr "���������"
+
+msgid "Define a New Storage Pool"
+msgstr "���������������������"
+
+msgid "Storage Pool Name"
+msgstr "���������������"
+
+msgid ""
+"The name used to identify the storage pools, and it should not be empty."
+msgstr "������������������������������������������������������"
+
+msgid "Storage Pool Type"
+msgstr "���������������"
+
+msgid "Storage Path"
+msgstr "���������������"
+
+msgid ""
+"The path of the Storage Pool. Each Storage Pool must have a unique path."
+msgstr "���������������������������������������������������������������������������"
+
+msgid ""
+"Kimchi will try to create the directory when it does not already exist in "
+"your system."
+msgstr "Kimchi ������������������������������������������������������������������������"
+
+msgid "NFS Server IP"
+msgstr "NFS ��������� IP"
+
+msgid "NFS server IP or hostname. It can be input or chosen from history."
+msgstr "NFS ��������� IP ���������������������������������������������������������������������"
+
+msgid "NFS Path"
+msgstr "NFS ������"
+
+msgid "The NFS exported path on NFS server."
+msgstr "NFS ������������ NFS ������������������"
+
+msgid "iSCSI Server"
+msgstr "iSCSI ���������"
+
+msgid "Server"
+msgstr "���������"
+
+msgid "Port"
+msgstr "���"
+
+msgid "iSCSI server IP or hostname. It should not be empty."
+msgstr "iSCSI ��������� IP ������������������������������������������"
+
+msgid "Target"
+msgstr "������"
+
+msgid "The iSCSI target on iSCSI server"
+msgstr "iSCSI ��������������� iSCSI ������"
+
+msgid "Add iSCSI Authentication"
+msgstr "������ iSCSI ������"
+
+msgid "iSCSI Authentication"
+msgstr "iSCSI ������"
+
+msgid "User Name"
+msgstr "���������������"
+
+msgid "Password"
+msgstr "������"
+
+msgid "SCSI Adapter"
+msgstr "SCSI ���������"
+
+msgid "Please, wait..."
+msgstr "���������..."
+
+msgid "Add a Volume to Storage Pool"
+msgstr ""
+
+msgid "Fetch from remote URL"
+msgstr ""
+
+msgid "Enter the remote URL here."
+msgstr ""
+
+msgid "Upload a file"
+msgstr ""
+
+msgid "Choose the file you want to upload."
+msgstr ""
+
+msgid "Add Template"
+msgstr "������������"
+
+msgid "Where is the source media for this template? "
+msgstr "���������������������������������������"
+
+msgid "Local ISO Image"
+msgstr "������ ISO ���������"
+
+msgid "Local Image File"
+msgstr ""
+
+msgid "Remote ISO Image"
+msgstr "������ ISO ���������"
+
+msgid "Search ISOs"
+msgstr "������ ISO"
+
+msgid "The following ISOs are available:"
+msgstr "������ ISO ���������"
+
+msgid "OS: "
+msgstr "OS���"
+
+msgid "Version: "
+msgstr "���������"
+
+msgid "Size: "
+msgstr "���������"
+
+msgid "Search more ISOs"
+msgstr "������������ ISO"
+
+msgid "Create Templates from Selected ISO"
+msgstr "��������� ISO ������������"
+
+msgid "I want to use a specific ISO file"
+msgstr "��������������������� ISO ������"
+
+msgid "Loading default remote ISOs ..."
+msgstr "������������������������ ISO ..."
+
+msgid "Arch: "
+msgstr "���������"
+
+msgid "I want to use a custom URL"
+msgstr "������������������ URL"
+
+msgid "Edit Template"
+msgstr "������������"
+
+msgid "CDROM"
+msgstr "CDROM"
+
+msgid "Image File"
+msgstr ""
+
+msgid "Graphics"
+msgstr "���������"
+
+msgid "Disk(GB)"
+msgstr ""
+
+msgid "Disk Format"
+msgstr ""
+
+msgid "CPU Number"
+msgstr "CPU ������"
+
+msgid "Manually set CPU topology"
+msgstr ""
+
+msgid "Cores"
+msgstr ""
+
+msgid "Threads"
+msgstr ""
+
+msgid "No templates found."
+msgstr "������������������"
+
+#~ msgid "Delete is not allowed for %(resource)s"
+#~ msgstr "��������������� %(resource)s ������������"
+
+#~ msgid "%(resource)s does not implement update method"
+#~ msgstr "%(resource)s ���������������������"
+
+#~ msgid "Create is not allowed for %(resource)s"
+#~ msgstr "��������������� %(resource)s ������������"
+
+#~ msgid "Unable to parse JSON request"
+#~ msgstr "������������ JSON ������"
+
+#~ msgid "This API only supports JSON"
+#~ msgstr "��� API ��������� JSON"
+
+#~ msgid "Datastore is not initiated in the model object."
+#~ msgstr "���������������������������������������������"
+
+#~ msgid "Unable to start task due error: %(err)s"
+#~ msgstr "������������������������������������������%(err)s"
+
+#~ msgid ""
+#~ "Authentication failed for user '%(username)s'. [Error code: %(code)s]"
+#~ msgstr "��������� '%(username)s' ������������������[������������%(code)s]"
+
+#~ msgid "You are not authorized to access Kimchi"
+#~ msgstr "������������������������ Kimchi"
+
+#~ msgid "Specify %(item)s to login into Kimchi"
+#~ msgstr "������ %(item)s ��������� Kimchi"
+
+#~ msgid "Unable to find %(item)s in datastore"
+#~ msgstr "������������������������������ %(item)s"
+
+#~ msgid "Timeout while running command '%(cmd)s' after %(seconds)s seconds"
+#~ msgstr "������������ '%(cmd)s' %(seconds)s ���������������"
+
+#~ msgid "Help"
+#~ msgstr "������"
+
+#~ msgid "About"
+#~ msgstr "������"
+
+#~ msgid "Log out"
+#~ msgstr "������"
+
+#~ msgid "Version:"
+#~ msgstr "���������"
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/ui/Makefile.am | 20 ++++++++++++++++++++
plugins/gingerbase/ui/config/Makefile.am | 22 ++++++++++++++++++++++
plugins/gingerbase/ui/config/tab-ext.xml | 10 ++++++++++
3 files changed, 52 insertions(+)
create mode 100644 plugins/gingerbase/ui/Makefile.am
create mode 100644 plugins/gingerbase/ui/config/Makefile.am
create mode 100644 plugins/gingerbase/ui/config/tab-ext.xml
diff --git a/plugins/gingerbase/ui/Makefile.am b/plugins/gingerbase/ui/Makefile.am
new file mode 100644
index 0000000..b2b0e8f
--- /dev/null
+++ b/plugins/gingerbase/ui/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+SUBDIRS = config css images js pages
+
+uidir = $(datadir)/wok/plugins/gingerbase/ui
diff --git a/plugins/gingerbase/ui/config/Makefile.am b/plugins/gingerbase/ui/config/Makefile.am
new file mode 100644
index 0000000..0b60cc9
--- /dev/null
+++ b/plugins/gingerbase/ui/config/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+xmldir = $(datadir)/wok/plugins/gingerbase/ui/config
+
+dist_xml_DATA = \
+ tab-ext.xml \
+ $(NULL)
diff --git a/plugins/gingerbase/ui/config/tab-ext.xml b/plugins/gingerbase/ui/config/tab-ext.xml
new file mode 100644
index 0000000..2d2d9bd
--- /dev/null
+++ b/plugins/gingerbase/ui/config/tab-ext.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<tabs-ext>
+ <tab>
+ <access role="admin" mode="admin"/>
+ <access role="user" mode="none"/>
+
+ <title>Host</title>
+ <path>plugins/gingerbase/host.html</path>
+ </tab>
+</tabs-ext>
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/ui/css/Makefile.am | 26 ++
plugins/gingerbase/ui/css/theme-default/host.css | 287 +++++++++++++++++++++
.../gingerbase/ui/css/theme-default/report-add.css | 37 +++
.../ui/css/theme-default/report-rename.css | 39 +++
.../ui/css/theme-default/repository-add.css | 42 +++
.../ui/css/theme-default/repository-edit.css | 88 +++++++
plugins/kimchi/ui/css/theme-default/host.css | 287 ---------------------
plugins/kimchi/ui/css/theme-default/report-add.css | 37 ---
.../kimchi/ui/css/theme-default/report-rename.css | 39 ---
.../kimchi/ui/css/theme-default/repository-add.css | 42 ---
.../ui/css/theme-default/repository-edit.css | 88 -------
11 files changed, 519 insertions(+), 493 deletions(-)
create mode 100644 plugins/gingerbase/ui/css/Makefile.am
create mode 100644 plugins/gingerbase/ui/css/theme-default/host.css
create mode 100644 plugins/gingerbase/ui/css/theme-default/report-add.css
create mode 100644 plugins/gingerbase/ui/css/theme-default/report-rename.css
create mode 100644 plugins/gingerbase/ui/css/theme-default/repository-add.css
create mode 100644 plugins/gingerbase/ui/css/theme-default/repository-edit.css
delete mode 100644 plugins/kimchi/ui/css/theme-default/host.css
delete mode 100644 plugins/kimchi/ui/css/theme-default/report-add.css
delete mode 100644 plugins/kimchi/ui/css/theme-default/report-rename.css
delete mode 100644 plugins/kimchi/ui/css/theme-default/repository-add.css
delete mode 100644 plugins/kimchi/ui/css/theme-default/repository-edit.css
diff --git a/plugins/gingerbase/ui/css/Makefile.am b/plugins/gingerbase/ui/css/Makefile.am
new file mode 100644
index 0000000..3e19c65
--- /dev/null
+++ b/plugins/gingerbase/ui/css/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+EXTRA_DIST = theme-default
+
+cssdir = $(datadir)/wok/plugins/gingerbase/ui/css
+dist_css_DATA = theme-default.min.css
+
+theme-default.min.css: theme-default/*.css
+ cat $^ > $@
+
+CLEANFILES = theme-default.min.css
diff --git a/plugins/gingerbase/ui/css/theme-default/host.css b/plugins/gingerbase/ui/css/theme-default/host.css
new file mode 100644
index 0000000..96a54b5
--- /dev/null
+++ b/plugins/gingerbase/ui/css/theme-default/host.css
@@ -0,0 +1,287 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ */
+.host-panel {
+ font-size: 12px;
+ margin-bottom: 100px;
+}
+
+.host-panel .logo-container, .host-panel .info-container,
+.host-panel .section-label, .host-panel .section-value {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.host-panel .section-label {
+ display: inline-block;
+ margin-right: 1em;
+ vertical-align: top;
+}
+
+.host-panel .logo {
+ background: url("plugins/gingerbase/images/icon-vm.png") no-repeat left top;
+ height: 128px;
+ width: 128px;
+}
+
+.host-panel .hostname {
+ text-decoration: underline;
+}
+
+.host-panel .action-panel {
+ margin-top: 2em;
+ padding-left: 10px;
+}
+
+.host-panel .button-icon {
+ background: url("../images/theme-default/host-icon-sprite.png") no-repeat
+ left top;
+ display: inline-block;
+ height: 12px;
+ width: 12px;
+}
+
+.host-panel .action-icon-stop {
+ background-position: -14px 0;
+}
+
+.host-panel .action-icon-restart {
+ background-position: -28px 0;
+}
+
+.host-panel .action-icon-download {
+ background-position: -42px 0;
+}
+
+.host-panel .action-icon-connect {
+ background-position: -56px 0;
+}
+
+.host-panel .action-icon-add {
+ background-position: -70px 0;
+}
+
+.host-panel .action-icon-edit {
+ background-position: -84px 0;
+}
+
+.host-panel .action-icon-remove {
+ background-position: -98px 0;
+}
+
+.host-panel button:disabled .action-icon-start {
+ background-position: 0 -14px;
+}
+
+.host-panel button:disabled .action-icon-stop {
+ background-position: -14px -14px;
+}
+
+.host-panel button:disabled .action-icon-restart {
+ background-position: -28px -14px;
+}
+
+.host-panel button:disabled .action-icon-download {
+ background-position: -42px -14px;
+}
+
+.host-panel button:disabled .action-icon-connect {
+ background-position: -56px -14px;
+}
+
+.host-panel button:disabled .action-icon-add {
+ background-position: -70px -14px;
+}
+
+.host-panel button:disabled .action-icon-edit {
+ background-position: -84px -14px;
+}
+
+.host-panel button:disabled .action-icon-remove {
+ background-position: -98px -14px;
+}
+
+.host-panel .info-container {
+ padding-top: 16px;
+ width: 890px;
+}
+
+.host-panel .section-header {
+ background: #EEE;
+ border-radius: 5px;
+ cursor: pointer;
+ line-height: 2em;
+ margin: 1em 0 1em;
+ padding-left: 6px;
+}
+
+.host-panel .section-header:hover {
+ background: #06f;
+ color: white;
+}
+
+.host-panel .section-content {
+ padding-left: 1em;
+}
+
+.host-panel .section-header .arrow {
+ border-color: transparent;
+ border-style: solid;
+ display: inline-block;
+ margin-right: 6px;
+ width: 0;
+}
+
+.host-panel .section-header[aria-expanded="true"] .arrow {
+ border-top-color: black;
+ border-width: 8px 4px 0;
+ border-bottom: none;
+}
+
+.host-panel .section-header[aria-expanded="true"]:hover .arrow {
+ border-top-color: white;
+}
+
+.host-panel .section-header[aria-expanded="false"] .arrow {
+ border-left-color: black;
+ border-right: none;
+ border-width: 4px 0 4px 8px;
+}
+
+.host-panel .section-header[aria-expanded="false"]:hover .arrow {
+ border-left-color: white;
+}
+
+.host-panel .section-row {
+ line-height: 1.6em;
+ margin-bottom: 1em;
+}
+
+.host-panel .section-label {
+ width: 100px;
+}
+
+#frequency-textbox {
+ width: 20px;
+}
+
+#container-chart-cpu,
+#container-chart-memory,
+#container-chart-disk-io,
+#container-chart-network-io {
+ border: 1px solid white;
+ box-shadow: 2px 2px 2px gray, 2px -2px 2px gray, -2px -2px 2px gray, -2px
+ 2px 2px gray;
+ height: 100px;
+ width: 500px;
+}
+
+#container-chart-disk-io .disk-write,
+#container-chart-network-io .network-sent {
+ stroke: #f80;
+}
+
+/* Debug Report */
+.cell-text-wrapper {
+ margin-left: 10px;
+}
+
+.host-panel #available-reports-grid {
+ border-color: #ddd;
+ height: 400px;
+ width: 850px;
+}
+
+.host-panel select#available-reports-list {
+ width: 300px;
+}
+
+.host-panel select#available-reports-list option {
+ margin: .2em 1em;
+}
+
+.debug-report-name,
+.debug-report-time {
+ width: 424px;
+}
+
+#id-debug-img {
+ background: url(../images/theme-default/kimchi-loading15x15.gif) 12px
+ center no-repeat;
+ padding-left: 23px;
+}
+
+/* End of Debug Report */
+
+/* Software Updates */
+.host-panel #software-updates-grid {
+ border-color: #ddd;
+ height: 300px;
+ width: 850px;
+}
+
+.software-update-name,
+.software-update-repos {
+ width: 224px;
+}
+
+.software-update-version,
+.software-update-arch {
+ width: 200px;
+}
+
+.host-panel #software-updates-progress-textarea {
+ border: 1px solid #ddd;
+ box-sizing: border-box;
+ height: 100px;
+ padding: .2em .5em;
+ resize: vertical;
+ width: 852px;
+}
+/* End of Software Updates */
+
+/* Repository */
+.host-panel #repositories-grid {
+ border-color: #ddd;
+ height: 200px;
+ width: 850px;
+}
+
+.host-panel #repositories-grid .repository-id {
+ width: 120px;
+}
+
+.host-panel #repositories-grid .repository-name {
+ width: 640px;
+}
+
+.host-panel #repositories-grid .repository-enabled {
+ width: 88px;
+}
+
+.host-panel #repositories-grid .repository-baseurl.deb {
+ width: 400px;
+}
+
+.host-panel #repositories-grid .repository-enabled.deb {
+ width: 100px;
+}
+
+.host-panel #repositories-grid .repository-gpgcheck.deb {
+ width: 150px;
+}
+/* End of Repository */
diff --git a/plugins/gingerbase/ui/css/theme-default/report-add.css b/plugins/gingerbase/ui/css/theme-default/report-add.css
new file mode 100644
index 0000000..e9f639d
--- /dev/null
+++ b/plugins/gingerbase/ui/css/theme-default/report-add.css
@@ -0,0 +1,37 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ */
+#report-add-window {
+ height: 300px;
+ width: 400px;
+}
+
+#report-add-window .field {
+ font-size: 12px;
+}
+
+#report-name-textbox {
+ margin: 0;
+ width: 100%;
+}
+
+.info-add-debug-report {
+ font-size: 12px;
+ color: #999999;
+ font-weight: lighter;
+ font-family: 'Helvetica Neue', Helvetica, Arial;
+}
diff --git a/plugins/gingerbase/ui/css/theme-default/report-rename.css b/plugins/gingerbase/ui/css/theme-default/report-rename.css
new file mode 100644
index 0000000..4b13946
--- /dev/null
+++ b/plugins/gingerbase/ui/css/theme-default/report-rename.css
@@ -0,0 +1,39 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2014-2015
+ *
+ * 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.
+ */
+#report-rename-window {
+ height: 300px;
+ width: 400px;
+}
+
+#report-rename-window .field {
+ font-size: 12px;
+}
+
+#report-name-textbox {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ width: 100%;
+}
+
+.info-debug-report-rename {
+ font-size: 12px;
+ color: #999999;
+ font-weight: lighter;
+ font-family: 'Helvetica Neue', Helvetica, Arial;
+}
diff --git a/plugins/gingerbase/ui/css/theme-default/repository-add.css b/plugins/gingerbase/ui/css/theme-default/repository-add.css
new file mode 100644
index 0000000..365ca43
--- /dev/null
+++ b/plugins/gingerbase/ui/css/theme-default/repository-add.css
@@ -0,0 +1,42 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2014-2015
+ *
+ * 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.
+ */
+#repository-add-window {
+ height: 500px;
+ width: 1000px;
+}
+
+#repository-add-window span.required {
+ color: red;
+ padding-left: 5px;
+ vertical-align: top;
+}
+
+#repository-add-window .textbox-wrapper input[type="text"] {
+ box-sizing: border-box;
+ width: 100%;
+}
+
+#repository-add-window .textbox-wrapper label {
+ vertical-align: middle;
+}
+
+#isMirrorLabel {
+ font-size: 14px;
+ font-weight: lighter;
+ font-family: 'Helvetica Neue', Helvetica, Arial;
+}
diff --git a/plugins/gingerbase/ui/css/theme-default/repository-edit.css b/plugins/gingerbase/ui/css/theme-default/repository-edit.css
new file mode 100644
index 0000000..19dff56
--- /dev/null
+++ b/plugins/gingerbase/ui/css/theme-default/repository-edit.css
@@ -0,0 +1,88 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2014-2015
+ *
+ * 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.
+ */
+.yum div#repository-edit-window {
+ height: 680px;
+ width: 1000px;
+}
+
+.deb div#repository-edit-window {
+ height: 480px;
+ width: 1000px;
+}
+
+
+.repository-edit-fieldset {
+ float: left;
+ padding: 0 30px;
+ width: 95%;
+}
+
+.repository-edit-wrapper-label, .repository-edit-wrapper-controls {
+ display: inline-block;
+ height: 30px;
+ line-height: 30px;
+ font-size: 14px;
+ vertical-align: top;
+}
+
+.repository-edit-wrapper-label {
+ margin-top: 10px;
+ width: 150px;
+}
+
+.repository-edit-wrapper-controls label {
+ vertical-align: middle;
+}
+
+.repository-edit-wrapper-controls {
+ width: 100%;
+}
+
+.repository-edit-wrapper-controls input[type="text"] {
+ font-size: 16px;
+ height: 30px;
+ line-height: 30px;
+ padding: 0 10px;
+ width: 100%;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 1px solid #CCCCCC;
+}
+
+
+.repository-edit-wrapper-controls input[type="text"][readonly] {
+ color: #bbb;
+ background-color: #fafafa;
+}
+
+
+.repository-edit-wrapper-controls input[type="text"][disabled] {
+ color: #bbb;
+ background-color: #fafafa;
+ cursor: not-allowed;
+}
+
+
+.deb .yum{
+ display: none;
+}
+
+
+.yum .deb{
+ display: none;
+}
diff --git a/plugins/kimchi/ui/css/theme-default/host.css b/plugins/kimchi/ui/css/theme-default/host.css
deleted file mode 100644
index a0cccb1..0000000
--- a/plugins/kimchi/ui/css/theme-default/host.css
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2013-2014
- *
- * 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.
- */
-.host-panel {
- font-size: 12px;
- margin-bottom: 100px;
-}
-
-.host-panel .logo-container, .host-panel .info-container,
-.host-panel .section-label, .host-panel .section-value {
- display: inline-block;
- vertical-align: top;
-}
-
-.host-panel .section-label {
- display: inline-block;
- margin-right: 1em;
- vertical-align: top;
-}
-
-.host-panel .logo {
- background: url("plugins/kimchi/images/icon-vm.png") no-repeat left top;
- height: 128px;
- width: 128px;
-}
-
-.host-panel .hostname {
- text-decoration: underline;
-}
-
-.host-panel .action-panel {
- margin-top: 2em;
- padding-left: 10px;
-}
-
-.host-panel .button-icon {
- background: url("../images/theme-default/host-icon-sprite.png") no-repeat
- left top;
- display: inline-block;
- height: 12px;
- width: 12px;
-}
-
-.host-panel .action-icon-stop {
- background-position: -14px 0;
-}
-
-.host-panel .action-icon-restart {
- background-position: -28px 0;
-}
-
-.host-panel .action-icon-download {
- background-position: -42px 0;
-}
-
-.host-panel .action-icon-connect {
- background-position: -56px 0;
-}
-
-.host-panel .action-icon-add {
- background-position: -70px 0;
-}
-
-.host-panel .action-icon-edit {
- background-position: -84px 0;
-}
-
-.host-panel .action-icon-remove {
- background-position: -98px 0;
-}
-
-.host-panel button:disabled .action-icon-start {
- background-position: 0 -14px;
-}
-
-.host-panel button:disabled .action-icon-stop {
- background-position: -14px -14px;
-}
-
-.host-panel button:disabled .action-icon-restart {
- background-position: -28px -14px;
-}
-
-.host-panel button:disabled .action-icon-download {
- background-position: -42px -14px;
-}
-
-.host-panel button:disabled .action-icon-connect {
- background-position: -56px -14px;
-}
-
-.host-panel button:disabled .action-icon-add {
- background-position: -70px -14px;
-}
-
-.host-panel button:disabled .action-icon-edit {
- background-position: -84px -14px;
-}
-
-.host-panel button:disabled .action-icon-remove {
- background-position: -98px -14px;
-}
-
-.host-panel .info-container {
- padding-top: 16px;
- width: 890px;
-}
-
-.host-panel .section-header {
- background: #EEE;
- border-radius: 5px;
- cursor: pointer;
- line-height: 2em;
- margin: 1em 0 1em;
- padding-left: 6px;
-}
-
-.host-panel .section-header:hover {
- background: #06f;
- color: white;
-}
-
-.host-panel .section-content {
- padding-left: 1em;
-}
-
-.host-panel .section-header .arrow {
- border-color: transparent;
- border-style: solid;
- display: inline-block;
- margin-right: 6px;
- width: 0;
-}
-
-.host-panel .section-header[aria-expanded="true"] .arrow {
- border-top-color: black;
- border-width: 8px 4px 0;
- border-bottom: none;
-}
-
-.host-panel .section-header[aria-expanded="true"]:hover .arrow {
- border-top-color: white;
-}
-
-.host-panel .section-header[aria-expanded="false"] .arrow {
- border-left-color: black;
- border-right: none;
- border-width: 4px 0 4px 8px;
-}
-
-.host-panel .section-header[aria-expanded="false"]:hover .arrow {
- border-left-color: white;
-}
-
-.host-panel .section-row {
- line-height: 1.6em;
- margin-bottom: 1em;
-}
-
-.host-panel .section-label {
- width: 100px;
-}
-
-#frequency-textbox {
- width: 20px;
-}
-
-#container-chart-cpu,
-#container-chart-memory,
-#container-chart-disk-io,
-#container-chart-network-io {
- border: 1px solid white;
- box-shadow: 2px 2px 2px gray, 2px -2px 2px gray, -2px -2px 2px gray, -2px
- 2px 2px gray;
- height: 100px;
- width: 500px;
-}
-
-#container-chart-disk-io .disk-write,
-#container-chart-network-io .network-sent {
- stroke: #f80;
-}
-
-/* Debug Report */
-.cell-text-wrapper {
- margin-left: 10px;
-}
-
-.host-panel #available-reports-grid {
- border-color: #ddd;
- height: 400px;
- width: 850px;
-}
-
-.host-panel select#available-reports-list {
- width: 300px;
-}
-
-.host-panel select#available-reports-list option {
- margin: .2em 1em;
-}
-
-.debug-report-name,
-.debug-report-time {
- width: 424px;
-}
-
-#id-debug-img {
- background: url(../images/theme-default/kimchi-loading15x15.gif) 12px
- center no-repeat;
- padding-left: 23px;
-}
-
-/* End of Debug Report */
-
-/* Software Updates */
-.host-panel #software-updates-grid {
- border-color: #ddd;
- height: 300px;
- width: 850px;
-}
-
-.software-update-name,
-.software-update-repos {
- width: 224px;
-}
-
-.software-update-version,
-.software-update-arch {
- width: 200px;
-}
-
-.host-panel #software-updates-progress-textarea {
- border: 1px solid #ddd;
- box-sizing: border-box;
- height: 100px;
- padding: .2em .5em;
- resize: vertical;
- width: 852px;
-}
-/* End of Software Updates */
-
-/* Repository */
-.host-panel #repositories-grid {
- border-color: #ddd;
- height: 200px;
- width: 850px;
-}
-
-.host-panel #repositories-grid .repository-id {
- width: 120px;
-}
-
-.host-panel #repositories-grid .repository-name {
- width: 640px;
-}
-
-.host-panel #repositories-grid .repository-enabled {
- width: 88px;
-}
-
-.host-panel #repositories-grid .repository-baseurl.deb {
- width: 400px;
-}
-
-.host-panel #repositories-grid .repository-enabled.deb {
- width: 100px;
-}
-
-.host-panel #repositories-grid .repository-gpgcheck.deb {
- width: 150px;
-}
-/* End of Repository */
diff --git a/plugins/kimchi/ui/css/theme-default/report-add.css b/plugins/kimchi/ui/css/theme-default/report-add.css
deleted file mode 100644
index 8020182..0000000
--- a/plugins/kimchi/ui/css/theme-default/report-add.css
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2013-2015
- *
- * 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.
- */
-#report-add-window {
- height: 300px;
- width: 400px;
-}
-
-#report-add-window .field {
- font-size: 12px;
-}
-
-#report-name-textbox {
- margin: 0;
- width: 100%;
-}
-
-.info-add-debug-report {
- font-size: 12px;
- color: #999999;
- font-weight: lighter;
- font-family: 'Helvetica Neue', Helvetica, Arial;
-}
\ No newline at end of file
diff --git a/plugins/kimchi/ui/css/theme-default/report-rename.css b/plugins/kimchi/ui/css/theme-default/report-rename.css
deleted file mode 100644
index 2fb2698..0000000
--- a/plugins/kimchi/ui/css/theme-default/report-rename.css
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014-2015
- *
- * 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.
- */
-#report-rename-window {
- height: 300px;
- width: 400px;
-}
-
-#report-rename-window .field {
- font-size: 12px;
-}
-
-#report-name-textbox {
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- margin: 0;
- width: 100%;
-}
-
-.info-debug-report-rename {
- font-size: 12px;
- color: #999999;
- font-weight: lighter;
- font-family: 'Helvetica Neue', Helvetica, Arial;
-}
diff --git a/plugins/kimchi/ui/css/theme-default/repository-add.css b/plugins/kimchi/ui/css/theme-default/repository-add.css
deleted file mode 100644
index 4344569..0000000
--- a/plugins/kimchi/ui/css/theme-default/repository-add.css
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014-2015
- *
- * 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.
- */
-#repository-add-window {
- height: 500px;
- width: 1000px;
-}
-
-#repository-add-window span.required {
- color: red;
- padding-left: 5px;
- vertical-align: top;
-}
-
-#repository-add-window .textbox-wrapper input[type="text"] {
- box-sizing: border-box;
- width: 100%;
-}
-
-#repository-add-window .textbox-wrapper label {
- vertical-align: middle;
-}
-
-#isMirrorLabel {
- font-size: 14px;
- font-weight: lighter;
- font-family: 'Helvetica Neue', Helvetica, Arial;
-}
\ No newline at end of file
diff --git a/plugins/kimchi/ui/css/theme-default/repository-edit.css b/plugins/kimchi/ui/css/theme-default/repository-edit.css
deleted file mode 100644
index 383a7fe..0000000
--- a/plugins/kimchi/ui/css/theme-default/repository-edit.css
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014-2015
- *
- * 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.
- */
-.yum div#repository-edit-window {
- height: 680px;
- width: 1000px;
-}
-
-.deb div#repository-edit-window {
- height: 480px;
- width: 1000px;
-}
-
-
-.repository-edit-fieldset {
- float: left;
- padding: 0 30px;
- width: 95%;
-}
-
-.repository-edit-wrapper-label, .repository-edit-wrapper-controls {
- display: inline-block;
- height: 30px;
- line-height: 30px;
- font-size: 14px;
- vertical-align: top;
-}
-
-.repository-edit-wrapper-label {
- margin-top: 10px;
- width: 150px;
-}
-
-.repository-edit-wrapper-controls label {
- vertical-align: middle;
-}
-
-.repository-edit-wrapper-controls {
- width: 100%;
-}
-
-.repository-edit-wrapper-controls input[type="text"] {
- font-size: 16px;
- height: 30px;
- line-height: 30px;
- padding: 0 10px;
- width: 100%;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- border: 1px solid #CCCCCC;
-}
-
-
-.repository-edit-wrapper-controls input[type="text"][readonly] {
- color: #bbb;
- background-color: #fafafa;
-}
-
-
-.repository-edit-wrapper-controls input[type="text"][disabled] {
- color: #bbb;
- background-color: #fafafa;
- cursor: not-allowed;
-}
-
-
-.deb .yum{
- display: none;
-}
-
-
-.yum .deb{
- display: none;
-}
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/ui/images/Makefile.am | 22 +++++++++++++++++++++
plugins/gingerbase/ui/images/icon-vm.png | Bin 0 -> 2976 bytes
plugins/gingerbase/ui/images/logo.ico | Bin 0 -> 1214 bytes
.../gingerbase/ui/images/theme-default/Makefile.am | 20 +++++++++++++++++++
.../ui/images/theme-default/host-icon-sprite.png | Bin 0 -> 1034 bytes
.../images/theme-default/kimchi-loading15x15.gif | Bin 0 -> 1653 bytes
6 files changed, 42 insertions(+)
create mode 100644 plugins/gingerbase/ui/images/Makefile.am
create mode 100644 plugins/gingerbase/ui/images/icon-vm.png
create mode 100644 plugins/gingerbase/ui/images/logo.ico
create mode 100644 plugins/gingerbase/ui/images/theme-default/Makefile.am
create mode 100644 plugins/gingerbase/ui/images/theme-default/host-icon-sprite.png
create mode 100644 plugins/gingerbase/ui/images/theme-default/kimchi-loading15x15.gif
diff --git a/plugins/gingerbase/ui/images/Makefile.am b/plugins/gingerbase/ui/images/Makefile.am
new file mode 100644
index 0000000..34109bd
--- /dev/null
+++ b/plugins/gingerbase/ui/images/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+SUBDIRS = theme-default
+
+imagedir = $(datadir)/wok/plugins/gingerbase/ui/images
+
+dist_image_DATA = *.png *.ico
diff --git a/plugins/gingerbase/ui/images/icon-vm.png b/plugins/gingerbase/ui/images/icon-vm.png
new file mode 100644
index 0000000000000000000000000000000000000000..50dac50c5a0ee59f4e79170434f53bb3b94390e3
GIT binary patch
literal 2976
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
literal 0
HcmV?d00001
diff --git a/plugins/gingerbase/ui/images/logo.ico b/plugins/gingerbase/ui/images/logo.ico
new file mode 100644
index 0000000000000000000000000000000000000000..446143f066a60f479b2cb8f8d04ab3c97ff60e56
GIT binary patch
literal 1214
zcma)*3rLeu6vyu=X_;nPV)$&PPF)r(wTQ|dTGOUtnOdf0mZ=cR#99xbub1{BqnD9^
z^Z>PV6h)fUny6#CN{3di2P{*h2ek@Oq0a4o*=I}2Iv?krbAR`oKi_vQA0faVCr83o
zF{!X2#Dx$Nz}$(sm^sgR<Jj30yCMGpMl1z837jm3H1$<DU4IV>Tbdw<FM-;Hi<#et
z=I}n~iB^qh8{XzCNyvT<I;$&znmT~?eFXZgAE@Om?1h(6Iq+2e1-ca!zOAO7n3*};
zXq6n?2kF<!f%cez;-Fgx4$e+xo{WR;oqhc_OW;#nF!Zm|JK}m8gi6aC+##`QA5PmJ
zfeZ(o(}%&&1P5#*1vVbnssk~XhN5bNz=T)>5^+BS=V54SJ|^z)5I7%kU;>-skiq*{
z5B^=eF<T)pK9+)bV;9UCK>t-HOi+bkR-wK1xpfXL;S<?ho1pQ5gYzxiHR~=e+XHS(
zYe7QMZb3IjWV72H-JpD~6z(tbgwn1o$D2s!YteWNJS!i9l%iW?+34Lvr*KL(6{_X|
zobEjAb{lD|4qsmYvGF;~r0Aunc#>=c)0W4s|D{#(q9~vaX{rGms=((Wn*~LeWqIu}
zkGvlzwaxjL25hey2bVweu<xK*t+@Oa_)UKTK^x4IwmKMOjm@oL`l)}_NGPy}tdb}w
zHa>H`ji2N7m}Xsj#j7-`#=Dv}`)h&)9th^&^dR%>WH_MB8KcIXVf8p&s1xD|_k)R-
zrk$Z0-|Gf}&4Au$KhU$k?3YR5by~D9M&-q$=ocNz4!IY&p7%OxuJf&+Ei-G(23hU;
zHTLhMtjFR9ExVbPQVLzBFlROcIZ|#jmX6fm_hsVa3XP<aKAeAt8dqp&oBW=V^+d>Q
zkcNnm%Ds?ggd^Rv2~9_o82cv;p6LSBD_g_s-n1uZ8#<EeLwTm~LE9J!Zdo@M&*jFU
zoM+Z%F5)(8$8y`Wz~%Pd;Nlx@aH{<lk}}CcRMRXZMD&%Uhz3Ze$jpg#uec1IlFMPW
MDQ4iZEk#_;cNAJoqyPW_
literal 0
HcmV?d00001
diff --git a/plugins/gingerbase/ui/images/theme-default/Makefile.am b/plugins/gingerbase/ui/images/theme-default/Makefile.am
new file mode 100644
index 0000000..1fc98a3
--- /dev/null
+++ b/plugins/gingerbase/ui/images/theme-default/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+imagedir = $(datadir)/wok/plugins/gingerbase/ui/images/theme-default
+
+dist_image_DATA = *.png *.gif
diff --git a/plugins/gingerbase/ui/images/theme-default/host-icon-sprite.png b/plugins/gingerbase/ui/images/theme-default/host-icon-sprite.png
new file mode 100644
index 0000000000000000000000000000000000000000..da1cd3f2562a5905a526446bcc8fc18bea06c734
GIT binary patch
literal 1034
zcmV+l1oiugP)<h;3K|Lk000e1NJLTq003?P000^Y1^@s6R_JLg00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3t>283nlSO%wnC03B&m
zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00VAGL_t(&-tAexPZU8E
z{`PW&1_K4^OH?eZvAftnL5(5A#KOeLoryLc6xvbn7idfrLqY*-qLqe%L|Ypgg$i36
z(dbjkBSwPpvl)`j+}`fa-u^(2muzw~^LF01^X{8@Zysm_jzUN2Fh`A~Pjc5hKFL~I
z+Z}W#NVXC{Y>}KuY7;pNNspw5tO0f7IFeP8D-r4|QCJ)u*CII!fKd<0S(2@?9Y=DD
z<R_9!@=PZG-V7bLl9r_@9LG4P1)Rq+9Y?Z{<af)|`7qr|9MBxV)c`acbbCfT&pQC{
z%j$mX<hUFic+YA-2XN6mak_;`9K$+|XK?mUTkTPj&CIsEF5cU<hDHKoBi7iJvbM^i
z*Tus8!czN9a>$8s1<N-8RRC8_`$GnE?vb2Jz_2+0dq-p)ngI3#?S24@sTh|bQ+;d5
zH%uEL`5>TIAzA4bYua?6Ovagcnjz|Ai5Da5sM6$aQ8E^l$E3xZb^24#IlFC{{Sv!X
zdPZ`HoHhZhMyRZj95%WP!xe@3m<5`5?4yL_;89M%??>JmIN;83>nfaa#_lVU`y{Vr
z67H9I<>i9?7&xxqKI>29L{6meTNYI%0Emdw!G8E&QVE-1Rcq#UWYToK0q{&jHq+Sd
zU}FNnI)H(=d=J2sh`dW;({;UEMO8gxC-hsZHn6+_8Cz8V%OQ7`GXQ2(brnD(BP{Cx
z=6&CP5~WnH*XNDysWO?Qs#^et%pdJCfS-x(Dpi%PY)T=^F&E8^3~dd>ISl}e&Opgd
z>jQ8Oz$E}@0sK%^x9UJ%4m8_i!$G%aL_`u-2dYWWvJAJ-u<F2q`TaRWw_eh}pDyEv
z>yyFRKMi0z&>mIQrid&iVqA_4oV3~tBC;bQJ7_QMEcIHnC?X#LytKL>s%r052kP~D
zY<0ls{5RDBFDZ*`N~hftRMj`pW7t-CT|^!ky^4A7udB@<*0kwB7vI-)nq=l_0(fe5
zkBi7gBF9Bcoc6<NF-#g4k&RAyOj^9%=3_<YamMC0fYCtLR}r}oxmAjYmj^hLTt`+1
zRCTyh@)?Dxh{Y^e+NuMpIv5&N7WDCVBl5M=0B!+z9Oa;-3`iRt9+5!hy{f(jFa_X-
zh^)1x14RNBkv{-#tLjpkD=*u5$B=13xe4GPc-8~JKL<=Y@!??g0{{R307*qoM6N<$
Ef;%S0RsaA1
literal 0
HcmV?d00001
diff --git a/plugins/gingerbase/ui/images/theme-default/kimchi-loading15x15.gif b/plugins/gingerbase/ui/images/theme-default/kimchi-loading15x15.gif
new file mode 100644
index 0000000000000000000000000000000000000000..aaa4f85a0560dcb59d4bb70154a9144417aae926
GIT binary patch
literal 1653
zcmZ?wbhEHb6krfwcz&0`fx$V3fzy*s(30KRoyj+pP0*a%B9B4Xkl)0X$H9|dJd8D}
zo<ZDBSSFF7*jZT0OhTc9Q7nTgk3rREDud*7MxI>8&Ju=(ISf+93MQOdag7Y~1hic{
z8T#{u6)cohTNtM^7+W$J#50+i$>`cj=^O84k`pyFn#{1$Ur8%a&i6QjtgEuCfQhw>
zh77A6gQ$gokA@_-E$2dp^>Sv?oMy2Rvbjr`S1FsTIOwZtnQE_R*m$2oUC1KhF@wT7
z#vS5TPBXdYi#jqhIC*|#&}Xr)`pY25?86wZk@$x}Azj<#4}*rAu{Vcnu(UhJUj}_&
zGsWW!mvn9Irz#jqI|d0m<_4Kq$D4?%x#%8bJFV#KwS(tqvz9fdTmMyIV-~+CKU<>^
zTODbStQ;$e9OEp8kfaJrQB(IojUXN?PfLA&1ruKlE$<Ybz{O>Dnh|c+IZj3l84L_z
z+ZiGkGQ_8gg)Ec{ZB|VbVu;;p8Ir+}TJcZ8St};J)7e)ugI_wAy~kUSA^Gq;v#nzB
zo6<uZ9TN=&l6EuXHCx41&a>X&p6tkweNrgxtWY&KLrITauKX0wDL;*ZSPITdWuHCl
z7S2#|o1wN-skGcGd-j}YNrw7v?ff;HUH7htly%83WoVk=SR=P3TA8QnVNZtdt|Td^
z4tBRT;l<gOCKJSuq^f)gOk<w3o@>%d>z1S5joVY2V;E+x4Cszxn7#dGQiZ}|@k{wq
ze5<)H#@>~ixp+mvx~nC^*GqKvReGJxyd=J8Z|Hp0)LG8{Q?7j|(|J;(^S(;?X-VtX
z{Ej0{$vo>WNUb@RHtpd12Emt&YTJ7ve>HRaY*WxWB$BmO<7<oVrMfE&d+u577yI7H
zdv${AuTG6`J!)PD74G*(XRN&WpI$)mKewN2NU*bGfUA+70W%{51B2pE7EU3C{|q`n
zHZYS2Ffee)GW_S1@z}87U^9oXR?LYF3lFyoD0|KE*tqCuBO@a=9coY=j!k!j<aB0i
zc<9u4hfS*nq@!EHIP1=djf>s;v1`@Ep>^V-!(BqkNq@`*laF`Fn|H~0Zd!7(0h{Hf
zM42F;^~FLc<zy?bzucZ38xtI`nPf?{Nk)rZI#dI#a%KcAJ>AR3%!JJ}Tb!mjcL>V+
z&Dl|qe5_B>QtnB`#6;Il`9QBD85<TlO;@&EX5(p~fXzf_h=~b~c^s@tPtrczcWUF8
zl$)Y)G4W`lxU|rj6$Xj!z4E$EBA!9O@K)2-%Q<1V)NzW4rQ4Q{qQ@s^Df6<iU^CYa
zVJ@$f%ZvcUgKd2BZZRt+Jap&~-N|`mN5EtIK6cxtnin4*pO_@<TefG1V5)aFPwc)q
zGcP6L3rdhvk&Uz{R5;QluAbJjV`8#<o~Uk<jm4+?Cwh5=mxY`NNH{%#3wux+Vs{|2
sX~(-16pJpOC{Q`pufUDnn>s|9;tWh`McC5^G?`;~3OSj#0+YEl0GD)I?EnA(
literal 0
HcmV?d00001
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/ui/js/Makefile.am | 27 +
plugins/gingerbase/ui/js/src/gingerbase.api.js | 371 +++++++++
plugins/gingerbase/ui/js/src/gingerbase.host.js | 859 +++++++++++++++++++++
plugins/gingerbase/ui/js/src/gingerbase.main.js | 26 +
.../ui/js/src/gingerbase.report_add_main.js | 72 ++
.../ui/js/src/gingerbase.report_rename_main.js | 66 ++
.../ui/js/src/gingerbase.repository_add_main.js | 96 +++
.../ui/js/src/gingerbase.repository_edit_main.js | 74 ++
plugins/kimchi/ui/js/src/kimchi.host.js | 858 --------------------
plugins/kimchi/ui/js/src/kimchi.report_add_main.js | 72 --
.../kimchi/ui/js/src/kimchi.report_rename_main.js | 66 --
.../kimchi/ui/js/src/kimchi.repository_add_main.js | 96 ---
.../ui/js/src/kimchi.repository_edit_main.js | 74 --
13 files changed, 1591 insertions(+), 1166 deletions(-)
create mode 100644 plugins/gingerbase/ui/js/Makefile.am
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.api.js
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.host.js
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.main.js
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.report_add_main.js
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.report_rename_main.js
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.repository_add_main.js
create mode 100644 plugins/gingerbase/ui/js/src/gingerbase.repository_edit_main.js
delete mode 100644 plugins/kimchi/ui/js/src/kimchi.host.js
delete mode 100644 plugins/kimchi/ui/js/src/kimchi.report_add_main.js
delete mode 100644 plugins/kimchi/ui/js/src/kimchi.report_rename_main.js
delete mode 100644 plugins/kimchi/ui/js/src/kimchi.repository_add_main.js
delete mode 100644 plugins/kimchi/ui/js/src/kimchi.repository_edit_main.js
diff --git a/plugins/gingerbase/ui/js/Makefile.am b/plugins/gingerbase/ui/js/Makefile.am
new file mode 100644
index 0000000..fa7f3cf
--- /dev/null
+++ b/plugins/gingerbase/ui/js/Makefile.am
@@ -0,0 +1,27 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+EXTRA_DIST = src
+
+jsdir = $(datadir)/wok/plugins/gingerbase/ui/js
+
+dist_js_DATA = gingerbase.min.js $(filter-out gingerbase.min.js, $(wildcard *.js))
+
+gingerbase.min.js: src/*.js
+ cat $(sort $^) > $@
+
+CLEANFILES = gingerbase.min.js
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.api.js b/plugins/gingerbase/ui/js/src/gingerbase.api.js
new file mode 100644
index 0000000..a3aca4a
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.api.js
@@ -0,0 +1,371 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ */
+var kimchi = {
+
+ widget: {},
+
+ trackingTasks: [],
+
+ /**
+ *
+ * Get host capabilities
+ * suc: callback if succeed err: callback if failed
+ */
+ getCapabilities : function(suc, err, done) {
+ done = typeof done !== 'undefined' ? done: function(){};
+ wok.requestJSON({
+ url : "plugins/gingerbase/host/capabilities",
+ type : "GET",
+ contentType : "application/json",
+ dataType : "json",
+ success: suc,
+ error: err,
+ complete: done
+ });
+ },
+
+ /**
+ * Get the i18 strings.
+ */
+ getI18n: function(suc, err, url, sync) {
+ wok.requestJSON({
+ url : url ? url : 'plugins/gingerbase/i18n.json',
+ type : 'GET',
+ resend: true,
+ dataType : 'json',
+ async : !sync,
+ success : suc,
+ error: err
+ });
+ },
+
+ /**
+ * Get the host static information.
+ */
+ getHost: function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host',
+ type : 'GET',
+ resend: true,
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error: err
+ });
+ },
+
+ /**
+ * Get the dynamic host stats (usually used for monitoring).
+ */
+ getHostStats : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/stats',
+ type : 'GET',
+ contentType : 'application/json',
+ headers: {'Wok-Robot': 'wok-robot'},
+ dataType : 'json',
+ success : suc,
+ error: err
+ });
+ },
+
+ /**
+ * Get the historic host stats.
+ */
+ getHostStatsHistory : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/stats/history',
+ type : 'GET',
+ resend: true,
+ contentType : 'application/json',
+ headers: {'Wok-Robot': 'wok-robot'},
+ dataType : 'json',
+ success : suc,
+ error: err
+ });
+ },
+
+ getTask : function(taskId, suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/tasks/' + encodeURIComponent(taskId),
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ getTasksByFilter : function(filter, suc, err, sync) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/tasks?' + filter,
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ async : !sync,
+ success : suc,
+ error : err
+ });
+ },
+
+ listReports : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/debugreports',
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ resend: true,
+ success : suc,
+ error : err
+ });
+ },
+
+ trackTask : function(taskID, suc, err, progress) {
+ var onTaskResponse = function(result) {
+ var taskStatus = result['status'];
+ switch(taskStatus) {
+ case 'running':
+ progress && progress(result);
+ setTimeout(function() {
+ kimchi.trackTask(taskID, suc, err, progress);
+ }, 2000);
+ break;
+ case 'finished':
+ suc && suc(result);
+ break;
+ case 'failed':
+ err && err(result);
+ break;
+ default:
+ break;
+ }
+ };
+
+ kimchi.getTask(taskID, onTaskResponse, err);
+ if(kimchi.trackingTasks.indexOf(taskID) < 0)
+ kimchi.trackingTasks.push(taskID);
+ },
+
+ createReport: function(settings, suc, err, progress) {
+ var onResponse = function(data) {
+ taskID = data['id'];
+ kimchi.trackTask(taskID, suc, err, progress);
+ };
+
+ wok.requestJSON({
+ url : 'plugins/gingerbase/debugreports',
+ type : "POST",
+ contentType : "application/json",
+ data : JSON.stringify(settings),
+ dataType : "json",
+ success : onResponse,
+ error : err
+ });
+ },
+
+ renameReport : function(name, settings, suc, err) {
+ $.ajax({
+ url : "plugins/gingerbase/debugreports/" + encodeURIComponent(name),
+ type : 'PUT',
+ contentType : 'application/json',
+ data : JSON.stringify(settings),
+ dataType : 'json',
+ success: suc,
+ error: err
+ });
+ },
+
+ deleteReport: function(settings, suc, err) {
+ var reportName = encodeURIComponent(settings['name']);
+ wok.requestJSON({
+ url : 'plugins/gingerbase/debugreports/' + reportName,
+ type : 'DELETE',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ downloadReport: function(settings, suc, err) {
+ window.open(settings['file']);
+ },
+
+ shutdown: function(settings, suc, err) {
+ var reboot = settings && settings['reboot'] === true;
+ var url = 'plugins/gingerbase/host/' + (reboot ? 'reboot' : 'shutdown');
+ wok.requestJSON({
+ url : url,
+ type : 'POST',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ listHostPartitions : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/partitions',
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ listSoftwareUpdates : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/packagesupdate',
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ resend: true,
+ success : suc,
+ error : err
+ });
+ },
+
+ updateSoftware : function(suc, err, progress) {
+ var taskID = -1;
+ var onResponse = function(data) {
+ taskID = data['id'];
+ trackTask();
+ };
+
+ var trackTask = function() {
+ kimchi.getTask(taskID, onTaskResponse, err);
+ };
+
+ var onTaskResponse = function(result) {
+ var taskStatus = result['status'];
+ switch(taskStatus) {
+ case 'running':
+ progress && progress(result);
+ setTimeout(function() {
+ trackTask();
+ }, 200);
+ break;
+ case 'finished':
+ case 'failed':
+ suc(result);
+ break;
+ default:
+ break;
+ }
+ };
+
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/swupdate',
+ type : "POST",
+ contentType : "application/json",
+ dataType : "json",
+ success : onResponse,
+ error : err
+ });
+ },
+
+ createRepository : function(settings, suc, err) {
+ wok.requestJSON({
+ url : "plugins/gingerbase/host/repositories",
+ type : "POST",
+ contentType : "application/json",
+ data : JSON.stringify(settings),
+ dataType : "json",
+ success: suc,
+ error: err
+ });
+ },
+
+ retrieveRepository : function(repository, suc, err) {
+ var reposID = encodeURIComponent(repository);
+ wok.requestJSON({
+ url : "plugins/gingerbase/host/repositories/" + reposID,
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ updateRepository : function(name, settings, suc, err) {
+ var reposID = encodeURIComponent(name);
+ $.ajax({
+ url : "plugins/gingerbase/host/repositories/" + reposID,
+ type : 'PUT',
+ contentType : 'application/json',
+ data : JSON.stringify(settings),
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ enableRepository : function(name, enable, suc, err) {
+ var reposID = encodeURIComponent(name);
+ $.ajax({
+ url : "plugins/gingerbase/host/repositories/" + reposID +
+ '/' + (enable === true ? 'enable' : 'disable'),
+ type : 'POST',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ deleteRepository : function(repository, suc, err) {
+ var reposID = encodeURIComponent(repository);
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/repositories/' + reposID,
+ type : 'DELETE',
+ contentType : 'application/json',
+ dataType : 'json',
+ success : suc,
+ error : err
+ });
+ },
+
+ listRepositories : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/repositories',
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ resend: true,
+ success : suc,
+ error : err
+ });
+ },
+
+ getCPUInfo : function(suc, err) {
+ wok.requestJSON({
+ url : 'plugins/gingerbase/host/cpuinfo',
+ type : 'GET',
+ contentType : 'application/json',
+ dataType : 'json',
+ resend : true,
+ success : suc,
+ error : err ? err : function(data) {
+ wok.message.error(data.responseJSON.reason);
+ }
+ });
+ }
+};
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.host.js b/plugins/gingerbase/ui/js/src/gingerbase.host.js
new file mode 100644
index 0000000..8808e17
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.host.js
@@ -0,0 +1,859 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ */
+kimchi.host={};
+
+kimchi.host_main = function() {
+ var expand = function(header, toExpand) {
+ var controlledNode = $(header).attr('aria-controls');
+ $('#' + controlledNode)[toExpand ? 'removeClass' : 'addClass']('hidden');
+ $(header).attr('aria-expanded', toExpand ? 'true' : 'false');
+ };
+
+ var repositoriesGrid = null;
+ var initRepositoriesGrid = function(repo_type) {
+ var gridFields=[];
+ if (repo_type == "yum") {
+ gridFields=[{
+ name: 'repo_id',
+ label: i18n['GGBREPO6004M'],
+ 'class': 'repository-id'
+ }, {
+ name: 'config[repo_name]',
+ label: i18n['GGBREPO6005M'],
+ 'class': 'repository-name'
+ }, {
+ name: 'enabled',
+ label: i18n['GGBREPO6009M'],
+ 'class': 'repository-enabled'
+ }];
+ }
+ else if (repo_type == "deb") {
+ gridFields=[{
+ name: 'baseurl',
+ label: i18n['GGBREPO6006M'],
+ makeTitle: true,
+ 'class': 'repository-baseurl deb'
+ }, {
+ name: 'enabled',
+ label: i18n['GGBREPO6009M'],
+ 'class': 'repository-enabled deb'
+ }, {
+ name: 'config[dist]',
+ label: "dist",
+ 'class': 'repository-gpgcheck deb'
+ }, {
+ name: 'config[comps]',
+ label: "comps",
+ 'class': 'repository-gpgcheck deb'
+ }];
+ }
+ else {
+ gridFields=[{
+ name: 'repo_id',
+ label: i18n['GGBREPO6004M'],
+ 'class': 'repository-id'
+ }, {
+ name: 'enabled',
+ label: i18n['GGBREPO6009M'],
+ 'class': 'repository-enabled'
+ }, {
+ name: 'baseurl',
+ label: i18n['GGBREPO6006M'],
+ makeTitle: true,
+ 'class': 'repository-baseurl'
+ }];
+ }
+ repositoriesGrid = new wok.widget.Grid({
+ container: 'repositories-grid-container',
+ id: 'repositories-grid',
+ title: i18n['GGBREPO6003M'],
+ toolbarButtons: [{
+ id: 'repositories-grid-add-button',
+ label: i18n['GGBREPO6012M'],
+ onClick: function(event) {
+ wok.window.open({url:'plugins/gingerbase/repository-add.html',
+ class: repo_type});
+ }
+ }, {
+ id: 'repositories-grid-enable-button',
+ label: i18n['GGBREPO6016M'],
+ disabled: true,
+ onClick: function(event) {
+ var repository = repositoriesGrid.getSelected();
+ if(!repository) {
+ return;
+ }
+ var name = repository['repo_id'];
+ var enable = !repository['enabled'];
+ $(this).prop('disabled', true);
+ kimchi.enableRepository(name, enable, function() {
+ wok.topic('kimchi/repositoryUpdated').publish();
+ });
+ }
+ }, {
+ id: 'repositories-grid-edit-button',
+ label: i18n['GGBREPO6013M'],
+ disabled: true,
+ onClick: function(event) {
+ var repository = repositoriesGrid.getSelected();
+ if(!repository) {
+ return;
+ }
+ kimchi.selectedRepository = repository['repo_id'];
+ wok.window.open({url:'plugins/gingerbase/repository-edit.html',
+ class: repo_type});
+ }
+ }, {
+ id: 'repositories-grid-remove-button',
+ label: i18n['GGBREPO6014M'],
+ disabled: true,
+ onClick: function(event) {
+ var repository = repositoriesGrid.getSelected();
+ if(!repository) {
+ return;
+ }
+
+ var settings = {
+ title : i18n['GGBREPO6001M'],
+ content : i18n['GGBREPO6002M'],
+ confirm : i18n['GGBAPI6004M'],
+ cancel : i18n['GGBAPI6003M']
+ };
+
+ wok.confirm(settings, function() {
+ kimchi.deleteRepository(
+ repository['repo_id'],
+ function(result) {
+ wok.topic('kimchi/repositoryDeleted').publish(result);
+ }, function(error) {
+ }
+ );
+ });
+ }
+ }],
+ onRowSelected: function(row) {
+ var repository = repositoriesGrid.getSelected();
+ if(!repository) {
+ return;
+ }
+ $('#repositories-grid-remove-button').prop('disabled', false);
+ $('#repositories-grid-edit-button').prop('disabled', false);
+ var enabled = repository['enabled'];
+ $('#repositories-grid-enable-button')
+ .text(i18n[enabled ? 'GGBREPO6017M' : 'GGBREPO6016M'])
+ .prop('disabled', false);
+ },
+ frozenFields: [],
+ fields: gridFields,
+ data: listRepositories
+ });
+ };
+
+ var listRepositories = function(gridCallback) {
+ kimchi.listRepositories(function(repositories) {
+ if($.isFunction(gridCallback)) {
+ gridCallback(repositories);
+ }
+ else {
+ if(repositoriesGrid) {
+ repositoriesGrid.setData(repositories);
+ }
+ else {
+ initRepositoriesGrid();
+ repositoriesGrid.setData(repositories);
+ }
+ }
+ },
+ function(error) {
+ var message = error && error['responseJSON'] && error['responseJSON']['reason'];
+
+ if($.isFunction(gridCallback)) {
+ gridCallback([]);
+ }
+ repositoriesGrid &&
+ repositoriesGrid.showMessage(message || i18n['GGBUPD6008M']);
+ });
+
+ $('#repositories-grid-remove-button').prop('disabled', true);
+ $('#repositories-grid-edit-button').prop('disabled', true);
+ $('#repositories-grid-enable-button').prop('disabled', true);
+ };
+
+ var softwareUpdatesGridID = 'software-updates-grid';
+ var softwareUpdatesGrid = null;
+ var progressAreaID = 'software-updates-progress-textarea';
+ var reloadProgressArea = function(result) {
+ var progressArea = $('#' + progressAreaID)[0];
+ $(progressArea).text(result['message']);
+ var scrollTop = $(progressArea).prop('scrollHeight');
+ $(progressArea).prop('scrollTop', scrollTop);
+ };
+
+ var initSoftwareUpdatesGrid = function(softwareUpdates) {
+ softwareUpdatesGrid = new wok.widget.Grid({
+ container: 'software-updates-grid-container',
+ id: softwareUpdatesGridID,
+ title: i18n['GGBUPD6001M'],
+ rowSelection: 'disabled',
+ toolbarButtons: [{
+ id: softwareUpdatesGridID + '-update-button',
+ label: i18n['GGBUPD6006M'],
+ disabled: true,
+ onClick: function(event) {
+ var updateButton = $(this);
+ var progressArea = $('#' + progressAreaID)[0];
+ $('#software-updates-progress-container').removeClass('hidden');
+ $(progressArea).text('');
+ !wok.isElementInViewport(progressArea) &&
+ progressArea.scrollIntoView();
+ $(updateButton).text(i18n['GGBUPD6007M']).prop('disabled', true);
+
+ kimchi.updateSoftware(function(result) {
+ reloadProgressArea(result);
+ $(updateButton).text(i18n['GGBUPD6006M']).prop('disabled', false);
+ wok.topic('kimchi/softwareUpdated').publish({
+ result: result
+ });
+ }, function(error) {
+ var message = error && error['responseJSON'] && error['responseJSON']['reason'];
+ wok.message.error(message || i18n['GGBUPD6009M']);
+ $(updateButton).text(i18n['GGBUPD6006M']).prop('disabled', false);
+ }, reloadProgressArea);
+ }
+ }],
+ frozenFields: [],
+ fields: [{
+ name: 'package_name',
+ label: i18n['GGBUPD6002M'],
+ 'class': 'software-update-name'
+ }, {
+ name: 'version',
+ label: i18n['GGBUPD6003M'],
+ 'class': 'software-update-version'
+ }, {
+ name: 'arch',
+ label: i18n['GGBUPD6004M'],
+ 'class': 'software-update-arch'
+ }, {
+ name: 'repository',
+ label: i18n['GGBUPD6005M'],
+ 'class': 'software-update-repos'
+ }],
+ data: listSoftwareUpdates
+ });
+ };
+
+ var listSoftwareUpdates = function(gridCallback) {
+ kimchi.listSoftwareUpdates(function(softwareUpdates) {
+ if($.isFunction(gridCallback)) {
+ gridCallback(softwareUpdates);
+ }
+ else {
+ if(softwareUpdatesGrid) {
+ softwareUpdatesGrid.setData(softwareUpdates);
+ }
+ else {
+ initSoftwareUpdatesGrid(softwareUpdates);
+ }
+ }
+
+ var updateButton = $('#' + softwareUpdatesGridID + '-update-button');
+ $(updateButton).prop('disabled', softwareUpdates.length === 0);
+ }, function(error) {
+ var message = error && error['responseJSON'] && error['responseJSON']['reason'];
+ if($.isFunction(gridCallback)) {
+ gridCallback([]);
+ }
+ softwareUpdatesGrid &&
+ softwareUpdatesGrid.showMessage(message || i18n['GGBUPD6008M']);
+ });
+ };
+
+ var reportGridID = 'available-reports-grid';
+ var reportGrid = null;
+ var enableReportButtons = function(toEnable) {
+ var buttonID = '#{grid}-{btn}-button';
+ $.each(['rename', 'remove', 'download'], function(i, n) {
+ $(wok.substitute(buttonID, {
+ grid: reportGridID,
+ btn: n
+ })).prop('disabled', !toEnable);
+ });
+ };
+ var initReportGrid = function(reports) {
+ reportGrid = new wok.widget.Grid({
+ container: 'available-reports-grid-container',
+ id: reportGridID,
+ title: i18n['GGBDR6002M'],
+ toolbarButtons: [{
+ id: reportGridID + '-generate-button',
+ label: i18n['GGBDR6006M'],
+ onClick: function(event) {
+ wok.window.open('plugins/gingerbase/report-add.html');
+ }
+ }, {
+ id: reportGridID + '-rename-button',
+ label: i18n['GGBDR6008M'],
+ disabled: true,
+ onClick: function(event) {
+ var report = reportGrid.getSelected();
+ if(!report) {
+ return;
+ }
+
+ kimchi.selectedReport = report['name'];
+ wok.window.open('plugins/gingerbase/report-rename.html');
+ }
+ }, {
+ id: reportGridID + '-remove-button',
+ label: i18n['GGBDR6009M'],
+ disabled: true,
+ onClick: function(event) {
+ var report = reportGrid.getSelected();
+ if(!report) {
+ return;
+ }
+
+ var settings = {
+ title : i18n['GGBAPI6004M'],
+ content : i18n['GGBDR6001M'],
+ confirm : i18n['GGBAPI6002M'],
+ cancel : i18n['GGBAPI6003M']
+ };
+
+ wok.confirm(settings, function() {
+ kimchi.deleteReport({
+ name: report['name']
+ }, function(result) {
+ listDebugReports();
+ }, function(error) {
+ wok.message.error(error.responseJSON.reason);
+ });
+ });
+ }
+ }, {
+ id: reportGridID + '-download-button',
+ label: i18n['GGBDR6010M'],
+ disabled: true,
+ onClick: function(event) {
+ var report = reportGrid.getSelected();
+ if(!report) {
+ return;
+ }
+
+ kimchi.downloadReport({
+ file: report['uri']
+ });
+ }
+ }],
+ onRowSelected: function(row) {
+ var report = reportGrid.getSelected();
+ // Only enable report buttons if the selected line is not a
+ // pending report
+ if (report['time'] == i18n['GGBDR6007M']) {
+ var gridElement = $('#'+ reportGridID);
+ var row = $('tr:contains(' + report['name'] + ')', gridElement);
+ enableReportButtons(false);
+ row.attr('class', '');
+ }
+ else {
+ enableReportButtons(true);
+ }
+ },
+ frozenFields: [],
+ fields: [{
+ name: 'name',
+ label: i18n['GGBDR6003M'],
+ 'class': 'debug-report-name'
+ }, {
+ name: 'time',
+ label: i18n['GGBDR6005M'],
+ 'class': 'debug-report-time'
+ }],
+ data: reports
+ });
+ };
+
+ var getPendingReports = function() {
+ var reports = []
+ var filter = 'status=running&target_uri=' + encodeURIComponent('^/plugins/gingerbase/debugreports/*')
+
+ kimchi.getTasksByFilter(filter, function(tasks) {
+ for(var i = 0; i < tasks.length; i++) {
+ reportName = tasks[i].target_uri.replace(/^\/plugins\/gingerbase\/debugreports\//, '') || i18n['GGBDR6012M'];
+ reports.push({'name': reportName, 'time': i18n['GGBDR6007M']})
+
+ if(kimchi.trackingTasks.indexOf(tasks[i].id) >= 0) {
+ continue;
+ }
+
+ kimchi.trackTask(tasks[i].id, function(result) {
+ wok.topic('kimchi/debugReportAdded').publish();
+ }, function(result) {
+ // Error message from Async Task status
+ if (result['message']) {
+ var errText = result['message'];
+ }
+ // Error message from standard kimchi exception
+ else {
+ var errText = result['responseJSON']['reason'];
+ }
+ result && wok.message.error(errText);
+ wok.topic('kimchi/debugReportAdded').publish();
+ }, null);
+ }
+ }, null, true);
+
+ return reports;
+ };
+
+ var listDebugReports = function() {
+ kimchi.listReports(function(reports) {
+ pendingReports = getPendingReports();
+ allReports = pendingReports.concat(reports);
+ $('#debug-report-section').removeClass('hidden');
+
+ // Row selection will be cleared so disable buttons here
+ enableReportButtons(false);
+
+ if(reportGrid) {
+ reportGrid.setData(allReports);
+ }
+ else {
+ initReportGrid(allReports);
+ }
+
+ // Set id-debug-img to pending reports
+ // It will display a loading icon
+ var gridElement = $('#' + reportGridID);
+ $.each($('td:contains(' + i18n['GGBDR6007M'] + ')', gridElement), function(index, row) {
+ $(row).parent().addClass('no-hover');
+ $(row).attr('id', 'id-debug-img');
+ });
+ }, function(error) {
+ if(error['status'] == 403) {
+ $('#debug-report-section').addClass('hidden');
+ return;
+ }
+ $('#debug-report-section').removeClass('hidden');
+ });
+ };
+
+ var shutdownButtonID = '#host-button-shutdown';
+ var restartButtonID = '#host-button-restart';
+ var shutdownHost = function(params) {
+ var settings = {
+ title : i18n['GGBAPI6004M'],
+ content : i18n['GGBHOST6008M'],
+ confirm : i18n['GGBAPI6002M'],
+ cancel : i18n['GGBAPI6003M']
+ };
+
+ wok.confirm(settings, function() {
+ kimchi.shutdown(params);
+ $(shutdownButtonID).prop('disabled', true);
+ $(restartButtonID).prop('disabled', true);
+ // Check if there is any VM is running.
+ // FIXME : Find alternative way to figure out if any vms running
+ // kimchi.listVMs(function(vms) {
+ // for(var i = 0; i < vms.length; i++) {
+ // if(vms[i]['state'] === 'running') {
+ // wok.message.error.code('GGBHOST6001E');
+ // $(shutdownButtonID).prop('disabled', false);
+ // $(restartButtonID).prop('disabled', false);
+ // return;
+ // }
+ // }
+ //
+ // });
+ }, function() {
+ });
+ };
+
+ var initPage = function() {
+ $('#host-info-container .section-header').each(function(i, header) {
+ $('<span class="arrow"></span>').prependTo(header);
+ var toExpand = $(header).attr('aria-expanded') !== 'false';
+ expand(header, toExpand);
+ });
+
+ $('#host-info-container').on('click', '.section-header', function(event) {
+ var toExpand = $(this).attr('aria-expanded') === 'false';
+ expand(this, toExpand);
+ });
+
+ $('#host-button-shutdown').on('click', function(event) {
+ shutdownHost(null);
+ });
+
+ $('#host-button-restart').on('click', function(event) {
+ shutdownHost({
+ reboot: true
+ });
+ });
+
+ var setupUI = function() {
+ if (kimchi.capabilities == undefined) {
+ setTimeout(setupUI, 2000);
+ return;
+ }
+
+ if((kimchi.capabilities['repo_mngt_tool']) && (kimchi.capabilities['repo_mngt_tool']!="None")) {
+ initRepositoriesGrid(kimchi.capabilities['repo_mngt_tool']);
+ $('#repositories-section').switchClass('hidden', kimchi.capabilities['repo_mngt_tool']);
+ wok.topic('kimchi/repositoryAdded')
+ .subscribe(listRepositories);
+ wok.topic('kimchi/repositoryUpdated')
+ .subscribe(listRepositories);
+ wok.topic('kimchi/repositoryDeleted')
+ .subscribe(listRepositories);
+ }
+
+ if(kimchi.capabilities['update_tool']) {
+ $('#software-update-section').removeClass('hidden');
+ initSoftwareUpdatesGrid();
+ wok.topic('kimchi/softwareUpdated')
+ .subscribe(listSoftwareUpdates);
+ $('#software-updates-progress-container').accordion({
+ collapsible: true
+ });
+ }
+
+ if(kimchi.capabilities['system_report_tool']) {
+ listDebugReports();
+ wok.topic('kimchi/debugReportAdded')
+ .subscribe(listDebugReports);
+ wok.topic('kimchi/debugReportRenamed')
+ .subscribe(listDebugReports);
+ }
+ };
+ setupUI();
+ };
+
+ kimchi.getHost(function(data) {
+ var htmlTmpl = $('#host-tmpl').html();
+ data['logo'] = data['logo'] || '';
+ data['memory'] = wok.formatMeasurement(data['memory'], {
+ fixed: 2
+ });
+ var templated = wok.substitute(htmlTmpl, data);
+ $('#host-content-container').html(templated);
+
+ initPage();
+ initTracker();
+ });
+
+ var StatsMgr = function() {
+ var statsArray = {
+ cpu: {
+ u: {
+ type: 'percent',
+ legend: i18n['GGBHOST6002M'],
+ points: []
+ }
+ },
+ memory: {
+ u: {
+ type: 'value',
+ base: 2,
+ fixed: 2,
+ legend: i18n['GGBHOST6003M'],
+ points: []
+ }
+ },
+ diskIO: {
+ r: {
+ type: 'value',
+ base: 2,
+ fixed: 2,
+ unit: 'B/s',
+ legend: i18n['GGBHOST6004M'],
+ points: []
+ },
+ w: {
+ type: 'value',
+ base: 2,
+ fixed: 2,
+ unit: 'B/s',
+ legend: i18n['GGBHOST6005M'],
+ 'class': 'disk-write',
+ points: []
+ }
+ },
+ networkIO: {
+ r: {
+ type: 'value',
+ base: 2,
+ fixed: 2,
+ unit: 'B/s',
+ legend: i18n['GGBHOST6006M'],
+ points: []
+ },
+ s: {
+ type: 'value',
+ base: 2,
+ fixed: 2,
+ unit: 'B/s',
+ legend: i18n['GGBHOST6007M'],
+ 'class': 'network-sent',
+ points: []
+ }
+ }
+ };
+ var SIZE = 20;
+ var cursor = SIZE;
+
+ var add = function(stats) {
+ for(var key in stats) {
+ var item = stats[key];
+ for(var metrics in item) {
+ var value = item[metrics]['v'];
+ var max = item[metrics]['max'];
+ var unifiedMetrics = statsArray[key][metrics];
+ var ps = unifiedMetrics['points'];
+ if(!Array.isArray(value)){
+ ps.push(value);
+ if(ps.length > SIZE + 1) {
+ ps.shift();
+ }
+ }
+ else{
+ ps=ps.concat(value);
+ ps.splice(0, ps.length-SIZE-1);
+ unifiedMetrics['points']=ps;
+ }
+ if(max !== undefined) {
+ unifiedMetrics['max'] = max;
+ }
+ else {
+ if(unifiedMetrics['type'] !== 'value') {
+ continue;
+ }
+ max = -Infinity;
+ $.each(ps, function(i, value) {
+ if(value > max) {
+ max = value;
+ }
+ });
+ if(max === 0) {
+ ++max;
+ }
+ max *= 1.1;
+ unifiedMetrics['max'] = max;
+ }
+ }
+ }
+ cursor++;
+ };
+
+ var get = function(which) {
+ var stats = statsArray[which];
+ var lines = [];
+ for(var k in stats) {
+ var obj = stats[k];
+ var line = {
+ type: obj['type'],
+ base: obj['base'],
+ unit: obj['unit'],
+ fixed: obj['fixed'],
+ legend: obj['legend']
+ };
+ if(obj['max']) {
+ line['max'] = obj['max'];
+ }
+ if(obj['class']) {
+ line['class'] = obj['class'];
+ }
+ var ps = obj['points'];
+ var numStats = ps.length;
+ var unifiedPoints = [];
+ $.each(ps, function(i, value) {
+ unifiedPoints.push({
+ x: cursor - numStats + i,
+ y: value
+ });
+ });
+ line['points'] = unifiedPoints;
+ lines.push(line);
+ }
+ return lines;
+ };
+
+ return {
+ add: add,
+ get: get
+ };
+ };
+
+ var Tracker = function(charts) {
+ var charts = charts;
+ var timer = null;
+ var statsPool = new StatsMgr();
+ var setCharts = function(newCharts) {
+ charts = newCharts;
+ for(var key in charts) {
+ var chart = charts[key];
+ chart.updateUI(statsPool.get(key));
+ }
+ };
+
+ var self = this;
+
+ var UnifyStats = function(stats) {
+ var result= {
+ cpu: {
+ u: {
+ v: stats['cpu_utilization']
+ }
+ },
+ memory: {
+ u: {
+ }
+ },
+ diskIO: {
+ r: {
+ v: stats['disk_read_rate']
+ },
+ w: {
+ v: stats['disk_write_rate']
+ }
+ },
+ networkIO: {
+ r: {
+ v: stats['net_recv_rate']
+ },
+ s: {
+ v: stats['net_sent_rate']
+ }
+ }
+ };
+ if(Array.isArray(stats['memory'])){
+ result.memory.u['v']=[];
+ result.memory.u['max']=-Infinity;
+ for(var i=0;i<stats['memory'].length;i++){
+ result.memory.u['v'].push(stats['memory'][i]['avail']);
+ result.memory.u['max']=Math.max(result.memory.u['max'],stats['memory'][i]['total']);
+ }
+ }
+ else {
+ result.memory.u['v']=stats['memory']['avail'],
+ result.memory.u['max']=stats['memory']['total']
+ }
+ return(result);
+ };
+
+
+ var statsCallback = function(stats) {
+ var unifiedStats = UnifyStats(stats);
+ statsPool.add(unifiedStats);
+ for(var key in charts) {
+ var chart = charts[key];
+ chart.updateUI(statsPool.get(key));
+ }
+ timer = setTimeout(function() {
+ continueTrack();
+ }, 1000);
+ };
+
+ var track = function() {
+ kimchi.getHostStatsHistory(statsCallback,
+ function() {
+ continueTrack();
+ });
+ };
+
+ var continueTrack = function() {
+ kimchi.getHostStats(statsCallback,
+ function() {
+ continueTrack();
+ });
+ };
+
+ var destroy = function() {
+ timer && clearTimeout(timer);
+ timer = null;
+ };
+
+ return {
+ setCharts: setCharts,
+ start: track,
+ stop: destroy
+ };
+ };
+
+ var initTracker = function() {
+ // TODO: Extend tabs with onUnload event to unregister timers.
+ if(kimchi.hostTimer) {
+ kimchi.hostTimer.stop();
+ delete kimchi.hostTimer;
+ }
+
+ var trackedCharts = {
+ cpu: new wok.widget.LineChart({
+ id: 'chart-cpu',
+ node: 'container-chart-cpu',
+ type: 'percent'
+ }),
+ memory: new wok.widget.LineChart({
+ id: 'chart-memory',
+ node: 'container-chart-memory',
+ type: 'value'
+ }),
+ diskIO: new wok.widget.LineChart({
+ id: 'chart-disk-io',
+ node: 'container-chart-disk-io',
+ type: 'value'
+ }),
+ networkIO: new wok.widget.LineChart({
+ id: 'chart-network-io',
+ node: 'container-chart-network-io',
+ type: 'value'
+ })
+ };
+
+ if(kimchi.hostTimer) {
+ kimchi.hostTimer.setCharts(trackedCharts);
+ }
+ else {
+ kimchi.hostTimer = new Tracker(trackedCharts);
+ kimchi.hostTimer.start();
+ }
+ };
+
+ $('#host-root-container').on('remove', function() {
+ if(kimchi.hostTimer) {
+ kimchi.hostTimer.stop();
+ delete kimchi.hostTimer;
+ }
+
+ repositoriesGrid && repositoriesGrid.destroy();
+ wok.topic('kimchi/repositoryAdded')
+ .unsubscribe(listRepositories);
+ wok.topic('kimchi/repositoryUpdated')
+ .unsubscribe(listRepositories);
+ wok.topic('kimchi/repositoryDeleted')
+ .unsubscribe(listRepositories);
+
+ softwareUpdatesGrid && softwareUpdatesGrid.destroy();
+ wok.topic('kimchi/softwareUpdated').unsubscribe(listSoftwareUpdates);
+
+ reportGrid && reportGrid.destroy();
+ wok.topic('kimchi/debugReportAdded').unsubscribe(listDebugReports);
+ wok.topic('kimchi/debugReportRenamed').unsubscribe(listDebugReports);
+ });
+};
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.main.js b/plugins/gingerbase/ui/js/src/gingerbase.main.js
new file mode 100644
index 0000000..824673d
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.main.js
@@ -0,0 +1,26 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ */
+kimchi.capabilities = undefined;
+kimchi.getCapabilities(function(result) {
+ kimchi.capabilities = result;
+
+ if(kimchi.capabilities.federation=="on")
+ $('#peers').removeClass('hide-content');
+}, function() {
+ kimchi.capabilities = {};
+});
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.report_add_main.js b/plugins/gingerbase/ui/js/src/gingerbase.report_add_main.js
new file mode 100644
index 0000000..e8a2f4d
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.report_add_main.js
@@ -0,0 +1,72 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ */
+kimchi.report_add_main = function() {
+ var reportGridID = 'available-reports-grid';
+ var addReportForm = $('#form-report-add');
+ var submitButton = $('#button-report-add');
+ var nameTextbox = $('input[name="name"]', addReportForm);
+ nameTextbox.select();
+
+ var submitForm = function(event) {
+ if(submitButton.prop('disabled')) {
+ return false;
+ }
+ var reportName = nameTextbox.val();
+ var validator = RegExp("^[_A-Za-z0-9-]*$");
+ if (!validator.test(reportName)) {
+ wok.message.error.code('GGBDR6011M');
+ return false;
+ }
+ var formData = addReportForm.serializeObject();
+ var taskAccepted = false;
+ var onTaskAccepted = function() {
+ if(taskAccepted) {
+ return;
+ }
+ taskAccepted = true;
+ wok.window.close();
+ wok.topic('kimchi/debugReportAdded').publish();
+ };
+
+ kimchi.createReport(formData, function(result) {
+ onTaskAccepted();
+ wok.topic('kimchi/debugReportAdded').publish();
+ }, function(result) {
+ // Error message from Async Task status
+ if (result['message']) {
+ var errText = result['message'];
+ }
+ // Error message from standard kimchi exception
+ else {
+ var errText = result['responseJSON']['reason'];
+ }
+ result && wok.message.error(errText);
+
+ taskAccepted &&
+ $('.grid-body-view table tr:first-child',
+ '#' + reportGridID).remove();
+ submitButton.prop('disabled', false);
+ nameTextbox.select();
+ }, onTaskAccepted);
+
+ event.preventDefault();
+ };
+
+ addReportForm.on('submit', submitForm);
+ submitButton.on('click', submitForm);
+};
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.report_rename_main.js b/plugins/gingerbase/ui/js/src/gingerbase.report_rename_main.js
new file mode 100644
index 0000000..b107ce5
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.report_rename_main.js
@@ -0,0 +1,66 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ */
+kimchi.report_rename_main = function() {
+ var renameReportForm = $('#form-report-rename');
+ var submitButton = $('#button-report-rename');
+ var nameTextbox = $('input[name="name"]', renameReportForm);
+ var submitForm = function(event) {
+ if(submitButton.prop('disabled')) {
+ return false;
+ }
+ var reportName = nameTextbox.val();
+
+ // if the user hasn't changed the report's name,
+ // nothing should be done.
+ if (reportName == kimchi.selectedReport) {
+ wok.message.error.code('GGBDR6013M');
+ return false;
+ }
+
+ var validator = RegExp("^[A-Za-z0-9-]*$");
+ if (!validator.test(reportName)) {
+ wok.message.error.code('GGBDR6011M');
+ return false;
+ }
+ var formData = renameReportForm.serializeObject();
+ submitButton.prop('disabled', true);
+ nameTextbox.prop('disabled', true);
+ kimchi.renameReport(kimchi.selectedReport, formData, function(result) {
+ submitButton.prop('disabled', false);
+ nameTextbox.prop('disabled', false);
+ wok.window.close();
+ wok.topic('kimchi/debugReportRenamed').publish({
+ result: result
+ });
+ }, function(result) {
+ var errText = result &&
+ result['responseJSON'] &&
+ result['responseJSON']['reason'];
+ wok.message.error(errText);
+ submitButton.prop('disabled', false);
+ nameTextbox.prop('disabled', false).focus();
+ });
+
+ event.preventDefault();
+ };
+
+ renameReportForm.on('submit', submitForm);
+ submitButton.on('click', submitForm);
+
+ nameTextbox.val(kimchi.selectedReport).select();
+};
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.repository_add_main.js b/plugins/gingerbase/ui/js/src/gingerbase.repository_add_main.js
new file mode 100644
index 0000000..e612cdf
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.repository_add_main.js
@@ -0,0 +1,96 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ */
+kimchi.repository_add_main = function() {
+
+ var addForm = $('#form-repository-add');
+ var addButton = $('#button-repository-add');
+
+ var validateField = function(event) {
+ var valid=($(this).val()!=='');
+ $(addButton).prop('disabled', !valid);
+ return(valid);
+ };
+
+ var validateForm = function(event) {
+ var valid=false;
+ addForm.find('input.required').each( function() {
+ valid=($(this).val()!=='');
+ return(!valid);
+ });
+ return(valid);
+ }
+
+ addForm.find('input.required').on('input propertychange', validateField);
+
+ var weedObject = function(obj) {
+ for (var key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ if((typeof(obj[key])==="object") && !Array.isArray(obj[key])) {
+ weedObject(obj[key]);
+ }
+ else if(obj[key] == '') {
+ delete obj[key];
+ }
+ }
+ }
+ }
+
+ var addRepository = function(event) {
+ var valid = validateForm();
+ if(!valid) {
+ return false;
+ }
+
+ var formData = $(addForm).serializeObject();
+
+ if (formData && formData.isMirror!=undefined) {
+ formData.isMirror=(String(formData.isMirror).toLowerCase() === 'true');
+ }
+ if(formData.isMirror) {
+ if(formData.config==undefined) {
+ formData.config=new Object();
+ }
+ formData.config.mirrorlist=formData.baseurl;
+ delete formData.baseurl;
+ delete formData.isMirror;
+ }
+ weedObject(formData);
+ if(formData.config && formData.config.comps) {
+ formData.config.comps=formData.config.comps.split(/[,\s]/);
+ for(var i=0; i>formData.config.comps.length; i++) {
+ formData.config.comps[i]=formData.config.comps[i].trim();
+ }
+ for (var j=formData.config.comps.indexOf(""); j!=-1; j=formData.config.comps.indexOf("")) {
+ formData.config.comps.splice(j, 1);
+ }
+ }
+
+ kimchi.createRepository(formData, function() {
+ wok.topic('kimchi/repositoryAdded').publish();
+ wok.window.close();
+ }, function(jqXHR, textStatus, errorThrown) {
+ var reason = jqXHR &&
+ jqXHR['responseJSON'] &&
+ jqXHR['responseJSON']['reason'];
+ wok.message.error(reason);
+ });
+ return false;
+ };
+
+ $(addForm).on('submit', addRepository);
+};
diff --git a/plugins/gingerbase/ui/js/src/gingerbase.repository_edit_main.js b/plugins/gingerbase/ui/js/src/gingerbase.repository_edit_main.js
new file mode 100644
index 0000000..a6e0371
--- /dev/null
+++ b/plugins/gingerbase/ui/js/src/gingerbase.repository_edit_main.js
@@ -0,0 +1,74 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ */
+kimchi.repository_edit_main = function() {
+
+ var editForm = $('#form-repository-edit');
+
+ var saveButton = $('#repository-edit-button-save');
+
+ if(kimchi.capabilities['repo_mngt_tool']=="yum") {
+ editForm.find('input.deb').prop('disabled', true);
+ }
+ else if(kimchi.capabilities['repo_mngt_tool']=="deb") {
+ editForm.find('input.yum').prop('disabled', true);
+ }
+
+ kimchi.retrieveRepository(kimchi.selectedRepository, function(repository) {
+ editForm.fillWithObject(repository);
+
+ $('input', editForm).on('input propertychange', function(event) {
+ if($(this).val() !== '') {
+ $(saveButton).prop('disabled', false);
+ }
+ });
+ });
+
+
+ var editRepository = function(event) {
+ var formData = $(editForm).serializeObject();
+
+ if (formData && formData.config) {
+ formData.config.gpgcheck=(String(formData.config.gpgcheck).toLowerCase() === 'true');
+ }
+
+ if(formData.config && formData.config.comps) {
+ formData.config.comps=formData.config.comps.split(/[,\s]/);
+ for(var i=0; i>formData.config.comps.length; i++) {
+ formData.config.comps[i]=formData.config.comps[i].trim();
+ }
+ for (var j=formData.config.comps.indexOf(""); j!=-1; j=formData.config.comps.indexOf("")) {
+ formData.config.comps.splice(j, 1);
+ }
+ }
+
+ kimchi.updateRepository(kimchi.selectedRepository, formData, function() {
+ wok.topic('kimchi/repositoryUpdated').publish();
+ wok.window.close();
+ }, function(jqXHR, textStatus, errorThrown) {
+ var reason = jqXHR &&
+ jqXHR['responseJSON'] &&
+ jqXHR['responseJSON']['reason'];
+ wok.message.error(reason);
+ });
+
+ return false;
+ };
+
+ $(editForm).on('submit', editRepository);
+ $(saveButton).on('click', editRepository);
+};
diff --git a/plugins/kimchi/ui/js/src/kimchi.host.js b/plugins/kimchi/ui/js/src/kimchi.host.js
deleted file mode 100644
index e2d2511..0000000
--- a/plugins/kimchi/ui/js/src/kimchi.host.js
+++ /dev/null
@@ -1,858 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2013-2014
- *
- * 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.
- */
-kimchi.host={};
-
-kimchi.host_main = function() {
- var expand = function(header, toExpand) {
- var controlledNode = $(header).attr('aria-controls');
- $('#' + controlledNode)[toExpand ? 'removeClass' : 'addClass']('hidden');
- $(header).attr('aria-expanded', toExpand ? 'true' : 'false');
- };
-
- var repositoriesGrid = null;
- var initRepositoriesGrid = function(repo_type) {
- var gridFields=[];
- if (repo_type == "yum") {
- gridFields=[{
- name: 'repo_id',
- label: i18n['KCHREPO6004M'],
- 'class': 'repository-id'
- }, {
- name: 'config[repo_name]',
- label: i18n['KCHREPO6005M'],
- 'class': 'repository-name'
- }, {
- name: 'enabled',
- label: i18n['KCHREPO6009M'],
- 'class': 'repository-enabled'
- }];
- }
- else if (repo_type == "deb") {
- gridFields=[{
- name: 'baseurl',
- label: i18n['KCHREPO6006M'],
- makeTitle: true,
- 'class': 'repository-baseurl deb'
- }, {
- name: 'enabled',
- label: i18n['KCHREPO6009M'],
- 'class': 'repository-enabled deb'
- }, {
- name: 'config[dist]',
- label: "dist",
- 'class': 'repository-gpgcheck deb'
- }, {
- name: 'config[comps]',
- label: "comps",
- 'class': 'repository-gpgcheck deb'
- }];
- }
- else {
- gridFields=[{
- name: 'repo_id',
- label: i18n['KCHREPO6004M'],
- 'class': 'repository-id'
- }, {
- name: 'enabled',
- label: i18n['KCHREPO6009M'],
- 'class': 'repository-enabled'
- }, {
- name: 'baseurl',
- label: i18n['KCHREPO6006M'],
- makeTitle: true,
- 'class': 'repository-baseurl'
- }];
- }
- repositoriesGrid = new wok.widget.Grid({
- container: 'repositories-grid-container',
- id: 'repositories-grid',
- title: i18n['KCHREPO6003M'],
- toolbarButtons: [{
- id: 'repositories-grid-add-button',
- label: i18n['KCHREPO6012M'],
- onClick: function(event) {
- wok.window.open({url:'plugins/kimchi/repository-add.html',
- class: repo_type});
- }
- }, {
- id: 'repositories-grid-enable-button',
- label: i18n['KCHREPO6016M'],
- disabled: true,
- onClick: function(event) {
- var repository = repositoriesGrid.getSelected();
- if(!repository) {
- return;
- }
- var name = repository['repo_id'];
- var enable = !repository['enabled'];
- $(this).prop('disabled', true);
- kimchi.enableRepository(name, enable, function() {
- wok.topic('kimchi/repositoryUpdated').publish();
- });
- }
- }, {
- id: 'repositories-grid-edit-button',
- label: i18n['KCHREPO6013M'],
- disabled: true,
- onClick: function(event) {
- var repository = repositoriesGrid.getSelected();
- if(!repository) {
- return;
- }
- kimchi.selectedRepository = repository['repo_id'];
- wok.window.open({url:'plugins/kimchi/repository-edit.html',
- class: repo_type});
- }
- }, {
- id: 'repositories-grid-remove-button',
- label: i18n['KCHREPO6014M'],
- disabled: true,
- onClick: function(event) {
- var repository = repositoriesGrid.getSelected();
- if(!repository) {
- return;
- }
-
- var settings = {
- title : i18n['KCHREPO6001M'],
- content : i18n['KCHREPO6002M'],
- confirm : i18n['KCHAPI6004M'],
- cancel : i18n['KCHAPI6003M']
- };
-
- wok.confirm(settings, function() {
- kimchi.deleteRepository(
- repository['repo_id'],
- function(result) {
- wok.topic('kimchi/repositoryDeleted').publish(result);
- }, function(error) {
- }
- );
- });
- }
- }],
- onRowSelected: function(row) {
- var repository = repositoriesGrid.getSelected();
- if(!repository) {
- return;
- }
- $('#repositories-grid-remove-button').prop('disabled', false);
- $('#repositories-grid-edit-button').prop('disabled', false);
- var enabled = repository['enabled'];
- $('#repositories-grid-enable-button')
- .text(i18n[enabled ? 'KCHREPO6017M' : 'KCHREPO6016M'])
- .prop('disabled', false);
- },
- frozenFields: [],
- fields: gridFields,
- data: listRepositories
- });
- };
-
- var listRepositories = function(gridCallback) {
- kimchi.listRepositories(function(repositories) {
- if($.isFunction(gridCallback)) {
- gridCallback(repositories);
- }
- else {
- if(repositoriesGrid) {
- repositoriesGrid.setData(repositories);
- }
- else {
- initRepositoriesGrid();
- repositoriesGrid.setData(repositories);
- }
- }
- },
- function(error) {
- var message = error && error['responseJSON'] && error['responseJSON']['reason'];
-
- if($.isFunction(gridCallback)) {
- gridCallback([]);
- }
- repositoriesGrid &&
- repositoriesGrid.showMessage(message || i18n['KCHUPD6008M']);
- });
-
- $('#repositories-grid-remove-button').prop('disabled', true);
- $('#repositories-grid-edit-button').prop('disabled', true);
- $('#repositories-grid-enable-button').prop('disabled', true);
- };
-
- var softwareUpdatesGridID = 'software-updates-grid';
- var softwareUpdatesGrid = null;
- var progressAreaID = 'software-updates-progress-textarea';
- var reloadProgressArea = function(result) {
- var progressArea = $('#' + progressAreaID)[0];
- $(progressArea).text(result['message']);
- var scrollTop = $(progressArea).prop('scrollHeight');
- $(progressArea).prop('scrollTop', scrollTop);
- };
-
- var initSoftwareUpdatesGrid = function(softwareUpdates) {
- softwareUpdatesGrid = new wok.widget.Grid({
- container: 'software-updates-grid-container',
- id: softwareUpdatesGridID,
- title: i18n['KCHUPD6001M'],
- rowSelection: 'disabled',
- toolbarButtons: [{
- id: softwareUpdatesGridID + '-update-button',
- label: i18n['KCHUPD6006M'],
- disabled: true,
- onClick: function(event) {
- var updateButton = $(this);
- var progressArea = $('#' + progressAreaID)[0];
- $('#software-updates-progress-container').removeClass('hidden');
- $(progressArea).text('');
- !wok.isElementInViewport(progressArea) &&
- progressArea.scrollIntoView();
- $(updateButton).text(i18n['KCHUPD6007M']).prop('disabled', true);
-
- kimchi.updateSoftware(function(result) {
- reloadProgressArea(result);
- $(updateButton).text(i18n['KCHUPD6006M']).prop('disabled', false);
- wok.topic('kimchi/softwareUpdated').publish({
- result: result
- });
- }, function(error) {
- var message = error && error['responseJSON'] && error['responseJSON']['reason'];
- wok.message.error(message || i18n['KCHUPD6009M']);
- $(updateButton).text(i18n['KCHUPD6006M']).prop('disabled', false);
- }, reloadProgressArea);
- }
- }],
- frozenFields: [],
- fields: [{
- name: 'package_name',
- label: i18n['KCHUPD6002M'],
- 'class': 'software-update-name'
- }, {
- name: 'version',
- label: i18n['KCHUPD6003M'],
- 'class': 'software-update-version'
- }, {
- name: 'arch',
- label: i18n['KCHUPD6004M'],
- 'class': 'software-update-arch'
- }, {
- name: 'repository',
- label: i18n['KCHUPD6005M'],
- 'class': 'software-update-repos'
- }],
- data: listSoftwareUpdates
- });
- };
-
- var listSoftwareUpdates = function(gridCallback) {
- kimchi.listSoftwareUpdates(function(softwareUpdates) {
- if($.isFunction(gridCallback)) {
- gridCallback(softwareUpdates);
- }
- else {
- if(softwareUpdatesGrid) {
- softwareUpdatesGrid.setData(softwareUpdates);
- }
- else {
- initSoftwareUpdatesGrid(softwareUpdates);
- }
- }
-
- var updateButton = $('#' + softwareUpdatesGridID + '-update-button');
- $(updateButton).prop('disabled', softwareUpdates.length === 0);
- }, function(error) {
- var message = error && error['responseJSON'] && error['responseJSON']['reason'];
- if($.isFunction(gridCallback)) {
- gridCallback([]);
- }
- softwareUpdatesGrid &&
- softwareUpdatesGrid.showMessage(message || i18n['KCHUPD6008M']);
- });
- };
-
- var reportGridID = 'available-reports-grid';
- var reportGrid = null;
- var enableReportButtons = function(toEnable) {
- var buttonID = '#{grid}-{btn}-button';
- $.each(['rename', 'remove', 'download'], function(i, n) {
- $(wok.substitute(buttonID, {
- grid: reportGridID,
- btn: n
- })).prop('disabled', !toEnable);
- });
- };
- var initReportGrid = function(reports) {
- reportGrid = new wok.widget.Grid({
- container: 'available-reports-grid-container',
- id: reportGridID,
- title: i18n['KCHDR6002M'],
- toolbarButtons: [{
- id: reportGridID + '-generate-button',
- label: i18n['KCHDR6006M'],
- onClick: function(event) {
- wok.window.open('plugins/kimchi/report-add.html');
- }
- }, {
- id: reportGridID + '-rename-button',
- label: i18n['KCHDR6008M'],
- disabled: true,
- onClick: function(event) {
- var report = reportGrid.getSelected();
- if(!report) {
- return;
- }
-
- kimchi.selectedReport = report['name'];
- wok.window.open('plugins/kimchi/report-rename.html');
- }
- }, {
- id: reportGridID + '-remove-button',
- label: i18n['KCHDR6009M'],
- disabled: true,
- onClick: function(event) {
- var report = reportGrid.getSelected();
- if(!report) {
- return;
- }
-
- var settings = {
- title : i18n['KCHAPI6004M'],
- content : i18n['KCHDR6001M'],
- confirm : i18n['KCHAPI6002M'],
- cancel : i18n['KCHAPI6003M']
- };
-
- wok.confirm(settings, function() {
- kimchi.deleteReport({
- name: report['name']
- }, function(result) {
- listDebugReports();
- }, function(error) {
- wok.message.error(error.responseJSON.reason);
- });
- });
- }
- }, {
- id: reportGridID + '-download-button',
- label: i18n['KCHDR6010M'],
- disabled: true,
- onClick: function(event) {
- var report = reportGrid.getSelected();
- if(!report) {
- return;
- }
-
- kimchi.downloadReport({
- file: report['uri']
- });
- }
- }],
- onRowSelected: function(row) {
- var report = reportGrid.getSelected();
- // Only enable report buttons if the selected line is not a
- // pending report
- if (report['time'] == i18n['KCHDR6007M']) {
- var gridElement = $('#'+ reportGridID);
- var row = $('tr:contains(' + report['name'] + ')', gridElement);
- enableReportButtons(false);
- row.attr('class', '');
- }
- else {
- enableReportButtons(true);
- }
- },
- frozenFields: [],
- fields: [{
- name: 'name',
- label: i18n['KCHDR6003M'],
- 'class': 'debug-report-name'
- }, {
- name: 'time',
- label: i18n['KCHDR6005M'],
- 'class': 'debug-report-time'
- }],
- data: reports
- });
- };
-
- var getPendingReports = function() {
- var reports = []
- var filter = 'status=running&target_uri=' + encodeURIComponent('^/plugins/kimchi/debugreports/*')
-
- kimchi.getTasksByFilter(filter, function(tasks) {
- for(var i = 0; i < tasks.length; i++) {
- reportName = tasks[i].target_uri.replace(/^\/plugins\/kimchi\/debugreports\//, '') || i18n['KCHDR6012M'];
- reports.push({'name': reportName, 'time': i18n['KCHDR6007M']})
-
- if(kimchi.trackingTasks.indexOf(tasks[i].id) >= 0) {
- continue;
- }
-
- kimchi.trackTask(tasks[i].id, function(result) {
- wok.topic('kimchi/debugReportAdded').publish();
- }, function(result) {
- // Error message from Async Task status
- if (result['message']) {
- var errText = result['message'];
- }
- // Error message from standard kimchi exception
- else {
- var errText = result['responseJSON']['reason'];
- }
- result && wok.message.error(errText);
- wok.topic('kimchi/debugReportAdded').publish();
- }, null);
- }
- }, null, true);
-
- return reports;
- };
-
- var listDebugReports = function() {
- kimchi.listReports(function(reports) {
- pendingReports = getPendingReports();
- allReports = pendingReports.concat(reports);
- $('#debug-report-section').removeClass('hidden');
-
- // Row selection will be cleared so disable buttons here
- enableReportButtons(false);
-
- if(reportGrid) {
- reportGrid.setData(allReports);
- }
- else {
- initReportGrid(allReports);
- }
-
- // Set id-debug-img to pending reports
- // It will display a loading icon
- var gridElement = $('#' + reportGridID);
- $.each($('td:contains(' + i18n['KCHDR6007M'] + ')', gridElement), function(index, row) {
- $(row).parent().addClass('no-hover');
- $(row).attr('id', 'id-debug-img');
- });
- }, function(error) {
- if(error['status'] == 403) {
- $('#debug-report-section').addClass('hidden');
- return;
- }
- $('#debug-report-section').removeClass('hidden');
- });
- };
-
- var shutdownButtonID = '#host-button-shutdown';
- var restartButtonID = '#host-button-restart';
- var shutdownHost = function(params) {
- var settings = {
- title : i18n['KCHAPI6004M'],
- content : i18n['KCHHOST6008M'],
- confirm : i18n['KCHAPI6002M'],
- cancel : i18n['KCHAPI6003M']
- };
-
- wok.confirm(settings, function() {
- kimchi.shutdown(params);
- $(shutdownButtonID).prop('disabled', true);
- $(restartButtonID).prop('disabled', true);
- // Check if there is any VM is running.
- kimchi.listVMs(function(vms) {
- for(var i = 0; i < vms.length; i++) {
- if(vms[i]['state'] === 'running') {
- wok.message.error.code('KCHHOST6001E');
- $(shutdownButtonID).prop('disabled', false);
- $(restartButtonID).prop('disabled', false);
- return;
- }
- }
-
- });
- }, function() {
- });
- };
-
- var initPage = function() {
- $('#host-info-container .section-header').each(function(i, header) {
- $('<span class="arrow"></span>').prependTo(header);
- var toExpand = $(header).attr('aria-expanded') !== 'false';
- expand(header, toExpand);
- });
-
- $('#host-info-container').on('click', '.section-header', function(event) {
- var toExpand = $(this).attr('aria-expanded') === 'false';
- expand(this, toExpand);
- });
-
- $('#host-button-shutdown').on('click', function(event) {
- shutdownHost(null);
- });
-
- $('#host-button-restart').on('click', function(event) {
- shutdownHost({
- reboot: true
- });
- });
-
- var setupUI = function() {
- if (kimchi.capabilities == undefined) {
- setTimeout(setupUI, 2000);
- return;
- }
-
- if((kimchi.capabilities['repo_mngt_tool']) && (kimchi.capabilities['repo_mngt_tool']!="None")) {
- initRepositoriesGrid(kimchi.capabilities['repo_mngt_tool']);
- $('#repositories-section').switchClass('hidden', kimchi.capabilities['repo_mngt_tool']);
- wok.topic('kimchi/repositoryAdded')
- .subscribe(listRepositories);
- wok.topic('kimchi/repositoryUpdated')
- .subscribe(listRepositories);
- wok.topic('kimchi/repositoryDeleted')
- .subscribe(listRepositories);
- }
-
- if(kimchi.capabilities['update_tool']) {
- $('#software-update-section').removeClass('hidden');
- initSoftwareUpdatesGrid();
- wok.topic('kimchi/softwareUpdated')
- .subscribe(listSoftwareUpdates);
- $('#software-updates-progress-container').accordion({
- collapsible: true
- });
- }
-
- if(kimchi.capabilities['system_report_tool']) {
- listDebugReports();
- wok.topic('kimchi/debugReportAdded')
- .subscribe(listDebugReports);
- wok.topic('kimchi/debugReportRenamed')
- .subscribe(listDebugReports);
- }
- };
- setupUI();
- };
-
- kimchi.getHost(function(data) {
- var htmlTmpl = $('#host-tmpl').html();
- data['logo'] = data['logo'] || '';
- data['memory'] = wok.formatMeasurement(data['memory'], {
- fixed: 2
- });
- var templated = wok.substitute(htmlTmpl, data);
- $('#host-content-container').html(templated);
-
- initPage();
- initTracker();
- });
-
- var StatsMgr = function() {
- var statsArray = {
- cpu: {
- u: {
- type: 'percent',
- legend: i18n['KCHHOST6002M'],
- points: []
- }
- },
- memory: {
- u: {
- type: 'value',
- base: 2,
- fixed: 2,
- legend: i18n['KCHHOST6003M'],
- points: []
- }
- },
- diskIO: {
- r: {
- type: 'value',
- base: 2,
- fixed: 2,
- unit: 'B/s',
- legend: i18n['KCHHOST6004M'],
- points: []
- },
- w: {
- type: 'value',
- base: 2,
- fixed: 2,
- unit: 'B/s',
- legend: i18n['KCHHOST6005M'],
- 'class': 'disk-write',
- points: []
- }
- },
- networkIO: {
- r: {
- type: 'value',
- base: 2,
- fixed: 2,
- unit: 'B/s',
- legend: i18n['KCHHOST6006M'],
- points: []
- },
- s: {
- type: 'value',
- base: 2,
- fixed: 2,
- unit: 'B/s',
- legend: i18n['KCHHOST6007M'],
- 'class': 'network-sent',
- points: []
- }
- }
- };
- var SIZE = 20;
- var cursor = SIZE;
-
- var add = function(stats) {
- for(var key in stats) {
- var item = stats[key];
- for(var metrics in item) {
- var value = item[metrics]['v'];
- var max = item[metrics]['max'];
- var unifiedMetrics = statsArray[key][metrics];
- var ps = unifiedMetrics['points'];
- if(!Array.isArray(value)){
- ps.push(value);
- if(ps.length > SIZE + 1) {
- ps.shift();
- }
- }
- else{
- ps=ps.concat(value);
- ps.splice(0, ps.length-SIZE-1);
- unifiedMetrics['points']=ps;
- }
- if(max !== undefined) {
- unifiedMetrics['max'] = max;
- }
- else {
- if(unifiedMetrics['type'] !== 'value') {
- continue;
- }
- max = -Infinity;
- $.each(ps, function(i, value) {
- if(value > max) {
- max = value;
- }
- });
- if(max === 0) {
- ++max;
- }
- max *= 1.1;
- unifiedMetrics['max'] = max;
- }
- }
- }
- cursor++;
- };
-
- var get = function(which) {
- var stats = statsArray[which];
- var lines = [];
- for(var k in stats) {
- var obj = stats[k];
- var line = {
- type: obj['type'],
- base: obj['base'],
- unit: obj['unit'],
- fixed: obj['fixed'],
- legend: obj['legend']
- };
- if(obj['max']) {
- line['max'] = obj['max'];
- }
- if(obj['class']) {
- line['class'] = obj['class'];
- }
- var ps = obj['points'];
- var numStats = ps.length;
- var unifiedPoints = [];
- $.each(ps, function(i, value) {
- unifiedPoints.push({
- x: cursor - numStats + i,
- y: value
- });
- });
- line['points'] = unifiedPoints;
- lines.push(line);
- }
- return lines;
- };
-
- return {
- add: add,
- get: get
- };
- };
-
- var Tracker = function(charts) {
- var charts = charts;
- var timer = null;
- var statsPool = new StatsMgr();
- var setCharts = function(newCharts) {
- charts = newCharts;
- for(var key in charts) {
- var chart = charts[key];
- chart.updateUI(statsPool.get(key));
- }
- };
-
- var self = this;
-
- var UnifyStats = function(stats) {
- var result= {
- cpu: {
- u: {
- v: stats['cpu_utilization']
- }
- },
- memory: {
- u: {
- }
- },
- diskIO: {
- r: {
- v: stats['disk_read_rate']
- },
- w: {
- v: stats['disk_write_rate']
- }
- },
- networkIO: {
- r: {
- v: stats['net_recv_rate']
- },
- s: {
- v: stats['net_sent_rate']
- }
- }
- };
- if(Array.isArray(stats['memory'])){
- result.memory.u['v']=[];
- result.memory.u['max']=-Infinity;
- for(var i=0;i<stats['memory'].length;i++){
- result.memory.u['v'].push(stats['memory'][i]['avail']);
- result.memory.u['max']=Math.max(result.memory.u['max'],stats['memory'][i]['total']);
- }
- }
- else {
- result.memory.u['v']=stats['memory']['avail'],
- result.memory.u['max']=stats['memory']['total']
- }
- return(result);
- };
-
-
- var statsCallback = function(stats) {
- var unifiedStats = UnifyStats(stats);
- statsPool.add(unifiedStats);
- for(var key in charts) {
- var chart = charts[key];
- chart.updateUI(statsPool.get(key));
- }
- timer = setTimeout(function() {
- continueTrack();
- }, 1000);
- };
-
- var track = function() {
- kimchi.getHostStatsHistory(statsCallback,
- function() {
- continueTrack();
- });
- };
-
- var continueTrack = function() {
- kimchi.getHostStats(statsCallback,
- function() {
- continueTrack();
- });
- };
-
- var destroy = function() {
- timer && clearTimeout(timer);
- timer = null;
- };
-
- return {
- setCharts: setCharts,
- start: track,
- stop: destroy
- };
- };
-
- var initTracker = function() {
- // TODO: Extend tabs with onUnload event to unregister timers.
- if(kimchi.hostTimer) {
- kimchi.hostTimer.stop();
- delete kimchi.hostTimer;
- }
-
- var trackedCharts = {
- cpu: new wok.widget.LineChart({
- id: 'chart-cpu',
- node: 'container-chart-cpu',
- type: 'percent'
- }),
- memory: new wok.widget.LineChart({
- id: 'chart-memory',
- node: 'container-chart-memory',
- type: 'value'
- }),
- diskIO: new wok.widget.LineChart({
- id: 'chart-disk-io',
- node: 'container-chart-disk-io',
- type: 'value'
- }),
- networkIO: new wok.widget.LineChart({
- id: 'chart-network-io',
- node: 'container-chart-network-io',
- type: 'value'
- })
- };
-
- if(kimchi.hostTimer) {
- kimchi.hostTimer.setCharts(trackedCharts);
- }
- else {
- kimchi.hostTimer = new Tracker(trackedCharts);
- kimchi.hostTimer.start();
- }
- };
-
- $('#host-root-container').on('remove', function() {
- if(kimchi.hostTimer) {
- kimchi.hostTimer.stop();
- delete kimchi.hostTimer;
- }
-
- repositoriesGrid && repositoriesGrid.destroy();
- wok.topic('kimchi/repositoryAdded')
- .unsubscribe(listRepositories);
- wok.topic('kimchi/repositoryUpdated')
- .unsubscribe(listRepositories);
- wok.topic('kimchi/repositoryDeleted')
- .unsubscribe(listRepositories);
-
- softwareUpdatesGrid && softwareUpdatesGrid.destroy();
- wok.topic('kimchi/softwareUpdated').unsubscribe(listSoftwareUpdates);
-
- reportGrid && reportGrid.destroy();
- wok.topic('kimchi/debugReportAdded').unsubscribe(listDebugReports);
- wok.topic('kimchi/debugReportRenamed').unsubscribe(listDebugReports);
- });
-};
diff --git a/plugins/kimchi/ui/js/src/kimchi.report_add_main.js b/plugins/kimchi/ui/js/src/kimchi.report_add_main.js
deleted file mode 100644
index 5f098d3..0000000
--- a/plugins/kimchi/ui/js/src/kimchi.report_add_main.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2013-2014
- *
- * 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.
- */
-kimchi.report_add_main = function() {
- var reportGridID = 'available-reports-grid';
- var addReportForm = $('#form-report-add');
- var submitButton = $('#button-report-add');
- var nameTextbox = $('input[name="name"]', addReportForm);
- nameTextbox.select();
-
- var submitForm = function(event) {
- if(submitButton.prop('disabled')) {
- return false;
- }
- var reportName = nameTextbox.val();
- var validator = RegExp("^[_A-Za-z0-9-]*$");
- if (!validator.test(reportName)) {
- wok.message.error.code('KCHDR6011M');
- return false;
- }
- var formData = addReportForm.serializeObject();
- var taskAccepted = false;
- var onTaskAccepted = function() {
- if(taskAccepted) {
- return;
- }
- taskAccepted = true;
- wok.window.close();
- wok.topic('kimchi/debugReportAdded').publish();
- };
-
- kimchi.createReport(formData, function(result) {
- onTaskAccepted();
- wok.topic('kimchi/debugReportAdded').publish();
- }, function(result) {
- // Error message from Async Task status
- if (result['message']) {
- var errText = result['message'];
- }
- // Error message from standard kimchi exception
- else {
- var errText = result['responseJSON']['reason'];
- }
- result && wok.message.error(errText);
-
- taskAccepted &&
- $('.grid-body-view table tr:first-child',
- '#' + reportGridID).remove();
- submitButton.prop('disabled', false);
- nameTextbox.select();
- }, onTaskAccepted);
-
- event.preventDefault();
- };
-
- addReportForm.on('submit', submitForm);
- submitButton.on('click', submitForm);
-};
diff --git a/plugins/kimchi/ui/js/src/kimchi.report_rename_main.js b/plugins/kimchi/ui/js/src/kimchi.report_rename_main.js
deleted file mode 100644
index 1bdb8d9..0000000
--- a/plugins/kimchi/ui/js/src/kimchi.report_rename_main.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014
- *
- * 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.
- */
-kimchi.report_rename_main = function() {
- var renameReportForm = $('#form-report-rename');
- var submitButton = $('#button-report-rename');
- var nameTextbox = $('input[name="name"]', renameReportForm);
- var submitForm = function(event) {
- if(submitButton.prop('disabled')) {
- return false;
- }
- var reportName = nameTextbox.val();
-
- // if the user hasn't changed the report's name,
- // nothing should be done.
- if (reportName == kimchi.selectedReport) {
- wok.message.error.code('KCHDR6013M');
- return false;
- }
-
- var validator = RegExp("^[A-Za-z0-9-]*$");
- if (!validator.test(reportName)) {
- wok.message.error.code('KCHDR6011M');
- return false;
- }
- var formData = renameReportForm.serializeObject();
- submitButton.prop('disabled', true);
- nameTextbox.prop('disabled', true);
- kimchi.renameReport(kimchi.selectedReport, formData, function(result) {
- submitButton.prop('disabled', false);
- nameTextbox.prop('disabled', false);
- wok.window.close();
- wok.topic('kimchi/debugReportRenamed').publish({
- result: result
- });
- }, function(result) {
- var errText = result &&
- result['responseJSON'] &&
- result['responseJSON']['reason'];
- wok.message.error(errText);
- submitButton.prop('disabled', false);
- nameTextbox.prop('disabled', false).focus();
- });
-
- event.preventDefault();
- };
-
- renameReportForm.on('submit', submitForm);
- submitButton.on('click', submitForm);
-
- nameTextbox.val(kimchi.selectedReport).select();
-};
diff --git a/plugins/kimchi/ui/js/src/kimchi.repository_add_main.js b/plugins/kimchi/ui/js/src/kimchi.repository_add_main.js
deleted file mode 100644
index 656306b..0000000
--- a/plugins/kimchi/ui/js/src/kimchi.repository_add_main.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014
- *
- * 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.
- */
-kimchi.repository_add_main = function() {
-
- var addForm = $('#form-repository-add');
- var addButton = $('#button-repository-add');
-
- var validateField = function(event) {
- var valid=($(this).val()!=='');
- $(addButton).prop('disabled', !valid);
- return(valid);
- };
-
- var validateForm = function(event) {
- var valid=false;
- addForm.find('input.required').each( function() {
- valid=($(this).val()!=='');
- return(!valid);
- });
- return(valid);
- }
-
- addForm.find('input.required').on('input propertychange', validateField);
-
- var weedObject = function(obj) {
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- if((typeof(obj[key])==="object") && !Array.isArray(obj[key])) {
- weedObject(obj[key]);
- }
- else if(obj[key] == '') {
- delete obj[key];
- }
- }
- }
- }
-
- var addRepository = function(event) {
- var valid = validateForm();
- if(!valid) {
- return false;
- }
-
- var formData = $(addForm).serializeObject();
-
- if (formData && formData.isMirror!=undefined) {
- formData.isMirror=(String(formData.isMirror).toLowerCase() === 'true');
- }
- if(formData.isMirror) {
- if(formData.config==undefined) {
- formData.config=new Object();
- }
- formData.config.mirrorlist=formData.baseurl;
- delete formData.baseurl;
- delete formData.isMirror;
- }
- weedObject(formData);
- if(formData.config && formData.config.comps) {
- formData.config.comps=formData.config.comps.split(/[,\s]/);
- for(var i=0; i>formData.config.comps.length; i++) {
- formData.config.comps[i]=formData.config.comps[i].trim();
- }
- for (var j=formData.config.comps.indexOf(""); j!=-1; j=formData.config.comps.indexOf("")) {
- formData.config.comps.splice(j, 1);
- }
- }
-
- kimchi.createRepository(formData, function() {
- wok.topic('kimchi/repositoryAdded').publish();
- wok.window.close();
- }, function(jqXHR, textStatus, errorThrown) {
- var reason = jqXHR &&
- jqXHR['responseJSON'] &&
- jqXHR['responseJSON']['reason'];
- wok.message.error(reason);
- });
- return false;
- };
-
- $(addForm).on('submit', addRepository);
-};
diff --git a/plugins/kimchi/ui/js/src/kimchi.repository_edit_main.js b/plugins/kimchi/ui/js/src/kimchi.repository_edit_main.js
deleted file mode 100644
index 5bfc51e..0000000
--- a/plugins/kimchi/ui/js/src/kimchi.repository_edit_main.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014
- *
- * 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.
- */
-kimchi.repository_edit_main = function() {
-
- var editForm = $('#form-repository-edit');
-
- var saveButton = $('#repository-edit-button-save');
-
- if(kimchi.capabilities['repo_mngt_tool']=="yum") {
- editForm.find('input.deb').prop('disabled', true);
- }
- else if(kimchi.capabilities['repo_mngt_tool']=="deb") {
- editForm.find('input.yum').prop('disabled', true);
- }
-
- kimchi.retrieveRepository(kimchi.selectedRepository, function(repository) {
- editForm.fillWithObject(repository);
-
- $('input', editForm).on('input propertychange', function(event) {
- if($(this).val() !== '') {
- $(saveButton).prop('disabled', false);
- }
- });
- });
-
-
- var editRepository = function(event) {
- var formData = $(editForm).serializeObject();
-
- if (formData && formData.config) {
- formData.config.gpgcheck=(String(formData.config.gpgcheck).toLowerCase() === 'true');
- }
-
- if(formData.config && formData.config.comps) {
- formData.config.comps=formData.config.comps.split(/[,\s]/);
- for(var i=0; i>formData.config.comps.length; i++) {
- formData.config.comps[i]=formData.config.comps[i].trim();
- }
- for (var j=formData.config.comps.indexOf(""); j!=-1; j=formData.config.comps.indexOf("")) {
- formData.config.comps.splice(j, 1);
- }
- }
-
- kimchi.updateRepository(kimchi.selectedRepository, formData, function() {
- wok.topic('kimchi/repositoryUpdated').publish();
- wok.window.close();
- }, function(jqXHR, textStatus, errorThrown) {
- var reason = jqXHR &&
- jqXHR['responseJSON'] &&
- jqXHR['responseJSON']['reason'];
- wok.message.error(reason);
- });
-
- return false;
- };
-
- $(editForm).on('submit', editRepository);
- $(saveButton).on('click', editRepository);
-};
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/ui/pages/Makefile.am | 22 +++
plugins/gingerbase/ui/pages/host.html.tmpl | 177 +++++++++++++++++++++
plugins/gingerbase/ui/pages/i18n.json.tmpl | 148 +++++++++++++++++
plugins/gingerbase/ui/pages/report-add.html.tmpl | 56 +++++++
.../gingerbase/ui/pages/report-rename.html.tmpl | 56 +++++++
.../gingerbase/ui/pages/repository-add.html.tmpl | 113 +++++++++++++
.../gingerbase/ui/pages/repository-edit.html.tmpl | 117 ++++++++++++++
plugins/kimchi/ui/pages/host.html.tmpl | 177 ---------------------
plugins/kimchi/ui/pages/report-add.html.tmpl | 56 -------
plugins/kimchi/ui/pages/report-rename.html.tmpl | 56 -------
plugins/kimchi/ui/pages/repository-add.html.tmpl | 113 -------------
plugins/kimchi/ui/pages/repository-edit.html.tmpl | 117 --------------
12 files changed, 689 insertions(+), 519 deletions(-)
create mode 100644 plugins/gingerbase/ui/pages/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/host.html.tmpl
create mode 100644 plugins/gingerbase/ui/pages/i18n.json.tmpl
create mode 100644 plugins/gingerbase/ui/pages/report-add.html.tmpl
create mode 100644 plugins/gingerbase/ui/pages/report-rename.html.tmpl
create mode 100644 plugins/gingerbase/ui/pages/repository-add.html.tmpl
create mode 100644 plugins/gingerbase/ui/pages/repository-edit.html.tmpl
delete mode 100644 plugins/kimchi/ui/pages/host.html.tmpl
delete mode 100644 plugins/kimchi/ui/pages/report-add.html.tmpl
delete mode 100644 plugins/kimchi/ui/pages/report-rename.html.tmpl
delete mode 100644 plugins/kimchi/ui/pages/repository-add.html.tmpl
delete mode 100644 plugins/kimchi/ui/pages/repository-edit.html.tmpl
diff --git a/plugins/gingerbase/ui/pages/Makefile.am b/plugins/gingerbase/ui/pages/Makefile.am
new file mode 100644
index 0000000..d8c729f
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# 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.
+
+SUBDIRS = help
+
+htmldir = $(datadir)/wok/plugins/gingerbase/ui/pages
+
+dist_html_DATA = $(wildcard *.tmpl) $(NULL)
diff --git a/plugins/gingerbase/ui/pages/host.html.tmpl b/plugins/gingerbase/ui/pages/host.html.tmpl
new file mode 100644
index 0000000..2c55614
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/host.html.tmpl
@@ -0,0 +1,177 @@
+#*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ *#
+
+#unicode UTF-8
+#import gettext
+#from wok.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
+#silent _ = t.gettext
+#silent _t = t.gettext
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="stylesheet" href="plugins/gingerbase/css/theme-default.min.css">
+<script src="plugins/gingerbase/js/gingerbase.min.js"></script>
+</head>
+<body>
+<div id="host-root-container">
+ <div class="toolbar">
+ <div class="tools">
+ </div>
+ </div>
+ <div id="host-content-container" class="empty-when-logged-off"></div>
+</div>
+
+<script id="host-tmpl" type="gingerbase/template">
+ <div class="host-panel">
+ <div class="logo-container">
+ <div class="logo" style="background-image: url({logo});"></div>
+ </div>
+ <div id="host-info-container" class="info-container">
+ <h2 class="hostname">{hostname}</h2>
+ <div class="action-panel">
+ <button id="host-button-shutdown" class="btn-normal-1 stop">
+ <div class="button-icon action-icon-stop"></div>
+ $_("Shut down")
+ </button>
+ <button id="host-button-restart" class="btn-normal-1 restart">
+ <div class="button-icon action-icon-restart"></div>
+ $_("Restart")
+ </button>
+ <button class="btn-normal-1 connect" disabled="disabled">
+ <div class="button-icon action-icon-connect"></div>
+ $_("Connect")
+ </button>
+ </div>
+ <div class="host-section">
+ <h3 class="section-header"
+ aria-expanded="false"
+ aria-controls="content-sys-info">
+ $_("Basic Information")
+ </h3>
+ <div id="content-sys-info" class="section-content">
+ <div class="section-row">
+ <div class="section-label">$_("OS Distro")</div>
+ <div class="section-value">{os_distro}</div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("OS Version")</div>
+ <div class="section-value">{os_version}</div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("OS Code Name")</div>
+ <div class="section-value">{os_codename}</div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("Processor")</div>
+ <div class="section-value">{cpu_model}</div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("CPU(s)")</div>
+ <div class="section-value">{cpus}</div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("Memory")</div>
+ <div class="section-value">{memory}</div>
+ </div>
+ </div>
+ </div>
+ <div class="host-section">
+ <h3 class="section-header"
+ aria-controls="content-sys-statistics">
+ $_("System Statistics")
+ </h3>
+ <div id="content-sys-statistics" class="section-content">
+ <div class="section-row">
+ <div class="section-label">$_("CPU")</div>
+ <div class="section-value">
+ <div id="container-chart-cpu" class="inline-block"></div>
+ </div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("Memory")</div>
+ <div class="section-value">
+ <div id="container-chart-memory" class="inline-block"></div>
+ </div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("Disk I/O")</div>
+ <div class="section-value">
+ <div id="container-chart-disk-io" class="inline-block"></div>
+ </div>
+ </div>
+ <div class="section-row">
+ <div class="section-label">$_("Network I/O")</div>
+ <div class="section-value">
+ <div id="container-chart-network-io" class="inline-block"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="software-update-section" class="host-section hidden">
+ <h3 class="section-header"
+ aria-controls="content-software-update">
+ $_("Software Updates")
+ </h3>
+ <div id="content-software-update" class="section-content">
+ <div class="section-row">
+ <div class="section-value">
+ <div id="software-updates-grid-container"></div>
+ <div id="software-updates-progress-container" class="hidden">
+ <label for="software-updates-progress-textarea">$_("Update Progress")</label>
+ <textarea id="software-updates-progress-textarea" readonly></textarea>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="repositories-section" class="host-section hidden">
+ <h3 class="section-header"
+ aria-controls="content-repositories">
+ $_("Repositories")
+ </h3>
+ <div id="content-repositories" class="section-content">
+ <div class="section-row">
+ <div class="section-value">
+ <div id="repositories-grid-container"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="debug-report-section" class="host-section hidden">
+ <h3 class="section-header"
+ aria-controls="content-sys-reports">
+ $_("Debug Reports")
+ </h3>
+ <div id="content-sys-reports" class="section-content">
+ <div class="section-row">
+ <div class="section-value">
+ <div id="available-reports-grid-container"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</script>
+
+<script type="text/javascript">
+ kimchi.host_main();
+</script>
+</body>
+</html>
diff --git a/plugins/gingerbase/ui/pages/i18n.json.tmpl b/plugins/gingerbase/ui/pages/i18n.json.tmpl
new file mode 100644
index 0000000..b6091ca
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/i18n.json.tmpl
@@ -0,0 +1,148 @@
+#*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ *#
+#unicode UTF-8
+#import gettext
+#from wok.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
+#silent _ = t.gettext
+#silent _t = t.gettext
+{
+ "GGBAUTH6001E": "$_("The username or password you entered is incorrect. Please try again.")",
+ "GGBAUTH6002E": "$_("This field is required.")",
+
+ "GGBAUTH6001M": "$_("Log in")",
+ "GGBAUTH6002M": "$_("Logging in...")",
+
+ "Host": "$_("Host")",
+ "Guests": "$_("Guests")",
+ "Templates": "$_("Templates")",
+ "Storage": "$_("Storage")",
+ "Network": "$_("Network")",
+
+ "GGBAPI6002E": "$_("Failed to get application configuration")",
+ "GGBAPI6003E": "$_("This is not a valid Linux path")",
+ "GGBAPI6004E": "$_("This is not a valid URL.")",
+ "GGBAPI6005E": "$_("No such data available.")",
+ "GGBAPI6007E": "$_("Can not contact the host system. Verify the host system is up and that you have network connectivity to it. HTTP request response %1. ")",
+ "GGBAPI6008E": "$_("Unable to read file.")",
+ "GGBAPI6009E": "$_("Error while uploading file.")",
+
+ "GGBAPI6001M": "$_("Delete Confirmation")",
+ "GGBAPI6002M": "$_("OK")",
+ "GGBAPI6003M": "$_("Cancel")",
+ "GGBAPI6004M": "$_("Confirm")",
+ "GGBAPI6005M": "$_("Create")",
+ "GGBAPI6006M": "$_("Warning")",
+ "GGBAPI6007M": "$_("Save")",
+ "GGBAPI6008M": "$_("Creating...")",
+ "GGBAPI6009M": "$_("Cloning...")",
+
+ "GGBGRD6001M": "$_("Loading...")",
+ "GGBGRD6002M": "$_("An error occurred while retrieving system information.")",
+ "GGBGRD6003M": "$_("Retry")",
+ "GGBGRD6004M": "$_("Detailed message:")",
+
+ "GGBHOST6001E": "$_("Unable to shut down system as there are some virtual machines running!")",
+
+ "GGBHOST6001M": "$_("Max:")",
+ "GGBHOST6002M": "$_("Utilization")",
+ "GGBHOST6003M": "$_("Available")",
+ "GGBHOST6004M": "$_("Read Rate")",
+ "GGBHOST6005M": "$_("Write Rate")",
+ "GGBHOST6006M": "$_("Received")",
+ "GGBHOST6007M": "$_("Sent")",
+ "GGBHOST6008M": "$_("Shutting down or restarting host will cause unsaved work lost. Continue to shut down/restarting?")",
+
+
+ "GGBREPO6001M": "$_("Confirm")",
+ "GGBREPO6002M": "$_("Repository will be removed permanently and can't be recovered. Do you want to continue?")",
+ "GGBREPO6003M": "$_("Repositories")",
+ "GGBREPO6004M": "$_("ID")",
+ "GGBREPO6005M": "$_("Name")",
+ "GGBREPO6006M": "$_("Base URL")",
+ "GGBREPO6007M": "$_("Is Mirror")",
+ "GGBREPO6008M": "$_("URL Args")",
+ "GGBREPO6009M": "$_("Enabled")",
+ "GGBREPO6010M": "$_("GPG Check")",
+ "GGBREPO6011M": "$_("GPG Key")",
+ "GGBREPO6012M": "$_("Add")",
+ "GGBREPO6013M": "$_("Edit")",
+ "GGBREPO6014M": "$_("Remove")",
+ "GGBREPO6016M": "$_("Enable")",
+ "GGBREPO6017M": "$_("Disable")",
+
+
+ "GGBUPD6001M": "$_("Software Updates")",
+ "GGBUPD6002M": "$_("Package Name")",
+ "GGBUPD6003M": "$_("Version")",
+ "GGBUPD6004M": "$_("Architecture")",
+ "GGBUPD6005M": "$_("Repository")",
+ "GGBUPD6006M": "$_("Update All")",
+ "GGBUPD6007M": "$_("Updating...")",
+ "GGBUPD6008M": "$_("Failed to retrieve packages update information.")",
+ "GGBUPD6009M": "$_("Failed to update package(s).")",
+
+
+ "GGBDR6001M": "$_("Debug report will be removed permanently and can't be recovered. Do you want to continue?")",
+ "GGBDR6002M": "$_("Debug Reports")",
+ "GGBDR6003M": "$_("Name")",
+ "GGBDR6005M": "$_("Generated Time")",
+ "GGBDR6006M": "$_("Generate")",
+ "GGBDR6007M": "$_("Generating...")",
+ "GGBDR6008M": "$_("Rename")",
+ "GGBDR6009M": "$_("Remove")",
+ "GGBDR6010M": "$_("Download")",
+ "GGBDR6011M": "$_("Report name should contain only letters, digits, underscore ('_') and/or hyphen ('-').")",
+ "GGBDR6012M": "$_("Pending...")",
+ "GGBDR6013M": "$_("Report name is the same as the original one.")",
+
+ "GGBVM6001M": "$_("This will delete the virtual machine and its virtual disks. This operation cannot be undone. Would you like to continue?")",
+ "GGBVM6002M": "$_("Power off Confirmation")",
+ "GGBVM6003M": "$_("This action may produce undesirable results, "
+ "for example unflushed disk cache in the guest. "
+ "Would you like to continue?")",
+ "GGBVM6004M": "$_("Reset Confirmation")",
+ "GGBVM6005M": "$_("There is a risk of data loss caused by reset without"
+ " the guest OS shutdown. Would you like to continue?")",
+ "GGBVM6006M": "$_("Shut Down Confirmation")",
+ "GGBVM6007M": "$_("Note the guest OS may ignore this request. Would you like to continue?")",
+ "GGBVM6008M": "$_("Virtual Machine delete Confirmation")",
+ "GGBVM6009M": "$_("This virtual machine is not persistent. Power Off will delete it. Continue?")",
+ "GGBVM6010M": "$_("When the target guest has SCSI or iSCSI volumes, they will be cloned on default storage pool. The same will happen when the target pool does not have enough space to clone the volumes. Do you want to continue?")",
+
+ "GGBVMCD6001M": "$_("This CDROM will be detached permanently and you can re-attach it. Continue to detach it?")",
+ "GGBVMCD6002M": "$_("Attach")",
+ "GGBVMCD6003M": "$_("Attaching...")",
+ "GGBVMCD6004M": "$_("Replace")",
+ "GGBVMCD6005M": "$_("Replacing...")",
+ "GGBVMCD6006M": "$_("Successfully attached!")",
+ "GGBVMCD6007M": "$_("Successfully replaced!")",
+ "GGBVMCD6008M": "$_("Successfully detached!")",
+ "GGBVMCD6009M": "$_("This disk will be detached permanently and you can re-attach it. Continue to detach it?")",
+
+ "GGBVMED6001M": "$_("interface:")",
+ "GGBVMED6002M": "$_("address:")",
+ "GGBVMED6003M": "$_("link_type:")",
+ "GGBVMED6004M": "$_("block:")",
+ "GGBVMED6005M": "$_("drive_type:")",
+ "GGBVMED6006M": "$_("model:")",
+ "GGBVMED6007M": "$_("Affected devices:")",
+
+ "GGBVMSTOR0001E": "$_("CDROM path needs to be a valid local/remote path and cannot be blank.")",
+ "GGBVMSTOR0002E": "$_("Disk pool or volume cannot be blank.")"
+}
diff --git a/plugins/gingerbase/ui/pages/report-add.html.tmpl b/plugins/gingerbase/ui/pages/report-add.html.tmpl
new file mode 100644
index 0000000..4983ff0
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/report-add.html.tmpl
@@ -0,0 +1,56 @@
+#*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2013-2015
+ *
+ * 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.
+ *#
+#unicode UTF-8
+#import gettext
+#from wok.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
+#silent _ = t.gettext
+#silent _t = t.gettext
+<!DOCTYPE html>
+<div id="report-add-window" class="window">
+ <header>
+ <h1 class="title h1 grey">$_("Generate a New Debug Report")</h1>
+ </header>
+ <div class="content">
+ <form id="form-report-add">
+ <section class="form-section">
+ <h2>
+ <label for="report-name-textbox">$_("Report Name")</label>
+ </h2>
+ <div class="field">
+ <input type="text" class="text" id="report-name-textbox" name="name" />
+ <span class="icon-info-circled light-grey c1"></span>
+ <span class="info-add-debug-report">
+ $_("The name used to identify the report. If omitted, a name will be chosen based on current time. Name can contain: letters, digits, underscore (\"_\") and hyphen (\"-\").")
+ </span>
+ </div>
+ </section>
+ </form>
+ </div>
+ <footer>
+ <div class="btn-group">
+ <button id="button-report-add" class="btn-normal"><span class="text">$_("Generate")</span></button>
+ <button id="button-report-cancel" class="btn-normal close" type="button">
+ <span calss="text">$_("Cancel")</span>
+ </button>
+ </div>
+ </footer>
+</div>
+<script>
+ kimchi.report_add_main();
+</script>
diff --git a/plugins/gingerbase/ui/pages/report-rename.html.tmpl b/plugins/gingerbase/ui/pages/report-rename.html.tmpl
new file mode 100644
index 0000000..900dae8
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/report-rename.html.tmpl
@@ -0,0 +1,56 @@
+#*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2014-2015
+ *
+ * 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.
+ *#
+#unicode UTF-8
+#import gettext
+#from wok.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
+#silent _ = t.gettext
+#silent _t = t.gettext
+<!DOCTYPE html>
+<div id="report-rename-window" class="window">
+ <header>
+ <h1 class="title h1 grey">$_("Rename a Debug Report")</h1>
+ </header>
+ <div class="content">
+ <form id="form-report-rename">
+ <section class="form-section">
+ <h2>
+ <label for="report-name-textbox">$_("Report Name")</label>
+ </h2>
+ <div class="field">
+ <input type="text" class="text" id="report-name-textbox" name="name" />
+ <span class="icon-info-circled light-grey c1"></span>
+ <span class="info-debug-report-rename">
+ $_("The name used to identify the report. Name can contain: letters, digits and hyphen (\"-\").")
+ </span>
+ </div>
+ </section>
+ </form>
+ </div>
+ <footer>
+ <div class="btn-group">
+ <button id="button-report-rename" class="btn-normal"><span class="text">$_("Submit")</span></button>
+ <button id-"button-report-rename-cancel" class="btn-normal close" type="button">
+ <span class="text">$_("Cancel")</span>
+ </button>
+ </div>
+ </footer>
+</div>
+<script>
+ kimchi.report_rename_main();
+</script>
diff --git a/plugins/gingerbase/ui/pages/repository-add.html.tmpl b/plugins/gingerbase/ui/pages/repository-add.html.tmpl
new file mode 100644
index 0000000..a5b4001
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/repository-add.html.tmpl
@@ -0,0 +1,113 @@
+#*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2014-2015
+ *
+ * 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.
+ *#
+#unicode UTF-8
+#import gettext
+#from wok.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
+#silent _ = t.gettext
+#silent _t = t.gettext
+<div id="repository-add-window" class="window">
+ <form id="form-repository-add">
+ <header class="window-header">
+ <h1 class="title h1 grey">$_("Add a Repository")</h1>
+ </header>
+ <section>
+ <div class="content">
+ <div class="form-section yum">
+ <h2>$_("Identifier")</h2>
+ <div class="field">
+ <div class="textbox-wrapper">
+ <input type="text" class="text" name="repo_id" />
+ </div>
+ <div class="icon-info-circled light-grey c1 help-inline"></div>
+ <p class="text-help help-inline">
+ $_("Single word, unique identifier for the repository.")
+ </p>
+ </div>
+ </div>
+ <section class="form-section yum">
+ <h2>$_("Name")</h2>
+ <div class="field">
+ <div class="textbox-wrapper">
+ <input type="text" class="text" name="config[repo_name]" />
+ </div>
+ <div class="icon-info-circled light-grey c1 help-inline"></div>
+ <p class="text-help help-inline">
+ $_("Textual name for the repository.")
+ </p>
+ </div>
+ </section>
+ <section class="form-section">
+ <h2>$_("URL")<span class="required" role="presentation" title='$_("Required Field")'>*</span></h2>
+ <div class="field">
+ <div class="textbox-wrapper">
+ <input type="text" class="text required" name="baseurl" />
+ </div>
+ <div class="icon-info-circled light-grey c1 help-inline"></div>
+ <p class="text-help help-inline">
+ $_("URL to the repository. Supported protocols are http, ftp, and file.")
+ </p>
+ </div>
+ <div class="field yum">
+ <p class="yum">
+ <input type="checkbox" name="isMirror" value="true" id="isMirror" />
+ <label id="isMirrorLabel" for="isMirror">$_("Repository is a mirror")</label>
+ </p>
+ </div>
+ </section>
+ <section class="form-section repository-dist deb">
+ <h2>$_("Distribution")</h2>
+ <div class="field">
+ <div class="textbox-wrapper">
+ <input type="text" class="text" name="config[dist]" />
+ </div>
+ <div class="icon-info-circled light-grey c1 help-inline"></div>
+ <p class="text-help help-inline">
+ $_("Distribution of the DEB repository.")
+ </p>
+ </div>
+ </section>
+ <section class="form-section repository-comps deb">
+ <h2>$_("Components")</h2>
+ <div class="field">
+ <div class="textbox-wrapper">
+ <input type="text" class="text" name="config[comps]" />
+ </div>
+ <div class="icon-info-circled light-grey c1 help-inline"></div>
+ <p class="text-help help-inline">
+ $_("List of components in DEB repository.")
+ </p>
+ </div>
+ </section>
+ </div>
+ </section>
+ <footer>
+ <div class="btn-group">
+ <button type="submit" id="button-repository-add" class="btn-normal" disabled="disabled">
+ <span class="text">$_("Add")</span>
+ </button>
+ <button type="button" id="button-repository-close" class="btn-normal close">
+ <span class="text">$("Cancel")</span>
+ </button>
+ </div>
+ </footer>
+ </form>
+</div>
+<script>
+ kimchi.repository_add_main();
+</script>
diff --git a/plugins/gingerbase/ui/pages/repository-edit.html.tmpl b/plugins/gingerbase/ui/pages/repository-edit.html.tmpl
new file mode 100644
index 0000000..b1a421e
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/repository-edit.html.tmpl
@@ -0,0 +1,117 @@
+#*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2014-2015
+ *
+ * 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.
+ *#
+#unicode UTF-8
+#import gettext
+#from wok.cachebust import href
+#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
+#silent _ = t.gettext
+#silent _t = t.gettext
+
+<div id="repository-edit-window" class="window">
+ <form id="form-repository-edit">
+ <header>
+ <h1 class="title h1 grey">$_("Edit Repository")</h1>
+ </header>
+ <div class="content">
+ <section id="form-repository-edit">
+ <fieldset class="repository-edit-fieldset">
+ <div class="repository-id yum">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-id-textbox">$_("ID")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-id-textbox" name="repo_id" type="text" disabled="disabled" readonly="readonly"/>
+ </div>
+ </div>
+ <div class="repository-name yum">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-name-textbox">$_("Name")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-name-textbox" class="yum" name="config[repo_name]" type="text" />
+ </div>
+ </div>
+ <div class="repository-url">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-baseurl-textbox">$_("URL")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-baseurl-textbox" name="baseurl" type="text" />
+ </div>
+ </div>
+ <div class="repository-dist deb">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-urlargs-textbox">$_("Distribution")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-urlargs-textbox" class="deb" name="config[dist]" type="text" />
+ </div>
+ </div>
+ <div class="repository-mirrorlist yum">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-urlargs-textbox">$_("Mirror List URL")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-urlargs-textbox" class="yum" name="config[mirrorlist]" type="text" />
+ </div>
+ </div>
+ <div class="repository-comps deb">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-urlargs-textbox">$_("Components")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-urlargs-textbox" class="deb" name="config[comps]" type="text" />
+ </div>
+ </div>
+ <div class="repository-gpgkey yum">
+ <div class="repository-edit-wrapper-label">
+ <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-gpgkey-textbox" class="yum" name="config[gpgkey]" type="text" />
+ </div>
+ </div>
+ <div class="repository-gpgcheck yum">
+ <div class="repository-edit-wrapper-label">
+ <label>$_("GPG Check")</label>
+ </div>
+ <div class="repository-edit-wrapper-controls">
+ <input id="repository-edit-gpgcheck-radio-true" class="yum" name="config[gpgcheck]" type="radio" value="true" />
+ <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label>
+ <input id="repository-edit-gpgcheck-radio-false" class="yum" name="config[gpgcheck]" type="radio" value="false" />
+ <label for="repository-edit-gpgcheck-radio-false">$_("No")</label>
+ </div>
+ </div>
+ </fieldset>
+ </section>
+ </div>
+ <footer>
+ <div class="btn-group">
+ <button type="submit" id="repository-edit-button-save" class="btn-normal">
+ <span class="text">$_("Save")</span>
+ </button>
+ <button type="button" id="repository-edit-button-cancel" class="close btn-normal">
+ <span class="text">$_("Cancel")</span>
+ </button>
+ </div>
+ </footer>
+ </form>
+</div>
+<script type="text/javascript">
+ kimchi.repository_edit_main();
+</script>
diff --git a/plugins/kimchi/ui/pages/host.html.tmpl b/plugins/kimchi/ui/pages/host.html.tmpl
deleted file mode 100644
index d87debc..0000000
--- a/plugins/kimchi/ui/pages/host.html.tmpl
+++ /dev/null
@@ -1,177 +0,0 @@
-#*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2013-2015
- *
- * 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.
- *#
-
-#unicode UTF-8
-#import gettext
-#from wok.cachebust import href
-#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
-#silent _ = t.gettext
-#silent _t = t.gettext
-<!DOCTYPE html>
-<html>
-<head>
-<link rel="stylesheet" href="plugins/kimchi/css/theme-default.min.css">
-<script src="plugins/kimchi/js/kimchi.min.js"></script>
-</head>
-<body>
-<div id="host-root-container">
- <div class="toolbar">
- <div class="tools">
- </div>
- </div>
- <div id="host-content-container" class="empty-when-logged-off"></div>
-</div>
-
-<script id="host-tmpl" type="kimchi/template">
- <div class="host-panel">
- <div class="logo-container">
- <div class="logo" style="background-image: url({logo});"></div>
- </div>
- <div id="host-info-container" class="info-container">
- <h2 class="hostname">{hostname}</h2>
- <div class="action-panel">
- <button id="host-button-shutdown" class="btn-normal-1 stop">
- <div class="button-icon action-icon-stop"></div>
- $_("Shut down")
- </button>
- <button id="host-button-restart" class="btn-normal-1 restart">
- <div class="button-icon action-icon-restart"></div>
- $_("Restart")
- </button>
- <button class="btn-normal-1 connect" disabled="disabled">
- <div class="button-icon action-icon-connect"></div>
- $_("Connect")
- </button>
- </div>
- <div class="host-section">
- <h3 class="section-header"
- aria-expanded="false"
- aria-controls="content-sys-info">
- $_("Basic Information")
- </h3>
- <div id="content-sys-info" class="section-content">
- <div class="section-row">
- <div class="section-label">$_("OS Distro")</div>
- <div class="section-value">{os_distro}</div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("OS Version")</div>
- <div class="section-value">{os_version}</div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("OS Code Name")</div>
- <div class="section-value">{os_codename}</div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("Processor")</div>
- <div class="section-value">{cpu_model}</div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("CPU(s)")</div>
- <div class="section-value">{cpus}</div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("Memory")</div>
- <div class="section-value">{memory}</div>
- </div>
- </div>
- </div>
- <div class="host-section">
- <h3 class="section-header"
- aria-controls="content-sys-statistics">
- $_("System Statistics")
- </h3>
- <div id="content-sys-statistics" class="section-content">
- <div class="section-row">
- <div class="section-label">$_("CPU")</div>
- <div class="section-value">
- <div id="container-chart-cpu" class="inline-block"></div>
- </div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("Memory")</div>
- <div class="section-value">
- <div id="container-chart-memory" class="inline-block"></div>
- </div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("Disk I/O")</div>
- <div class="section-value">
- <div id="container-chart-disk-io" class="inline-block"></div>
- </div>
- </div>
- <div class="section-row">
- <div class="section-label">$_("Network I/O")</div>
- <div class="section-value">
- <div id="container-chart-network-io" class="inline-block"></div>
- </div>
- </div>
- </div>
- </div>
- <div id="software-update-section" class="host-section hidden">
- <h3 class="section-header"
- aria-controls="content-software-update">
- $_("Software Updates")
- </h3>
- <div id="content-software-update" class="section-content">
- <div class="section-row">
- <div class="section-value">
- <div id="software-updates-grid-container"></div>
- <div id="software-updates-progress-container" class="hidden">
- <label for="software-updates-progress-textarea">$_("Update Progress")</label>
- <textarea id="software-updates-progress-textarea" readonly></textarea>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div id="repositories-section" class="host-section hidden">
- <h3 class="section-header"
- aria-controls="content-repositories">
- $_("Repositories")
- </h3>
- <div id="content-repositories" class="section-content">
- <div class="section-row">
- <div class="section-value">
- <div id="repositories-grid-container"></div>
- </div>
- </div>
- </div>
- </div>
- <div id="debug-report-section" class="host-section hidden">
- <h3 class="section-header"
- aria-controls="content-sys-reports">
- $_("Debug Reports")
- </h3>
- <div id="content-sys-reports" class="section-content">
- <div class="section-row">
- <div class="section-value">
- <div id="available-reports-grid-container"></div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
-</script>
-
-<script type="text/javascript">
- kimchi.host_main();
-</script>
-</body>
-</html>
diff --git a/plugins/kimchi/ui/pages/report-add.html.tmpl b/plugins/kimchi/ui/pages/report-add.html.tmpl
deleted file mode 100644
index 25bf0a9..0000000
--- a/plugins/kimchi/ui/pages/report-add.html.tmpl
+++ /dev/null
@@ -1,56 +0,0 @@
-#*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2013-2015
- *
- * 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.
- *#
-#unicode UTF-8
-#import gettext
-#from wok.cachebust import href
-#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
-#silent _ = t.gettext
-#silent _t = t.gettext
-<!DOCTYPE html>
-<div id="report-add-window" class="window">
- <header>
- <h1 class="title h1 grey">$_("Generate a New Debug Report")</h1>
- </header>
- <div class="content">
- <form id="form-report-add">
- <section class="form-section">
- <h2>
- <label for="report-name-textbox">$_("Report Name")</label>
- </h2>
- <div class="field">
- <input type="text" class="text" id="report-name-textbox" name="name" />
- <span class="icon-info-circled light-grey c1"></span>
- <span class="info-add-debug-report">
- $_("The name used to identify the report. If omitted, a name will be chosen based on current time. Name can contain: letters, digits, underscore (\"_\") and hyphen (\"-\").")
- </span>
- </div>
- </section>
- </form>
- </div>
- <footer>
- <div class="btn-group">
- <button id="button-report-add" class="btn-normal"><span class="text">$_("Generate")</span></button>
- <button id="button-report-cancel" class="btn-normal close" type="button">
- <span calss="text">$_("Cancel")</span>
- </button>
- </div>
- </footer>
-</div>
-<script>
- kimchi.report_add_main();
-</script>
diff --git a/plugins/kimchi/ui/pages/report-rename.html.tmpl b/plugins/kimchi/ui/pages/report-rename.html.tmpl
deleted file mode 100644
index 90a0a80..0000000
--- a/plugins/kimchi/ui/pages/report-rename.html.tmpl
+++ /dev/null
@@ -1,56 +0,0 @@
-#*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014-2015
- *
- * 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.
- *#
-#unicode UTF-8
-#import gettext
-#from wok.cachebust import href
-#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
-#silent _ = t.gettext
-#silent _t = t.gettext
-<!DOCTYPE html>
-<div id="report-rename-window" class="window">
- <header>
- <h1 class="title h1 grey">$_("Rename a Debug Report")</h1>
- </header>
- <div class="content">
- <form id="form-report-rename">
- <section class="form-section">
- <h2>
- <label for="report-name-textbox">$_("Report Name")</label>
- </h2>
- <div class="field">
- <input type="text" class="text" id="report-name-textbox" name="name" />
- <span class="icon-info-circled light-grey c1"></span>
- <span class="info-debug-report-rename">
- $_("The name used to identify the report. Name can contain: letters, digits and hyphen (\"-\").")
- </span>
- </div>
- </section>
- </form>
- </div>
- <footer>
- <div class="btn-group">
- <button id="button-report-rename" class="btn-normal"><span class="text">$_("Submit")</span></button>
- <button id-"button-report-rename-cancel" class="btn-normal close" type="button">
- <span class="text">$_("Cancel")</span>
- </button>
- </div>
- </footer>
-</div>
-<script>
- kimchi.report_rename_main();
-</script>
diff --git a/plugins/kimchi/ui/pages/repository-add.html.tmpl b/plugins/kimchi/ui/pages/repository-add.html.tmpl
deleted file mode 100644
index 950252a..0000000
--- a/plugins/kimchi/ui/pages/repository-add.html.tmpl
+++ /dev/null
@@ -1,113 +0,0 @@
-#*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014-2015
- *
- * 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.
- *#
-#unicode UTF-8
-#import gettext
-#from wok.cachebust import href
-#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
-#silent _ = t.gettext
-#silent _t = t.gettext
-<div id="repository-add-window" class="window">
- <form id="form-repository-add">
- <header class="window-header">
- <h1 class="title h1 grey">$_("Add a Repository")</h1>
- </header>
- <section>
- <div class="content">
- <div class="form-section yum">
- <h2>$_("Identifier")</h2>
- <div class="field">
- <div class="textbox-wrapper">
- <input type="text" class="text" name="repo_id" />
- </div>
- <div class="icon-info-circled light-grey c1 help-inline"></div>
- <p class="text-help help-inline">
- $_("Single word, unique identifier for the repository.")
- </p>
- </div>
- </div>
- <section class="form-section yum">
- <h2>$_("Name")</h2>
- <div class="field">
- <div class="textbox-wrapper">
- <input type="text" class="text" name="config[repo_name]" />
- </div>
- <div class="icon-info-circled light-grey c1 help-inline"></div>
- <p class="text-help help-inline">
- $_("Textual name for the repository.")
- </p>
- </div>
- </section>
- <section class="form-section">
- <h2>$_("URL")<span class="required" role="presentation" title='$_("Required Field")'>*</span></h2>
- <div class="field">
- <div class="textbox-wrapper">
- <input type="text" class="text required" name="baseurl" />
- </div>
- <div class="icon-info-circled light-grey c1 help-inline"></div>
- <p class="text-help help-inline">
- $_("URL to the repository. Supported protocols are http, ftp, and file.")
- </p>
- </div>
- <div class="field yum">
- <p class="yum">
- <input type="checkbox" name="isMirror" value="true" id="isMirror" />
- <label id="isMirrorLabel" for="isMirror">$_("Repository is a mirror")</label>
- </p>
- </div>
- </section>
- <section class="form-section repository-dist deb">
- <h2>$_("Distribution")</h2>
- <div class="field">
- <div class="textbox-wrapper">
- <input type="text" class="text" name="config[dist]" />
- </div>
- <div class="icon-info-circled light-grey c1 help-inline"></div>
- <p class="text-help help-inline">
- $_("Distribution of the DEB repository.")
- </p>
- </div>
- </section>
- <section class="form-section repository-comps deb">
- <h2>$_("Components")</h2>
- <div class="field">
- <div class="textbox-wrapper">
- <input type="text" class="text" name="config[comps]" />
- </div>
- <div class="icon-info-circled light-grey c1 help-inline"></div>
- <p class="text-help help-inline">
- $_("List of components in DEB repository.")
- </p>
- </div>
- </section>
- </div>
- </section>
- <footer>
- <div class="btn-group">
- <button type="submit" id="button-repository-add" class="btn-normal" disabled="disabled">
- <span class="text">$_("Add")</span>
- </button>
- <button type="button" id="button-repository-close" class="btn-normal close">
- <span class="text">$("Cancel")</span>
- </button>
- </div>
- </footer>
- </form>
-</div>
-<script>
- kimchi.repository_add_main();
-</script>
diff --git a/plugins/kimchi/ui/pages/repository-edit.html.tmpl b/plugins/kimchi/ui/pages/repository-edit.html.tmpl
deleted file mode 100644
index e5a3cfb..0000000
--- a/plugins/kimchi/ui/pages/repository-edit.html.tmpl
+++ /dev/null
@@ -1,117 +0,0 @@
-#*
- * Project Kimchi
- *
- * Copyright IBM, Corp. 2014-2015
- *
- * 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.
- *#
-#unicode UTF-8
-#import gettext
-#from wok.cachebust import href
-#silent t = gettext.translation($lang.domain, $lang.localedir, languages=$lang.lang, fallback=True)
-#silent _ = t.gettext
-#silent _t = t.gettext
-
-<div id="repository-edit-window" class="window">
- <form id="form-repository-edit">
- <header>
- <h1 class="title h1 grey">$_("Edit Repository")</h1>
- </header>
- <div class="content">
- <section id="form-repository-edit">
- <fieldset class="repository-edit-fieldset">
- <div class="repository-id yum">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-id-textbox">$_("ID")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-id-textbox" name="repo_id" type="text" disabled="disabled" readonly="readonly"/>
- </div>
- </div>
- <div class="repository-name yum">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-name-textbox">$_("Name")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-name-textbox" class="yum" name="config[repo_name]" type="text" />
- </div>
- </div>
- <div class="repository-url">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-baseurl-textbox">$_("URL")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-baseurl-textbox" name="baseurl" type="text" />
- </div>
- </div>
- <div class="repository-dist deb">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-urlargs-textbox">$_("Distribution")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-urlargs-textbox" class="deb" name="config[dist]" type="text" />
- </div>
- </div>
- <div class="repository-mirrorlist yum">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-urlargs-textbox">$_("Mirror List URL")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-urlargs-textbox" class="yum" name="config[mirrorlist]" type="text" />
- </div>
- </div>
- <div class="repository-comps deb">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-urlargs-textbox">$_("Components")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-urlargs-textbox" class="deb" name="config[comps]" type="text" />
- </div>
- </div>
- <div class="repository-gpgkey yum">
- <div class="repository-edit-wrapper-label">
- <label for="repository-edit-gpgkey-textbox">$_("GPG Key")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-gpgkey-textbox" class="yum" name="config[gpgkey]" type="text" />
- </div>
- </div>
- <div class="repository-gpgcheck yum">
- <div class="repository-edit-wrapper-label">
- <label>$_("GPG Check")</label>
- </div>
- <div class="repository-edit-wrapper-controls">
- <input id="repository-edit-gpgcheck-radio-true" class="yum" name="config[gpgcheck]" type="radio" value="true" />
- <label for="repository-edit-gpgcheck-radio-true">$_("Yes")</label>
- <input id="repository-edit-gpgcheck-radio-false" class="yum" name="config[gpgcheck]" type="radio" value="false" />
- <label for="repository-edit-gpgcheck-radio-false">$_("No")</label>
- </div>
- </div>
- </fieldset>
- </section>
- </div>
- <footer>
- <div class="btn-group">
- <button type="submit" id="repository-edit-button-save" class="btn-normal">
- <span class="text">$_("Save")</span>
- </button>
- <button type="button" id="repository-edit-button-cancel" class="close btn-normal">
- <span class="text">$_("Cancel")</span>
- </button>
- </div>
- </footer>
- </form>
-</div>
-<script type="text/javascript">
- kimchi.repository_edit_main();
-</script>
--
2.1.0
1
0
[PATCH 09/15] V2 Ginger Base : base plugin ui/pages/help files
by chandra@linux.vnet.ibm.com 27 Sep '15
by chandra@linux.vnet.ibm.com 27 Sep '15
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/ui/pages/help/Makefile.am | 37 ++++
plugins/gingerbase/ui/pages/help/de_DE/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/de_DE/host.dita | 49 +++++
plugins/gingerbase/ui/pages/help/dita-help.xsl | 26 +++
plugins/gingerbase/ui/pages/help/en_US/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/en_US/host.dita | 70 +++++++
plugins/gingerbase/ui/pages/help/es_ES/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/es_ES/host.dita | 49 +++++
plugins/gingerbase/ui/pages/help/fr_FR/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/fr_FR/host.dita | 68 +++++++
plugins/gingerbase/ui/pages/help/gingerbase.css | 208 +++++++++++++++++++++
plugins/gingerbase/ui/pages/help/it_IT/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/it_IT/host.dita | 51 +++++
plugins/gingerbase/ui/pages/help/ja_JP/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/ja_JP/host.dita | 70 +++++++
plugins/gingerbase/ui/pages/help/ko_KR/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/ko_KR/host.dita | 47 +++++
plugins/gingerbase/ui/pages/help/pt_BR/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/pt_BR/host.dita | 74 ++++++++
plugins/gingerbase/ui/pages/help/ru_RU/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/ru_RU/host.dita | 48 +++++
plugins/gingerbase/ui/pages/help/zh_CN/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/zh_CN/host.dita | 45 +++++
plugins/gingerbase/ui/pages/help/zh_TW/Makefile.am | 26 +++
plugins/gingerbase/ui/pages/help/zh_TW/host.dita | 50 +++++
plugins/kimchi/ui/pages/help/de_DE/host.dita | 49 -----
plugins/kimchi/ui/pages/help/en_US/host.dita | 70 -------
plugins/kimchi/ui/pages/help/es_ES/host.dita | 49 -----
plugins/kimchi/ui/pages/help/fr_FR/host.dita | 68 -------
plugins/kimchi/ui/pages/help/it_IT/host.dita | 51 -----
plugins/kimchi/ui/pages/help/ja_JP/host.dita | 70 -------
plugins/kimchi/ui/pages/help/ko_KR/host.dita | 47 -----
plugins/kimchi/ui/pages/help/pt_BR/host.dita | 74 --------
plugins/kimchi/ui/pages/help/ru_RU/host.dita | 48 -----
plugins/kimchi/ui/pages/help/zh_CN/host.dita | 45 -----
plugins/kimchi/ui/pages/help/zh_TW/host.dita | 50 -----
36 files changed, 1178 insertions(+), 621 deletions(-)
create mode 100644 plugins/gingerbase/ui/pages/help/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/de_DE/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/de_DE/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/dita-help.xsl
create mode 100644 plugins/gingerbase/ui/pages/help/en_US/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/en_US/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/es_ES/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/es_ES/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/fr_FR/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/fr_FR/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/gingerbase.css
create mode 100644 plugins/gingerbase/ui/pages/help/it_IT/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/it_IT/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/ja_JP/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/ja_JP/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/ko_KR/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/ko_KR/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/pt_BR/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/pt_BR/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/ru_RU/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/ru_RU/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/zh_CN/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/zh_CN/host.dita
create mode 100644 plugins/gingerbase/ui/pages/help/zh_TW/Makefile.am
create mode 100644 plugins/gingerbase/ui/pages/help/zh_TW/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/de_DE/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/en_US/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/es_ES/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/fr_FR/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/it_IT/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/ja_JP/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/ko_KR/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/pt_BR/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/ru_RU/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/zh_CN/host.dita
delete mode 100644 plugins/kimchi/ui/pages/help/zh_TW/host.dita
diff --git a/plugins/gingerbase/ui/pages/help/Makefile.am b/plugins/gingerbase/ui/pages/help/Makefile.am
new file mode 100644
index 0000000..2c61ea4
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/Makefile.am
@@ -0,0 +1,37 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+SUBDIRS = zh_CN it_IT en_US zh_TW pt_BR ja_JP ru_RU ko_KR fr_FR de_DE es_ES
+
+DITA_HTML_FILES = $(patsubst %.dita,%.html,$(wildcard */*.dita))
+HTML_FILES = $(if $(DITA_HTML_FILES), $(DITA_HTML_FILES), $(wildcard */*.html))
+DITA_XSL_FILE = dita-help.xsl
+
+EXTRA_DIST = $(DITA_XSL_FILE)
+
+helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help
+
+dist_help_DATA = gingerbase.css
+
+all: $(HTML_FILES) $(wildcard */*.dita)
+
+%.html: %.dita $(DITA_XSL_FILE)
+ xsltproc -o $@ $(DITA_XSL_FILE) $<
+
+CLEANFILES = $(HTML_FILES)
diff --git a/plugins/gingerbase/ui/pages/help/de_DE/Makefile.am b/plugins/gingerbase/ui/pages/help/de_DE/Makefile.am
new file mode 100644
index 0000000..dc393e4
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/de_DE/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+de_DE_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/de_DE
+
+dist_de_DE_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/de_DE/host.dita b/plugins/gingerbase/ui/pages/help/de_DE/host.dita
new file mode 100644
index 0000000..33a40e3
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/de_DE/host.dita
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="de-de">
+<title>Host</title>
+<shortdesc>Die Seite <wintitle>Host</wintitle> zeigt Informationen zum Hostsystem an und erm��glicht Ihnen, den Host herunterzufahren, erneut zu starten und eine Verbindung zu ihm herzustellen.</shortdesc>
+<csbody>
+<p>Sie k��nnen die folgenden Aktionen am Host durchf��hren:<ul>
+<li>W��hlen Sie <uicontrol>Herunterfahren</uicontrol> aus, um das Hostsystem herunterzufahren.</li>
+<li>W��hlen Sie <uicontrol>Erneut starten</uicontrol> aus, um das Hostsystem erneut zu starten.</li>
+<li>W��hlen Sie <uicontrol>Verbinden</uicontrol> aus, um eine VNC-Verbindung zum Hostsystem herzustellen, wenn noch keine Verbindung besteht.</li>
+</ul></p>
+<p>Klicken Sie auf die folgenden Abschnitte, um Informationen zum Host anzuzeigen:<dl>
+<dlentry>
+<dt>Basisinformationen</dt>
+<dd>Dieser Abschnitt zeigt die Verteilung, die Version und den Codenamen des Hostbetriebssystems sowie den Prozessortyp und die Speicherkapazit��t in GB an.</dd>
+</dlentry><dlentry>
+<dt>Systemstatistik</dt>
+<dd>Dieser Abschnitt zeigt mithilfe von Grafiken Statistiken f��r CPU, Speicher, Platten-E/A und Netz-E/A f��r den Host an. W��hlen Sie <uicontrol>Daten werden nach dem Verlassen dieser Seite gesammelt</uicontrol> aus, um mit der Sammlung von Daten fortzufahren, wenn die Host-Registerkarte nicht angezeigt wird.</dd>
+</dlentry><dlentry>
+<dt>Software-Updates</dt>
+<dd>Dieser Abschnitt zeigt Informationen f��r alle Pakete an, bei denen Aktualisierungen verf��gbar sind, einschlie��lich Paketname, Version, Architektur und Repository. Sie k��nnen alle aufgelisteten Pakete aktualisieren, indem Sie <uicontrol>Alle aktualisieren</uicontrol> ausw��hlen. Sie k��nnen nicht einzelne Pakete zur Aktualisierung ausw��hlen.</dd>
+</dlentry><dlentry>
+<dt>Repositorys</dt>
+<dd>Dieser Abschnitt zeigt Repositorys an, die dem Hostsystem zugeordnet sind. Sie k��nnen Repositorys hinzuf��gen, aktivieren, bearbeiten oder entfernen. Beim Hinzuf��gen wird ein Repository dem Hostsystem zugeordnet. Das Aktivieren eines Repositorys dagegen erm��glicht dem Host den Zugriff auf das Repository. Wenn Ihr System Red Hat Enterprise
+Linux oder Fedora ist, k��nnen Sie <filepath>yum</filepath>-Repositorys hinzuf��gen.
+Wenn Ihr System Ubuntu oder Debian ist, f��gen Sie <filepath>deb</filepath>-Repositorys hinzu.<p>Wenn Sie mit yum-Repositorys arbeiten, k��nnen Sie eine GPG-Pr��fung hinzuf��gen, um sicherzustellen, dass ein Paket aus diesem Repository nicht besch��digt wurde.
+W��hlen Sie ein Repository und dann <uicontrol>Bearbeiten</uicontrol> aus. W��hlen Sie <uicontrol>Ja</uicontrol> aus, um die GPG-Pr��fung zu aktivieren, und geben Sie dann ein URL zur GPG-Schl��sseldatei f��r das Repository ein.</p></dd>
+</dlentry><dlentry>
+<dt>Debugberichte</dt>
+<dd>Dieser Abschnitt zeigt Debugberichte, einschlie��lich Name und Dateipfad, an.
+Sie haben die M��glichkeit, einen neuen Bericht zu erstellen oder einen bestehenden Bericht umzubenennen, zu entfernen oder herunterzuladen.<p>Der Debugbericht wird w��hrend des Befehls <cmdname>sosreport</cmdname> generiert. Er ist verf��gbar f��r Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>-, Fedora-
+und Ubuntu-Verteilungen. Der Befehl generiert eine .tar-Datei, die Konfigurations- und Diagnoseinformationen enth��lt, wie zum Beispiel Kernelversion, geladene Module sowie System- und Servicekonfigurationdateien.
+Der Befehl f��hrt zudem externe Programme aus, um weitere Informationen zu sammeln, und speichert diese Ausgabe im resultierenden Archiv.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/dita-help.xsl b/plugins/gingerbase/ui/pages/help/dita-help.xsl
new file mode 100644
index 0000000..2e66903
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/dita-help.xsl
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:output method="xml" indent="yes" encoding="UTF-8" />
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <title><xsl:value-of select="/cshelp/title" /></title>
+ <meta charset="UTF-8" />
+ <link rel="shortcut icon" href="../../images/logo.ico" />
+ <link rel="stylesheet" type="text/css" href="../gingerbase.css" />
+ </head>
+ <body>
+ <xsl:apply-templates select="//cshelp" />
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="cshelp">
+ <h1><xsl:value-of select="title" /></h1>
+ <p class="shortdesc"><xsl:value-of select="shortdesc" /></p>
+ <p class="csbody"><xsl:copy-of select="csbody/node()" /></p>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/plugins/gingerbase/ui/pages/help/en_US/Makefile.am b/plugins/gingerbase/ui/pages/help/en_US/Makefile.am
new file mode 100644
index 0000000..0a75a81
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/en_US/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+en_US_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/en_US
+
+dist_en_US_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
\ No newline at end of file
diff --git a/plugins/gingerbase/ui/pages/help/en_US/host.dita b/plugins/gingerbase/ui/pages/help/en_US/host.dita
new file mode 100644
index 0000000..0dcb670
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/en_US/host.dita
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+<?Pub Sty _display FontColor="red"?>
+<?Pub Inc?>
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="en-us">
+<title>Host</title>
+<shortdesc>The <wintitle>Host</wintitle> page shows information about
+the host system, and allows you to shut down, restart, and connect
+to the host.</shortdesc>
+<csbody>
+<p>You can perform the following actions on the host:<ul>
+<li>Select <uicontrol>Shut down</uicontrol> to shut down the host
+system.</li>
+<li>Select <uicontrol>Restart</uicontrol> to restart the host system.</li>
+<li>Select <uicontrol>Connect</uicontrol> to open a VNC connection
+to the host system, if it is not already connected.</li>
+</ul></p>
+<p>Click the following sections to display information about the host:<dl>
+<dlentry>
+<dt>Basic information</dt>
+<dd>This section displays the host operating system distribution,
+version, and code name, as well as the processor type, the number of
+online CPUs and amount of memory in GB.</dd>
+</dlentry><dlentry>
+<dt>System statistics</dt>
+<dd>This section displays graphs to show statistics for CPU, memory,
+disk I/O, and network I/O for the host. Select <uicontrol>Collecting
+data after leaving this page</uicontrol> to continue collecting data
+when the host tab is out of view.</dd>
+</dlentry><dlentry>
+<dt>Software Updates</dt>
+<dd>This section displays information for all of the packages that
+have updates available, including package name, version, architecture,
+and repository. You can update all of the packages listed by selecting <uicontrol>Update
+All</uicontrol>. You cannot select individual packages for updates.</dd>
+</dlentry><dlentry>
+<dt>Repositories</dt>
+<dd>This section displays repositories that are associated with the
+host system. You can add, enable, edit, or remove repositories. Adding
+a repository associates it with the host system while enabling a repository
+allows the host to access it. If your system is Red Hat Enterprise
+Linux or Fedora, you can add <filepath>yum</filepath> repositories.
+If your system is Ubuntu or Debian, then add <filepath>deb</filepath> repositories.<p>If
+you are working with yum repositories, you can add a GPG check to
+verify that a package from this repository have not been corrupted.
+Select a repository and then <uicontrol>Edit</uicontrol>. Select <uicontrol>Yes</uicontrol> to
+enable GPG Check and then enter a URL to the GPG key file for the
+repository.</p><?Pub Caret 156?></dd>
+</dlentry><dlentry>
+<dt>Debug reports</dt>
+<dd>This section displays debug reports, including name and file path.
+You can select from options to generate a new report, or rename, remove,
+or download an existing report.<p>The debug report is generated using
+the <cmdname>sosreport</cmdname> command. It is available for Red
+Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora,
+and Ubuntu distributions. The command generates a .tar file that contains
+configuration and diagnostic information, such as the running kernel
+version, loaded modules, and system and service configuration files.
+The command also runs external programs to collect further information
+and stores this output in the resulting archive.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+<?Pub *0000003492?>
diff --git a/plugins/gingerbase/ui/pages/help/es_ES/Makefile.am b/plugins/gingerbase/ui/pages/help/es_ES/Makefile.am
new file mode 100644
index 0000000..b95744a
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/es_ES/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+es_ES_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/es_ES
+
+dist_es_ES_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/es_ES/host.dita b/plugins/gingerbase/ui/pages/help/es_ES/host.dita
new file mode 100644
index 0000000..7734244
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/es_ES/host.dita
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="es-es">
+<title>Host</title>
+<shortdesc>La p��gina <wintitle>Host</wintitle> muestra informaci��n sobre el sistema host y le permite concluir, reiniciar y conectar con el sistema principal.</shortdesc>
+<csbody>
+<p>Puede realizar las acciones siguientes en el host:<ul>
+<li>Seleccione <uicontrol>Concluir</uicontrol> para concluir el sistema host.</li>
+<li>Seleccione <uicontrol>Reiniciar</uicontrol> para reiniciar el sistema host.</li>
+<li>Seleccione <uicontrol>Conectar</uicontrol> para abrir una conexi��n VNC al sistema host, si no est�� conectado a��n.</li>
+</ul></p>
+<p>Pulse en las secciones siguientes para visualizar informaci��n acerca del host:<dl>
+<dlentry>
+<dt>Informaci��n b��sica</dt>
+<dd>Esta secci��n muestra la distribuci��n del sistema operativo de host, la versi��n y el nombre de c��digo, as�� como el tipo de procesador y la cantidad de memoria en GB.</dd>
+</dlentry><dlentry>
+<dt>Estad��sticas del sistema</dt>
+<dd>Esta secci��n muestra gr��ficos para mostrar estad��sticas para CPU, memoria, E/S de disco y E/S de red para el host. Seleccione <uicontrol>Recoger datos despu��s de salir de esta p��gina</uicontrol> para continuar la recogida de datos cuando la pesta��a principal ya no est�� a la vista.</dd>
+</dlentry><dlentry>
+<dt>Actualizaciones de software</dt>
+<dd>En esta secci��n se muestra informaci��n para todos los paquetes que tienen actualizaciones disponibles, incluido el nombre de paquete, versi��n, arquitectura y repositorio. Puede actualizar todos los paquetes listados seleccionando <uicontrol>Actualizar todo</uicontrol>. No puede seleccionar paquetes individuales para las actualizaciones.</dd>
+</dlentry><dlentry>
+<dt>Repositorios</dt>
+<dd>En esta secci��n se muestran los repositorios que est��n asociados con el sistema host. Puede a��adir, habilitar, editar o eliminar repositorios. A��adir un repositorio lo asocia con el sistema host mientras que habilitar un repositorio permite que el host acceda a ��l. Si el sistema es Red Hat Enterprise
+Linux o Fedora, puede a��adir repositorios <filepath>yum</filepath>.
+Si el sistema es Ubuntu o Debian, a��ada repositorios <filepath>deb</filepath>.<p>Si est�� trabajando con repositorios yum, puede a��adir una comprobaci��n GPG para verificar que un paquete de este repositorio no ha resultado da��ado.
+Seleccione un repositorio y, a continuaci��n, <uicontrol>Editar</uicontrol>. Seleccione <uicontrol>S��</uicontrol> para habilitar la comprobaci��n GPG y, a continuaci��n, especifique un URL al archivo de claves GPG para el repositorio.</p></dd>
+</dlentry><dlentry>
+<dt>Informes de depuraci��n</dt>
+<dd>En esta secci��n se muestran informes de depuraci��n, incluido el nombre y la ruta de archivo.
+Puede seleccionar entre opciones para generar un informe nuevo, o bien redenominar, eliminar o descargar un informe existente.<p>El informe de depuraci��n se genera utilizando el mandato <cmdname>sosreport</cmdname>. Est�� disponible para distribuciones de Red
+Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora y Ubuntu. El mandato genera un archivo .tar que contiene la informaci��n de configuraci��n y de diagn��stico, como la versi��n de kernel en ejecuci��n, los m��dulos de carga y los archivos de configuraci��n del sistema y servicio.
+El mandato tambi��n ejecuta programas externos para recopilar informaci��n adicional y almacena esta salida en el archivo resultante.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/fr_FR/Makefile.am b/plugins/gingerbase/ui/pages/help/fr_FR/Makefile.am
new file mode 100644
index 0000000..c3e9a14
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/fr_FR/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+fr_FR_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/fr_FR
+
+dist_fr_FR_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/fr_FR/host.dita b/plugins/gingerbase/ui/pages/help/fr_FR/host.dita
new file mode 100644
index 0000000..f4c330b
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/fr_FR/host.dita
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="fr-fr">
+<title>H��te</title>
+<shortdesc>La page <wintitle>H��te</wintitle> affiche des informations
+sur le syst��me h��te et vous permet d'arr��ter, de red��marrer et de vous
+connecter �� l'h��te.</shortdesc>
+<csbody>
+<p>Vous pouvez effectuer les actions suivantes sur l'h��te :<ul>
+<li>S��lectionnez <uicontrol>Arr��ter</uicontrol> pour arr��ter le syst��me h��te.</li>
+<li>S��lectionnez <uicontrol>Red��marrer</uicontrol> pour red��marrer le syst��me h��te.</li>
+<li>S��lectionnez <uicontrol>Connexion</uicontrol> pour ouvrir une connexion VNC
+au syst��me h��te, si celui-ci n'est pas d��j�� connect��.</li>
+</ul></p>
+<p>Cliquez sur les sections suivantes pour afficher des informations sur l'h��te :<dl>
+<dlentry>
+<dt>Informations de base</dt>
+<dd>Cette section affiche la distribution, la version et le nom de code
+du syst��me d'exploitation h��te, ainsi que le type de processeur et la quantit��
+de m��moire en Go.</dd>
+</dlentry><dlentry>
+<dt>Statistiques syst��me</dt>
+<dd>Cette section affiche les graphiques des statistiques pour l'UC, m��moire, ainsi que
+les E-S disque et E-S r��seau pour l'h��te. S��lectionnez <uicontrol>Collecte des donn��es une fois la page quitt��e</uicontrol>
+pour continuer la collecte de donn��es lorsque l'onglet h��te n'est plus visible.</dd>
+</dlentry><dlentry>
+<dt>Mises �� jour logicielles</dt>
+<dd>Cette section affiche des informations pour tous les modules qui
+disposent de mises �� jour disponibles, y compris le nom de module, la version, l'architecture
+et le r��f��rentiel. Vous pouvez mettre �� jour toutes les modules r��pertori��s en s��lectionnant <uicontrol>Tout
+mettre �� jour</uicontrol>. Vous ne pouvez pas s��lectionner des modules individuels pour les mises �� jour.</dd>
+</dlentry><dlentry>
+<dt>R��f��rentiels</dt>
+<dd>Cette section affiche les r��f��rentiels associ��s au syst��me h��te. Vous pouvez ajouter, activer, ��diter ou retirer des r��f��rentiels. L'ajout d'un r��f��rentiel associe celui-ci au syst��me h��te,
+tandis que l'activation d'un r��f��rentiel permet �� l'h��te d'y acc��der. Si votre syst��me est Red Hat Enterprise Linux ou Fedora,
+vous pouvez ajouter des r��f��rentiels <filepath>yum</filepath>.
+Si votre syst��me est de type Ubuntu ou Debian, ajoutez des r��f��rentiels
+<filepath>deb</filepath>.<p>Si vous travaillez avec des r��f��rentiels yum, vous pouvez ajouter un contr��le GPG
+afin de v��rifier qu'un module provenant de ce r��f��rentiel n'a pas ��t�� endommag��.
+S��lectionnez un r��f��rentiel puis cliquez sur <uicontrol>Editer</uicontrol>. S��lectionnez <uicontrol>Oui</uicontrol> pour activer le contr��le GPG,
+puis entrez une URL pour le fichier de cl��s GPG du r��f��rentiel.</p></dd>
+</dlentry><dlentry>
+<dt>Rapports de d��bogage</dt>
+<dd>Cette section affiche les rapports de d��bogage, y compris le nom et le chemin du fichier.
+Vous pouvez faire un choix parmi les options afin de g��n��rer un nouveau rapport, ou renommer, supprimer,
+ou t��l��charger un rapport existant.<p>Le rapport de d��bogage est g��n��r�� ��
+l'aide de la commande <cmdname>sosreport</cmdname>. Cette option est disponible pour les distributions
+Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora et Ubuntu. La commande g��n��re un fichier .tar contenant la configuration et des informations de diagnostic,
+telles que la version du noyau d'ex��cution, les modules charg��s, ainsi que les fichiers de configuration
+du syst��me et de la maintenance.
+La commande ex��cute ��galement des programmes externes pour collecter des informations
+suppl��mentaires et stocke cette sortie dans l'archive r��sultante.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/gingerbase.css b/plugins/gingerbase/ui/pages/help/gingerbase.css
new file mode 100644
index 0000000..88b23bf
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/gingerbase.css
@@ -0,0 +1,208 @@
+/*
+ * Project Ginger Base
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ */
+BODY {
+ background: #FFFFFF;
+ margin-bottom: 1em;
+ margin-left: .5em;
+}
+
+bold {
+ font-weight: bold;
+}
+
+boldItalic {
+ font-weight: bold;
+ font-style: italic;
+}
+
+italic {
+ font-style: italic;
+}
+
+underlined {
+ text-decoration: underline;
+}
+
+uicontrol {
+ font-weight: bold;
+}
+
+filepath {
+ font-family: monospace, monospace;
+}.option {
+ font-family: monospace, monospace;
+}
+
+cmdname {
+ font-weight: bold;
+ font-family: monospace, monospace;
+}
+
+.defparmname {
+ font-weight: bold;
+ text-decoration: underline;
+ font-family: monospace, monospace;
+}
+
+.kwd {
+ font-weight: bold;
+}
+
+.defkwd {
+ font-weight: bold;
+ text-decoration: underline;
+}
+
+var {
+ font-style : italic;
+}
+
+strongwintitle {
+ font-weight : bold;
+}
+
+parmname {
+ font-weight: bold;
+ font-family: monospace, monospace;
+ white-space: nowrap;
+}
+
+code {
+ font-family: monospace, monospace;
+}
+
+pre {
+ font-family: monospace, monospace;
+}
+
+CITE {
+ font-style: italic;
+}
+
+EM {
+ font-style: italic;
+}
+
+STRONG {
+ font-weight: bold;
+}
+
+VAR {
+ font-style: italic;
+}
+
+dt {
+ font-weight: bold;
+}
+
+/***********************************************************
+ * Basic fonts
+ ***********************************************************/
+body,
+td,
+th,
+caption {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10pt;
+}
+
+pre, code {
+ font-family: MS Courier New, Courier, monospace;
+}
+
+h1, h2, h3 {
+ font-size: 12pt;
+ font-weight: bold;
+ color: #336699;
+}
+
+h4 {
+ font-size: 10pt;
+ font-weight: bold;
+ color: #336699;
+}
+
+/***********************************************************
+ * Basic indents, padding, and margin
+ ***********************************************************/
+body {
+ color: black;
+ background-color: white;
+ margin: 0;
+ padding-top: 0.2em;
+ padding-left: 0.6em;
+ padding-right: 0.2em;
+ padding-bottom: 1em;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ padding: 0;
+ margin-top: 1em;
+ margin-bottom: 0.75em;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+address,
+dl,
+li,
+p {
+ padding: 0;
+ margin-top: 0.75em;
+ margin-bottom: 0.75em;
+ margin-left: 0;
+ margin-right: 0;
+ line-height: 125%;
+}
+
+td dl {
+ margin-left: 2em;
+}
+
+pre {
+ padding: 0;
+ margin-top: 0.75em;
+ margin-bottom: 0.75em;
+ margin-left: 2em;
+ margin-right: 0;
+}
+
+ol,
+ul {
+ padding: 0;
+ margin-top: 0.75em;
+ margin-bottom: 0.75em;
+ margin-left: 2.00em;
+ margin-right: 0;
+}
+
+dd {
+ margin-left: 3.00em;
+ margin-top: 0.75em;
+ margin-bottom: 0.75em;
+}
+
+dt {
+ margin-left: 1.00em;
+ margin-top: 0.75em;
+}
diff --git a/plugins/gingerbase/ui/pages/help/it_IT/Makefile.am b/plugins/gingerbase/ui/pages/help/it_IT/Makefile.am
new file mode 100644
index 0000000..3eaa7b8
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/it_IT/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+it_IT_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/it_IT
+
+dist_it_IT_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/it_IT/host.dita b/plugins/gingerbase/ui/pages/help/it_IT/host.dita
new file mode 100644
index 0000000..63d3367
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/it_IT/host.dita
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="it-it">
+<title>Host</title>
+<shortdesc>La pagina <wintitle>Host</wintitle> visualizza le informazioni sul sistema host e consente di arrestarlo, riavviarlo e connettersi ad esso.</shortdesc>
+<csbody>
+<p>�� possibile effettuare le seguenti operazioni sull'host:<ul>
+<li>Selezionare <uicontrol>Arresta</uicontrol> per arrestare il sistema host.</li>
+<li>Selezionare <uicontrol>Riavvia</uicontrol> per riavviare il sistema host.</li>
+<li>Selezionare <uicontrol>Connetti</uicontrol> per aprire una connessione VNC al sistema host, se non �� gi�� connesso.</li>
+</ul></p>
+<p>Fare clic sulle seguenti sezioni per visualizzare le informazioni sull'host:<dl>
+<dlentry>
+<dt>Informazioni di base</dt>
+<dd>Questa sezione visualizza il nome codice, la versione e la distribuzione del sistema operativo, come pure il tipo di processore e la quantit�� di memoria in GB.</dd>
+</dlentry><dlentry>
+<dt>Statistiche di sistema</dt>
+<dd>Questa sezione visualizza i grafici che mostrano le statistiche per la CPU, la memoria, l'I/O disco e di rete per l'host. Selezionare <uicontrol>Raccolta dati all'uscita dalla pagina</uicontrol> per continuare la raccolta dei dati quando la scheda host non �� pi�� visibile.</dd>
+</dlentry><dlentry>
+<dt>Aggiornamenti del software</dt>
+<dd>Questa sezione visualizza le informazioni per tutti i pacchetti per cui sono disponibili gli aggiornamenti, incluso il nome, la versione, l'architettura e il repository del pacchetto. �� possibile aggiornare tutti i pacchetti elencati, selezionando <uicontrol>Aggiorna tutto</uicontrol>. Non �� possibile selezionare singoli pacchetti per gli aggiornamenti.</dd>
+</dlentry><dlentry>
+<dt>Repository</dt>
+<dd>Questa sezione visualizza i repository associati al sistema host. �� possibile aggiungere, abilitare, modificare o rimuovere i repository. L'aggiunta di un repository lo associa al sistema host, mentre l'abilitazione di un repository
+consente all'host di accedervi. Se il sistema �� Red Hat Enterprise
+Linux o Fedora, �� possibile aggiungere i repository <filepath>yum</filepath>.
+Se il sistema �� Ubuntu o Debian, aggiungere i repository <filepath>deb</filepath>.<p>Se si stanno utilizzando i repository yum, �� possibile aggiungere un controllo GPG per verificare che un pacchetto da questo repository non sia stato corrotto.
+Selezionare un repository, quindi <uicontrol>Modifica</uicontrol>. Selezionare <uicontrol>S��</uicontrol> per abilitare il controllo GPG, quindi immettere un URL al file di chiavi GPG per il
+repository.</p></dd>
+</dlentry><dlentry>
+<dt>Report di debug</dt>
+<dd>Questa sezione visualizza i report di debug, incluso il nome e il percorso file.
+Le opzioni disponibili consentono di generare un nuovo report oppure ridenominare, rimuovere o scaricare un report esistente.<p>Il report di debug viene generato utilizzando il comando <cmdname>sosreport</cmdname>. �� disponibile per le distribuzioni Red
+Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora e Ubuntu. Il comando genera un file .tar che contiene informazioni di diagnostica e configurazione, come la versione del kernel in esecuzione, i moduli caricati e i file di configurazione del servizio e del sistema.
+Il comando esegue anche programmi esterni per raccogliere ulteriori informazioni e memorizza l'output nell'archivio risultante.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/ja_JP/Makefile.am b/plugins/gingerbase/ui/pages/help/ja_JP/Makefile.am
new file mode 100644
index 0000000..eef3ea8
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/ja_JP/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ja_JP_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/ja_JP
+
+dist_ja_JP_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/ja_JP/host.dita b/plugins/gingerbase/ui/pages/help/ja_JP/host.dita
new file mode 100644
index 0000000..3a0141c
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/ja_JP/host.dita
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="ja-jp">
+<title>���������</title>
+<shortdesc><wintitle>���������������</wintitle>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+</shortdesc>
+<csbody>
+<p>���������������������������������������������������������������������
+<ul>
+<li>������������������������������������������������������������<uicontrol>���������������������������</uicontrol>���������������������
+</li>
+<li>������������������������������������������������<uicontrol>���������������</uicontrol>���������������������
+</li>
+<li>������������������������������ VNC ��������� (���������������������������������������) ���������������������������<uicontrol>������������</uicontrol>���������������������
+</li>
+</ul></p>
+<p>������������������������������������������������������������������������������������������������������������
+<dl>
+<dlentry>
+<dt>������������</dt>
+<dd>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ (GB ������) ������������������������
+</dd>
+</dlentry><dlentry>
+<dt>������������������������</dt>
+<dd>������������������������������������������ CPU���������������������������������������������������������������������������������������������������������������������������������������
+���������������������������������������������������������������������������������<uicontrol>���������������������������������������������������������������</uicontrol>������������������������������
+</dd>
+</dlentry><dlentry>
+<dt>������������������������</dt>
+<dd>���������������������������������������������������������������������������������������������
+(������������������������������������������������������������������������������������������) ������������������������
+<uicontrol>���������������������</uicontrol>���������������������������������������������������������������������������������������������
+���������������������������������������������������������������������������������������������
+</dd>
+</dlentry><dlentry>
+<dt>������������������</dt>
+<dd>������������������������������������������������������������������������������������������������������������������������������
+������������������������������������������������������������������������������������������������������������������
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+��������������� Red Hat Enterprise Linux ��������� Fedora ���������������<filepath>yum</filepath> ������������������������������������������
+��������������� Ubuntu ��������� Debian ���������������<filepath>deb</filepath> ������������������������������������������������
+<p>yum ������������������������������������������������������������������������������������������������������������������������������������������������������������GPG ������������������������������������
+���������������������������������<uicontrol>������������</uicontrol>������������������������������������
+<uicontrol>������������</uicontrol>��������������� GPG ������������������������������������������������������������������ GPG ������������������ URL ������������������������������
+</p></dd>
+</dlentry><dlentry>
+<dt>���������������������������</dt>
+<dd>��������������������������������������������������������� (������������������������������������) ������������������������
+������������������������������������������������������������������������������������������������������������������������������������������������������������������
+<p>���������������������������������<cmdname>sosreport</cmdname> ������������������������������������
+������������Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>���Fedora������������ Ubuntu ���������������������������������������������������������������
+��������������������������������������������������� (������������������������������������������������������������������������������������������������������������������������������������������������) ������������ .tar ���������������������������������
+������������������������������������������������������������������������������������������������������������������������������������������������������������
+</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 227 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 1 -->
diff --git a/plugins/gingerbase/ui/pages/help/ko_KR/Makefile.am b/plugins/gingerbase/ui/pages/help/ko_KR/Makefile.am
new file mode 100644
index 0000000..e25a747
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/ko_KR/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ko_KR_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/ko_KR
+
+dist_ko_KR_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/ko_KR/host.dita b/plugins/gingerbase/ui/pages/help/ko_KR/host.dita
new file mode 100644
index 0000000..ee4a9c3
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/ko_KR/host.dita
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="ko-kr">
+<title>���������</title>
+<shortdesc><wintitle>���������</wintitle> ��������������� ��������� ������������ ������ ��������� ������������ ��� ������������ ������������ ������������ ������ ��� ������ ��������������� ������������ ��������� ��� ������������.</shortdesc>
+<csbody>
+<p>������������ ������ ������ ��������� ��������� ��� ������������.<ul>
+<li>��������� ������������ ��������������� <uicontrol>��������� ������</uicontrol>��� ���������������.</li>
+<li>��������� ������������ ������ ��������������� <uicontrol>������ ������</uicontrol>��� ���������������.</li>
+<li>������ ������������ ������ ������ ������, ��������� ������������ ������ VNC ��������� ��������������� <uicontrol>������</uicontrol>��� ���������������.</li>
+</ul></p>
+<p>������������ ������ ��������� ��������������� ������ ��������� ������������������.<dl>
+<dlentry>
+<dt>������ ������</dt>
+<dd>��� ������������ ��������� ������ ������ ������, ������, ������ ������, ������������ ������, ��������� ������(GB) ������ ���������������.</dd>
+</dlentry><dlentry>
+<dt>��������� ������</dt>
+<dd>��� ������������ ������������ CPU, ���������, ��������� I/O, ������������ I/O��� ������ ��������� ������������ ������������ ���������������. ��������� ������ ��������� ��� ��������� ��������� ��������������� <uicontrol>��� ������������ ������ ������ ��������� ������</uicontrol>��� ���������������.</dd>
+</dlentry><dlentry>
+<dt>��������������� ������������</dt>
+<dd>��� ������������ ��������� ������, ������, ������������, ������������ ������������ ������ ��������� ��������������� ������ ������ ������������ ������ ��������� ���������������. <uicontrol>������ ������������</uicontrol>��� ������������ ��������� ������ ������������ ��������������� ��� ������������. ��������������� ������ ������ ������������ ��������� ������ ������������.</dd>
+</dlentry><dlentry>
+<dt>���������</dt>
+<dd>��� ������������ ��������� ������������ ��������� ������������ ���������������. ������������ ���������������, ������������ ���������������, ���������������, ��������� ��� ������������. ������������ ������������ ������������ ��������� ������������ ������������, ������������ ������������ ������������ ������������ ������������ ������������ ��� ������������. ������ ������������ Red Hat Enterprise Linux ������ Fedora��� ������, <filepath>yum</filepath> ������������ ��������� ��� ������������.
+������ ������������ Ubuntu ������ Debian��� ������, <filepath>deb</filepath> ������������ ������������������.<p>yum ������������ ������������ ������, GPG ��������� ������������ ��� ������������ ������������ ������������ ������������ ��������� ��� ������������.
+������������ ��������� ��� <uicontrol>������</uicontrol>��� ������������������. <uicontrol>���</uicontrol>��� ������������ GPG ��������� ������������ ��������� ��� ������������ ������ GPG ��� ��������� URL��� ������������������.</p></dd>
+</dlentry><dlentry>
+<dt>��������� ���������</dt>
+<dd>��� ������������ ������ ��� ������ ��������� ��������� ��������� ������������ ���������������.
+��� ��������� ������, ������ ��������� ������ ���������, ������, ������������ ������ ������ ��������� ��������� ��� ������������.<p>��������� ������������ <cmdname>sosreport</cmdname> ��������� ������������ ���������������. ������ Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora ��� Ubuntu ������������ ������ ���������������. ��� ��������� ������ ��� ������ ������(���: ������ ������ ������ ������, ��������� ������, ��������� ��� ��������� ������ ������)��� ������������ .tar ��������� ���������������.
+������ ��� ��������� ������ ��������������� ������������ ������ ��������� ������������ ������ ��������������� ��� ��������� ���������������.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/pt_BR/Makefile.am b/plugins/gingerbase/ui/pages/help/pt_BR/Makefile.am
new file mode 100644
index 0000000..afb77db
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/pt_BR/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+pt_BR_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/pt_BR
+
+dist_pt_BR_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/pt_BR/host.dita b/plugins/gingerbase/ui/pages/help/pt_BR/host.dita
new file mode 100644
index 0000000..88f7eb2
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/pt_BR/host.dita
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="pt-br">
+<title>Host</title>
+<shortdesc>A p��gina <wintitle>Host</wintitle> mostra informa����es sobre
+o sistema host e permite encerrar, reiniciar e conectar
+ao host.</shortdesc>
+<csbody>
+<p>�� poss��vel executar as a����es a segur no host:<ul>
+<li>Selecione <uicontrol>Encerrar</uicontrol> para encerrar o sistema
+host.</li>
+<li>Selecione <uicontrol>Reiniciar</uicontrol> para reiniciar o sistema host.</li>
+<li>Selecione <uicontrol>Conectar</uicontrol> para abrir uma conex��o VNC
+para o sistema host, se ele j�� n��o estiver conectado.</li>
+</ul></p>
+<p>Clique nas se����es a seguir para exibir informa����es sobre o host:<dl>
+<dlentry>
+<dt>Informa����es b��sicas</dt>
+<dd>Esta se����o exibe a distribui����o do sistema operacional do host,
+a vers��o e o nome do c��digo, bem como o tipo de processador e quantia de
+mem��ria em GB.</dd>
+</dlentry><dlentry>
+<dt>Estat��sticas do sistema</dt>
+<dd>Esta se����o exibe gr��ficos para mostrar estat��sticas para CPU, mem��ria,
+E/S de disco e E/S de rede para o host. Selecione <uicontrol>Coletando
+dados depois de sair desta p��gina</uicontrol> para continuar a coletar dados
+quando a guia do host estiver fora de visualiza����o.</dd>
+</dlentry><dlentry>
+<dt>Atualiza����es de software</dt>
+<dd>Esta se����o exibe informa����es de todos os pacotes que
+possuem atualiza����es dispon��veis, incluindo nome do pacote, vers��o, arquitetura
+e reposit��rio. �� poss��vel atualizar todos os pacotes listados selecionando <uicontrol>Atualizar
+todos</uicontrol>. N��o �� poss��vel selecionar pacotes individuais para atualiza����es.</dd>
+</dlentry><dlentry>
+<dt>Reposit��rios</dt>
+<dd>Esta se����o exibe reposit��rios que est��o associados ao
+sistema host. �� poss��vel incluir, ativar, editar ou remover reposit��rios. Incluir
+um reposit��rio o associa com o sistema host enquanto ativar um reposit��rio
+permite que o host o acesse. Se o seu sistema for Red Hat Enterprise
+Linux ou Fedora, ser�� poss��vel incluir reposit��rios <filepath>yum</filepath>.
+Se o seu sistema for Ubuntu ou Debian, inclua reposit��rios <filepath>deb</filepath>.<p>Se
+voc�� estiver trabalhando com reposit��rios yum, ser�� poss��vel incluir uma verifica����o de GPG para
+verificar se um pacote desse reposit��rio n��o foi corrompido.
+Selecione um reposit��rio e, em seguida, <uicontrol>Editar</uicontrol>. Selecione <uicontrol>Sim</uicontrol> para
+ativar a Verifica����o de GPG e, em seguida, insira uma URL no arquivo-chave de GPG para o
+reposit��rio.</p></dd>
+</dlentry><dlentry>
+<dt>Relat��rios de depura����o</dt>
+<dd>Esta se����o exibe relat��rios de depura����o, incluindo nome e caminho do arquivo.
+�� poss��vel selecionar a partir das op����es para gerar um novo relat��rio ou renomear, remover
+ou fazer o download de um relat��rio existente.<p>O relat��rio de depura����o �� gerado usando
+o comando <cmdname>sosreport</cmdname>. Ele est�� dispon��vel para distribui����es
+Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora
+e Ubuntu. O comando gera um arquivo .tar que cont��m
+informa����es de configura����o e de diagn��stico, como vers��o do kernel
+em execu����o, m��dulos carregados e arquivos de configura����o de sistema e de servi��o.
+O comando tamb��m executa programas externos para coletar informa����es adicionais
+e armazena essa sa��da no archive resultante.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/ru_RU/Makefile.am b/plugins/gingerbase/ui/pages/help/ru_RU/Makefile.am
new file mode 100644
index 0000000..7f1bc1c
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/ru_RU/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ru_RU_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/ru_RU
+
+dist_ru_RU_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/ru_RU/host.dita b/plugins/gingerbase/ui/pages/help/ru_RU/host.dita
new file mode 100644
index 0000000..fb72c21
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/ru_RU/host.dita
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="ru-ru">
+<title>��������</title>
+<shortdesc>���������������� <wintitle>��������</wintitle> �������������������� �������������������� �� �������������� ���������� �� ������������������ �������������������������� ��������, �������������������������� �������� �� ������������������������ �� ��������.</shortdesc>
+<csbody>
+<p>���� ���������� ���������� ������������������ ������������������ ����������������:<ul>
+<li><uicontrol>������������������ ������������</uicontrol> - �������������������� �������������� ����������.</li>
+<li><uicontrol>��������������������������</uicontrol> - �������������������������� �������������� ����������.</li>
+<li><uicontrol>������������������������</uicontrol> - �������������� �������������������� VNC �� ���������������� ����������, �������� ������ ������ ���� ����������������������.</li>
+</ul></p>
+<p>���������������� ���� ������������������ ���������������� ������ ������������������ �������������������� �� ����������:<dl>
+<dlentry>
+<dt>�������������� ��������������������</dt>
+<dd>�� �������� �������������� ������������������������ �������������� ������������������������ ��������������, ������ ������������ �� �������������� ������, �� ���������� ������ �������������������� �� ���������� ������������ �� ����.</dd>
+</dlentry><dlentry>
+<dt>������������������ ��������������������</dt>
+<dd>�� �������� �������������� ������������������������ ��������������, �������������������� ���������������������������� �������������������� �� ��������������������, ������������, ���������������� ����������-������������ �� �������������� ����������-������������ ������ ����������. ���������������� <uicontrol>�������� ������������ ���������� ���������������� �������� ����������������</uicontrol>, ���������� �������� ������������ ���������������������� ���������� ���������������� �������������� ��������.</dd>
+</dlentry><dlentry>
+<dt>�������������������� ������������������������ ����������������������</dt>
+<dd>�� �������� �������������� ������������������������ �������������������� ������ �������� ��������������, ������ �������������� ���������������� ��������������������, �������������� ������ ������������, ������������, ���������������������� �� ������������������. ���������� ���������������� ������ ������������ �� ������������ �������������� ���� <uicontrol>���������������� ������</uicontrol>. ������������������ ������������ ������ �������������������� �������������� ������������.</dd>
+</dlentry><dlentry>
+<dt>������������������</dt>
+<dd>�� �������� �������������� ������������������������ ������������������, ������������������ �� ���������������� ����������. ������������������ ���������� ������������������, ������������������������, ���������������� �� ��������������. ������ �������������������� ������������������ ���������������������� �� ���������������� ����������, ������ ������������������ ������������������ �������������������� ������������������ ������ ����������. �������� �������������� - Red Hat Enterprise Linux ������ Fedora, ���������� ���������������� ������������������ <filepath>yum</filepath>.
+�������� �������������� - Ubuntu ������ Debian, ���������������� ������������������ <filepath>deb</filepath>.<p>������ ������������ �� ���������������������� yum ���������� ���������������� ���������������� GPG ������ ���������������� ���������������������� �������������� ���� �������������� ������������������.
+���������������� ������������������ �� ���������������� ���� <uicontrol>����������������</uicontrol>. ���������������� <uicontrol>����</uicontrol>, ���������� ���������������� ���������������� GPG, �� �������������� URL ���������� ������������ GPG ������ ������������������.</p></dd>
+</dlentry><dlentry>
+<dt>�������������������� ������������</dt>
+<dd>�� �������� �������������� ������������������������ �������������������� ������������, �������������� ������ �� ��������.
+���������������� �������������� ������ ����������������, ����������������������������, ���������������� �� ���������������� ��������������.<p>�������������������� ���������� ������������������ ���������������� <cmdname>sosreport</cmdname>. ���� ���������������� ������ Red
+Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora �� Ubuntu. �������������� �������������� �������� .tar �� �������������������������������� �� ������������������������������ ����������������������, ���������� ������ ������������ ��������, ���������������������� ������������ �� ���������� ������������������������ �������������� �� ����������.
+�������������� ���������� ������������������ �������������� ������������������ ������ ���������� ���������������������������� �������������������� �� ������������������ ���� ���������� �� ���������������������������� ������������.</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/zh_CN/Makefile.am b/plugins/gingerbase/ui/pages/help/zh_CN/Makefile.am
new file mode 100644
index 0000000..9cb5a0c
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/zh_CN/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+zh_CN_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/zh_CN
+
+dist_zh_CN_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/zh_CN/host.dita b/plugins/gingerbase/ui/pages/help/zh_CN/host.dita
new file mode 100644
index 0000000..78a89c3
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/zh_CN/host.dita
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="zh-cn">
+<title>������</title>
+<shortdesc>���<wintitle>������</wintitle>������������������������������������������������������������������������������������������������������</shortdesc>
+<csbody>
+<p>���������������������������������<ul>
+<li>������<uicontrol>������</uicontrol>������������������������</li>
+<li>������<uicontrol>������������</uicontrol>������������������������������</li>
+<li>������<uicontrol>������</uicontrol>��������������������������� VNC ���������������������������������</li>
+</ul></p>
+<p>���������������������������������������������������<dl>
+<dlentry>
+<dt>������������</dt>
+<dd>��������������������������������������������������������������������������������������������������������� GB ���������</dd>
+</dlentry><dlentry>
+<dt>������������������</dt>
+<dd>��������������������������������������������� CPU������������������ I/O ��������� I/O ������������������������<uicontrol>���������������������������������</uicontrol>������������������������������������������������������������</dd>
+</dlentry><dlentry>
+<dt>������������</dt>
+<dd>���������������������������������������������������������������������������������������������������������������������������������������������<uicontrol>������������</uicontrol>���������������������������������������������������������������������������������</dd>
+</dlentry><dlentry>
+<dt>���������</dt>
+<dd>��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Red Hat Enterprise Linux ��� Fedora������������������ <filepath>yum</filepath> ��������������������������������� Ubuntu ��� Debian������������������ <filepath>deb</filepath> ������������<p>��������������� Yum ��������������������������� GPG ������������������������������������������������������������������������������������������������<uicontrol>������</uicontrol>���������<uicontrol>���</uicontrol>��������� GPG ��������������������������������� GPG ��������������� URL���</p></dd>
+</dlentry><dlentry>
+<dt>������������</dt>
+<dd>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<p>���������������������
+<cmdname>sosreport</cmdname> ��������������������������������� Red
+Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>���Fedora ��� Ubuntu ������������������������������������������������������������ .tar ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/gingerbase/ui/pages/help/zh_TW/Makefile.am b/plugins/gingerbase/ui/pages/help/zh_TW/Makefile.am
new file mode 100644
index 0000000..e27b90b
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/zh_TW/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+zh_TW_helpdir = $(datadir)/wok/plugins/gingerbase/ui/pages/help/zh_TW
+
+dist_zh_TW_help_DATA = $(wildcard *.html) $(NULL)
+
+EXTRA_DIST = $(wildcard *.dita)
+
+CLEANFILES = $(wildcard *.html)
diff --git a/plugins/gingerbase/ui/pages/help/zh_TW/host.dita b/plugins/gingerbase/ui/pages/help/zh_TW/host.dita
new file mode 100644
index 0000000..a55aae4
--- /dev/null
+++ b/plugins/gingerbase/ui/pages/help/zh_TW/host.dita
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Arbortext, Inc., 1988-2011, v.4002-->
+<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
+ "..\dtd\cshelp.dtd">
+
+
+<!--This DITA specialized document type is not supported by the Authoring Tools development team.
+For support please see:
+https://w3.opensource.ibm.com/projects/dita-cshelp/-->
+<cshelp id="kimhhost" xml:lang="zh-tw">
+<title>������</title>
+<shortdesc>���<wintitle>������</wintitle>���������������������������������������������������������������������������������������������������������</shortdesc>
+<csbody>
+<p>������������������������������������������<ul>
+<li>������<uicontrol>������</uicontrol>������������������������</li>
+<li>������<uicontrol>������������</uicontrol>������������������������������</li>
+<li>������<uicontrol>������</uicontrol>��������������������������� VNC ������������������������������������������������</li>
+</ul></p>
+<p>������������������������������������������������������<dl>
+<dlentry>
+<dt>������������</dt>
+<dd>������������������������������������������������������������������������������������������������������������������ (GB)���</dd>
+</dlentry><dlentry>
+<dt>������������������</dt>
+<dd>��������������������������������������������������� CPU��������������������� I/O ��������� I/O ������������������������<uicontrol>���������������������������������</uicontrol>���������������������������������������������������������������</dd>
+</dlentry><dlentry>
+<dt>������������</dt>
+<dd>���������������������������������������������������������������������������������������������������������������������������������������������<uicontrol>������������</uicontrol>���������������������������������������������������������������������������</dd>
+</dlentry><dlentry>
+<dt>���������</dt>
+<dd>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+Red Hat Enterprise Linux ��� Fedora������������������ <filepath>yum</filepath> ���������������������������������
+Ubuntu ��� Debian������������������ <filepath>deb</filepath> ������������<p>���������������������
+yum ��������������������������� GPG ���������������������������������������������������������������������������������������������<uicontrol>������</uicontrol>���������<uicontrol>���</uicontrol>���������
+GPG ��������������������������������� GPG ������������ URL���</p></dd>
+</dlentry><dlentry>
+<dt>������������</dt>
+<dd>���������������������������������������������������������������������������������������������������������������������������������������������������������<p>���������������������
+<cmdname>sosreport</cmdname> ������������������������������������ Red
+Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>���Fedora
+��� Ubuntu ��������������������������������� .tar ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</p> </dd>
+</dlentry></dl></p>
+</csbody>
+<?tm 1392659967 1?>
+</cshelp>
+
+
+<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
+<!-- T9N_SRC_ID 232 -->
+<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/de_DE/host.dita b/plugins/kimchi/ui/pages/help/de_DE/host.dita
deleted file mode 100644
index 33a40e3..0000000
--- a/plugins/kimchi/ui/pages/help/de_DE/host.dita
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="de-de">
-<title>Host</title>
-<shortdesc>Die Seite <wintitle>Host</wintitle> zeigt Informationen zum Hostsystem an und erm��glicht Ihnen, den Host herunterzufahren, erneut zu starten und eine Verbindung zu ihm herzustellen.</shortdesc>
-<csbody>
-<p>Sie k��nnen die folgenden Aktionen am Host durchf��hren:<ul>
-<li>W��hlen Sie <uicontrol>Herunterfahren</uicontrol> aus, um das Hostsystem herunterzufahren.</li>
-<li>W��hlen Sie <uicontrol>Erneut starten</uicontrol> aus, um das Hostsystem erneut zu starten.</li>
-<li>W��hlen Sie <uicontrol>Verbinden</uicontrol> aus, um eine VNC-Verbindung zum Hostsystem herzustellen, wenn noch keine Verbindung besteht.</li>
-</ul></p>
-<p>Klicken Sie auf die folgenden Abschnitte, um Informationen zum Host anzuzeigen:<dl>
-<dlentry>
-<dt>Basisinformationen</dt>
-<dd>Dieser Abschnitt zeigt die Verteilung, die Version und den Codenamen des Hostbetriebssystems sowie den Prozessortyp und die Speicherkapazit��t in GB an.</dd>
-</dlentry><dlentry>
-<dt>Systemstatistik</dt>
-<dd>Dieser Abschnitt zeigt mithilfe von Grafiken Statistiken f��r CPU, Speicher, Platten-E/A und Netz-E/A f��r den Host an. W��hlen Sie <uicontrol>Daten werden nach dem Verlassen dieser Seite gesammelt</uicontrol> aus, um mit der Sammlung von Daten fortzufahren, wenn die Host-Registerkarte nicht angezeigt wird.</dd>
-</dlentry><dlentry>
-<dt>Software-Updates</dt>
-<dd>Dieser Abschnitt zeigt Informationen f��r alle Pakete an, bei denen Aktualisierungen verf��gbar sind, einschlie��lich Paketname, Version, Architektur und Repository. Sie k��nnen alle aufgelisteten Pakete aktualisieren, indem Sie <uicontrol>Alle aktualisieren</uicontrol> ausw��hlen. Sie k��nnen nicht einzelne Pakete zur Aktualisierung ausw��hlen.</dd>
-</dlentry><dlentry>
-<dt>Repositorys</dt>
-<dd>Dieser Abschnitt zeigt Repositorys an, die dem Hostsystem zugeordnet sind. Sie k��nnen Repositorys hinzuf��gen, aktivieren, bearbeiten oder entfernen. Beim Hinzuf��gen wird ein Repository dem Hostsystem zugeordnet. Das Aktivieren eines Repositorys dagegen erm��glicht dem Host den Zugriff auf das Repository. Wenn Ihr System Red Hat Enterprise
-Linux oder Fedora ist, k��nnen Sie <filepath>yum</filepath>-Repositorys hinzuf��gen.
-Wenn Ihr System Ubuntu oder Debian ist, f��gen Sie <filepath>deb</filepath>-Repositorys hinzu.<p>Wenn Sie mit yum-Repositorys arbeiten, k��nnen Sie eine GPG-Pr��fung hinzuf��gen, um sicherzustellen, dass ein Paket aus diesem Repository nicht besch��digt wurde.
-W��hlen Sie ein Repository und dann <uicontrol>Bearbeiten</uicontrol> aus. W��hlen Sie <uicontrol>Ja</uicontrol> aus, um die GPG-Pr��fung zu aktivieren, und geben Sie dann ein URL zur GPG-Schl��sseldatei f��r das Repository ein.</p></dd>
-</dlentry><dlentry>
-<dt>Debugberichte</dt>
-<dd>Dieser Abschnitt zeigt Debugberichte, einschlie��lich Name und Dateipfad, an.
-Sie haben die M��glichkeit, einen neuen Bericht zu erstellen oder einen bestehenden Bericht umzubenennen, zu entfernen oder herunterzuladen.<p>Der Debugbericht wird w��hrend des Befehls <cmdname>sosreport</cmdname> generiert. Er ist verf��gbar f��r Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>-, Fedora-
-und Ubuntu-Verteilungen. Der Befehl generiert eine .tar-Datei, die Konfigurations- und Diagnoseinformationen enth��lt, wie zum Beispiel Kernelversion, geladene Module sowie System- und Servicekonfigurationdateien.
-Der Befehl f��hrt zudem externe Programme aus, um weitere Informationen zu sammeln, und speichert diese Ausgabe im resultierenden Archiv.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/en_US/host.dita b/plugins/kimchi/ui/pages/help/en_US/host.dita
deleted file mode 100644
index 0dcb670..0000000
--- a/plugins/kimchi/ui/pages/help/en_US/host.dita
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-<?Pub Sty _display FontColor="red"?>
-<?Pub Inc?>
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="en-us">
-<title>Host</title>
-<shortdesc>The <wintitle>Host</wintitle> page shows information about
-the host system, and allows you to shut down, restart, and connect
-to the host.</shortdesc>
-<csbody>
-<p>You can perform the following actions on the host:<ul>
-<li>Select <uicontrol>Shut down</uicontrol> to shut down the host
-system.</li>
-<li>Select <uicontrol>Restart</uicontrol> to restart the host system.</li>
-<li>Select <uicontrol>Connect</uicontrol> to open a VNC connection
-to the host system, if it is not already connected.</li>
-</ul></p>
-<p>Click the following sections to display information about the host:<dl>
-<dlentry>
-<dt>Basic information</dt>
-<dd>This section displays the host operating system distribution,
-version, and code name, as well as the processor type, the number of
-online CPUs and amount of memory in GB.</dd>
-</dlentry><dlentry>
-<dt>System statistics</dt>
-<dd>This section displays graphs to show statistics for CPU, memory,
-disk I/O, and network I/O for the host. Select <uicontrol>Collecting
-data after leaving this page</uicontrol> to continue collecting data
-when the host tab is out of view.</dd>
-</dlentry><dlentry>
-<dt>Software Updates</dt>
-<dd>This section displays information for all of the packages that
-have updates available, including package name, version, architecture,
-and repository. You can update all of the packages listed by selecting <uicontrol>Update
-All</uicontrol>. You cannot select individual packages for updates.</dd>
-</dlentry><dlentry>
-<dt>Repositories</dt>
-<dd>This section displays repositories that are associated with the
-host system. You can add, enable, edit, or remove repositories. Adding
-a repository associates it with the host system while enabling a repository
-allows the host to access it. If your system is Red Hat Enterprise
-Linux or Fedora, you can add <filepath>yum</filepath> repositories.
-If your system is Ubuntu or Debian, then add <filepath>deb</filepath> repositories.<p>If
-you are working with yum repositories, you can add a GPG check to
-verify that a package from this repository have not been corrupted.
-Select a repository and then <uicontrol>Edit</uicontrol>. Select <uicontrol>Yes</uicontrol> to
-enable GPG Check and then enter a URL to the GPG key file for the
-repository.</p><?Pub Caret 156?></dd>
-</dlentry><dlentry>
-<dt>Debug reports</dt>
-<dd>This section displays debug reports, including name and file path.
-You can select from options to generate a new report, or rename, remove,
-or download an existing report.<p>The debug report is generated using
-the <cmdname>sosreport</cmdname> command. It is available for Red
-Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora,
-and Ubuntu distributions. The command generates a .tar file that contains
-configuration and diagnostic information, such as the running kernel
-version, loaded modules, and system and service configuration files.
-The command also runs external programs to collect further information
-and stores this output in the resulting archive.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-<?Pub *0000003492?>
diff --git a/plugins/kimchi/ui/pages/help/es_ES/host.dita b/plugins/kimchi/ui/pages/help/es_ES/host.dita
deleted file mode 100644
index 7734244..0000000
--- a/plugins/kimchi/ui/pages/help/es_ES/host.dita
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="es-es">
-<title>Host</title>
-<shortdesc>La p��gina <wintitle>Host</wintitle> muestra informaci��n sobre el sistema host y le permite concluir, reiniciar y conectar con el sistema principal.</shortdesc>
-<csbody>
-<p>Puede realizar las acciones siguientes en el host:<ul>
-<li>Seleccione <uicontrol>Concluir</uicontrol> para concluir el sistema host.</li>
-<li>Seleccione <uicontrol>Reiniciar</uicontrol> para reiniciar el sistema host.</li>
-<li>Seleccione <uicontrol>Conectar</uicontrol> para abrir una conexi��n VNC al sistema host, si no est�� conectado a��n.</li>
-</ul></p>
-<p>Pulse en las secciones siguientes para visualizar informaci��n acerca del host:<dl>
-<dlentry>
-<dt>Informaci��n b��sica</dt>
-<dd>Esta secci��n muestra la distribuci��n del sistema operativo de host, la versi��n y el nombre de c��digo, as�� como el tipo de procesador y la cantidad de memoria en GB.</dd>
-</dlentry><dlentry>
-<dt>Estad��sticas del sistema</dt>
-<dd>Esta secci��n muestra gr��ficos para mostrar estad��sticas para CPU, memoria, E/S de disco y E/S de red para el host. Seleccione <uicontrol>Recoger datos despu��s de salir de esta p��gina</uicontrol> para continuar la recogida de datos cuando la pesta��a principal ya no est�� a la vista.</dd>
-</dlentry><dlentry>
-<dt>Actualizaciones de software</dt>
-<dd>En esta secci��n se muestra informaci��n para todos los paquetes que tienen actualizaciones disponibles, incluido el nombre de paquete, versi��n, arquitectura y repositorio. Puede actualizar todos los paquetes listados seleccionando <uicontrol>Actualizar todo</uicontrol>. No puede seleccionar paquetes individuales para las actualizaciones.</dd>
-</dlentry><dlentry>
-<dt>Repositorios</dt>
-<dd>En esta secci��n se muestran los repositorios que est��n asociados con el sistema host. Puede a��adir, habilitar, editar o eliminar repositorios. A��adir un repositorio lo asocia con el sistema host mientras que habilitar un repositorio permite que el host acceda a ��l. Si el sistema es Red Hat Enterprise
-Linux o Fedora, puede a��adir repositorios <filepath>yum</filepath>.
-Si el sistema es Ubuntu o Debian, a��ada repositorios <filepath>deb</filepath>.<p>Si est�� trabajando con repositorios yum, puede a��adir una comprobaci��n GPG para verificar que un paquete de este repositorio no ha resultado da��ado.
-Seleccione un repositorio y, a continuaci��n, <uicontrol>Editar</uicontrol>. Seleccione <uicontrol>S��</uicontrol> para habilitar la comprobaci��n GPG y, a continuaci��n, especifique un URL al archivo de claves GPG para el repositorio.</p></dd>
-</dlentry><dlentry>
-<dt>Informes de depuraci��n</dt>
-<dd>En esta secci��n se muestran informes de depuraci��n, incluido el nombre y la ruta de archivo.
-Puede seleccionar entre opciones para generar un informe nuevo, o bien redenominar, eliminar o descargar un informe existente.<p>El informe de depuraci��n se genera utilizando el mandato <cmdname>sosreport</cmdname>. Est�� disponible para distribuciones de Red
-Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora y Ubuntu. El mandato genera un archivo .tar que contiene la informaci��n de configuraci��n y de diagn��stico, como la versi��n de kernel en ejecuci��n, los m��dulos de carga y los archivos de configuraci��n del sistema y servicio.
-El mandato tambi��n ejecuta programas externos para recopilar informaci��n adicional y almacena esta salida en el archivo resultante.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/fr_FR/host.dita b/plugins/kimchi/ui/pages/help/fr_FR/host.dita
deleted file mode 100644
index f4c330b..0000000
--- a/plugins/kimchi/ui/pages/help/fr_FR/host.dita
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="fr-fr">
-<title>H��te</title>
-<shortdesc>La page <wintitle>H��te</wintitle> affiche des informations
-sur le syst��me h��te et vous permet d'arr��ter, de red��marrer et de vous
-connecter �� l'h��te.</shortdesc>
-<csbody>
-<p>Vous pouvez effectuer les actions suivantes sur l'h��te :<ul>
-<li>S��lectionnez <uicontrol>Arr��ter</uicontrol> pour arr��ter le syst��me h��te.</li>
-<li>S��lectionnez <uicontrol>Red��marrer</uicontrol> pour red��marrer le syst��me h��te.</li>
-<li>S��lectionnez <uicontrol>Connexion</uicontrol> pour ouvrir une connexion VNC
-au syst��me h��te, si celui-ci n'est pas d��j�� connect��.</li>
-</ul></p>
-<p>Cliquez sur les sections suivantes pour afficher des informations sur l'h��te :<dl>
-<dlentry>
-<dt>Informations de base</dt>
-<dd>Cette section affiche la distribution, la version et le nom de code
-du syst��me d'exploitation h��te, ainsi que le type de processeur et la quantit��
-de m��moire en Go.</dd>
-</dlentry><dlentry>
-<dt>Statistiques syst��me</dt>
-<dd>Cette section affiche les graphiques des statistiques pour l'UC, m��moire, ainsi que
-les E-S disque et E-S r��seau pour l'h��te. S��lectionnez <uicontrol>Collecte des donn��es une fois la page quitt��e</uicontrol>
-pour continuer la collecte de donn��es lorsque l'onglet h��te n'est plus visible.</dd>
-</dlentry><dlentry>
-<dt>Mises �� jour logicielles</dt>
-<dd>Cette section affiche des informations pour tous les modules qui
-disposent de mises �� jour disponibles, y compris le nom de module, la version, l'architecture
-et le r��f��rentiel. Vous pouvez mettre �� jour toutes les modules r��pertori��s en s��lectionnant <uicontrol>Tout
-mettre �� jour</uicontrol>. Vous ne pouvez pas s��lectionner des modules individuels pour les mises �� jour.</dd>
-</dlentry><dlentry>
-<dt>R��f��rentiels</dt>
-<dd>Cette section affiche les r��f��rentiels associ��s au syst��me h��te. Vous pouvez ajouter, activer, ��diter ou retirer des r��f��rentiels. L'ajout d'un r��f��rentiel associe celui-ci au syst��me h��te,
-tandis que l'activation d'un r��f��rentiel permet �� l'h��te d'y acc��der. Si votre syst��me est Red Hat Enterprise Linux ou Fedora,
-vous pouvez ajouter des r��f��rentiels <filepath>yum</filepath>.
-Si votre syst��me est de type Ubuntu ou Debian, ajoutez des r��f��rentiels
-<filepath>deb</filepath>.<p>Si vous travaillez avec des r��f��rentiels yum, vous pouvez ajouter un contr��le GPG
-afin de v��rifier qu'un module provenant de ce r��f��rentiel n'a pas ��t�� endommag��.
-S��lectionnez un r��f��rentiel puis cliquez sur <uicontrol>Editer</uicontrol>. S��lectionnez <uicontrol>Oui</uicontrol> pour activer le contr��le GPG,
-puis entrez une URL pour le fichier de cl��s GPG du r��f��rentiel.</p></dd>
-</dlentry><dlentry>
-<dt>Rapports de d��bogage</dt>
-<dd>Cette section affiche les rapports de d��bogage, y compris le nom et le chemin du fichier.
-Vous pouvez faire un choix parmi les options afin de g��n��rer un nouveau rapport, ou renommer, supprimer,
-ou t��l��charger un rapport existant.<p>Le rapport de d��bogage est g��n��r�� ��
-l'aide de la commande <cmdname>sosreport</cmdname>. Cette option est disponible pour les distributions
-Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora et Ubuntu. La commande g��n��re un fichier .tar contenant la configuration et des informations de diagnostic,
-telles que la version du noyau d'ex��cution, les modules charg��s, ainsi que les fichiers de configuration
-du syst��me et de la maintenance.
-La commande ex��cute ��galement des programmes externes pour collecter des informations
-suppl��mentaires et stocke cette sortie dans l'archive r��sultante.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/it_IT/host.dita b/plugins/kimchi/ui/pages/help/it_IT/host.dita
deleted file mode 100644
index 63d3367..0000000
--- a/plugins/kimchi/ui/pages/help/it_IT/host.dita
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="it-it">
-<title>Host</title>
-<shortdesc>La pagina <wintitle>Host</wintitle> visualizza le informazioni sul sistema host e consente di arrestarlo, riavviarlo e connettersi ad esso.</shortdesc>
-<csbody>
-<p>�� possibile effettuare le seguenti operazioni sull'host:<ul>
-<li>Selezionare <uicontrol>Arresta</uicontrol> per arrestare il sistema host.</li>
-<li>Selezionare <uicontrol>Riavvia</uicontrol> per riavviare il sistema host.</li>
-<li>Selezionare <uicontrol>Connetti</uicontrol> per aprire una connessione VNC al sistema host, se non �� gi�� connesso.</li>
-</ul></p>
-<p>Fare clic sulle seguenti sezioni per visualizzare le informazioni sull'host:<dl>
-<dlentry>
-<dt>Informazioni di base</dt>
-<dd>Questa sezione visualizza il nome codice, la versione e la distribuzione del sistema operativo, come pure il tipo di processore e la quantit�� di memoria in GB.</dd>
-</dlentry><dlentry>
-<dt>Statistiche di sistema</dt>
-<dd>Questa sezione visualizza i grafici che mostrano le statistiche per la CPU, la memoria, l'I/O disco e di rete per l'host. Selezionare <uicontrol>Raccolta dati all'uscita dalla pagina</uicontrol> per continuare la raccolta dei dati quando la scheda host non �� pi�� visibile.</dd>
-</dlentry><dlentry>
-<dt>Aggiornamenti del software</dt>
-<dd>Questa sezione visualizza le informazioni per tutti i pacchetti per cui sono disponibili gli aggiornamenti, incluso il nome, la versione, l'architettura e il repository del pacchetto. �� possibile aggiornare tutti i pacchetti elencati, selezionando <uicontrol>Aggiorna tutto</uicontrol>. Non �� possibile selezionare singoli pacchetti per gli aggiornamenti.</dd>
-</dlentry><dlentry>
-<dt>Repository</dt>
-<dd>Questa sezione visualizza i repository associati al sistema host. �� possibile aggiungere, abilitare, modificare o rimuovere i repository. L'aggiunta di un repository lo associa al sistema host, mentre l'abilitazione di un repository
-consente all'host di accedervi. Se il sistema �� Red Hat Enterprise
-Linux o Fedora, �� possibile aggiungere i repository <filepath>yum</filepath>.
-Se il sistema �� Ubuntu o Debian, aggiungere i repository <filepath>deb</filepath>.<p>Se si stanno utilizzando i repository yum, �� possibile aggiungere un controllo GPG per verificare che un pacchetto da questo repository non sia stato corrotto.
-Selezionare un repository, quindi <uicontrol>Modifica</uicontrol>. Selezionare <uicontrol>S��</uicontrol> per abilitare il controllo GPG, quindi immettere un URL al file di chiavi GPG per il
-repository.</p></dd>
-</dlentry><dlentry>
-<dt>Report di debug</dt>
-<dd>Questa sezione visualizza i report di debug, incluso il nome e il percorso file.
-Le opzioni disponibili consentono di generare un nuovo report oppure ridenominare, rimuovere o scaricare un report esistente.<p>Il report di debug viene generato utilizzando il comando <cmdname>sosreport</cmdname>. �� disponibile per le distribuzioni Red
-Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora e Ubuntu. Il comando genera un file .tar che contiene informazioni di diagnostica e configurazione, come la versione del kernel in esecuzione, i moduli caricati e i file di configurazione del servizio e del sistema.
-Il comando esegue anche programmi esterni per raccogliere ulteriori informazioni e memorizza l'output nell'archivio risultante.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/ja_JP/host.dita b/plugins/kimchi/ui/pages/help/ja_JP/host.dita
deleted file mode 100644
index 3a0141c..0000000
--- a/plugins/kimchi/ui/pages/help/ja_JP/host.dita
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="ja-jp">
-<title>���������</title>
-<shortdesc><wintitle>���������������</wintitle>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
-</shortdesc>
-<csbody>
-<p>���������������������������������������������������������������������
-<ul>
-<li>������������������������������������������������������������<uicontrol>���������������������������</uicontrol>���������������������
-</li>
-<li>������������������������������������������������<uicontrol>���������������</uicontrol>���������������������
-</li>
-<li>������������������������������ VNC ��������� (���������������������������������������) ���������������������������<uicontrol>������������</uicontrol>���������������������
-</li>
-</ul></p>
-<p>������������������������������������������������������������������������������������������������������������
-<dl>
-<dlentry>
-<dt>������������</dt>
-<dd>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ (GB ������) ������������������������
-</dd>
-</dlentry><dlentry>
-<dt>������������������������</dt>
-<dd>������������������������������������������ CPU���������������������������������������������������������������������������������������������������������������������������������������
-���������������������������������������������������������������������������������<uicontrol>���������������������������������������������������������������</uicontrol>������������������������������
-</dd>
-</dlentry><dlentry>
-<dt>������������������������</dt>
-<dd>���������������������������������������������������������������������������������������������
-(������������������������������������������������������������������������������������������) ������������������������
-<uicontrol>���������������������</uicontrol>���������������������������������������������������������������������������������������������
-���������������������������������������������������������������������������������������������
-</dd>
-</dlentry><dlentry>
-<dt>������������������</dt>
-<dd>������������������������������������������������������������������������������������������������������������������������������
-������������������������������������������������������������������������������������������������������������������
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
-��������������� Red Hat Enterprise Linux ��������� Fedora ���������������<filepath>yum</filepath> ������������������������������������������
-��������������� Ubuntu ��������� Debian ���������������<filepath>deb</filepath> ������������������������������������������������
-<p>yum ������������������������������������������������������������������������������������������������������������������������������������������������������������GPG ������������������������������������
-���������������������������������<uicontrol>������������</uicontrol>������������������������������������
-<uicontrol>������������</uicontrol>��������������� GPG ������������������������������������������������������������������ GPG ������������������ URL ������������������������������
-</p></dd>
-</dlentry><dlentry>
-<dt>���������������������������</dt>
-<dd>��������������������������������������������������������� (������������������������������������) ������������������������
-������������������������������������������������������������������������������������������������������������������������������������������������������������������
-<p>���������������������������������<cmdname>sosreport</cmdname> ������������������������������������
-������������Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>���Fedora������������ Ubuntu ���������������������������������������������������������������
-��������������������������������������������������� (������������������������������������������������������������������������������������������������������������������������������������������������) ������������ .tar ���������������������������������
-������������������������������������������������������������������������������������������������������������������������������������������������������������
-</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 227 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 1 -->
diff --git a/plugins/kimchi/ui/pages/help/ko_KR/host.dita b/plugins/kimchi/ui/pages/help/ko_KR/host.dita
deleted file mode 100644
index ee4a9c3..0000000
--- a/plugins/kimchi/ui/pages/help/ko_KR/host.dita
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="ko-kr">
-<title>���������</title>
-<shortdesc><wintitle>���������</wintitle> ��������������� ��������� ������������ ������ ��������� ������������ ��� ������������ ������������ ������������ ������ ��� ������ ��������������� ������������ ��������� ��� ������������.</shortdesc>
-<csbody>
-<p>������������ ������ ������ ��������� ��������� ��� ������������.<ul>
-<li>��������� ������������ ��������������� <uicontrol>��������� ������</uicontrol>��� ���������������.</li>
-<li>��������� ������������ ������ ��������������� <uicontrol>������ ������</uicontrol>��� ���������������.</li>
-<li>������ ������������ ������ ������ ������, ��������� ������������ ������ VNC ��������� ��������������� <uicontrol>������</uicontrol>��� ���������������.</li>
-</ul></p>
-<p>������������ ������ ��������� ��������������� ������ ��������� ������������������.<dl>
-<dlentry>
-<dt>������ ������</dt>
-<dd>��� ������������ ��������� ������ ������ ������, ������, ������ ������, ������������ ������, ��������� ������(GB) ������ ���������������.</dd>
-</dlentry><dlentry>
-<dt>��������� ������</dt>
-<dd>��� ������������ ������������ CPU, ���������, ��������� I/O, ������������ I/O��� ������ ��������� ������������ ������������ ���������������. ��������� ������ ��������� ��� ��������� ��������� ��������������� <uicontrol>��� ������������ ������ ������ ��������� ������</uicontrol>��� ���������������.</dd>
-</dlentry><dlentry>
-<dt>��������������� ������������</dt>
-<dd>��� ������������ ��������� ������, ������, ������������, ������������ ������������ ������ ��������� ��������������� ������ ������ ������������ ������ ��������� ���������������. <uicontrol>������ ������������</uicontrol>��� ������������ ��������� ������ ������������ ��������������� ��� ������������. ��������������� ������ ������ ������������ ��������� ������ ������������.</dd>
-</dlentry><dlentry>
-<dt>���������</dt>
-<dd>��� ������������ ��������� ������������ ��������� ������������ ���������������. ������������ ���������������, ������������ ���������������, ���������������, ��������� ��� ������������. ������������ ������������ ������������ ��������� ������������ ������������, ������������ ������������ ������������ ������������ ������������ ������������ ��� ������������. ������ ������������ Red Hat Enterprise Linux ������ Fedora��� ������, <filepath>yum</filepath> ������������ ��������� ��� ������������.
-������ ������������ Ubuntu ������ Debian��� ������, <filepath>deb</filepath> ������������ ������������������.<p>yum ������������ ������������ ������, GPG ��������� ������������ ��� ������������ ������������ ������������ ������������ ��������� ��� ������������.
-������������ ��������� ��� <uicontrol>������</uicontrol>��� ������������������. <uicontrol>���</uicontrol>��� ������������ GPG ��������� ������������ ��������� ��� ������������ ������ GPG ��� ��������� URL��� ������������������.</p></dd>
-</dlentry><dlentry>
-<dt>��������� ���������</dt>
-<dd>��� ������������ ������ ��� ������ ��������� ��������� ��������� ������������ ���������������.
-��� ��������� ������, ������ ��������� ������ ���������, ������, ������������ ������ ������ ��������� ��������� ��� ������������.<p>��������� ������������ <cmdname>sosreport</cmdname> ��������� ������������ ���������������. ������ Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora ��� Ubuntu ������������ ������ ���������������. ��� ��������� ������ ��� ������ ������(���: ������ ������ ������ ������, ��������� ������, ��������� ��� ��������� ������ ������)��� ������������ .tar ��������� ���������������.
-������ ��� ��������� ������ ��������������� ������������ ������ ��������� ������������ ������ ��������������� ��� ��������� ���������������.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/pt_BR/host.dita b/plugins/kimchi/ui/pages/help/pt_BR/host.dita
deleted file mode 100644
index 88f7eb2..0000000
--- a/plugins/kimchi/ui/pages/help/pt_BR/host.dita
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="pt-br">
-<title>Host</title>
-<shortdesc>A p��gina <wintitle>Host</wintitle> mostra informa����es sobre
-o sistema host e permite encerrar, reiniciar e conectar
-ao host.</shortdesc>
-<csbody>
-<p>�� poss��vel executar as a����es a segur no host:<ul>
-<li>Selecione <uicontrol>Encerrar</uicontrol> para encerrar o sistema
-host.</li>
-<li>Selecione <uicontrol>Reiniciar</uicontrol> para reiniciar o sistema host.</li>
-<li>Selecione <uicontrol>Conectar</uicontrol> para abrir uma conex��o VNC
-para o sistema host, se ele j�� n��o estiver conectado.</li>
-</ul></p>
-<p>Clique nas se����es a seguir para exibir informa����es sobre o host:<dl>
-<dlentry>
-<dt>Informa����es b��sicas</dt>
-<dd>Esta se����o exibe a distribui����o do sistema operacional do host,
-a vers��o e o nome do c��digo, bem como o tipo de processador e quantia de
-mem��ria em GB.</dd>
-</dlentry><dlentry>
-<dt>Estat��sticas do sistema</dt>
-<dd>Esta se����o exibe gr��ficos para mostrar estat��sticas para CPU, mem��ria,
-E/S de disco e E/S de rede para o host. Selecione <uicontrol>Coletando
-dados depois de sair desta p��gina</uicontrol> para continuar a coletar dados
-quando a guia do host estiver fora de visualiza����o.</dd>
-</dlentry><dlentry>
-<dt>Atualiza����es de software</dt>
-<dd>Esta se����o exibe informa����es de todos os pacotes que
-possuem atualiza����es dispon��veis, incluindo nome do pacote, vers��o, arquitetura
-e reposit��rio. �� poss��vel atualizar todos os pacotes listados selecionando <uicontrol>Atualizar
-todos</uicontrol>. N��o �� poss��vel selecionar pacotes individuais para atualiza����es.</dd>
-</dlentry><dlentry>
-<dt>Reposit��rios</dt>
-<dd>Esta se����o exibe reposit��rios que est��o associados ao
-sistema host. �� poss��vel incluir, ativar, editar ou remover reposit��rios. Incluir
-um reposit��rio o associa com o sistema host enquanto ativar um reposit��rio
-permite que o host o acesse. Se o seu sistema for Red Hat Enterprise
-Linux ou Fedora, ser�� poss��vel incluir reposit��rios <filepath>yum</filepath>.
-Se o seu sistema for Ubuntu ou Debian, inclua reposit��rios <filepath>deb</filepath>.<p>Se
-voc�� estiver trabalhando com reposit��rios yum, ser�� poss��vel incluir uma verifica����o de GPG para
-verificar se um pacote desse reposit��rio n��o foi corrompido.
-Selecione um reposit��rio e, em seguida, <uicontrol>Editar</uicontrol>. Selecione <uicontrol>Sim</uicontrol> para
-ativar a Verifica����o de GPG e, em seguida, insira uma URL no arquivo-chave de GPG para o
-reposit��rio.</p></dd>
-</dlentry><dlentry>
-<dt>Relat��rios de depura����o</dt>
-<dd>Esta se����o exibe relat��rios de depura����o, incluindo nome e caminho do arquivo.
-�� poss��vel selecionar a partir das op����es para gerar um novo relat��rio ou renomear, remover
-ou fazer o download de um relat��rio existente.<p>O relat��rio de depura����o �� gerado usando
-o comando <cmdname>sosreport</cmdname>. Ele est�� dispon��vel para distribui����es
-Red Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora
-e Ubuntu. O comando gera um arquivo .tar que cont��m
-informa����es de configura����o e de diagn��stico, como vers��o do kernel
-em execu����o, m��dulos carregados e arquivos de configura����o de sistema e de servi��o.
-O comando tamb��m executa programas externos para coletar informa����es adicionais
-e armazena essa sa��da no archive resultante.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/ru_RU/host.dita b/plugins/kimchi/ui/pages/help/ru_RU/host.dita
deleted file mode 100644
index fb72c21..0000000
--- a/plugins/kimchi/ui/pages/help/ru_RU/host.dita
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="ru-ru">
-<title>��������</title>
-<shortdesc>���������������� <wintitle>��������</wintitle> �������������������� �������������������� �� �������������� ���������� �� ������������������ �������������������������� ��������, �������������������������� �������� �� ������������������������ �� ��������.</shortdesc>
-<csbody>
-<p>���� ���������� ���������� ������������������ ������������������ ����������������:<ul>
-<li><uicontrol>������������������ ������������</uicontrol> - �������������������� �������������� ����������.</li>
-<li><uicontrol>��������������������������</uicontrol> - �������������������������� �������������� ����������.</li>
-<li><uicontrol>������������������������</uicontrol> - �������������� �������������������� VNC �� ���������������� ����������, �������� ������ ������ ���� ����������������������.</li>
-</ul></p>
-<p>���������������� ���� ������������������ ���������������� ������ ������������������ �������������������� �� ����������:<dl>
-<dlentry>
-<dt>�������������� ��������������������</dt>
-<dd>�� �������� �������������� ������������������������ �������������� ������������������������ ��������������, ������ ������������ �� �������������� ������, �� ���������� ������ �������������������� �� ���������� ������������ �� ����.</dd>
-</dlentry><dlentry>
-<dt>������������������ ��������������������</dt>
-<dd>�� �������� �������������� ������������������������ ��������������, �������������������� ���������������������������� �������������������� �� ��������������������, ������������, ���������������� ����������-������������ �� �������������� ����������-������������ ������ ����������. ���������������� <uicontrol>�������� ������������ ���������� ���������������� �������� ����������������</uicontrol>, ���������� �������� ������������ ���������������������� ���������� ���������������� �������������� ��������.</dd>
-</dlentry><dlentry>
-<dt>�������������������� ������������������������ ����������������������</dt>
-<dd>�� �������� �������������� ������������������������ �������������������� ������ �������� ��������������, ������ �������������� ���������������� ��������������������, �������������� ������ ������������, ������������, ���������������������� �� ������������������. ���������� ���������������� ������ ������������ �� ������������ �������������� ���� <uicontrol>���������������� ������</uicontrol>. ������������������ ������������ ������ �������������������� �������������� ������������.</dd>
-</dlentry><dlentry>
-<dt>������������������</dt>
-<dd>�� �������� �������������� ������������������������ ������������������, ������������������ �� ���������������� ����������. ������������������ ���������� ������������������, ������������������������, ���������������� �� ��������������. ������ �������������������� ������������������ ���������������������� �� ���������������� ����������, ������ ������������������ ������������������ �������������������� ������������������ ������ ����������. �������� �������������� - Red Hat Enterprise Linux ������ Fedora, ���������� ���������������� ������������������ <filepath>yum</filepath>.
-�������� �������������� - Ubuntu ������ Debian, ���������������� ������������������ <filepath>deb</filepath>.<p>������ ������������ �� ���������������������� yum ���������� ���������������� ���������������� GPG ������ ���������������� ���������������������� �������������� ���� �������������� ������������������.
-���������������� ������������������ �� ���������������� ���� <uicontrol>����������������</uicontrol>. ���������������� <uicontrol>����</uicontrol>, ���������� ���������������� ���������������� GPG, �� �������������� URL ���������� ������������ GPG ������ ������������������.</p></dd>
-</dlentry><dlentry>
-<dt>�������������������� ������������</dt>
-<dd>�� �������� �������������� ������������������������ �������������������� ������������, �������������� ������ �� ��������.
-���������������� �������������� ������ ����������������, ����������������������������, ���������������� �� ���������������� ��������������.<p>�������������������� ���������� ������������������ ���������������� <cmdname>sosreport</cmdname>. ���� ���������������� ������ Red
-Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>, Fedora �� Ubuntu. �������������� �������������� �������� .tar �� �������������������������������� �� ������������������������������ ����������������������, ���������� ������ ������������ ��������, ���������������������� ������������ �� ���������� ������������������������ �������������� �� ����������.
-�������������� ���������� ������������������ �������������� ������������������ ������ ���������� ���������������������������� �������������������� �� ������������������ ���� ���������� �� ���������������������������� ������������.</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/zh_CN/host.dita b/plugins/kimchi/ui/pages/help/zh_CN/host.dita
deleted file mode 100644
index 78a89c3..0000000
--- a/plugins/kimchi/ui/pages/help/zh_CN/host.dita
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="zh-cn">
-<title>������</title>
-<shortdesc>���<wintitle>������</wintitle>������������������������������������������������������������������������������������������������������</shortdesc>
-<csbody>
-<p>���������������������������������<ul>
-<li>������<uicontrol>������</uicontrol>������������������������</li>
-<li>������<uicontrol>������������</uicontrol>������������������������������</li>
-<li>������<uicontrol>������</uicontrol>��������������������������� VNC ���������������������������������</li>
-</ul></p>
-<p>���������������������������������������������������<dl>
-<dlentry>
-<dt>������������</dt>
-<dd>��������������������������������������������������������������������������������������������������������� GB ���������</dd>
-</dlentry><dlentry>
-<dt>������������������</dt>
-<dd>��������������������������������������������� CPU������������������ I/O ��������� I/O ������������������������<uicontrol>���������������������������������</uicontrol>������������������������������������������������������������</dd>
-</dlentry><dlentry>
-<dt>������������</dt>
-<dd>���������������������������������������������������������������������������������������������������������������������������������������������<uicontrol>������������</uicontrol>���������������������������������������������������������������������������������</dd>
-</dlentry><dlentry>
-<dt>���������</dt>
-<dd>��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Red Hat Enterprise Linux ��� Fedora������������������ <filepath>yum</filepath> ��������������������������������� Ubuntu ��� Debian������������������ <filepath>deb</filepath> ������������<p>��������������� Yum ��������������������������� GPG ������������������������������������������������������������������������������������������������<uicontrol>������</uicontrol>���������<uicontrol>���</uicontrol>��������� GPG ��������������������������������� GPG ��������������� URL���</p></dd>
-</dlentry><dlentry>
-<dt>������������</dt>
-<dd>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<p>���������������������
-<cmdname>sosreport</cmdname> ��������������������������������� Red
-Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>���Fedora ��� Ubuntu ������������������������������������������������������������ .tar ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
diff --git a/plugins/kimchi/ui/pages/help/zh_TW/host.dita b/plugins/kimchi/ui/pages/help/zh_TW/host.dita
deleted file mode 100644
index a55aae4..0000000
--- a/plugins/kimchi/ui/pages/help/zh_TW/host.dita
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--Arbortext, Inc., 1988-2011, v.4002-->
-<!DOCTYPE cshelp PUBLIC "-//IBM//DTD DITA CSHelp//EN"
- "..\dtd\cshelp.dtd">
-
-
-<!--This DITA specialized document type is not supported by the Authoring Tools development team.
-For support please see:
-https://w3.opensource.ibm.com/projects/dita-cshelp/-->
-<cshelp id="kimhhost" xml:lang="zh-tw">
-<title>������</title>
-<shortdesc>���<wintitle>������</wintitle>���������������������������������������������������������������������������������������������������������</shortdesc>
-<csbody>
-<p>������������������������������������������<ul>
-<li>������<uicontrol>������</uicontrol>������������������������</li>
-<li>������<uicontrol>������������</uicontrol>������������������������������</li>
-<li>������<uicontrol>������</uicontrol>��������������������������� VNC ������������������������������������������������</li>
-</ul></p>
-<p>������������������������������������������������������<dl>
-<dlentry>
-<dt>������������</dt>
-<dd>������������������������������������������������������������������������������������������������������������������ (GB)���</dd>
-</dlentry><dlentry>
-<dt>������������������</dt>
-<dd>��������������������������������������������������� CPU��������������������� I/O ��������� I/O ������������������������<uicontrol>���������������������������������</uicontrol>���������������������������������������������������������������</dd>
-</dlentry><dlentry>
-<dt>������������</dt>
-<dd>���������������������������������������������������������������������������������������������������������������������������������������������<uicontrol>������������</uicontrol>���������������������������������������������������������������������������</dd>
-</dlentry><dlentry>
-<dt>���������</dt>
-<dd>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
-Red Hat Enterprise Linux ��� Fedora������������������ <filepath>yum</filepath> ���������������������������������
-Ubuntu ��� Debian������������������ <filepath>deb</filepath> ������������<p>���������������������
-yum ��������������������������� GPG ���������������������������������������������������������������������������������������������<uicontrol>������</uicontrol>���������<uicontrol>���</uicontrol>���������
-GPG ��������������������������������� GPG ������������ URL���</p></dd>
-</dlentry><dlentry>
-<dt>������������</dt>
-<dd>���������������������������������������������������������������������������������������������������������������������������������������������������������<p>���������������������
-<cmdname>sosreport</cmdname> ������������������������������������ Red
-Hat Enterprise <tm tmtype="tm" trademark="Linux">Linux</tm>���Fedora
-��� Ubuntu ��������������������������������� .tar ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</p> </dd>
-</dlentry></dl></p>
-</csbody>
-<?tm 1392659967 1?>
-</cshelp>
-
-
-<!-- ENGL1SH_VERS10N 47930_4 DO NOT REMOVE OR CHANGE THIS LINE -->
-<!-- T9N_SRC_ID 232 -->
-<!-- T9N_SH1P_STR1NG KVM21AAP001 3 -->
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/tests/Makefile.am | 49 +++++
plugins/gingerbase/tests/run_tests.sh.in | 55 ++++++
plugins/gingerbase/tests/test_config.py.in | 154 ++++++++++++++++
plugins/gingerbase/tests/test_host.py | 152 ++++++++++++++++
plugins/gingerbase/tests/test_model.py | 280 +++++++++++++++++++++++++++++
plugins/gingerbase/tests/utils.py | 261 +++++++++++++++++++++++++++
6 files changed, 951 insertions(+)
create mode 100644 plugins/gingerbase/tests/Makefile.am
create mode 100644 plugins/gingerbase/tests/run_tests.sh.in
create mode 100644 plugins/gingerbase/tests/test_config.py.in
create mode 100644 plugins/gingerbase/tests/test_host.py
create mode 100644 plugins/gingerbase/tests/test_model.py
create mode 100644 plugins/gingerbase/tests/utils.py
diff --git a/plugins/gingerbase/tests/Makefile.am b/plugins/gingerbase/tests/Makefile.am
new file mode 100644
index 0000000..477df12
--- /dev/null
+++ b/plugins/gingerbase/tests/Makefile.am
@@ -0,0 +1,49 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+EXTRA_DIST = \
+ Makefile.am \
+ run_tests.sh.in \
+ test_config.py.in \
+ $(filter-out test_config.py, $(wildcard *.py)) \
+ $(NULL)
+
+noinst_SCRIPTS = run_tests.sh
+
+do_substitution = \
+ sed -e 's,[@]HAVE_PYMOD_UNITTEST[@],$(HAVE_PYMOD_UNITTEST),g' \
+ -e 's,[@]prefix[@],$(prefix),g' \
+ -e 's,[@]datadir[@],$(datadir),g' \
+ -e 's,[@]PYTHON_VERSION[@],$(PYTHON_VERSION),g' \
+ -e 's,[@]wokdir[@],$(pythondir)/wok,g' \
+ -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'
+
+
+run_tests.sh: run_tests.sh.in Makefile
+ $(do_substitution) < $(srcdir)/run_tests.sh.in > run_tests.sh
+ chmod +x run_tests.sh
+
+test_config.py: test_config.py.in Makefile
+ $(do_substitution) < $(srcdir)/test_config.py.in > test_config.py
+
+check-local:
+ ./run_tests.sh
+
+BUILT_SOURCES = test_config.py
+CLEANFILES = run_tests.sh test_config.py
diff --git a/plugins/gingerbase/tests/run_tests.sh.in b/plugins/gingerbase/tests/run_tests.sh.in
new file mode 100644
index 0000000..1a34418
--- /dev/null
+++ b/plugins/gingerbase/tests/run_tests.sh.in
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+HAVE_UNITTEST=@HAVE_PYMOD_UNITTEST@
+PYTHON_VER=@PYTHON_VERSION@
+
+if [ "$1" = "-v" ]; then
+ OPTS="-v"
+ shift
+else
+ OPTS=""
+fi
+
+if [ $# -ne 0 ]; then
+ ARGS="$@"
+else
+ ARGS=`find -name "test_*.py" | xargs -I @ basename @ .py`
+fi
+
+if [ "$HAVE_UNITTEST" != "yes" -o "$PYTHON_VER" == "2.6" ]; then
+ CMD="unit2"
+else
+ CMD="python -m unittest"
+fi
+
+LIST=($ARGS)
+MODEL_LIST=()
+MOCK_LIST=()
+for ((i=0;i<${#LIST[@]};i++)); do
+
+ if [[ ${LIST[$i]} == test_model* ]]; then
+ MODEL_LIST+=(${LIST[$i]})
+ else
+ MOCK_LIST+=(${LIST[$i]})
+ fi
+done
+
+PYTHONPATH=../plugins:../src:../ $CMD $OPTS ${MODEL_LIST[@]} ${MOCK_LIST[@]}
diff --git a/plugins/gingerbase/tests/test_config.py.in b/plugins/gingerbase/tests/test_config.py.in
new file mode 100644
index 0000000..434d60e
--- /dev/null
+++ b/plugins/gingerbase/tests/test_config.py.in
@@ -0,0 +1,154 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2014-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import unittest
+from cherrypy.lib.reprconf import Parser
+from wok.config import Paths
+
+from wok.plugins.gingerbase.config import GingerBasePaths
+
+
+
+get_prefix = None
+
+
+def setUpModule():
+ global get_prefix
+ get_prefix = Paths.get_prefix
+
+
+def tearDownModule():
+ Paths.get_prefix = GingerBasePaths.get_prefix = get_prefix
+
+
+class ConfigTests(unittest.TestCase):
+ def assertInstalledPath(self, actual, expected):
+ if '@pkgdatadir@' != '/usr/share/gingerbase':
+ usr_local = '/usr/local'
+ if not expected.startswith('/usr'):
+ expected = usr_local + expected
+ self.assertEquals(actual, expected)
+
+ def test_installed_paths(self):
+ Paths.get_prefix = lambda self: '@datadir@/wok'
+ paths = Paths()
+ self.assertInstalledPath(paths.state_dir, '/var/lib/wok')
+ self.assertInstalledPath(paths.log_dir, '/var/log/wok')
+ self.assertInstalledPath(paths.conf_dir, '/etc/wok')
+ self.assertInstalledPath(paths.src_dir, '@wokdir@')
+ self.assertInstalledPath(paths.plugins_dir, '@wokdir@/plugins')
+ self.assertInstalledPath(paths.ui_dir, '@datadir@/wok/ui')
+ self.assertInstalledPath(paths.mo_dir, '@prefix@/share/locale')
+
+ def test_uninstalled_paths(self):
+ Paths.get_prefix = lambda self: '/home/user/wok'
+ paths = Paths()
+ self.assertEquals(paths.state_dir, '/home/user/wok/data')
+ self.assertEquals(paths.log_dir, '/home/user/wok/log')
+ self.assertEquals(paths.conf_dir, '/home/user/wok/src')
+ self.assertEquals(paths.src_dir, '/home/user/wok/src/wok')
+ self.assertEquals(paths.plugins_dir, '/home/user/wok/plugins')
+ self.assertEquals(paths.ui_dir, '/home/user/wok/ui')
+ self.assertEquals(paths.mo_dir, '/home/user/wok/mo')
+
+ def test_installed_plugin_paths(self):
+ GingerBasePaths.get_prefix = lambda self: '@datadir@/wok'
+ paths = GingerBasePaths()
+ self.assertInstalledPath(paths.conf_dir, '/etc/wok/plugins.d')
+ self.assertInstalledPath(paths.conf_file,
+ '/etc/wok/plugins.d/gingerbase.conf')
+ self.assertInstalledPath(paths.src_dir, '@wokdir@/plugins/ginger-base')
+ self.assertInstalledPath(paths.ui_dir,
+ '@datadir@/wok/plugins/gingerbase/ui')
+ self.assertInstalledPath(paths.mo_dir, '@prefix@/share/locale')
+
+ def test_uninstalled_plugin_paths(self):
+ GingerBasePaths.get_prefix = lambda self: '/home/user/wok'
+ paths = GingerBasePaths()
+ self.assertEquals(paths.conf_dir, '/home/user/wok/plugins/gingerbase')
+ self.assertEquals(
+ paths.conf_file, '/home/user/wok/plugins/gingerbase/gingerbase.conf')
+ self.assertEquals(paths.src_dir, '/home/user/wok/plugins/gingerbase')
+ self.assertEquals(paths.ui_dir, '/home/user/wok/plugins/gingerbase/ui')
+ self.assertEquals(paths.mo_dir, '/home/user/wok/plugins/gingerbase/mo')
+
+ def test_kimchi_config(self):
+ Paths.get_prefix = GingerBasePaths.get_prefix = get_prefix
+ CACHEEXPIRES = 31536000
+ SESSIONSTIMEOUT = 10
+ configObj = {
+ '/': {
+ 'tools.trailing_slash.on': False,
+ 'request.methods_with_bodies': ('POST', 'PUT'),
+ 'tools.nocache.on': True,
+ 'tools.proxy.on': True,
+ 'tools.sessions.on': True,
+ 'tools.sessions.name': 'wok',
+ 'tools.sessions.secure': True,
+ 'tools.sessions.httponly': True,
+ 'tools.sessions.locking': 'explicit',
+ 'tools.sessions.storage_type': 'ram',
+ 'tools.sessions.timeout': SESSIONSTIMEOUT,
+ 'tools.wokauth.on': False
+ },
+ '/css': {
+ 'tools.staticdir.on': True,
+ 'tools.staticdir.dir': '%s/ui/css' % GingerBasePaths().prefix,
+ 'tools.expires.on': True,
+ 'tools.expires.secs': CACHEEXPIRES,
+ 'tools.nocache.on': False
+ },
+ '/js': {
+ 'tools.staticdir.on': True,
+ 'tools.staticdir.dir': '%s/ui/js' % GingerBasePaths().prefix,
+ 'tools.expires.on': True,
+ 'tools.expires.secs': CACHEEXPIRES,
+ 'tools.nocache.on': False
+ },
+ '/libs': {
+ 'tools.staticdir.on': True,
+ 'tools.staticdir.dir': '%s/ui/libs' % GingerBasePaths().prefix,
+ 'tools.expires.on': True,
+ 'tools.expires.secs': CACHEEXPIRES,
+ 'tools.nocache.on': False,
+ },
+ '/images': {
+ 'tools.staticdir.on': True,
+ 'tools.staticdir.dir': '%s/ui/images' % GingerBasePaths().prefix,
+ 'tools.nocache.on': False
+ },
+ '/favicon.ico': {
+ 'tools.staticfile.on': True,
+ 'tools.staticfile.filename':
+ '%s/images/logo.ico' % GingerBasePaths().ui_dir
+ },
+ '/robots.txt': {
+ 'tools.staticfile.on': True,
+ 'tools.staticfile.filename': '%s/robots.txt' % GingerBasePaths().ui_dir
+ },
+ '/help': {
+ 'tools.staticdir.on': True,
+ 'tools.staticdir.dir': '%s/ui/pages/help' % GingerBasePaths().prefix,
+ 'tools.staticdir.index': 'en_US/index.html',
+ 'tools.nocache.on': True
+ }
+ }
+
+ kimchi_config = Parser().dict_from_file(GingerBasePaths().conf_file)
+ self.assertEquals(kimchi_config, configObj)
diff --git a/plugins/gingerbase/tests/test_host.py b/plugins/gingerbase/tests/test_host.py
new file mode 100644
index 0000000..6816e90
--- /dev/null
+++ b/plugins/gingerbase/tests/test_host.py
@@ -0,0 +1,152 @@
+# -*- coding: utf-8 -*-
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import json
+import os
+import platform
+import psutil
+import tempfile
+import time
+import unittest
+from functools import partial
+
+from wok.plugins.gingerbase.mockmodel import MockModel
+from utils import get_free_port, patch_auth, request, run_server, wait_task
+
+
+test_server = None
+model = None
+host = None
+ssl_port = None
+tmpfile = None
+
+
+def setUpModule():
+ global test_server, model, host, ssl_port, tmpfile
+
+ patch_auth()
+ tmpfile = tempfile.mktemp()
+ model = MockModel(tmpfile)
+ host = '127.0.0.1'
+ port = get_free_port('http')
+ ssl_port = get_free_port('https')
+ cherrypy_port = get_free_port('cherrypy_port')
+ test_server = run_server(host, port, ssl_port, test_mode=True,
+ cherrypy_port=cherrypy_port, model=model)
+
+
+def tearDownModule():
+ test_server.stop()
+ os.unlink(tmpfile)
+
+
+class HostTests(unittest.TestCase):
+ def setUp(self):
+ self.request = partial(request, host, ssl_port)
+
+ def test_hostinfo(self):
+ resp = self.request('/plugins/gingerbase/host').read()
+ info = json.loads(resp)
+ keys = ['os_distro', 'os_version', 'os_codename', 'cpu_model',
+ 'memory', 'cpus']
+ self.assertEquals(sorted(keys), sorted(info.keys()))
+
+ distro, version, codename = platform.linux_distribution()
+ self.assertEquals(distro, info['os_distro'])
+ self.assertEquals(version, info['os_version'])
+ self.assertEquals(unicode(codename, "utf-8"), info['os_codename'])
+ self.assertEquals(psutil.TOTAL_PHYMEM, info['memory'])
+
+ def test_hoststats(self):
+ time.sleep(1)
+ stats_keys = ['cpu_utilization', 'memory', 'disk_read_rate',
+ 'disk_write_rate', 'net_recv_rate', 'net_sent_rate']
+ resp = self.request('/plugins/gingerbase/host/stats').read()
+ stats = json.loads(resp)
+ self.assertEquals(sorted(stats_keys), sorted(stats.keys()))
+
+ cpu_utilization = stats['cpu_utilization']
+ self.assertIsInstance(cpu_utilization, float)
+ self.assertGreaterEqual(cpu_utilization, 0.0)
+ self.assertTrue(cpu_utilization <= 100.0)
+
+ memory_stats = stats['memory']
+ self.assertIn('total', memory_stats)
+ self.assertIn('free', memory_stats)
+ self.assertIn('cached', memory_stats)
+ self.assertIn('buffers', memory_stats)
+ self.assertIn('avail', memory_stats)
+
+ resp = self.request('/plugins/gingerbase/host/stats/history').read()
+ history = json.loads(resp)
+ self.assertEquals(sorted(stats_keys), sorted(history.keys()))
+
+ def test_host_actions(self):
+ def _task_lookup(taskid):
+ return json.loads(self.request('/plugins/gingerbase/tasks/%s' %
+ taskid).read())
+
+ resp = self.request('/plugins/gingerbase/host/shutdown', '{}', 'POST')
+ self.assertEquals(200, resp.status)
+ resp = self.request('/plugins/gingerbase/host/reboot', '{}', 'POST')
+ self.assertEquals(200, resp.status)
+
+ # Test system update
+ resp = self.request('/plugins/gingerbase/host/packagesupdate', None, 'GET')
+ pkgs = json.loads(resp.read())
+ self.assertEquals(3, len(pkgs))
+
+ pkg_keys = ['package_name', 'repository', 'arch', 'version']
+ for p in pkgs:
+ name = p['package_name']
+ resp = self.request('/plugins/gingerbase/host/packagesupdate/' + name,
+ None, 'GET')
+ info = json.loads(resp.read())
+ self.assertEquals(sorted(pkg_keys), sorted(info.keys()))
+
+ resp = self.request('/plugins/gingerbase/host/swupdate', '{}', 'POST')
+ task = json.loads(resp.read())
+ task_params = [u'id', u'message', u'status', u'target_uri']
+ self.assertEquals(sorted(task_params), sorted(task.keys()))
+
+ resp = self.request('/tasks/' + task[u'id'], None, 'GET')
+ task_info = json.loads(resp.read())
+ self.assertEquals(task_info['status'], 'running')
+ wait_task(_task_lookup, task_info['id'])
+ resp = self.request('/tasks/' + task[u'id'], None, 'GET')
+ task_info = json.loads(resp.read())
+ self.assertEquals(task_info['status'], 'finished')
+ self.assertIn(u'All packages updated', task_info['message'])
+ pkgs = model.packagesupdate_get_list()
+ self.assertEquals(0, len(pkgs))
+
+ def test_host_partitions(self):
+ resp = self.request('/plugins/gingerbase/host/partitions')
+ self.assertEquals(200, resp.status)
+ partitions = json.loads(resp.read())
+
+ keys = ['name', 'path', 'type', 'fstype', 'size', 'mountpoint',
+ 'available']
+ for item in partitions:
+ resp = self.request('/plugins/gingerbase/host/partitions/%s' %
+ item['name'])
+ info = json.loads(resp.read())
+ self.assertEquals(sorted(info.keys()), sorted(keys))
+
diff --git a/plugins/gingerbase/tests/test_model.py b/plugins/gingerbase/tests/test_model.py
new file mode 100644
index 0000000..18199e2
--- /dev/null
+++ b/plugins/gingerbase/tests/test_model.py
@@ -0,0 +1,280 @@
+# -*- coding: utf-8 -*-
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import os
+import shutil
+import unittest
+
+import wok.objectstore
+from wok.basemodel import Singleton
+from wok.exception import InvalidParameter, NotFoundError, OperationFailed
+from wok.rollbackcontext import RollbackContext
+from wok.plugins.gingerbase.model import model
+
+# import iso_gen
+# import utils
+
+
+invalid_repository_urls = ['www.fedora.org', # missing protocol
+ '://www.fedora.org', # missing protocol
+ 'http://www.fedora', # invalid domain name
+ 'file:///home/foobar'] # invalid path
+
+TMP_DIR = '/var/lib/kimchi/tests/'
+# UBUNTU_ISO = TMP_DIR + 'ubuntu14.04.iso'
+
+
+def setUpModule():
+ if not os.path.exists(TMP_DIR):
+ os.makedirs(TMP_DIR)
+
+ # iso_gen.construct_fake_iso(UBUNTU_ISO, True, '14.04', 'ubuntu')
+
+ # Some FeatureTests functions depend on server to validate their result.
+ # As CapabilitiesModel is a Singleton class it will get the first result
+ # from FeatureTests which may be wrong when using the Model instance
+ # directly - the case of this test_model.py
+ # So clean Singleton instances to make sure to get the right result when
+ # running the following tests.
+ Singleton._instances = {}
+
+
+def tearDownModule():
+ shutil.rmtree(TMP_DIR)
+
+
+class ModelTests(unittest.TestCase):
+ def setUp(self):
+ self.tmp_store = '/tmp/kimchi-store-test'
+
+ def tearDown(self):
+ # FIXME: Tests using 'test:///default' URI should be moved to
+ # test_rest or test_mockmodel to avoid overriding problems
+ # LibvirtConnection._connections['test:///default'] = {}
+
+ os.unlink(self.tmp_store)
+
+ def test_repository_create(self):
+ inst = model.Model(objstore_loc=self.tmp_store)
+
+ yum_repos = [{'repo_id': 'fedora-fake',
+ 'baseurl': 'http://www.fedora.org'},
+ {'repo_id': 'fedora-updates-fake',
+ 'config':
+ {'mirrorlist': 'http://www.fedoraproject.org'}}]
+
+ deb_repos = [{'baseurl': 'http://archive.ubuntu.com/ubuntu/',
+ 'config': {'dist': 'quantal'}},
+ {'baseurl': 'http://archive.ubuntu.com/ubuntu/',
+ 'config': {'dist': 'quantal', 'comps': ['main']}}]
+
+ yum_invalid_repos = []
+ deb_invalid_repos = []
+
+ for url in invalid_repository_urls:
+ wrong_baseurl = {'repo_id': 'wrong-id', 'baseurl': url}
+ wrong_mirrorlist = {'repo_id': 'wrong-id',
+ 'baseurl': 'www.example.com',
+ 'config': {'mirrorlist': url}}
+ wrong_config_item = {
+ 'repo_id': 'wrong-id',
+ 'baseurl': 'www.example.com',
+ 'config': {
+ 'gpgkey': 'file:///tmp/KEY-fedora-updates-fake-19'}}
+
+ yum_invalid_repos.append(wrong_baseurl)
+ yum_invalid_repos.append(wrong_mirrorlist)
+ yum_invalid_repos.append(wrong_config_item)
+
+ wrong_baseurl['config'] = {'dist': 'tasty'}
+ wrong_config = {'baseurl': deb_repos[0]['baseurl'],
+ 'config': {
+ 'unsupported_item': "a_unsupported_item"}}
+ deb_invalid_repos.append(wrong_baseurl)
+ deb_invalid_repos.append(wrong_config)
+
+ repo_type = inst.capabilities_lookup()['repo_mngt_tool']
+ if repo_type == 'yum':
+ test_repos = yum_repos
+ invalid_repos = yum_invalid_repos
+ elif repo_type == 'deb':
+ test_repos = deb_repos
+ invalid_repos = deb_invalid_repos
+ else:
+ # repository management tool was not recognized by Ginger Base
+ # skip test case
+ return
+
+ # create repositories with invalid data
+ for repo in invalid_repos:
+ self.assertRaises(InvalidParameter, inst.repositories_create, repo)
+
+ for repo in test_repos:
+ system_host_repos = len(inst.repositories_get_list())
+ repo_id = inst.repositories_create(repo)
+ host_repos = inst.repositories_get_list()
+ self.assertEquals(system_host_repos + 1, len(host_repos))
+
+ repo_info = inst.repository_lookup(repo_id)
+ self.assertEquals(repo_id, repo_info['repo_id'])
+ self.assertEquals(True, repo_info.get('enabled'))
+ self.assertEquals(repo.get('baseurl', ''),
+ repo_info.get('baseurl'))
+
+ original_config = repo.get('config', {})
+ config_info = repo_info.get('config', {})
+
+ if repo_type == 'yum':
+ self.assertEquals(original_config.get('mirrorlist', ''),
+ config_info.get('mirrorlist', ''))
+ self.assertEquals(True, config_info['gpgcheck'])
+ else:
+ self.assertEquals(original_config['dist'], config_info['dist'])
+ self.assertEquals(original_config.get('comps', []),
+ config_info.get('comps', []))
+
+ inst.repository_delete(repo_id)
+ self.assertRaises(NotFoundError, inst.repository_lookup, repo_id)
+
+ self.assertRaises(NotFoundError, inst.repository_lookup, 'google')
+
+ def test_repository_update(self):
+ inst = model.Model(objstore_loc=self.tmp_store)
+
+ yum_repo = {'repo_id': 'fedora-fake',
+ 'baseurl': 'http://www.fedora.org'}
+ yum_new_repo = {'baseurl': 'http://www.fedoraproject.org'}
+
+ deb_repo = {'baseurl': 'http://archive.ubuntu.com/ubuntu/',
+ 'config': {'dist': 'quantal'}}
+ deb_new_repo = {'baseurl': 'http://br.archive.canonical.com/ubuntu/',
+ 'config': {'dist': 'utopic'}}
+
+ yum_invalid_repos = []
+ deb_invalid_repos = []
+
+ for url in invalid_repository_urls:
+ wrong_baseurl = {'baseurl': url}
+ wrong_mirrorlist = {'baseurl': 'www.example.com',
+ 'config': {'mirrorlist': url}}
+
+ yum_invalid_repos.append(wrong_baseurl)
+ yum_invalid_repos.append(wrong_mirrorlist)
+
+ wrong_baseurl['config'] = {'dist': 'tasty'}
+ deb_invalid_repos.append(wrong_baseurl)
+
+ repo_type = inst.capabilities_lookup()['repo_mngt_tool']
+ if repo_type == 'yum':
+ repo = yum_repo
+ new_repo = yum_new_repo
+ invalid_repos = yum_invalid_repos
+ elif repo_type == 'deb':
+ repo = deb_repo
+ new_repo = deb_new_repo
+ invalid_repos = deb_invalid_repos
+ else:
+ # repository management tool was not recognized by Ginger Base
+ # skip test case
+ return
+
+ system_host_repos = len(inst.repositories_get_list())
+
+ with RollbackContext() as rollback:
+ repo_id = inst.repositories_create(repo)
+ rollback.prependDefer(inst.repository_delete, repo_id)
+
+ host_repos = inst.repositories_get_list()
+ self.assertEquals(system_host_repos + 1, len(host_repos))
+
+ # update repositories with invalid data
+ for tmp_repo in invalid_repos:
+ self.assertRaises(InvalidParameter, inst.repository_update,
+ repo_id, tmp_repo)
+
+ new_repo_id = inst.repository_update(repo_id, new_repo)
+ repo_info = inst.repository_lookup(new_repo_id)
+
+ self.assertEquals(new_repo_id, repo_info['repo_id'])
+ self.assertEquals(new_repo['baseurl'], repo_info['baseurl'])
+ self.assertEquals(True, repo_info['enabled'])
+ inst.repository_update(new_repo_id, repo)
+
+ def test_repository_disable_enable(self):
+ inst = model.Model(objstore_loc=self.tmp_store)
+
+ yum_repo = {'repo_id': 'fedora-fake',
+ 'baseurl': 'http://www.fedora.org'}
+ deb_repo = {'baseurl': 'http://archive.ubuntu.com/ubuntu/',
+ 'config': {'dist': 'quantal'}}
+
+ repo_type = inst.capabilities_lookup()['repo_mngt_tool']
+ if repo_type == 'yum':
+ repo = yum_repo
+ elif repo_type == 'deb':
+ repo = deb_repo
+ else:
+ # repository management tool was not recognized by Ginger Base
+ # skip test case
+ return
+
+ system_host_repos = len(inst.repositories_get_list())
+
+ repo_id = inst.repositories_create(repo)
+
+ host_repos = inst.repositories_get_list()
+ self.assertEquals(system_host_repos + 1, len(host_repos))
+
+ repo_info = inst.repository_lookup(repo_id)
+ self.assertEquals(True, repo_info['enabled'])
+
+ inst.repository_disable(repo_id)
+ repo_info = inst.repository_lookup(repo_id)
+ self.assertEquals(False, repo_info['enabled'])
+
+ inst.repository_enable(repo_id)
+ repo_info = inst.repository_lookup(repo_id)
+ self.assertEquals(True, repo_info['enabled'])
+
+ # remove files creates
+ inst.repository_delete(repo_id)
+
+
+class BaseModelTests(unittest.TestCase):
+ class FoosModel(object):
+ def __init__(self):
+ self.data = {}
+
+ def create(self, params):
+ self.data.update(params)
+
+ def get_list(self):
+ return list(self.data)
+
+ class TestModel(wok.basemodel.BaseModel):
+ def __init__(self):
+ foo = BaseModelTests.FoosModel()
+ super(BaseModelTests.TestModel, self).__init__([foo])
+
+ def test_root_model(self):
+ t = BaseModelTests.TestModel()
+ t.foos_create({'item1': 10})
+ self.assertEquals(t.foos_get_list(), ['item1'])
+
diff --git a/plugins/gingerbase/tests/utils.py b/plugins/gingerbase/tests/utils.py
new file mode 100644
index 0000000..8517d7d
--- /dev/null
+++ b/plugins/gingerbase/tests/utils.py
@@ -0,0 +1,261 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+import base64
+import cherrypy
+import grp
+import httplib
+import inspect
+import json
+import os
+import socket
+import ssl
+import sys
+import threading
+import time
+import unittest
+from contextlib import closing
+from lxml import etree
+
+import wok.server
+from wok.config import config, PluginPaths
+from wok.auth import User, USER_NAME, USER_GROUPS, USER_ROLES, tabs
+from wok.exception import NotFoundError, OperationFailed
+from wok.utils import wok_log
+
+from wok.plugins.gingerbase import mockmodel
+
+
+_ports = {}
+
+# provide missing unittest decorators and API for python 2.6; these decorators
+# do not actually work, just avoid the syntax failure
+if sys.version_info[:2] == (2, 6):
+ def skipUnless(condition, reason):
+ if not condition:
+ sys.stderr.write('[expected failure] ')
+ raise Exception(reason)
+ return lambda obj: obj
+
+ unittest.skipUnless = skipUnless
+ unittest.expectedFailure = lambda obj: obj
+
+ def assertGreater(self, a, b, msg=None):
+ if not a > b:
+ self.fail('%s not greater than %s' % (repr(a), repr(b)))
+
+ def assertGreaterEqual(self, a, b, msg=None):
+ if not a >= b:
+ self.fail('%s not greater than or equal to %s'
+ % (repr(a), repr(b)))
+
+ def assertIsInstance(self, obj, cls, msg=None):
+ if not isinstance(obj, cls):
+ self.fail('%s is not an instance of %r' % (repr(obj), cls))
+
+ def assertIn(self, a, b, msg=None):
+ if a not in b:
+ self.fail("%s is not in %b" % (repr(a), repr(b)))
+
+ def assertNotIn(self, a, b, msg=None):
+ if a in b:
+ self.fail("%s is in %b" % (repr(a), repr(b)))
+
+ unittest.TestCase.assertGreaterEqual = assertGreaterEqual
+ unittest.TestCase.assertGreater = assertGreater
+ unittest.TestCase.assertIsInstance = assertIsInstance
+ unittest.TestCase.assertIn = assertIn
+ unittest.TestCase.assertNotIn = assertNotIn
+
+
+def get_free_port(name='http'):
+ global _ports
+ if _ports.get(name) is not None:
+ return _ports[name]
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ with closing(sock):
+ try:
+ sock.bind(("0.0.0.0", 0))
+ except:
+ raise Exception("Could not find a free port")
+ _ports[name] = sock.getsockname()[1]
+ return _ports[name]
+
+
+def run_server(host, port, ssl_port, test_mode, cherrypy_port=None,
+ model=None, environment='development'):
+
+ if cherrypy_port is None:
+ cherrypy_port = get_free_port('cherrypy_port')
+
+ if ssl_port is None:
+ ssl_port = get_free_port('https')
+
+ args = type('_', (object,),
+ {'host': host, 'port': port, 'ssl_port': ssl_port,
+ 'cherrypy_port': cherrypy_port, 'max_body_size': '4*1024',
+ 'ssl_cert': '', 'ssl_key': '',
+ 'test': test_mode, 'access_log': '/dev/null',
+ 'error_log': '/dev/null', 'environment': environment,
+ 'log_level': 'debug'})()
+ if model is not None:
+ setattr(args, 'model', model)
+
+ s = wok.server.Server(args)
+ t = threading.Thread(target=s.start)
+ t.setDaemon(True)
+ t.start()
+ cherrypy.engine.wait(cherrypy.engine.states.STARTED)
+ return s
+
+
+def silence_server():
+ """
+ Silence server status messages on stdout
+ """
+ cherrypy.config.update({"environment": "embedded"})
+
+
+def running_as_root():
+ return os.geteuid() == 0
+
+
+def _request(conn, path, data, method, headers):
+ if headers is None:
+ headers = {'Content-Type': 'application/json',
+ 'Accept': 'application/json'}
+ if 'AUTHORIZATION' not in headers.keys():
+ user, pw = mockmodel.fake_user.items()[0]
+ hdr = "Basic " + base64.b64encode("%s:%s" % (user, pw))
+ headers['AUTHORIZATION'] = hdr
+ conn.request(method, path, data, headers)
+ return conn.getresponse()
+
+
+def request(host, port, path, data=None, method='GET', headers=None):
+ # verify if HTTPSConnection has context parameter
+ if "context" in inspect.getargspec(httplib.HTTPSConnection.__init__).args:
+ context = ssl._create_unverified_context()
+ conn = httplib.HTTPSConnection(host, port, context=context)
+ else:
+ conn = httplib.HTTPSConnection(host, port)
+
+ return _request(conn, path, data, method, headers)
+
+
+def get_remote_iso_path():
+ """
+ Get a remote iso with the right arch from the distro files shipped
+ with kimchi.
+ """
+ host_arch = os.uname()[4]
+ remote_path = ''
+ with open(os.path.join(PluginPaths('kimchi').conf_dir, 'distros.d', 'fedora.json')) \
+ as fedora_isos:
+ # Get a list of dicts
+ json_isos_list = json.load(fedora_isos)
+ for iso in json_isos_list:
+ if (iso.get('os_arch')) == host_arch:
+ remote_path = iso.get('path')
+ break
+
+ return remote_path
+
+
+class FakeUser(User):
+ auth_type = "fake"
+ sudo = True
+
+ def __init__(self, username):
+ self.user = {}
+ self.user[USER_NAME] = username
+ self.user[USER_GROUPS] = None
+ self.user[USER_ROLES] = dict.fromkeys(tabs, 'user')
+
+ def get_groups(self):
+ return sorted([group.gr_name for group in grp.getgrall()])[0:3]
+
+ def get_roles(self):
+ if self.sudo:
+ self.user[USER_ROLES] = dict.fromkeys(tabs, 'admin')
+ return self.user[USER_ROLES]
+
+ def get_user(self):
+ return self.user
+
+ @staticmethod
+ def authenticate(username, password, service="passwd"):
+ try:
+ return mockmodel.fake_user[username] == password
+ except KeyError, e:
+ raise OperationFailed("GGBAUTH0001E", {'username': 'username',
+ 'code': e.message})
+
+
+def patch_auth(sudo=True):
+ """
+ Override the authenticate function with a simple test against an
+ internal dict of users and passwords.
+ """
+ config.set("authentication", "method", "fake")
+ FakeUser.sudo = sudo
+
+
+def normalize_xml(xml_str):
+ return etree.tostring(etree.fromstring(xml_str,
+ etree.XMLParser(remove_blank_text=True)))
+
+
+def wait_task(task_lookup, taskid, timeout=10):
+ for i in range(0, timeout):
+ task_info = task_lookup(taskid)
+ if task_info['status'] == "running":
+ wok_log.info("Waiting task %s, message: %s",
+ taskid, task_info['message'])
+ time.sleep(1)
+ else:
+ return
+ wok_log.error("Timeout while process long-run task, "
+ "try to increase timeout value.")
+
+
+# The action functions in model backend raise NotFoundError exception if the
+# element is not found. But in some tests, these functions are called after
+# the element has been deleted if test finishes correctly, then NofFoundError
+# exception is raised and rollback breaks. To avoid it, this wrapper ignores
+# the NotFoundError.
+def rollback_wrapper(func, resource, *args):
+ try:
+ func(resource, *args)
+ except NotFoundError:
+ # VM has been deleted already
+ return
+
+
+# This function is used to test storage volume upload.
+# If we use self.request, we may encode multipart formdata by ourselves
+# requests lib take care of encode part, so use this lib instead
+def fake_auth_header():
+ headers = {'Accept': 'application/json'}
+ user, pw = mockmodel.fake_user.items()[0]
+ hdr = "Basic " + base64.b64encode("%s:%s" % (user, pw))
+ headers['AUTHORIZATION'] = hdr
+ return headers
+
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/model/Makefile.am | 25 ++
plugins/gingerbase/model/__init__.py | 18 ++
plugins/gingerbase/model/cpuinfo.py | 103 ++++++++
plugins/gingerbase/model/debugreports.py | 213 ++++++++++++++++
plugins/gingerbase/model/host.py | 421 +++++++++++++++++++++++++++++++
plugins/gingerbase/model/model.py | 49 ++++
plugins/kimchi/model/debugreports.py | 213 ----------------
7 files changed, 829 insertions(+), 213 deletions(-)
create mode 100644 plugins/gingerbase/model/Makefile.am
create mode 100644 plugins/gingerbase/model/__init__.py
create mode 100644 plugins/gingerbase/model/cpuinfo.py
create mode 100644 plugins/gingerbase/model/debugreports.py
create mode 100644 plugins/gingerbase/model/host.py
create mode 100644 plugins/gingerbase/model/model.py
delete mode 100644 plugins/kimchi/model/debugreports.py
diff --git a/plugins/gingerbase/model/Makefile.am b/plugins/gingerbase/model/Makefile.am
new file mode 100644
index 0000000..80c4e07
--- /dev/null
+++ b/plugins/gingerbase/model/Makefile.am
@@ -0,0 +1,25 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+model_PYTHON = *.py
+
+modeldir = $(pythondir)/wok/plugins/gingerbase/model
+
+install-data-local:
+ $(MKDIR_P) $(DESTDIR)$(modeldir)
diff --git a/plugins/gingerbase/model/__init__.py b/plugins/gingerbase/model/__init__.py
new file mode 100644
index 0000000..355a76c
--- /dev/null
+++ b/plugins/gingerbase/model/__init__.py
@@ -0,0 +1,18 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/plugins/gingerbase/model/cpuinfo.py b/plugins/gingerbase/model/cpuinfo.py
new file mode 100644
index 0000000..688d58f
--- /dev/null
+++ b/plugins/gingerbase/model/cpuinfo.py
@@ -0,0 +1,103 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2014-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import platform
+
+from wok.exception import InvalidParameter, InvalidOperation
+from wok.utils import run_command
+from ..lscpu import LsCpu
+
+
+ARCH = 'power' if platform.machine().startswith('ppc') else 'x86'
+
+
+class CPUInfoModel(object):
+ """
+ Get information about a CPU for hyperthreading (on x86)
+ or SMT (on POWER) for logic when creating templates and VMs.
+ """
+
+ def __init__(self, **kargs):
+ self.guest_threads_enabled = False
+ self.sockets = 0
+ self.cores_present = 0
+ self.cores_available = 0
+ self.cores_per_socket = 0
+ self.threads_per_core = 0
+ self.max_threads = 0
+ self.lscpu = LsCpu()
+
+ if ARCH == 'power':
+ # IBM PowerPC
+ self.guest_threads_enabled = True
+ out, error, rc = run_command(['ppc64_cpu', '--smt'])
+ if rc or 'on' in out:
+ # SMT has to be disabled for guest to use threads as CPUs.
+ # rc is always zero, whether SMT is off or on.
+ self.guest_threads_enabled = False
+ out, error, rc = run_command(['ppc64_cpu', '--cores-present'])
+ if not rc:
+ self.cores_present = int(out.split()[-1])
+ out, error, rc = run_command(['ppc64_cpu', '--cores-on'])
+ if not rc:
+ self.cores_available = int(out.split()[-1])
+ out, error, rc = run_command(['ppc64_cpu', '--threads-per-core'])
+ if not rc:
+ self.threads_per_core = int(out.split()[-1])
+ self.sockets = self.cores_present/self.threads_per_core
+ if self.sockets == 0:
+ self.sockets = 1
+ self.cores_per_socket = self.cores_present/self.sockets
+ else:
+ # Intel or AMD
+ self.guest_threads_enabled = True
+ self.sockets = int(self.lscpu.get_sockets())
+ self.cores_per_socket = int(self.lscpu.get_cores_per_socket())
+ self.cores_present = self.cores_per_socket * self.sockets
+ self.cores_available = self.cores_present
+ self.threads_per_core = self.lscpu.get_threads_per_core()
+
+ def lookup(self, ident):
+ return {
+ 'guest_threads_enabled': self.guest_threads_enabled,
+ 'sockets': self.sockets,
+ 'cores_per_socket': self.cores_per_socket,
+ 'cores_present': self.cores_present,
+ 'cores_available': self.cores_available,
+ 'threads_per_core': self.threads_per_core,
+ }
+
+ def check_topology(self, vcpus, topology):
+ """
+ param vcpus: should be an integer
+ param iso_path: the path of the guest ISO
+ param topology: {'sockets': x, 'cores': x, 'threads': x}
+ """
+ sockets = topology['sockets']
+ cores = topology['cores']
+ threads = topology['threads']
+
+ if not self.guest_threads_enabled:
+ raise InvalidOperation("GGBCPUINF0003E")
+ if vcpus != sockets * cores * threads:
+ raise InvalidParameter("GGBCPUINF0002E")
+ if vcpus > self.cores_available * self.threads_per_core:
+ raise InvalidParameter("GGBCPUINF0001E")
+ if threads > self.threads_per_core:
+ raise InvalidParameter("GGBCPUINF0002E")
diff --git a/plugins/gingerbase/model/debugreports.py b/plugins/gingerbase/model/debugreports.py
new file mode 100644
index 0000000..76be2b9
--- /dev/null
+++ b/plugins/gingerbase/model/debugreports.py
@@ -0,0 +1,213 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2014-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import fnmatch
+import glob
+import logging
+import os
+import shutil
+import subprocess
+import time
+
+from wok.exception import InvalidParameter, NotFoundError, OperationFailed
+from wok.exception import WokException
+from wok.utils import add_task, wok_log
+from wok.utils import run_command
+from wok.model.tasks import TaskModel
+
+from .. import config
+
+
+class DebugReportsModel(object):
+ def __init__(self, **kargs):
+ self.objstore = kargs['objstore']
+ self.task = TaskModel(**kargs)
+
+ def create(self, params):
+ ident = params.get('name').strip()
+ # Generate a name with time and millisec precision, if necessary
+ if ident is None or ident == "":
+ ident = 'report-' + str(int(time.time() * 1000))
+ else:
+ if ident in self.get_list():
+ raise InvalidParameter("GGBDR0008E", {"name": ident})
+ taskid = self._gen_debugreport_file(ident)
+ return self.task.lookup(taskid)
+
+ def get_list(self):
+ path = config.get_debugreports_path()
+ file_pattern = os.path.join(path, '*.*')
+ file_lists = glob.glob(file_pattern)
+ file_lists = [os.path.split(file)[1] for file in file_lists]
+ name_lists = [file.split('.', 1)[0] for file in file_lists]
+
+ return name_lists
+
+ def _gen_debugreport_file(self, name):
+ gen_cmd = self.get_system_report_tool()
+
+ if gen_cmd is not None:
+ return add_task('/plugins/gingerbase/debugreports/%s' % name, gen_cmd,
+ self.objstore, name)
+
+ raise OperationFailed("GGBDR0002E")
+
+ @staticmethod
+ def sosreport_generate(cb, name):
+ def log_error(e):
+ log = logging.getLogger('Model')
+ log.warning('Exception in generating debug file: %s', e)
+
+ try:
+ command = ['sosreport', '--batch', '--name=%s' % name]
+ output, error, retcode = run_command(command)
+
+ if retcode != 0:
+ raise OperationFailed("GGBDR0003E", {'name': name,
+ 'err': retcode})
+
+ # SOSREPORT might create file in /tmp or /var/tmp
+ # FIXME: The right way should be passing the tar.xz file directory
+ # though the parameter '--tmp-dir', but it is failing in Fedora 20
+ patterns = ['/tmp/sosreport-%s-*', '/var/tmp/sosreport-%s-*']
+ reports = []
+ reportFile = None
+ for p in patterns:
+ reports = reports + [f for f in glob.glob(p % name)]
+ for f in reports:
+ if not fnmatch.fnmatch(f, '*.md5'):
+ reportFile = f
+ break
+ # Some error in sosreport happened
+ if reportFile is None:
+ wok_log.error('Debug report file not found. See sosreport '
+ 'output for detail:\n%s', output)
+ fname = (patterns[0] % name).split('/')[-1]
+ raise OperationFailed('GGBDR0004E', {'name': fname})
+
+ md5_report_file = reportFile + '.md5'
+ report_file_extension = '.' + reportFile.split('.', 1)[1]
+ path = config.get_debugreports_path()
+ target = os.path.join(path, name + report_file_extension)
+ # Moving report
+ msg = 'Moving debug report file "%s" to "%s"' % (reportFile,
+ target)
+ wok_log.info(msg)
+ shutil.move(reportFile, target)
+ # Deleting md5
+ msg = 'Deleting report md5 file: "%s"' % (md5_report_file)
+ wok_log.info(msg)
+ with open(md5_report_file) as f:
+ md5 = f.read().strip()
+ wok_log.info('Md5 file content: "%s"', md5)
+ os.remove(md5_report_file)
+ cb('OK', True)
+ return
+
+ except WokException as e:
+ log_error(e)
+ raise
+
+ except OSError as e:
+ log_error(e)
+ raise
+
+ except Exception, e:
+ # No need to call cb to update the task status here.
+ # The task object will catch the exception raised here
+ # and update the task status there
+ log_error(e)
+ raise OperationFailed("GGBDR0005E", {'name': name, 'err': e})
+
+ @staticmethod
+ def get_system_report_tool():
+ # Please add new possible debug report command here
+ # and implement the report generating function
+ # based on the new report command
+ report_tools = ({'cmd': 'sosreport --help',
+ 'fn': DebugReportsModel.sosreport_generate},)
+
+ # check if the command can be found by shell one by one
+ for helper_tool in report_tools:
+ try:
+ retcode = subprocess.call(helper_tool['cmd'], shell=True,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ if retcode == 0:
+ return helper_tool['fn']
+ except Exception, e:
+ wok_log.info('Exception running command: %s', e)
+
+ return None
+
+
+class DebugReportModel(object):
+ def __init__(self, **kargs):
+ pass
+
+ def lookup(self, name):
+ path = config.get_debugreports_path()
+ file_pattern = os.path.join(path, name)
+ file_pattern = file_pattern + '.*'
+ try:
+ file_target = glob.glob(file_pattern)[0]
+ except IndexError:
+ raise NotFoundError("GGBDR0001E", {'name': name})
+
+ ctime = os.stat(file_target).st_mtime
+ ctime = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime(ctime))
+ file_target = os.path.split(file_target)[-1]
+ file_target = os.path.join("plugins/gingerbase/data/debugreports",
+ file_target)
+ return {'uri': file_target,
+ 'ctime': ctime}
+
+ def update(self, name, params):
+ path = config.get_debugreports_path()
+ file_pattern = os.path.join(path, name + '.*')
+ try:
+ file_source = glob.glob(file_pattern)[0]
+ except IndexError:
+ raise NotFoundError("GGBDR0001E", {'name': name})
+
+ file_target = file_source.replace(name, params['name'])
+ if os.path.isfile(file_target):
+ raise InvalidParameter('GGBDR0008E', {'name': params['name']})
+
+ shutil.move(file_source, file_target)
+ wok_log.info('%s renamed to %s' % (file_source, file_target))
+ return params['name']
+
+ def delete(self, name):
+ path = config.get_debugreports_path()
+ file_pattern = os.path.join(path, name + '.*')
+ try:
+ file_target = glob.glob(file_pattern)[0]
+ except IndexError:
+ raise NotFoundError("GGBDR0001E", {'name': name})
+
+ os.remove(file_target)
+
+
+class DebugReportContentModel(object):
+ def __init__(self, **kargs):
+ self._debugreport = DebugReportModel()
+
+ def lookup(self, name):
+ return self._debugreport.lookup(name)
diff --git a/plugins/gingerbase/model/host.py b/plugins/gingerbase/model/host.py
new file mode 100644
index 0000000..173a159
--- /dev/null
+++ b/plugins/gingerbase/model/host.py
@@ -0,0 +1,421 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import os
+import platform
+import psutil
+import time
+from cherrypy.process.plugins import BackgroundTask
+from collections import defaultdict
+import glob
+
+from wok.basemodel import Singleton
+from wok.exception import InvalidOperation
+from wok.exception import OperationFailed
+from wok.utils import add_task, wok_log
+
+
+from .. import disks
+from ..repositories import Repositories
+from ..swupdate import SoftwareUpdate
+from debugreports import DebugReportsModel
+from wok.model.tasks import TaskModel
+from wok.config import config as kconfig
+
+
+HOST_STATS_INTERVAL = 1
+
+
+class HostModel(object):
+ def __init__(self, **kargs):
+ # self.conn = kargs['conn']
+ self.objstore = kargs['objstore']
+ self.task = TaskModel(**kargs)
+ self.host_info = self._get_host_info()
+
+ def _get_ppc_cpu_info(self):
+ res = {}
+ with open('/proc/cpuinfo') as f:
+ for line in f.xreadlines():
+ # Parse CPU, CPU's revision and CPU's clock information
+ for key in ['cpu', 'revision', 'clock']:
+ if key in line:
+ info = line.split(':')[1].strip()
+ if key == 'clock':
+ value = float(info.split('MHz')[0].strip()) / 1000
+ else:
+ value = info.split('(')[0].strip()
+ res[key] = value
+
+ # Power machines show, for each cpu/core, a block with
+ # all cpu information. Here we control the scan of the
+ # necessary information (1st block provides
+ # everything), skipping the function when find all
+ # information.
+ if len(res.keys()) == 3:
+ return "%(cpu)s (%(revision)s) @ %(clock)s GHz\
+ " % res
+
+ return ""
+
+ def _get_host_info(self):
+ res = {}
+ if platform.machine().startswith('ppc'):
+ res['cpu_model'] = self._get_ppc_cpu_info()
+ else:
+ with open('/proc/cpuinfo') as f:
+ for line in f.xreadlines():
+ if "model name" in line:
+ res['cpu_model'] = line.split(':')[1].strip()
+ break
+
+ res['cpus'] = 0
+ res['memory'] = 0L
+
+ # Include IBM PowerKVM name to supported distro names
+ _sup_distros = platform._supported_dists + ('ibm_powerkvm',)
+ # 'fedora' '17' 'Beefy Miracle'
+ distro, version, codename = platform.linux_distribution(
+ supported_dists=_sup_distros)
+ res['os_distro'] = distro
+ res['os_version'] = version
+ res['os_codename'] = unicode(codename, "utf-8")
+
+ return res
+
+ def lookup(self, *name):
+ cpus = psutil.NUM_CPUS
+
+ # psutil is unstable on how to get the number of
+ # cpus, different versions call it differently
+ if hasattr(psutil, 'cpu_count'):
+ cpus = psutil.cpu_count()
+
+ elif hasattr(psutil, '_psplatform'):
+ for method_name in ['_get_num_cpus', 'get_num_cpus']:
+
+ method = getattr(psutil._psplatform, method_name, None)
+ if method is not None:
+ cpus = method()
+ break
+
+ self.host_info['cpus'] = cpus
+ self.host_info['memory'] = psutil.phymem_usage().total
+ return self.host_info
+
+ def swupdate(self, *name):
+ try:
+ swupdate = SoftwareUpdate()
+ except:
+ raise OperationFailed('GGBPKGUPD0004E')
+
+ pkgs = swupdate.getNumOfUpdates()
+ if pkgs == 0:
+ raise OperationFailed('GGBPKGUPD0001E')
+
+ wok_log.debug('Host is going to be updated.')
+ taskid = add_task('/plugins/gingerbase/host/swupdate', swupdate.doUpdate,
+ self.objstore, None)
+ return self.task.lookup(taskid)
+
+ def shutdown(self, args=None):
+ # Check for running vms before shutdown
+ # FIXME : Find alternative way to figure out if any vms running
+ # running_vms = self._get_vms_list_by_state('running')
+ # if len(running_vms) > 0:
+ # raise OperationFailed("GGBHOST0001E")
+
+ wok_log.info('Host is going to shutdown.')
+ os.system('shutdown -h now')
+
+ def reboot(self, args=None):
+ # Find running VMs
+ # FIXME : Find alternative way to figure out if any vms running
+ # running_vms = self._get_vms_list_by_state('running')
+ # if len(running_vms) > 0:
+ # raise OperationFailed("GGBHOST0002E")
+
+ wok_log.info('Host is going to reboot.')
+ os.system('reboot')
+
+ # def _get_vms_list_by_state(self, state):
+ # conn = self.conn.get()
+ # return [dom.name().decode('utf-8')
+ # for dom in conn.listAllDomains(0)
+ # if (DOM_STATE_MAP[dom.info()[0]]) == state]
+
+
+class HostStatsModel(object):
+ __metaclass__ = Singleton
+
+ def __init__(self, **kargs):
+ self.host_stats = defaultdict(list)
+ self.host_stats_thread = BackgroundTask(HOST_STATS_INTERVAL,
+ self._update_host_stats)
+ self.host_stats_thread.start()
+
+ def lookup(self, *name):
+ return {'cpu_utilization': self.host_stats['cpu_utilization'][-1],
+ 'memory': self.host_stats['memory'][-1],
+ 'disk_read_rate': self.host_stats['disk_read_rate'][-1],
+ 'disk_write_rate': self.host_stats['disk_write_rate'][-1],
+ 'net_recv_rate': self.host_stats['net_recv_rate'][-1],
+ 'net_sent_rate': self.host_stats['net_sent_rate'][-1]}
+
+ def _update_host_stats(self):
+ preTimeStamp = self.host_stats['timestamp']
+ timestamp = time.time()
+ # FIXME when we upgrade psutil, we can get uptime by psutil.uptime
+ # we get uptime by float(open("/proc/uptime").readline().split()[0])
+ # and calculate the first io_rate after the OS started.
+ with open("/proc/uptime") as time_f:
+ seconds = (timestamp - preTimeStamp if preTimeStamp else
+ float(time_f.readline().split()[0]))
+
+ self.host_stats['timestamp'] = timestamp
+ self._get_host_disk_io_rate(seconds)
+ self._get_host_network_io_rate(seconds)
+
+ self._get_percentage_host_cpu_usage()
+ self._get_host_memory_stats()
+
+ # store only 60 stats (1 min)
+ for key, value in self.host_stats.iteritems():
+ if isinstance(value, list):
+ if len(value) == 60:
+ self.host_stats[key] = value[10:]
+
+ def _get_percentage_host_cpu_usage(self):
+ # This is cpu usage producer. This producer will calculate the usage
+ # at an interval of HOST_STATS_INTERVAL.
+ # The psutil.cpu_percent works as non blocking.
+ # psutil.cpu_percent maintains a cpu time sample.
+ # It will update the cpu time sample when it is called.
+ # So only this producer can call psutil.cpu_percent in kimchi.
+ self.host_stats['cpu_utilization'].append(psutil.cpu_percent(None))
+
+ def _get_host_memory_stats(self):
+ virt_mem = psutil.virtual_memory()
+ # available:
+ # the actual amount of available memory that can be given
+ # instantly to processes that request more memory in bytes; this
+ # is calculated by summing different memory values depending on
+ # the platform (e.g. free + buffers + cached on Linux)
+ memory_stats = {'total': virt_mem.total,
+ 'free': virt_mem.free,
+ 'cached': virt_mem.cached,
+ 'buffers': virt_mem.buffers,
+ 'avail': virt_mem.available}
+ self.host_stats['memory'].append(memory_stats)
+
+ def _get_host_disk_io_rate(self, seconds):
+ disk_read_bytes = self.host_stats['disk_read_bytes']
+ disk_write_bytes = self.host_stats['disk_write_bytes']
+ prev_read_bytes = disk_read_bytes[-1] if disk_read_bytes else 0
+ prev_write_bytes = disk_write_bytes[-1] if disk_write_bytes else 0
+
+ disk_io = psutil.disk_io_counters(False)
+ read_bytes = disk_io.read_bytes
+ write_bytes = disk_io.write_bytes
+
+ rd_rate = int(float(read_bytes - prev_read_bytes) / seconds + 0.5)
+ wr_rate = int(float(write_bytes - prev_write_bytes) / seconds + 0.5)
+
+ self.host_stats['disk_read_rate'].append(rd_rate)
+ self.host_stats['disk_write_rate'].append(wr_rate)
+ self.host_stats['disk_read_bytes'].append(read_bytes)
+ self.host_stats['disk_write_bytes'].append(write_bytes)
+
+ def _get_host_network_io_rate(self, seconds):
+ net_recv_bytes = self.host_stats['net_recv_bytes']
+ net_sent_bytes = self.host_stats['net_sent_bytes']
+ prev_recv_bytes = net_recv_bytes[-1] if net_recv_bytes else 0
+ prev_sent_bytes = net_sent_bytes[-1] if net_sent_bytes else 0
+
+ net_ios = psutil.network_io_counters(True)
+ recv_bytes = 0
+ sent_bytes = 0
+ for key in set(self.nics() +
+ self.wlans()) & set(net_ios.iterkeys()):
+ recv_bytes = recv_bytes + net_ios[key].bytes_recv
+ sent_bytes = sent_bytes + net_ios[key].bytes_sent
+
+ rx_rate = int(float(recv_bytes - prev_recv_bytes) / seconds + 0.5)
+ tx_rate = int(float(sent_bytes - prev_sent_bytes) / seconds + 0.5)
+
+ self.host_stats['net_recv_rate'].append(rx_rate)
+ self.host_stats['net_sent_rate'].append(tx_rate)
+ self.host_stats['net_recv_bytes'].append(recv_bytes)
+ self.host_stats['net_sent_bytes'].append(sent_bytes)
+
+ def wlans(self):
+ WLAN_PATH = '/sys/class/net/*/wireless'
+ return [b.split('/')[-2] for b in glob.glob(WLAN_PATH)]
+
+
+ # FIXME if we do not want to list usb nic
+ def nics(self):
+ NIC_PATH = '/sys/class/net/*/device'
+ return list(set([b.split('/')[-2] for b in glob.glob(NIC_PATH)]) -
+ set(self.wlans()))
+
+
+class HostStatsHistoryModel(object):
+ def __init__(self, **kargs):
+ self.history = HostStatsModel(**kargs)
+
+ def lookup(self, *name):
+ return {'cpu_utilization': self.history.host_stats['cpu_utilization'],
+ 'memory': self.history.host_stats['memory'],
+ 'disk_read_rate': self.history.host_stats['disk_read_rate'],
+ 'disk_write_rate': self.history.host_stats['disk_write_rate'],
+ 'net_recv_rate': self.history.host_stats['net_recv_rate'],
+ 'net_sent_rate': self.history.host_stats['net_sent_rate']}
+
+
+class CapabilitiesModel(object):
+ __metaclass__ = Singleton
+
+ def __init__(self, **kargs):
+ pass
+
+
+ def lookup(self, *ident):
+ report_tool = DebugReportsModel.get_system_report_tool()
+ try:
+ SoftwareUpdate()
+ except Exception:
+ update_tool = False
+ else:
+ update_tool = True
+
+ try:
+ repo = Repositories()
+ except Exception:
+ repo_mngt_tool = None
+ else:
+ repo_mngt_tool = repo._pkg_mnger.TYPE
+
+ return {
+ 'system_report_tool': bool(report_tool),
+ 'update_tool': update_tool,
+ 'repo_mngt_tool': repo_mngt_tool,
+ 'federation': kconfig.get("server", "federation")
+ }
+
+
+class PartitionsModel(object):
+ def __init__(self, **kargs):
+ pass
+
+ def get_list(self):
+ result = disks.get_partitions_names()
+ return result
+
+
+class PartitionModel(object):
+ def __init__(self, **kargs):
+ pass
+
+ def lookup(self, name):
+ return disks.get_partition_details(name)
+
+class PackagesUpdateModel(object):
+ def __init__(self, **kargs):
+ try:
+ self.host_swupdate = SoftwareUpdate()
+ except:
+ self.host_swupdate = None
+
+ def get_list(self):
+ if self.host_swupdate is None:
+ raise OperationFailed('GGBPKGUPD0004E')
+
+ return self.host_swupdate.getUpdates()
+
+
+class PackageUpdateModel(object):
+ def __init__(self, **kargs):
+ pass
+
+ def lookup(self, name):
+ try:
+ swupdate = SoftwareUpdate()
+ except Exception:
+ raise OperationFailed('GGBPKGUPD0004E')
+
+ return swupdate.getUpdate(name)
+
+
+class RepositoriesModel(object):
+ def __init__(self, **kargs):
+ try:
+ self.host_repositories = Repositories()
+ except:
+ self.host_repositories = None
+
+ def get_list(self):
+ if self.host_repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return sorted(self.host_repositories.getRepositories())
+
+ def create(self, params):
+ if self.host_repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return self.host_repositories.addRepository(params)
+
+
+class RepositoryModel(object):
+ def __init__(self, **kargs):
+ try:
+ self._repositories = Repositories()
+ except:
+ self._repositories = None
+
+ def lookup(self, repo_id):
+ if self._repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return self._repositories.getRepository(repo_id)
+
+ def enable(self, repo_id):
+ if self._repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return self._repositories.enableRepository(repo_id)
+
+ def disable(self, repo_id):
+ if self._repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return self._repositories.disableRepository(repo_id)
+
+ def update(self, repo_id, params):
+ if self._repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return self._repositories.updateRepository(repo_id, params)
+
+ def delete(self, repo_id):
+ if self._repositories is None:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ return self._repositories.removeRepository(repo_id)
diff --git a/plugins/gingerbase/model/model.py b/plugins/gingerbase/model/model.py
new file mode 100644
index 0000000..90331f5
--- /dev/null
+++ b/plugins/gingerbase/model/model.py
@@ -0,0 +1,49 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import inspect
+import os
+
+from wok.basemodel import BaseModel
+from wok.objectstore import ObjectStore
+from wok.utils import import_module, listPathModules
+
+
+class Model(BaseModel):
+ def __init__(self, objstore_loc=None):
+
+ self.objstore = ObjectStore(objstore_loc)
+ kargs = {'objstore': self.objstore}
+
+ this = os.path.basename(__file__)
+ this_mod = os.path.splitext(this)[0]
+
+ models = []
+ for mod_name in listPathModules(os.path.dirname(__file__)):
+ if mod_name.startswith("_") or mod_name == this_mod:
+ continue
+
+ module = import_module('plugins.gingerbase.model.' + mod_name)
+ members = inspect.getmembers(module, inspect.isclass)
+ for cls_name, instance in members:
+ if inspect.getmodule(instance) == module:
+ if cls_name.endswith('Model'):
+ models.append(instance(**kargs))
+
+ return super(Model, self).__init__(models)
diff --git a/plugins/kimchi/model/debugreports.py b/plugins/kimchi/model/debugreports.py
deleted file mode 100644
index 48e6b26..0000000
--- a/plugins/kimchi/model/debugreports.py
+++ /dev/null
@@ -1,213 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2014-2015
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-import fnmatch
-import glob
-import logging
-import os
-import shutil
-import subprocess
-import time
-
-from wok.exception import InvalidParameter, NotFoundError, OperationFailed
-from wok.exception import WokException
-from wok.utils import add_task, wok_log
-from wok.utils import run_command
-from wok.model.tasks import TaskModel
-
-from .. import config
-
-
-class DebugReportsModel(object):
- def __init__(self, **kargs):
- self.objstore = kargs['objstore']
- self.task = TaskModel(**kargs)
-
- def create(self, params):
- ident = params.get('name').strip()
- # Generate a name with time and millisec precision, if necessary
- if ident is None or ident == "":
- ident = 'report-' + str(int(time.time() * 1000))
- else:
- if ident in self.get_list():
- raise InvalidParameter("KCHDR0008E", {"name": ident})
- taskid = self._gen_debugreport_file(ident)
- return self.task.lookup(taskid)
-
- def get_list(self):
- path = config.get_debugreports_path()
- file_pattern = os.path.join(path, '*.*')
- file_lists = glob.glob(file_pattern)
- file_lists = [os.path.split(file)[1] for file in file_lists]
- name_lists = [file.split('.', 1)[0] for file in file_lists]
-
- return name_lists
-
- def _gen_debugreport_file(self, name):
- gen_cmd = self.get_system_report_tool()
-
- if gen_cmd is not None:
- return add_task('/plugins/kimchi/debugreports/%s' % name, gen_cmd,
- self.objstore, name)
-
- raise OperationFailed("KCHDR0002E")
-
- @staticmethod
- def sosreport_generate(cb, name):
- def log_error(e):
- log = logging.getLogger('Model')
- log.warning('Exception in generating debug file: %s', e)
-
- try:
- command = ['sosreport', '--batch', '--name=%s' % name]
- output, error, retcode = run_command(command)
-
- if retcode != 0:
- raise OperationFailed("KCHDR0003E", {'name': name,
- 'err': retcode})
-
- # SOSREPORT might create file in /tmp or /var/tmp
- # FIXME: The right way should be passing the tar.xz file directory
- # though the parameter '--tmp-dir', but it is failing in Fedora 20
- patterns = ['/tmp/sosreport-%s-*', '/var/tmp/sosreport-%s-*']
- reports = []
- reportFile = None
- for p in patterns:
- reports = reports + [f for f in glob.glob(p % name)]
- for f in reports:
- if not fnmatch.fnmatch(f, '*.md5'):
- reportFile = f
- break
- # Some error in sosreport happened
- if reportFile is None:
- wok_log.error('Debug report file not found. See sosreport '
- 'output for detail:\n%s', output)
- fname = (patterns[0] % name).split('/')[-1]
- raise OperationFailed('KCHDR0004E', {'name': fname})
-
- md5_report_file = reportFile + '.md5'
- report_file_extension = '.' + reportFile.split('.', 1)[1]
- path = config.get_debugreports_path()
- target = os.path.join(path, name + report_file_extension)
- # Moving report
- msg = 'Moving debug report file "%s" to "%s"' % (reportFile,
- target)
- wok_log.info(msg)
- shutil.move(reportFile, target)
- # Deleting md5
- msg = 'Deleting report md5 file: "%s"' % (md5_report_file)
- wok_log.info(msg)
- with open(md5_report_file) as f:
- md5 = f.read().strip()
- wok_log.info('Md5 file content: "%s"', md5)
- os.remove(md5_report_file)
- cb('OK', True)
- return
-
- except WokException as e:
- log_error(e)
- raise
-
- except OSError as e:
- log_error(e)
- raise
-
- except Exception, e:
- # No need to call cb to update the task status here.
- # The task object will catch the exception raised here
- # and update the task status there
- log_error(e)
- raise OperationFailed("KCHDR0005E", {'name': name, 'err': e})
-
- @staticmethod
- def get_system_report_tool():
- # Please add new possible debug report command here
- # and implement the report generating function
- # based on the new report command
- report_tools = ({'cmd': 'sosreport --help',
- 'fn': DebugReportsModel.sosreport_generate},)
-
- # check if the command can be found by shell one by one
- for helper_tool in report_tools:
- try:
- retcode = subprocess.call(helper_tool['cmd'], shell=True,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- if retcode == 0:
- return helper_tool['fn']
- except Exception, e:
- wok_log.info('Exception running command: %s', e)
-
- return None
-
-
-class DebugReportModel(object):
- def __init__(self, **kargs):
- pass
-
- def lookup(self, name):
- path = config.get_debugreports_path()
- file_pattern = os.path.join(path, name)
- file_pattern = file_pattern + '.*'
- try:
- file_target = glob.glob(file_pattern)[0]
- except IndexError:
- raise NotFoundError("KCHDR0001E", {'name': name})
-
- ctime = os.stat(file_target).st_mtime
- ctime = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime(ctime))
- file_target = os.path.split(file_target)[-1]
- file_target = os.path.join("plugins/kimchi/data/debugreports",
- file_target)
- return {'uri': file_target,
- 'ctime': ctime}
-
- def update(self, name, params):
- path = config.get_debugreports_path()
- file_pattern = os.path.join(path, name + '.*')
- try:
- file_source = glob.glob(file_pattern)[0]
- except IndexError:
- raise NotFoundError("KCHDR0001E", {'name': name})
-
- file_target = file_source.replace(name, params['name'])
- if os.path.isfile(file_target):
- raise InvalidParameter('KCHDR0008E', {'name': params['name']})
-
- shutil.move(file_source, file_target)
- wok_log.info('%s renamed to %s' % (file_source, file_target))
- return params['name']
-
- def delete(self, name):
- path = config.get_debugreports_path()
- file_pattern = os.path.join(path, name + '.*')
- try:
- file_target = glob.glob(file_pattern)[0]
- except IndexError:
- raise NotFoundError("KCHDR0001E", {'name': name})
-
- os.remove(file_target)
-
-
-class DebugReportContentModel(object):
- def __init__(self, **kargs):
- self._debugreport = DebugReportModel()
-
- def lookup(self, name):
- return self._debugreport.lookup(name)
--
2.1.0
1
0
[PATCH 06/15] V2 Ginger Base : control, API, config, and INSTALL files
by chandra@linux.vnet.ibm.com 27 Sep '15
by chandra@linux.vnet.ibm.com 27 Sep '15
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/API.json | 175 ++++++++
plugins/gingerbase/INSTALL | 369 ++++++++++++++++
plugins/gingerbase/config.rpath | 672 +++++++++++++++++++++++++++++
plugins/gingerbase/control/Makefile.am | 25 ++
plugins/gingerbase/control/__init__.py | 26 ++
plugins/gingerbase/control/cpuinfo.py | 37 ++
plugins/gingerbase/control/debugreports.py | 61 +++
plugins/gingerbase/control/host.py | 145 +++++++
plugins/kimchi/control/debugreports.py | 61 ---
9 files changed, 1510 insertions(+), 61 deletions(-)
create mode 100644 plugins/gingerbase/API.json
create mode 100644 plugins/gingerbase/INSTALL
create mode 100644 plugins/gingerbase/config.rpath
create mode 100644 plugins/gingerbase/control/Makefile.am
create mode 100644 plugins/gingerbase/control/__init__.py
create mode 100644 plugins/gingerbase/control/cpuinfo.py
create mode 100644 plugins/gingerbase/control/debugreports.py
create mode 100644 plugins/gingerbase/control/host.py
delete mode 100644 plugins/kimchi/control/debugreports.py
diff --git a/plugins/gingerbase/API.json b/plugins/gingerbase/API.json
new file mode 100644
index 0000000..7b77eac
--- /dev/null
+++ b/plugins/gingerbase/API.json
@@ -0,0 +1,175 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema#",
+ "title": "Ginger Base API",
+ "description": "Json schema for Gigner Base API",
+ "type": "object",
+ "gingerbasetype": {
+ "cpu_info": {
+ "description": "Configure CPU specifics for a VM.",
+ "type": "object",
+ "properties": {
+ "topology": {
+ "description": "Configure the guest CPU topology.",
+ "type": "object",
+ "properties": {
+ "sockets": {
+ "type": "integer",
+ "required": true,
+ "minimum": 1,
+ "error": "GGBHOST0005E"
+ },
+ "cores": {
+ "type": "integer",
+ "required": true,
+ "minimum": 1,
+ "error": "GGBHOST0005E"
+ },
+ "threads": {
+ "type": "integer",
+ "required": true,
+ "minimum": 1,
+ "error": "GGBHOST0005E"
+ }
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "debugreports_create": {
+ "type": "object",
+ "error": "GGBDR0006E",
+ "properties": {
+ "name": {
+ "description": "The name for the debug report file.",
+ "type": "string",
+ "pattern": "^[_A-Za-z0-9-]*$",
+ "error": "GGBDR0007E"
+ }
+ }
+ },
+ "debugreport_update": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "New name of debug report",
+ "type": "string",
+ "pattern": "^[_A-Za-z0-9-]*$",
+ "error": "GGBDR0007E"
+ }
+ },
+ "additionalProperties": false
+ },
+ "repositories_create": {
+ "type": "object",
+ "properties": {
+ "repo_id": {
+ "description": "Repository ID used for YUM repository.",
+ "type": "string",
+ "error": "GGBREPOS0001E"
+ },
+ "baseurl": {
+ "description": "URL to the directory where the repodata directory of a repository is located. Can be an http://, ftp:// or file:// URL.",
+ "type": "string",
+ "error": "GGBREPOS0002E"
+ },
+ "config": {
+ "description": "Dictionary containing repository configuration",
+ "type": "object",
+ "error": "GGBREPOS0003E",
+ "properties": {
+ "dist": {
+ "description": "Distribution to DEB repository",
+ "type": "string",
+ "error": "GGBREPOS0004E"
+ },
+ "comps": {
+ "description": "List of components to DEB repository",
+ "type": "array",
+ "error": "GGBREPOS0005E",
+ "uniqueItems": true,
+ "items": {
+ "description": "Component name",
+ "type": "string",
+ "error": "GGBREPOS0006E"
+ }
+ },
+ "repo_name": {
+ "description": "YUM repository name",
+ "type": "string",
+ "error": "GGBREPOS0023E"
+ },
+ "mirrorlist": {
+ "description": "URL to a file containing a list of baseurls",
+ "type": "string",
+ "error": "GGBREPOS0007E"
+ },
+ "metalink": {
+ "description": "URL to a metalink file for the repomd.xml",
+ "type": "string",
+ "error": "GGBREPOS0029E"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "error": "KCHAPI0001E"
+ },
+ "repository_update": {
+ "type": "object",
+ "properties": {
+ "baseurl": {
+ "description": "URL to the directory where the repodata directory of a repository is located. Can be an http://, ftp:// or file:// URL.",
+ "type": "string",
+ "error": "GGBREPOS0002E"
+ },
+ "config": {
+ "description": "Dictionary containing repository configuration",
+ "type": "object",
+ "error": "GGBREPOS0003E",
+ "properties": {
+ "dist": {
+ "description": "Distribution to DEB repository",
+ "type": "string",
+ "error": "GGBREPOS0004E"
+ },
+ "comps": {
+ "description": "List of components to DEB repository",
+ "type": "array",
+ "error": "GGBREPOS0005E",
+ "uniqueItems": true,
+ "items": {
+ "description": "Component name",
+ "type": "string",
+ "error": "GGBREPOS0006E"
+ }
+ },
+ "repo_name": {
+ "description": "Human-readable string describing the YUM repository.",
+ "type": "string",
+ "error": "GGBREPOS0008E"
+ },
+ "mirrorlist": {
+ "description": "URL to a file containing a list of baseurls for YUM repository",
+ "type": "string",
+ "error": "GGBREPOS0007E"
+ },
+ "gpgcheck": {
+ "description": "Indicates if a GPG signature check on the packages gotten from repository should be performed.",
+ "type": "boolean",
+ "error": "GGBREPOS0009E"
+ },
+ "gpgkey": {
+ "description": "URL pointing to the ASCII-armored GPG key file for the repository.",
+ "type": "string",
+ "error": "GGBREPOS0010E"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "error": "GGBAPI0001E"
+
+ }
+ }
+}
diff --git a/plugins/gingerbase/INSTALL b/plugins/gingerbase/INSTALL
new file mode 100644
index 0000000..63bf076
--- /dev/null
+++ b/plugins/gingerbase/INSTALL
@@ -0,0 +1,369 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
diff --git a/plugins/gingerbase/config.rpath b/plugins/gingerbase/config.rpath
new file mode 100644
index 0000000..17298f2
--- /dev/null
+++ b/plugins/gingerbase/config.rpath
@@ -0,0 +1,672 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2010 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord(a)gnu.ai.mit.edu>, 1996
+#
+# 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.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ ecc*)
+ wl='-Wl,'
+ ;;
+ icc* | ifort*)
+ wl='-Wl,'
+ ;;
+ lf95*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ wl='-Wl,'
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja(a)dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ gnu* | linux* | k*bsd*-gnu)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec= # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ library_names_spec='$libname.a'
+ ;;
+ aix[4-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ amigaos*)
+ library_names_spec='$libname.a'
+ ;;
+ beos*)
+ library_names_spec='$libname$shrext'
+ ;;
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ shrext=.dll
+ library_names_spec='$libname.dll.a $libname.lib'
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ library_names_spec='$libname$shrext'
+ ;;
+ dgux*)
+ library_names_spec='$libname$shrext'
+ ;;
+ freebsd1*)
+ ;;
+ freebsd* | dragonfly*)
+ case "$host_os" in
+ freebsd[123]*)
+ library_names_spec='$libname$shrext$versuffix' ;;
+ *)
+ library_names_spec='$libname$shrext' ;;
+ esac
+ ;;
+ gnu*)
+ library_names_spec='$libname$shrext'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix[3-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ library_names_spec='$libname$shrext'
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux* | k*bsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ knetbsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ netbsd*)
+ library_names_spec='$libname$shrext'
+ ;;
+ newsos6)
+ library_names_spec='$libname$shrext'
+ ;;
+ nto-qnx*)
+ library_names_spec='$libname$shrext'
+ ;;
+ openbsd*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ library_names_spec='$libname.a'
+ ;;
+ osf3* | osf4* | osf5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sunos4*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ sysv4 | sysv4.3*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv4*MP*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ library_names_spec='$libname$shrext'
+ ;;
+ uts4*)
+ library_names_spec='$libname$shrext'
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/plugins/gingerbase/control/Makefile.am b/plugins/gingerbase/control/Makefile.am
new file mode 100644
index 0000000..49da0ae
--- /dev/null
+++ b/plugins/gingerbase/control/Makefile.am
@@ -0,0 +1,25 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+control_PYTHON = *.py
+
+controldir = $(pythondir)/wok/plugins/gingerbase/control
+
+install-data-local:
+ $(MKDIR_P) $(DESTDIR)$(controldir)
diff --git a/plugins/gingerbase/control/__init__.py b/plugins/gingerbase/control/__init__.py
new file mode 100644
index 0000000..b4d8dfd
--- /dev/null
+++ b/plugins/gingerbase/control/__init__.py
@@ -0,0 +1,26 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import os
+
+
+from wok.control.utils import load_url_sub_node
+
+
+sub_nodes = load_url_sub_node(os.path.dirname(__file__), __name__)
diff --git a/plugins/gingerbase/control/cpuinfo.py b/plugins/gingerbase/control/cpuinfo.py
new file mode 100644
index 0000000..f992bf5
--- /dev/null
+++ b/plugins/gingerbase/control/cpuinfo.py
@@ -0,0 +1,37 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2014-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+from wok.control.base import Resource
+
+
+class CPUInfo(Resource):
+ def __init__(self, model):
+ super(CPUInfo, self).__init__(model)
+ self.admin_methods = ['GET']
+ self.role_key = 'host'
+ self.uri_fmt = "/host/cpuinfo"
+
+ @property
+ def data(self):
+ return {'threading_enabled': self.info['guest_threads_enabled'],
+ 'sockets': self.info['sockets'],
+ 'cores': self.info['cores_available'],
+ 'threads_per_core': self.info['threads_per_core']
+ }
diff --git a/plugins/gingerbase/control/debugreports.py b/plugins/gingerbase/control/debugreports.py
new file mode 100644
index 0000000..2e76654
--- /dev/null
+++ b/plugins/gingerbase/control/debugreports.py
@@ -0,0 +1,61 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+from wok.control.base import AsyncCollection, Resource
+from wok.control.utils import internal_redirect
+from wok.control.utils import UrlSubNode
+
+
+@UrlSubNode('debugreports', True)
+class DebugReports(AsyncCollection):
+ def __init__(self, model):
+ super(DebugReports, self).__init__(model)
+ self.resource = DebugReport
+ self.role_key = 'host'
+ self.admin_methods = ['GET', 'POST']
+
+ def _get_resources(self, filter_params):
+ res_list = super(DebugReports, self)._get_resources(filter_params)
+ return sorted(res_list, key=lambda x: x.data['time'], reverse=True)
+
+
+class DebugReport(Resource):
+ def __init__(self, model, ident):
+ super(DebugReport, self).__init__(model, ident)
+ self.role_key = 'host'
+ self.admin_methods = ['GET', 'PUT', 'POST']
+ self.uri_fmt = '/debugreports/%s'
+ self.content = DebugReportContent(model, ident)
+
+ @property
+ def data(self):
+ return {'name': self.ident,
+ 'uri': self.info['uri'],
+ 'time': self.info['ctime']}
+
+
+class DebugReportContent(Resource):
+ def __init__(self, model, ident):
+ super(DebugReportContent, self).__init__(model, ident)
+ self.role_key = 'host'
+ self.admin_methods = ['GET']
+
+ def get(self):
+ self.lookup()
+ raise internal_redirect(self.info['uri'])
diff --git a/plugins/gingerbase/control/host.py b/plugins/gingerbase/control/host.py
new file mode 100644
index 0000000..b923569
--- /dev/null
+++ b/plugins/gingerbase/control/host.py
@@ -0,0 +1,145 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+from wok.control.base import Collection, Resource
+from wok.control.utils import UrlSubNode
+from wok.exception import NotFoundError
+
+from cpuinfo import CPUInfo
+
+
+@UrlSubNode('host', True)
+class Host(Resource):
+ def __init__(self, model, id=None):
+ super(Host, self).__init__(model, id)
+ self.role_key = 'host'
+ self.admin_methods = ['GET', 'POST']
+ self.uri_fmt = '/host/%s'
+ self.reboot = self.generate_action_handler('reboot')
+ self.shutdown = self.generate_action_handler('shutdown')
+ self.stats = HostStats(self.model)
+ self.partitions = Partitions(self.model)
+ # self.devices = Devices(self.model)
+ self.packagesupdate = PackagesUpdate(self.model)
+ self.repositories = Repositories(self.model)
+ self.swupdate = self.generate_action_handler_task('swupdate')
+ self.cpuinfo = CPUInfo(self.model)
+ self.capabilities = Capabilities(self.model)
+
+ @property
+ def data(self):
+ return self.info
+
+
+class HostStats(Resource):
+ def __init__(self, model, id=None):
+ super(HostStats, self).__init__(model, id)
+ self.role_key = 'host'
+ self.admin_methods = ['GET']
+ self.history = HostStatsHistory(self.model)
+
+ @property
+ def data(self):
+ return self.info
+
+
+class HostStatsHistory(Resource):
+ @property
+ def data(self):
+ return self.info
+
+
+class Capabilities(Resource):
+ def __init__(self, model, id=None):
+ super(Capabilities, self).__init__(model, id)
+
+ @property
+ def data(self):
+ return self.info
+
+
+class Partitions(Collection):
+ def __init__(self, model):
+ super(Partitions, self).__init__(model)
+ self.role_key = 'storage'
+ self.admin_methods = ['GET']
+ self.resource = Partition
+
+ # Defining get_resources in order to return list of partitions in UI
+ # sorted by their path
+ def _get_resources(self, flag_filter):
+ res_list = super(Partitions, self)._get_resources(flag_filter)
+ res_list = filter(lambda x: x.info['available'], res_list)
+ res_list.sort(key=lambda x: x.info['path'])
+ return res_list
+
+
+class Partition(Resource):
+ def __init__(self, model, id):
+ self.role_key = 'storage'
+ self.admin_methods = ['GET']
+ super(Partition, self).__init__(model, id)
+
+ @property
+ def data(self):
+ if not self.info['available']:
+ raise NotFoundError("GGBPART0001E", {'name': self.info['name']})
+
+ return self.info
+
+
+class PackagesUpdate(Collection):
+ def __init__(self, model):
+ super(PackagesUpdate, self).__init__(model)
+ self.role_key = 'host'
+ self.admin_methods = ['GET']
+ self.resource = PackageUpdate
+
+
+class PackageUpdate(Resource):
+ def __init__(self, model, id=None):
+ super(PackageUpdate, self).__init__(model, id)
+ self.role_key = 'host'
+ self.admin_methods = ['GET']
+
+ @property
+ def data(self):
+ return self.info
+
+
+class Repositories(Collection):
+ def __init__(self, model):
+ super(Repositories, self).__init__(model)
+ self.role_key = 'host'
+ self.admin_methods = ['GET', 'POST']
+ self.resource = Repository
+
+
+class Repository(Resource):
+ def __init__(self, model, id):
+ super(Repository, self).__init__(model, id)
+ self.role_key = 'host'
+ self.admin_methods = ['GET', 'PUT', 'POST', 'DELETE']
+ self.uri_fmt = "/host/repositories/%s"
+ self.enable = self.generate_action_handler('enable')
+ self.disable = self.generate_action_handler('disable')
+
+ @property
+ def data(self):
+ return self.info
diff --git a/plugins/kimchi/control/debugreports.py b/plugins/kimchi/control/debugreports.py
deleted file mode 100644
index b5a3072..0000000
--- a/plugins/kimchi/control/debugreports.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2013-2015
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-from wok.control.base import AsyncCollection, Resource
-from wok.control.utils import internal_redirect
-from wok.control.utils import UrlSubNode
-
-
-@UrlSubNode('debugreports', True)
-class DebugReports(AsyncCollection):
- def __init__(self, model):
- super(DebugReports, self).__init__(model)
- self.resource = DebugReport
- self.role_key = 'host'
- self.admin_methods = ['GET', 'POST']
-
- def _get_resources(self, filter_params):
- res_list = super(DebugReports, self)._get_resources(filter_params)
- return sorted(res_list, key=lambda x: x.data['time'], reverse=True)
-
-
-class DebugReport(Resource):
- def __init__(self, model, ident):
- super(DebugReport, self).__init__(model, ident)
- self.role_key = 'host'
- self.admin_methods = ['GET', 'PUT', 'POST']
- self.uri_fmt = '/debugreports/%s'
- self.content = DebugReportContent(model, ident)
-
- @property
- def data(self):
- return {'name': self.ident,
- 'uri': self.info['uri'],
- 'time': self.info['ctime']}
-
-
-class DebugReportContent(Resource):
- def __init__(self, model, ident):
- super(DebugReportContent, self).__init__(model, ident)
- self.role_key = 'host'
- self.admin_methods = ['GET']
-
- def get(self):
- self.lookup()
- raise internal_redirect(self.info['uri'])
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/m4/ac_python_module.m4 | 30 ++
plugins/gingerbase/m4/gettext.m4 | 383 +++++++++++++++
plugins/gingerbase/m4/iconv.m4 | 214 +++++++++
plugins/gingerbase/m4/intlmacosx.m4 | 51 ++
plugins/gingerbase/m4/lib-ld.m4 | 110 +++++
plugins/gingerbase/m4/lib-link.m4 | 774 ++++++++++++++++++++++++++++++
plugins/gingerbase/m4/lib-prefix.m4 | 224 +++++++++
plugins/gingerbase/m4/nls.m4 | 32 ++
plugins/gingerbase/m4/po.m4 | 449 +++++++++++++++++
plugins/gingerbase/m4/progtest.m4 | 92 ++++
10 files changed, 2359 insertions(+)
create mode 100644 plugins/gingerbase/m4/ac_python_module.m4
create mode 100644 plugins/gingerbase/m4/gettext.m4
create mode 100644 plugins/gingerbase/m4/iconv.m4
create mode 100644 plugins/gingerbase/m4/intlmacosx.m4
create mode 100644 plugins/gingerbase/m4/lib-ld.m4
create mode 100644 plugins/gingerbase/m4/lib-link.m4
create mode 100644 plugins/gingerbase/m4/lib-prefix.m4
create mode 100644 plugins/gingerbase/m4/nls.m4
create mode 100644 plugins/gingerbase/m4/po.m4
create mode 100644 plugins/gingerbase/m4/progtest.m4
diff --git a/plugins/gingerbase/m4/ac_python_module.m4 b/plugins/gingerbase/m4/ac_python_module.m4
new file mode 100644
index 0000000..32b9d72
--- /dev/null
+++ b/plugins/gingerbase/m4/ac_python_module.m4
@@ -0,0 +1,30 @@
+dnl @synopsis AC_PYTHON_MODULE(modname[, fatal])
+dnl
+dnl Checks for Python module.
+dnl
+dnl If fatal is non-empty then absence of a module will trigger an
+dnl error.
+dnl
+dnl @category InstalledPackages
+dnl @author Andrew Collier <colliera(a)nu.ac.za>.
+dnl @version 2004-07-14
+dnl @license AllPermissive
+
+AC_DEFUN([AC_PYTHON_MODULE],[
+ AC_MSG_CHECKING(python module: $1)
+ python -c "import $1" 2>/dev/null
+ if test $? -eq 0;
+ then
+ AC_MSG_RESULT(yes)
+ eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
+ else
+ AC_MSG_RESULT(no)
+ eval AS_TR_CPP(HAVE_PYMOD_$1)=no
+ #
+ if test -n "$2"
+ then
+ AC_MSG_ERROR(failed to find required module $1)
+ exit 1
+ fi
+ fi
+])
diff --git a/plugins/gingerbase/m4/gettext.m4 b/plugins/gingerbase/m4/gettext.m4
new file mode 100644
index 0000000..f84e6a5
--- /dev/null
+++ b/plugins/gingerbase/m4/gettext.m4
@@ -0,0 +1,383 @@
+# gettext.m4 serial 63 (gettext-0.18)
+dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper(a)cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible(a)clisp.cons.org>, 2000-2006, 2008-2010.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl default (if it is not specified or empty) is 'no-libtool'.
+dnl INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl depending on --{enable,disable}-{shared,static} and on the presence of
+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl implementations (in libc or libintl) without the ngettext() function
+dnl will be ignored. If NEEDSYMBOL is specified and is
+dnl 'need-formatstring-macros', then GNU gettext implementations that don't
+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries. If empty,
+dnl the value `$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl and used.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl Catalog format: none
+dnl Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+ dnl Argument checking.
+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+ ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+ [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+ define([gt_included_intl],
+ ifelse([$1], [external],
+ ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+ [yes]))
+ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+ gt_NEEDS_INIT
+ AM_GNU_GETTEXT_NEED([$2])
+
+ AC_REQUIRE([AM_PO_SUBDIRS])dnl
+ ifelse(gt_included_intl, yes, [
+ AC_REQUIRE([AM_INTL_SUBDIR])dnl
+ ])
+
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ dnl Ideally we would do this search only after the
+ dnl if test "$USE_NLS" = "yes"; then
+ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+ dnl the configure script would need to contain the same shell code
+ dnl again, outside any 'if'. There are two solutions:
+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+ dnl documented, we avoid it.
+ ifelse(gt_included_intl, yes, , [
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+ ])
+
+ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+ gt_INTL_MACOSX
+
+ dnl Set USE_NLS.
+ AC_REQUIRE([AM_NLS])
+
+ ifelse(gt_included_intl, yes, [
+ BUILD_INCLUDED_LIBINTL=no
+ USE_INCLUDED_LIBINTL=no
+ ])
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ dnl Add a version number to the cache macros.
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+ dnl If we use NLS figure out what method
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+ ifelse(gt_included_intl, yes, [
+ AC_MSG_CHECKING([whether included gettext is requested])
+ AC_ARG_WITH([included-gettext],
+ [ --with-included-gettext use the GNU gettext library included here],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ ])
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If GNU gettext is available we use this. Else we have
+ dnl to fall back to GNU NLS library.
+
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
+
+ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+ [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+ [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+ [eval "$gt_func_gnugettext_libc=yes"],
+ [eval "$gt_func_gnugettext_libc=no"])])
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ ifelse(gt_included_intl, yes, , [
+ AM_ICONV_LINK
+ ])
+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+ dnl even if libiconv doesn't exist.
+ AC_LIB_LINKFLAGS_BODY([intl])
+ AC_CACHE_CHECK([for GNU gettext in libintl],
+ [$gt_func_gnugettext_libintl],
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ dnl Now see whether libintl exists and does not depend on libiconv.
+ AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+ [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+ [eval "$gt_func_gnugettext_libintl=yes"],
+ [eval "$gt_func_gnugettext_libintl=no"])
+ dnl Now see whether libintl exists and depends on libiconv.
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+ [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+ [LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+ ])
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ fi
+
+ dnl If an already present or preinstalled GNU gettext() is found,
+ dnl use it. But if this macro is used in GNU gettext, and GNU
+ dnl gettext is already preinstalled in libintl, we update this
+ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+ && test "$PACKAGE" != gettext-runtime \
+ && test "$PACKAGE" != gettext-tools; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ dnl Reset the values set by searching for libintl.
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+ dnl GNU gettext is not found in the C library.
+ dnl Fall back on included GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ BUILD_INCLUDED_LIBINTL=yes
+ USE_INCLUDED_LIBINTL=yes
+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+ fi
+
+ CATOBJEXT=
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions to use GNU gettext tools.
+ CATOBJEXT=.gmo
+ fi
+ ])
+
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Some extra flags are needed during linking.
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ AC_DEFINE([ENABLE_NLS], [1],
+ [Define to 1 if translation of program messages to the user's native language
+ is requested.])
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ AC_MSG_CHECKING([whether to use NLS])
+ AC_MSG_RESULT([$USE_NLS])
+ if test "$USE_NLS" = "yes"; then
+ AC_MSG_CHECKING([where the gettext function comes from])
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ gt_source="external libintl"
+ else
+ gt_source="libc"
+ fi
+ else
+ gt_source="included intl directory"
+ fi
+ AC_MSG_RESULT([$gt_source])
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ AC_MSG_CHECKING([how to link with libintl])
+ AC_MSG_RESULT([$LIBINTL])
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+ fi
+
+ dnl For backward compatibility. Some packages may be using this.
+ AC_DEFINE([HAVE_GETTEXT], [1],
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ AC_DEFINE([HAVE_DCGETTEXT], [1],
+ [Define if the GNU dcgettext() function is already present or preinstalled.])
+ fi
+
+ dnl We need to process the po/ directory.
+ POSUB=po
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+ dnl to 'yes' because some of the testsuite requires it.
+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+ BUILD_INCLUDED_LIBINTL=yes
+ fi
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST([BUILD_INCLUDED_LIBINTL])
+ AC_SUBST([USE_INCLUDED_LIBINTL])
+ AC_SUBST([CATOBJEXT])
+
+ dnl For backward compatibility. Some configure.ins may be using this.
+ nls_cv_header_intl=
+ nls_cv_header_libgt=
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ DATADIRNAME=share
+ AC_SUBST([DATADIRNAME])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INSTOBJEXT=.mo
+ AC_SUBST([INSTOBJEXT])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ GENCAT=gencat
+ AC_SUBST([GENCAT])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLOBJS=
+ if test "$USE_INCLUDED_LIBINTL" = yes; then
+ INTLOBJS="\$(GETTOBJS)"
+ fi
+ AC_SUBST([INTLOBJS])
+
+ dnl Enable libtool support if the surrounding package wishes it.
+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+ AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+ ])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLLIBS="$LIBINTL"
+ AC_SUBST([INTLLIBS])
+
+ dnl Make all documented variables known to autoconf.
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ AC_SUBST([POSUB])
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+ m4_divert_text([DEFAULTS], [gt_needs=])
+ m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/plugins/gingerbase/m4/iconv.m4 b/plugins/gingerbase/m4/iconv.m4
new file mode 100644
index 0000000..e2041b9
--- /dev/null
+++ b/plugins/gingerbase/m4/iconv.m4
@@ -0,0 +1,214 @@
+# iconv.m4 serial 11 (gettext-0.18.1)
+dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ [am_cv_func_iconv=yes])
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ [am_cv_lib_iconv=yes]
+ [am_cv_func_iconv=yes])
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+ dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ return 1;
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\263";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ return 1;
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ return 1;
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ if (/* Try standardized names. */
+ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+ /* Try IRIX, OSF/1 names. */
+ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+ /* Try AIX names. */
+ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+ /* Try HP-UX names. */
+ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+ return 1;
+ return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+ [case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac])
+ LIBS="$am_save_LIBS"
+ ])
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
+ AC_DEFINE([HAVE_ICONV], [1],
+ [Define if you have the iconv() function and it works.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST([LIBICONV])
+ AC_SUBST([LTLIBICONV])
+])
+
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl warnings.
+m4_define([gl_iconv_AC_DEFUN],
+ m4_version_prereq([2.64],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [[AC_DEFUN(
+ [$1], [$2])]]))
+gl_iconv_AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL([am_cv_proto_iconv], [
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([
+ $am_cv_proto_iconv])
+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+ [Define as const if the declaration of iconv() needs const.])
+ fi
+])
diff --git a/plugins/gingerbase/m4/intlmacosx.m4 b/plugins/gingerbase/m4/intlmacosx.m4
new file mode 100644
index 0000000..dd91025
--- /dev/null
+++ b/plugins/gingerbase/m4/intlmacosx.m4
@@ -0,0 +1,51 @@
+# intlmacosx.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+ dnl Check for API introduced in MacOS X 10.2.
+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+ [gt_cv_func_CFPreferencesCopyAppValue],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+ [CFPreferencesCopyAppValue(NULL, NULL)],
+ [gt_cv_func_CFPreferencesCopyAppValue=yes],
+ [gt_cv_func_CFPreferencesCopyAppValue=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+ fi
+ dnl Check for API introduced in MacOS X 10.3.
+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+ [gt_cv_func_CFLocaleCopyCurrent=yes],
+ [gt_cv_func_CFLocaleCopyCurrent=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+ AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/plugins/gingerbase/m4/lib-ld.m4 b/plugins/gingerbase/m4/lib-ld.m4
new file mode 100644
index 0000000..ebb3052
--- /dev/null
+++ b/plugins/gingerbase/m4/lib-ld.m4
@@ -0,0 +1,110 @@
+# lib-ld.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by GCC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ [re_direlt='/[^/][^/]*/\.\./']
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL([acl_cv_path_LD],
+[if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT([$LD])
+else
+ AC_MSG_RESULT([no])
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/plugins/gingerbase/m4/lib-link.m4 b/plugins/gingerbase/m4/lib-link.m4
new file mode 100644
index 0000000..c73bd8e
--- /dev/null
+++ b/plugins/gingerbase/m4/lib-link.m4
@@ -0,0 +1,774 @@
+# lib-link.m4 serial 21 (gettext-0.18)
+dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.54])
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[translit([$1],[./-], [___])])
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[translit([$1],[./-], [___])])
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+ dnl because these -l options might require -L options that are present in
+ dnl LIBS. -l options benefit only from the -L options listed before it.
+ dnl Otherwise, add it to the front of LIBS, because it may be a static
+ dnl library that depends on another static library that is present in LIBS.
+ dnl Static libraries benefit only from the static libraries listed after
+ dnl it.
+ case " $LIB[]NAME" in
+ *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+ *) LIBS="$LIB[]NAME $LIBS" ;;
+ esac
+ AC_TRY_LINK([$3], [$4],
+ [ac_cv_lib[]Name=yes],
+ [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ LIB[]NAME[]_PREFIX=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl acl_libext,
+dnl acl_shlibext,
+dnl acl_hardcode_libdir_flag_spec,
+dnl acl_hardcode_libdir_separator,
+dnl acl_hardcode_direct,
+dnl acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE([rpath],
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_FROMPACKAGE(name, package)
+dnl declares that libname comes from the given package. The configure file
+dnl will then not have a --with-libname-prefix option but a
+dnl --with-package-prefix option. Several libraries can come from the same
+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
+dnl macro call that searches for libname.
+AC_DEFUN([AC_LIB_FROMPACKAGE],
+[
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ define([acl_frompackage_]NAME, [$2])
+ popdef([NAME])
+ pushdef([PACK],[$2])
+ pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ define([acl_libsinpackage_]PACKUP,
+ m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
+ popdef([PACKUP])
+ popdef([PACK])
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+ pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+ dnl Autoconf >= 2.61 supports dots in --with options.
+ pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH(P_A_C_K[-prefix],
+[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
+ --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && ! test -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ LIB[]NAME[]_PREFIX=
+ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+ dnl computed. So it has to be reset here.
+ HAVE_LIB[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ dnl The same code as in the loop below:
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$acl_hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+ popdef([P_A_C_K])
+ popdef([PACKLIBS])
+ popdef([PACKUP])
+ popdef([PACK])
+ popdef([NAME])
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+ AC_REQUIRE([AC_LIB_RPATH])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ $1=
+ if test "$enable_rpath" != no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode directories into the resulting
+ dnl binary.
+ rpathdirs=
+ next=
+ for opt in $2; do
+ if test -n "$next"; then
+ dir="$next"
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next=
+ else
+ case $opt in
+ -L) next=yes ;;
+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next= ;;
+ *) next= ;;
+ esac
+ fi
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n ""$3""; then
+ dnl libtool is used for linking. Use -R options.
+ for dir in $rpathdirs; do
+ $1="${$1}${$1:+ }-R$dir"
+ done
+ else
+ dnl The linker is used for linking directly.
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user
+ dnl must pass all path elements in one option.
+ alldirs=
+ for dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="${$1}${$1:+ }$flag"
+ done
+ fi
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST([$1])
+])
diff --git a/plugins/gingerbase/m4/lib-prefix.m4 b/plugins/gingerbase/m4/lib-prefix.m4
new file mode 100644
index 0000000..1601cea
--- /dev/null
+++ b/plugins/gingerbase/m4/lib-prefix.m4
@@ -0,0 +1,224 @@
+# lib-prefix.m4 serial 7 (gettext-0.18)
+dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates
+dnl - a variable acl_libdirstem, containing the basename of the libdir, either
+dnl "lib" or "lib64" or "lib/64",
+dnl - a variable acl_libdirstem2, as a secondary possible value for
+dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
+dnl "lib/amd64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib and lib64.
+ dnl On glibc systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
+ dnl the compiler's default mode by looking at the compiler's library search
+ dnl path. If at least one of its elements ends in /lib64 or points to a
+ dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+ dnl Otherwise we use the default, namely "lib".
+ dnl On Solaris systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+ dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+ dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+ dnl symlink is missing, so we set acl_libdirstem2 too.
+ AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+ [AC_EGREP_CPP([sixtyfour bits], [
+#ifdef _LP64
+sixtyfour bits
+#endif
+ ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
+ ])
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+])
diff --git a/plugins/gingerbase/m4/nls.m4 b/plugins/gingerbase/m4/nls.m4
new file mode 100644
index 0000000..003704c
--- /dev/null
+++ b/plugins/gingerbase/m4/nls.m4
@@ -0,0 +1,32 @@
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper(a)cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible(a)clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_NLS],
+[
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE([nls],
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT([$USE_NLS])
+ AC_SUBST([USE_NLS])
+])
diff --git a/plugins/gingerbase/m4/po.m4 b/plugins/gingerbase/m4/po.m4
new file mode 100644
index 0000000..8bc921d
--- /dev/null
+++ b/plugins/gingerbase/m4/po.m4
@@ -0,0 +1,449 @@
+# po.m4 serial 17 (gettext-0.18)
+dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper(a)cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible(a)clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl defined by autoconf
+ AC_REQUIRE([AM_NLS])dnl
+
+ dnl Release version of the gettext macros. This is used to ensure that
+ dnl the gettext macros and po/Makefile.in.in are in sync.
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
+
+ dnl Perform the following tests also if --disable-nls has been given,
+ dnl because they are needed for "make dist" to work.
+
+ dnl Search for GNU msgfmt in the PATH.
+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+ dnl The second test excludes FreeBSD msgfmt.
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
+
+ dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([GMSGFMT_015])
+
+ dnl Search for GNU xgettext 0.12 or newer in the PATH.
+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+ dnl The second test excludes FreeBSD xgettext.
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+
+ dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([XGETTEXT_015])
+
+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+ dnl Installation directories.
+ dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+ dnl have to define it here, so that it can be used in po/Makefile.
+ test -n "$localedir" || localedir='${datadir}/locale'
+ AC_SUBST([localedir])
+
+ dnl Support for AM_XGETTEXT_OPTION.
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+ AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+ AC_CONFIG_COMMANDS([po-directories], [[
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done]],
+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+ # from automake < 1.5.
+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+ ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+ # When this code is run, in config.status, two variables have already been
+ # set:
+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+ # - LINGUAS is the value of the environment variable LINGUAS at configure
+ # time.
+
+changequote(,)dnl
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ # Find a way to echo strings without interpreting backslash.
+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='echo'
+ else
+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='printf %s\n'
+ else
+ echo_func () {
+ cat <<EOT
+$*
+EOT
+ }
+ gt_echo='echo_func'
+ fi
+ fi
+
+ # A sed script that extracts the value of VARIABLE from a Makefile.
+ sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[ ]*VARIABLE[ ]*=/{
+ # Seen the first line of the variable definition.
+ s/^[ ]*VARIABLE[ ]*=//
+ ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+ # Set POTFILES to the value of the Makefile variable POTFILES.
+ sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+ # Compute POTFILES_DEPS as
+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+ POTFILES_DEPS=
+ for file in $POTFILES; do
+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+ done
+ POMAKEFILEDEPS=""
+
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+ sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+ fi
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ # Compute PROPERTIESFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+ # Compute CLASSFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+ # Compute QMFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+ # Compute MSGFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+ # Compute RESOURCESDLLFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ PROPERTIESFILES=
+ CLASSFILES=
+ QMFILES=
+ MSGFILES=
+ RESOURCESDLLFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+ QMFILES="$QMFILES $srcdirpre$lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ JAVACATALOGS=
+ QTCATALOGS=
+ TCLCATALOGS=
+ CSHARPCATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+ QTCATALOGS="$QTCATALOGS $lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ fi
+
+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+ @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+ \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+ @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+ \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if test -n "$POMAKEFILEDEPS"; then
+ cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+ fi
+ mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+ XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/plugins/gingerbase/m4/progtest.m4 b/plugins/gingerbase/m4/progtest.m4
new file mode 100644
index 0000000..2d804ac
--- /dev/null
+++ b/plugins/gingerbase/m4/progtest.m4
@@ -0,0 +1,92 @@
+# progtest.m4 serial 6 (gettext-0.18)
+dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper(a)cygnus.com>, 1996.
+
+AC_PREREQ([2.50])
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL([ac_cv_path_$1],
+[case "[$]$1" in
+ [[\\/]]* | ?:[[\\/]]*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$][$1])
+else
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST([$1])dnl
+])
--
2.1.0
1
0
[PATCH 04/15] V2 Ginger Base : base plugin build-aix and contrib
by chandra@linux.vnet.ibm.com 27 Sep '15
by chandra@linux.vnet.ibm.com 27 Sep '15
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/build-aux/config.rpath | 672 +++++++++++++++++++++
plugins/gingerbase/build-aux/genChangelog | 25 +
plugins/gingerbase/build-aux/pkg-version | 59 ++
plugins/gingerbase/contrib/DEBIAN/Makefile.am | 17 +
plugins/gingerbase/contrib/DEBIAN/control.in | 14 +
plugins/gingerbase/contrib/Makefile.am | 35 ++
plugins/gingerbase/contrib/check_i18n.py | 82 +++
.../gingerbase/contrib/gingerbase.spec.fedora.in | 68 +++
plugins/gingerbase/contrib/gingerbase.spec.suse.in | 62 ++
plugins/gingerbase/contrib/make-deb.sh.in | 15 +
10 files changed, 1049 insertions(+)
create mode 100644 plugins/gingerbase/build-aux/config.rpath
create mode 100755 plugins/gingerbase/build-aux/genChangelog
create mode 100755 plugins/gingerbase/build-aux/pkg-version
create mode 100644 plugins/gingerbase/contrib/DEBIAN/Makefile.am
create mode 100644 plugins/gingerbase/contrib/DEBIAN/control.in
create mode 100644 plugins/gingerbase/contrib/Makefile.am
create mode 100755 plugins/gingerbase/contrib/check_i18n.py
create mode 100644 plugins/gingerbase/contrib/gingerbase.spec.fedora.in
create mode 100644 plugins/gingerbase/contrib/gingerbase.spec.suse.in
create mode 100644 plugins/gingerbase/contrib/make-deb.sh.in
diff --git a/plugins/gingerbase/build-aux/config.rpath b/plugins/gingerbase/build-aux/config.rpath
new file mode 100644
index 0000000..17298f2
--- /dev/null
+++ b/plugins/gingerbase/build-aux/config.rpath
@@ -0,0 +1,672 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2010 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord(a)gnu.ai.mit.edu>, 1996
+#
+# 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.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ ecc*)
+ wl='-Wl,'
+ ;;
+ icc* | ifort*)
+ wl='-Wl,'
+ ;;
+ lf95*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ wl='-Wl,'
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja(a)dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ gnu* | linux* | k*bsd*-gnu)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec= # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ library_names_spec='$libname.a'
+ ;;
+ aix[4-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ amigaos*)
+ library_names_spec='$libname.a'
+ ;;
+ beos*)
+ library_names_spec='$libname$shrext'
+ ;;
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ shrext=.dll
+ library_names_spec='$libname.dll.a $libname.lib'
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ library_names_spec='$libname$shrext'
+ ;;
+ dgux*)
+ library_names_spec='$libname$shrext'
+ ;;
+ freebsd1*)
+ ;;
+ freebsd* | dragonfly*)
+ case "$host_os" in
+ freebsd[123]*)
+ library_names_spec='$libname$shrext$versuffix' ;;
+ *)
+ library_names_spec='$libname$shrext' ;;
+ esac
+ ;;
+ gnu*)
+ library_names_spec='$libname$shrext'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix[3-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ library_names_spec='$libname$shrext'
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux* | k*bsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ knetbsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ netbsd*)
+ library_names_spec='$libname$shrext'
+ ;;
+ newsos6)
+ library_names_spec='$libname$shrext'
+ ;;
+ nto-qnx*)
+ library_names_spec='$libname$shrext'
+ ;;
+ openbsd*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ library_names_spec='$libname.a'
+ ;;
+ osf3* | osf4* | osf5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sunos4*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ sysv4 | sysv4.3*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv4*MP*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ library_names_spec='$libname$shrext'
+ ;;
+ uts4*)
+ library_names_spec='$libname$shrext'
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/plugins/gingerbase/build-aux/genChangelog b/plugins/gingerbase/build-aux/genChangelog
new file mode 100755
index 0000000..803f24e
--- /dev/null
+++ b/plugins/gingerbase/build-aux/genChangelog
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# This script is based on code from the Kandan project:
+# https://github.com/kandanapp/kandan/blob/master/gen-changelog.sh
+
+echo "CHANGELOG"
+echo "========="
+echo
+git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags | tac |grep -v '^$' | while read TAG ; do
+ if [ $NEXT ]; then
+ echo "#### [$NEXT] ####"
+ elif [ "$1" != "--release" ]; then
+ echo "#### [Current] ####"
+ else
+ NEXT=$TAG
+ continue
+ fi
+ GIT_PAGER=cat git log --pretty=format:" * [%h] %<(78,trunc)%s (%an)" $TAG..$NEXT
+ NEXT=$TAG
+ echo; echo
+done
+FIRST=$(git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags | head -1)
+
+echo "#### [$FIRST] ####"
+GIT_PAGER=cat git log --pretty=format:" * [%h] %<(78,trunc)%s (%an)" $FIRST
diff --git a/plugins/gingerbase/build-aux/pkg-version b/plugins/gingerbase/build-aux/pkg-version
new file mode 100755
index 0000000..749cf6c
--- /dev/null
+++ b/plugins/gingerbase/build-aux/pkg-version
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# Copyright 2008-2012 Red Hat, Inc.
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+# tags and output versions:
+# - 4.9.0 => 4.9.0 (upstream clean)
+# - 4.9.0-1 => 4.9.0 (downstream clean)
+# - 4.9.0-2-g34e62f => 4.9.0 (upstream dirty)
+# - 4.9.0-1-2-g34e62f => 4.9.0 (downstream dirty)
+AWK_VERSION='
+ BEGIN { FS="-" }
+ /^[0-9]/ {
+ print $1
+ }'
+
+# tags and output releases:
+# - 4.9.0 => 0 (upstream clean)
+# - 4.9.0-1 => 1 (downstream clean)
+# - 4.9.0-2-g34e62f1 => 2.git34e62f1 (upstream dirty)
+# - 4.9.0-1-2-g34e62f1 => 1.2.git34e62f1 (downstream dirty)
+AWK_RELEASE='
+ BEGIN { FS="-"; OFS="." }
+ /^[0-9]/ {
+ if (NF == 1) print 0
+ else if (NF == 2) print $2
+ else if (NF == 3) print $2, "git" substr($3, 2)
+ else if (NF == 4) print $2, $3, "git" substr($4, 2)
+ }'
+
+if [ ! -d .git ]; then
+ PKG_VERSION=`cat VERSION`
+else
+ PKG_VERSION=`git describe --tags --match "[0-9]*" || cat VERSION`
+fi
+
+if test "x$1" = "x--full"; then
+ echo $PKG_VERSION | tr -d '[:space:]'
+elif test "x$1" = "x--version"; then
+ echo $PKG_VERSION | awk "$AWK_VERSION" | tr -cd '[:alnum:].'
+elif test "x$1" = "x--release"; then
+ echo $PKG_VERSION | awk "$AWK_RELEASE" | tr -cd '[:alnum:].'
+else
+ echo "usage: $0 [--full|--version|--release]"
+ exit 1
+fi
diff --git a/plugins/gingerbase/contrib/DEBIAN/Makefile.am b/plugins/gingerbase/contrib/DEBIAN/Makefile.am
new file mode 100644
index 0000000..43e19ab
--- /dev/null
+++ b/plugins/gingerbase/contrib/DEBIAN/Makefile.am
@@ -0,0 +1,17 @@
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+CLEANFILES = control
diff --git a/plugins/gingerbase/contrib/DEBIAN/control.in b/plugins/gingerbase/contrib/DEBIAN/control.in
new file mode 100644
index 0000000..aacf946
--- /dev/null
+++ b/plugins/gingerbase/contrib/DEBIAN/control.in
@@ -0,0 +1,14 @@
+Package: @PACKAGE_NAME@
+Version: @PACKAGE_VERSION@
+Section: base
+Priority: optional
+Architecture: all
+Depends: wok,
+ python-psutil (>= 0.6.0),
+ sosreport,
+Build-Depends: libxslt,
+ python-lxml
+Maintainer: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
+Description: Ginger Base is an open source base host management plugin for Wok
+(Webserver Originated from Kimchi), that provides an intuitive web panel with
+common tools for configuring and managing the Linux systems.
diff --git a/plugins/gingerbase/contrib/Makefile.am b/plugins/gingerbase/contrib/Makefile.am
new file mode 100644
index 0000000..8e02cfd
--- /dev/null
+++ b/plugins/gingerbase/contrib/Makefile.am
@@ -0,0 +1,35 @@
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+SUBDIRS = DEBIAN
+
+EXTRA_DIST = \
+ check_i18n.py \
+ gingerbase.spec.fedora.in \
+ gingerbase.spec.suse.in \
+ make-deb.sh.in \
+ $(NULL)
+
+make-deb.sh: make-deb.sh.in $(top_builddir)/config.status
+ $(AM_V_GEN)sed \
+ -e 's|[@]PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
+ -e 's|[@]PACKAGE_RELEASE[@]|$(PACKAGE_RELEASE)|g' \
+ < $< > $@-t && \
+ chmod a+x $@-t && \
+ mv $@-t $@
+BUILT_SOURCES = make-deb.sh
+
+CLEANFILES = gingerbase.spec.fedora gingerbase.spec.suse gingerbase.spec make-deb.sh
diff --git a/plugins/gingerbase/contrib/check_i18n.py b/plugins/gingerbase/contrib/check_i18n.py
new file mode 100755
index 0000000..fe1fc0b
--- /dev/null
+++ b/plugins/gingerbase/contrib/check_i18n.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python2
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import imp
+import os
+import re
+import sys
+
+
+# Match all conversion specifier with mapping key
+PATTERN = re.compile(r'''%\([^)]+\) # Mapping key
+ [#0\-+]? # Conversion flags (optional)
+ (\d+|\*)? # Minimum field width (optional)
+ (\.(\d+|\*))? # Precision (optional)
+ [lLh]? # Length modifier (optional)
+ [cdeEfFgGioursxX%] # Conversion type''',
+ re.VERBOSE)
+BAD_PATTERN = re.compile(r"%\([^)]*?\)")
+
+
+def load_i18n_module(i18nfile):
+ path = os.path.dirname(i18nfile)
+ mname = i18nfile.replace("/", "_").rstrip(".py")
+ mobj = imp.find_module("i18n", [path])
+ return imp.load_module(mname, *mobj)
+
+
+def check_string_formatting(messages):
+ for k, v in messages.iteritems():
+ if BAD_PATTERN.findall(PATTERN.sub(" ", v)):
+ print "bad i18n string formatting:"
+ print " %s: %s" % (k, v)
+ exit(1)
+
+
+def check_obsolete_messages(path, messages):
+ def find_message_key(path, k):
+ for root, dirs, files in os.walk(path):
+ for f in files:
+ fname = os.path.join(root, f)
+ if (not fname.endswith("i18n.py") and fname.endswith(".py") or
+ fname.endswith(".json")):
+ with open(fname) as f:
+ string = "".join(f.readlines())
+ if k in string:
+ return True
+ return False
+
+ for k in messages.iterkeys():
+ if not find_message_key(path, k):
+ print " %s is obsolete, it is no longer in use" % k
+ exit(1)
+
+
+def main():
+ print "Checking for invalid i18n string..."
+ for f in sys.argv[1:]:
+ messages = load_i18n_module(f).messages
+ check_string_formatting(messages)
+ check_obsolete_messages(os.path.dirname(f), messages)
+ print "Checking for invalid i18n string successfully"
+
+
+if __name__ == '__main__':
+ main()
diff --git a/plugins/gingerbase/contrib/gingerbase.spec.fedora.in b/plugins/gingerbase/contrib/gingerbase.spec.fedora.in
new file mode 100644
index 0000000..a4ffb66
--- /dev/null
+++ b/plugins/gingerbase/contrib/gingerbase.spec.fedora.in
@@ -0,0 +1,68 @@
+Name: Ginger Base
+Version: @PACKAGE_VERSION@
+Release: @PACKAGE_RELEASE@%{?dist}
+Summary: Wok plugin for base host management
+BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}
+BuildArch: noarch
+Group: System Environment/Base
+License: LGPL/ASL2
+Source0: %{name}-%{version}.tar.gz
+Requires: wok
+Requires: python-psutil >= 0.6.0
+Requires: sos
+BuildRequires: libxslt
+BuildRequires: python-lxml
+
+%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
+%global with_systemd 1
+%endif
+
+%if 0%{?rhel} == 6
+Requires: python-ordereddict
+BuildRequires: python-unittest2
+%endif
+
+%description
+Ginger Base is an open source base host management plugin for Wok
+(Webserver Originated from Kimchi), that provides an intuitive web panel with
+common tools for configuring and managing the Linux systems.
+
+%prep
+
+
+%build
+%configure
+make
+
+
+%install
+rm -rf %{buildroot}
+make DESTDIR=%{buildroot} install
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%attr(-,root,root)
+%{python_sitelib}/wok/plugins/gingerbase/*.py*
+%{python_sitelib}/wok/plugins/gingerbase/control/*.py*
+%{python_sitelib}/wok/plugins/gingerbase/model/*.py*
+%{python_sitelib}/wok/plugins/gingerbase/API.json
+%{python_sitelib}/wok/plugins/gingerbase/
+%{_datadir}/wok/plugins/gingerbase/doc/API.md
+%{_datadir}/wok/plugins/gingerbase/doc/README.md
+%{_datadir}/wok/plugins/gingerbase/doc/README-federation.md
+%{_prefix}/share/locale/*/LC_MESSAGES/gingerbase.mo
+%{_datadir}/wok/plugins/gingerbase/ui/config/*.xml
+%{_datadir}/wok/plugins/gingerbase/ui/
+%{_datadir}/wok/plugins/gingerbase
+%{_sysconfdir}/wok/plugins.d/gingerbase.conf
+%{_sysconfdir}/wok/
+%{_sharedstatedir}/wok/debugreports/
+%{_sharedstatedir}/wok/
+
+
+%changelog
+* Thu Aug 25 2015 Chandra Shehkhar Reddy Potula <chandra(a)linux.vnet.ibm.com> 0.0-1s
+- First build
diff --git a/plugins/gingerbase/contrib/gingerbase.spec.suse.in b/plugins/gingerbase/contrib/gingerbase.spec.suse.in
new file mode 100644
index 0000000..ba92606
--- /dev/null
+++ b/plugins/gingerbase/contrib/gingerbase.spec.suse.in
@@ -0,0 +1,62 @@
+Name: Ginger Base
+Version: @PACKAGE_VERSION@
+Release: @PACKAGE_RELEASE@%{?dist}
+Summary: Wok plugin for base host management
+BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}
+BuildArch: noarch
+Group: System Environment/Base
+License: LGPL/ASL2
+Source0: %{name}-%{version}.tar.gz
+Requires: wok
+Requires: python-psutil >= 0.6.0
+BuildRequires: libxslt-tools
+BuildRequires: python-lxml
+
+%if 0%{?suse_version} == 1100
+Requires: python-ordereddict
+%endif
+
+%if 0%{?suse_version} > 1140
+%global with_systemd 1
+%endif
+
+%description
+Ginger Base is an open source base host management plugin for Wok
+(Webserver Originated from Kimchi), that provides an intuitive web panel with
+common tools for configuring and managing the Linux systems.
+
+%prep
+%setup
+
+%install
+rm -rf %{buildroot}
+make DESTDIR=%{buildroot} install
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%attr(-,root,root)
+%{python_sitelib}/wok/plugins/gingerbase/*.py*
+%{python_sitelib}/wok/plugins/gingerbase/control/*.py*
+%{python_sitelib}/wok/plugins/gingerbase/model/*.py*
+%{python_sitelib}/wok/plugins/gingerbase/API.json
+%{python_sitelib}/wok/plugins/gingerbase/
+%{_datadir}/wok/plugins/gingerbase/doc/API.md
+%{_datadir}/wok/plugins/gingerbase/doc/README.md
+%{_datadir}/wok/plugins/gingerbase/doc/README-federation.md
+%{_prefix}/share/locale/*/LC_MESSAGES/gingerbase.mo
+%{_datadir}/wok/plugins/gingerbase/ui/config/*.xml
+%{_datadir}/wok/plugins/gingerbase/ui/
+%{_datadir}/wok/plugins/gingerbase
+%{_sysconfdir}/wok/plugins.d/gingerbase.conf
+%{_sysconfdir}/wok/
+%{_var}/lib/wok/debugreports/
+%{_var}/lib/wok/
+
+
+
+%changelog
+* Thu Aug 25 2015 Chandra Shehkhar Reddy Potula <chandra(a)linux.vnet.ibm.com> 0.0-1
+- First build
diff --git a/plugins/gingerbase/contrib/make-deb.sh.in b/plugins/gingerbase/contrib/make-deb.sh.in
new file mode 100644
index 0000000..a4c92bf
--- /dev/null
+++ b/plugins/gingerbase/contrib/make-deb.sh.in
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION="@PACKAGE_VERSION@"
+RELEASE="@PACKAGE_RELEASE@"
+
+if [ ! -f configure ]; then
+ echo "Please run this script from the top of the package tree"
+ exit 1
+fi
+
+TMPDIR=`mktemp -d`
+
+make DESTDIR=$TMPDIR install-deb
+dpkg-deb -b $TMPDIR gingerbase-${VERSION}-${RELEASE}.noarch.deb
+rm -rf $TMPDIR
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/README.md | 1 +
plugins/gingerbase/docs/API.md | 316 ++++++++++++++++++++++++
plugins/gingerbase/docs/Makefile.am | 26 ++
plugins/gingerbase/docs/README.md | 183 ++++++++++++++
plugins/gingerbase/docs/gingerbase-host-tab.png | Bin 0 -> 79669 bytes
plugins/gingerbase/docs/kimchi-login.png | Bin 0 -> 318041 bytes
6 files changed, 526 insertions(+)
create mode 120000 plugins/gingerbase/README.md
create mode 100644 plugins/gingerbase/docs/API.md
create mode 100644 plugins/gingerbase/docs/Makefile.am
create mode 100644 plugins/gingerbase/docs/README.md
create mode 100644 plugins/gingerbase/docs/gingerbase-host-tab.png
create mode 100644 plugins/gingerbase/docs/kimchi-login.png
diff --git a/plugins/gingerbase/README.md b/plugins/gingerbase/README.md
new file mode 120000
index 0000000..0e01b43
--- /dev/null
+++ b/plugins/gingerbase/README.md
@@ -0,0 +1 @@
+docs/README.md
\ No newline at end of file
diff --git a/plugins/gingerbase/docs/API.md b/plugins/gingerbase/docs/API.md
new file mode 100644
index 0000000..2c72f3b
--- /dev/null
+++ b/plugins/gingerbase/docs/API.md
@@ -0,0 +1,316 @@
+## Project Gigner Base REST API Specification
+
+The Ginger Base API provides all functionality to the application and may be used
+directly by external tools. In the following sections you will find the
+specification of all Collections and Resource types that are supported and the
+URIs where they can be accessed. In order to use the API effectively, please
+the following general conventions:
+
+* The **Content Type** of the API is JSON. When making HTTP requests to this
+ API you should specify the following headers:
+ * Accept: application/json
+ * Content-type: application/json
+* A **Collection** is a group of Resources of a given type.
+ * A **GET** request retrieves a list of summarized Resource representations
+ This summary *may* include all or some of the Resource properties but
+ *must* include a link to the full Resource representation.
+ * A **POST** request will create a new Resource in the Collection. The set
+ of Resource properties *must* be specified as a JSON object in the request
+ body.
+ * No other HTTP methods are supported for Collections
+* A **Resource** is a representation of a singular object in the API (eg.
+ Virtual Machine).
+ * A **GET** request retrieves the full Resource representation.
+ * A **DELETE** request will delete the Resource. This request *may* contain
+ a JSON object which specifies optional parameters.
+ * A **PUT** request is used to modify the properties of a Resource (eg.
+ Change the name of a Virtual Machine). This kind of request *must not*
+ alter the live state of the Resource. Only *actions* may alter live state.
+ * A **POST** request commits an *action* upon a Resource (eg. Start a
+ Virtual Machine). This request is made to a URI relative to the Resource
+ URI. Available *actions* are described within the *actions* property of a
+ Resource representation. The request body *must* contain a JSON object
+ which specifies parameters.
+* URIs begin with '/plugins/gingerbase' to indicate the root of gingerbase plugin.
+ * Variable segments in the URI begin with a ':' and should replaced with the
+ appropriate resource identifier.
+
+#### Collection: Debug Reports
+
+**URI:** /plugins/gingerbase/debugreports
+
+**Methods:**
+
+* **GET**: Retrieve a summarized list of all available Debug Reports
+* **POST**: Create a new Debug Report. This POST method is different
+ from the other ones. The return resource is a task resource which
+ is identified by the url below
+ * task resource. * See Resource: Task *
+
+### Resource: Debug Report
+
+**URI:** /plugins/gingerbase/debugreports/*:name*
+
+A Debug Report is an archive of logs and other information about the host that
+is used to diagnose and debug problems. The exact format and contents are
+specific to the low level collection tool being used.
+
+**Methods:**
+
+* **GET**: Retrieve the full description of Debug Report
+ * name: The debug report name used to identify the report
+ * uri: The URI path to download a debug report
+ * time: The time when the debug report is created
+
+* **PUT**: rename an existed debug report
+ * name: The new name for this debug report
+
+* **DELETE**: Remove the Debug Report
+ * name: The debug report name used to identify the report
+
+* **POST**: *See Debug Report Actions*
+
+**Actions (POST):**
+
+*No actions defined*
+
+### Sub-resource: Debug Report content
+
+**URI:** /plugins/gingerbase/debugreports/*:name*/content
+
+It is the sub-resource of Debug Report and the client use it to get the real content
+of the Debug Report file from the server
+
+* **GET**: Retrieve the content of a Debug Report file
+
+**Actions (POST):**
+
+*No actions defined*
+
+### Resource: Host
+
+**URI:** /plugins/gingerbase/host
+Contains information of host.
+
+**Methods:**
+
+* **GET**: Retrieve host static information
+ * memory: Total size of host physical memory
+ The unit is Bytes
+ * cpu_model: The model name of host CPU
+ * cpus: The number of online CPUs available on host
+ * os_distro: The OS distribution that runs on host
+ * os_version: The version of OS distribution
+ * os_codename: The code name of OS distribution
+
+* **POST**: *See Host Actions*
+
+**Actions (POST):**
+
+* reboot: Restart the host machine.
+ Only allowed if there is not vm running.
+* shutdown: Power off the host machine.
+ Only allowed if there is not vm running.
+* swupdate: Start the update of packages in background and return a Task resource
+ * task resource. * See Resource: Task *
+
+### Resource: HostStats
+
+**URI:** /plugins/gingerbase/host/stats
+
+Contains the host sample data.
+
+**Methods:**
+
+* **GET**: Retrieve host sample data
+ * cpu_utilization: A number between 0 and 100 which indicates the
+ percentage of CPU utilization.
+ * memory: memory statistics of host
+ * total: Total amount of memory. The unit is Bytes.
+ * free: The amount of memory left unused by the system. The unit is Bytes.
+ * buffers: The amount of memory used for file buffers. The unit is Bytes.
+ * cached: The amount of memory used as cache memory. The unit is Bytes.
+ * avail: The total amount of buffer, cache and free memory. The unit is Bytes.
+ * disk_read_rate: Expresses the total IO throughput for reads across
+ all disks (B/s).
+ * disk_write_rate: Expresses the total IO throughput for writes across
+ all disks (B/s).
+ * net_sent_rate: Expresses the total network throughput for writes across
+ all interfaces (B/s).
+ * net_recv_rate: Expresses the total network throughput for reads across
+ all interfaces (B/s).
+
+* **POST**: *See HostStats Actions*
+
+**Actions (POST):**
+
+*No actions defined*
+
+### Resource: HostStats
+
+**URI:** /plugins/gingerbase/host/cpuinfo
+
+The cores and sockets of a hosts's CPU. Useful when sizing VMs to take
+advantages of the perforamance benefits of SMT (Power) or Hyper-Threading (Intel).
+
+**Methods:**
+
+* **GET**: Retreives the sockets, cores, and threads values.
+ * threading_enabled: Whether CPU topology is supported on this system.
+ * sockets: The number of total sockets on a system.
+ * cores: The total number of cores per socket.
+ * threads_per_core: The threads per core.
+
+**Actions (PUT):**
+
+*No actions defined*
+
+**Actions (POST):**
+
+*No actions defined*
+
+
+### Resource: HostStatsHistory
+
+**URI:** /plugins/gingerbase/host/stats/history
+
+It is the sub-resource of Host Stats and the client uses it to get the host
+stats history
+
+**Methods:**
+
+* **GET**: Retrieve host sample data history
+ * cpu_utilization: CPU utilization history
+ * memory: Memory statistics history
+ * total: Total amount of memory. The unit is Bytes.
+ * free: The amount of memory left unused by the system. The unit is Bytes.
+ * buffers: The amount of memory used for file buffers. The unit is Bytes.
+ * cached: The amount of memory used as cache memory. The unit is Bytes.
+ * avail: The total amount of buffer, cache and free memory. The unit is Bytes.
+ * disk_read_rate: IO throughput for reads history
+ * disk_write_rate: IO throughput for writes history
+ * net_sent_rate: Network throughput for writes history
+ * net_recv_rate: Network throughput for reads history
+
+* **POST**: *See HostStatsHistory Actions*
+
+**Actions (POST):**
+
+*No actions defined*
+
+### Collection: Partitions
+
+**URI:** /plugins/gingerbase/host/partitions
+
+**Methods:**
+
+* **GET**: Retrieves a detailed list of all partitions of the host.
+
+### Resource: Partition
+
+**URI:** /plugins/gingerbase/host/partitions/*:name*
+
+**Methods:**
+
+* **GET**: Retrieve the description of a single Partition:
+ * name: The name of the partition. Used to identify it in this API
+ * path: The device path of this partition.
+ * type: The type of the partition:
+ * part: a standard partition
+ * lvm: a partition that belongs to a lvm
+ * fstype: The file system type of the partition
+ * size: The total size of the partition, in bytes
+ * mountpoint: If the partition is mounted, represents the mountpoint.
+ Otherwise blank.
+ * available: false, if the partition is in use by system; true, otherwise.
+
+### Collection: Host Packages Update
+
+**URI:** /plugins/gingerbase/host/packagesupdate
+
+Contains the information and action of packages update in the host.
+
+**Methods:**
+
+* **GET**: Retrieves a list of all packages to be updated in the host:
+
+### Resource: Host Package Update
+
+**URI:** /plugins/gingerbase/host/packagesupdate/*:name*
+
+Contains the information for a specific package to be updated.
+
+**Methods:**
+
+* **GET**: Retrieves a full description of a package:
+ * package_name: The name of the package to be updated
+ * arch: The architecture of the package
+ * version: The new version of the package
+ * repository: The repository name from where package will be downloaded
+
+### Collection: Host Repositories
+
+**URI:** /plugins/gingerbase/host/repositories
+
+**Methods:**
+
+* **GET**: Retrieve a summarized list of all repositories available
+* **POST**: Add a new repository
+ * baseurl: URL to the repodata directory when "is_mirror" is false.
+Otherwise, it can be URL to the mirror system for YUM. Can be an
+http://, ftp:// or file:// URL.
+ * repo_id *(optional)*: Unique YUM repository ID
+ * config: A dictionary that contains specific data according to repository
+ type.
+ * repo_name *(optional)*: YUM Repository name
+ * mirrorlist *(optional)*: Specifies a URL to a file containing a
+ list of baseurls for YUM repository
+ * dist: Distribution to DEB repository
+ * comps *(optional)*: List of components to DEB repository
+
+### Resource: Repository
+
+**URI:** /plugins/gingerbase/host/repositories/*:repo-id*
+
+**Methods:**
+
+* **GET**: Retrieve the full description of a Repository
+ * repo_id: Unique repository name for each repository, one word.
+ * baseurl: URL to the repodata directory when "is_mirror" is false.
+Otherwise, it can be URL to the mirror system for YUM. Can be an
+http://, ftp:// or file:// URL.
+ * enabled: True, when repository is enabled; False, otherwise
+ * config: A dictionary that contains specific data according to repository
+ type.
+ * repo_name: Human-readable string describing the YUM repository.
+ * mirrorlist: Specifies a URL to a file containing a list of baseurls
+ for YUM repository
+ * gpgcheck: True, to enable GPG signature verification; False, otherwise.
+ * gpgkey: URL pointing to the ASCII-armored GPG key file for the YUM
+ repository.
+ * dist: Distribution to DEB repository
+ * comps: List of components to DEB repository
+
+* **DELETE**: Remove the Repository
+* **POST**: *See Repository Actions*
+* **PUT**: update the parameters of existing Repository
+ * repo_id: Unique repository name for each repository, one word.
+ * baseurl: URL to the repodata directory when "is_mirror" is false.
+Otherwise, it can be URL to the mirror system for YUM. Can be an
+http://, ftp:// or file:// URL.
+ * config: A dictionary that contains specific data according to repository
+ type.
+ * repo_name: Human-readable string describing the YUM repository.
+ * mirrorlist: Specifies a URL to a file containing a list of baseurls
+ for YUM repository
+ * gpgcheck: True, to enable GPG signature verification; False, otherwise.
+ * gpgkey: URL pointing to the ASCII-armored GPG key file for the YUM
+ repository.
+ * dist: Distribution to DEB repository
+ * comps: List of components to DEB repository
+
+**Actions (POST):**
+
+* enable: Enable the Repository as package source
+* disable: Disable the Repository as package source
+
diff --git a/plugins/gingerbase/docs/Makefile.am b/plugins/gingerbase/docs/Makefile.am
new file mode 100644
index 0000000..5f2d7cc
--- /dev/null
+++ b/plugins/gingerbase/docs/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+docdir = $(datadir)/gingerbase/doc
+
+dist_doc_DATA = \
+ API.md \
+ README.md \
+ gingerbase-host-tab.png \
+ $(NULL)
diff --git a/plugins/gingerbase/docs/README.md b/plugins/gingerbase/docs/README.md
new file mode 100644
index 0000000..a9782bd
--- /dev/null
+++ b/plugins/gingerbase/docs/README.md
@@ -0,0 +1,183 @@
+Ginger Base Plugin
+==============
+
+Ginger Base is an open source base host management plugin for Wok
+(Webserver Originated from Kimchi), that provides an intuitive web panel with
+common tools for configuring and managing the Linux systems.
+
+Wok is a cherrypy-based web framework with HTML5 support that is extended by
+plugins which expose functionality through REST APIs.
+
+The current features of Base Host Management of Linux system include:
+ + Shutdown, Restart, Connect
+ + Basic Information
+ + System Statistics
+ + Software Updates
+ + Repository Management
+ + Debug Reports (SoS Reports)
+
+Browser Support
+===============
+
+Desktop Browser Support:
+-----------------------
+* **Internet Explorer:** IE9+
+* **Chrome:** Current-1 version
+* **Firefox:** Current-1 version Firefox 24ESR
+* **Safari:** Current-1 version
+* **Opera:** Current-1 version
+
+Mobile Browser Support:
+-----------------------
+* **Safari iOS:** Current-1 version
+* **Android Browser** Current-1 version
+
+Current-1 version denotes that we support the current stable version of the
+browser and the version that preceded it. For example, if the current version of
+a browser is 24.x, we support the 24.x and 23.x versions.This does not mean that
+kimchi cannot be used in other browsers, however, functionality and appearance
+may be diminished and we may not be able to provide support for any problems you
+find.
+
+Hypervisor Distro Support
+=========================
+
+Ginger Base and Wok might run on any GNU/Linux distribution that meets the conditions
+described on the 'Getting Started' section below.
+
+The Kimchi community makes an effort to test it with the latest versions of
+Fedora, RHEL, OpenSuSe, and Ubuntu.
+
+Getting Started
+===============
+
+Install Dependencies
+--------------------
+
+**For fedora and RHEL:**
+
+ $ sudo yum install gcc make autoconf automake gettext-devel git \
+ python-cherrypy python-cheetah \
+ python-jsonschema rpm-build \
+ python-psutil sos python-lxml \
+ libxslt pyparted \
+ python-websockify python-configobj
+
+ # If using RHEL, install the following additional packages:
+ $ sudo yum install python-unittest2 python-ordereddict
+
+ # Restart libvirt to allow configuration changes to take effect
+ $ sudo service libvirtd restart
+
+ Packages version requirement:
+ python-psutil >= 0.6.0
+
+ # These dependencies are only required if you want to run the tests:
+ $ sudo yum install pyflakes python-pep8 python-requests
+
+*Note for RHEL users*: Some of the above packages are located in the Red Hat
+EPEL repositories. See
+[this FAQ](http://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.…
+for more information on how to configure your system to access this repository.
+
+And for RHEL7 systems, you also need to subscribe to the "RHEL Server Optional"
+channel at RHN Classic or Red Hat Satellite.
+
+**For debian:**
+
+ $ sudo apt-get install gcc make autoconf automake gettext git \
+ python-cherrypy3 python-cheetah \
+ python-configobj python-jsonschema \
+ python-psutil sosreport \
+ python-lxml xsltproc \
+ python-parted websockify
+
+ Packages version requirement:
+ python-jsonschema >= 1.3.0
+ python-psutil >= 0.6.0
+
+ # These dependencies are only required if you want to run the tests:
+ $ sudo apt-get install pep8 pyflakes python-requests
+
+**For openSUSE:**
+
+ $ sudo zypper install gcc make autoconf automake gettext-tools git \
+ python-CherryPy python-Cheetah \
+ python-jsonschema rpm-build \
+ python-psutil python-lxml \
+ libxslt-tools python-xml python-parted \
+ python-configobj python-websockify
+
+ Packages version requirement:
+ python-psutil >= 0.6.0
+
+ # These dependencies are only required if you want to run the tests:
+ $ sudo zypper install python-pyflakes python-pep8 python-requests
+
+*Note for openSUSE users*: Some of the above packages are located in different
+openSUSE repositories. See
+[this FAQ](http://download.opensuse.org/repositories/home:GRNET:synnefo/) for
+python-parted; And
+[this FAQ](http://en.opensuse.org/SDB:Add_package_repositories) for more
+information on how configure your system to access this repository.
+
+Build and Install
+-----------------
+
+ Wok:
+ $ ./autogen.sh --system
+
+ $ make
+ $ sudo make install # Optional if running from the source tree
+
+
+ Ginger Base:
+ $ cd plugins/gingerbasae
+
+ $ ./autogen.sh --system
+
+ $ make
+ $ sudo make install # Optional if running from the source tree
+
+Run
+---
+
+ $ systemctl start wokd
+
+
+Test
+----
+
+ $ cd plugins/gingerbase
+ $ make check-local # check for i18n and formatting errors
+ $ sudo make check
+
+After all tests are executed, a summary will be displayed containing any
+errors/failures which might have occurred.
+
+Usage
+-----
+
+Connect your browser to https://localhost:8001. You should see a screen like:
+
+
+
+Wok uses PAM to authenticate users so you can log in with the same username
+and password that you would use to log in to the machine itself.
+
+
+
+Ginger Base Host tab provides the base host functionality like system information,
+ system statistics, software updates, repositories and debug reports functionality.
+
+Also Ginger Base provides shutdown, re-start and connect options.
+
+Participating
+-------------
+
+All patches are sent through our mailing list hosted by oVirt. More
+information can be found at:
+
+https://github.com/kimchi-project/kimchi/wiki/Communications
+
+Patches should be sent using git-send-email to kimchi-devel(a)ovirt.org.
diff --git a/plugins/gingerbase/docs/gingerbase-host-tab.png b/plugins/gingerbase/docs/gingerbase-host-tab.png
new file mode 100644
index 0000000000000000000000000000000000000000..d84168d7e0182e91a2ed839c70051e0c1e0c8a45
GIT binary patch
literal 79669
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
VxXX0{+N^&SV)#2i3&@w&{{w*cbGrZl
literal 0
HcmV?d00001
diff --git a/plugins/gingerbase/docs/kimchi-login.png b/plugins/gingerbase/docs/kimchi-login.png
new file mode 100644
index 0000000000000000000000000000000000000000..66387fd70adebc3b20b9520974a127ea7faa52ac
GIT binary patch
literal 318041
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%0A&`9-9b?c>R2A
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⪼mDSr{tK2+EhOBG_{{`e&G
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
NOI8XjSt(%@^gj?LcDMil
literal 0
HcmV?d00001
--
2.1.0
1
0
27 Sep '15
From: Chandra Shekhar Reddy Potula <chandra(a)linux.vnet.ibm.com>
---
plugins/gingerbase/Makefile.am | 151 +++++++++++
plugins/gingerbase/VERSION | 1 +
plugins/gingerbase/__init__.py | 21 ++
plugins/gingerbase/autogen.sh | 21 ++
plugins/gingerbase/config.py.in | 61 +++++
plugins/gingerbase/configure.ac | 103 ++++++++
plugins/gingerbase/disks.py | 196 ++++++++++++++
plugins/gingerbase/gingerbase.conf | 32 +++
plugins/gingerbase/gingerbase.py | 62 +++++
plugins/gingerbase/i18n.py | 96 +++++++
plugins/gingerbase/lscpu.py | 122 +++++++++
plugins/gingerbase/mockmodel.py | 298 +++++++++++++++++++++
plugins/gingerbase/repositories.py | 529 +++++++++++++++++++++++++++++++++++++
plugins/gingerbase/swupdate.py | 263 ++++++++++++++++++
plugins/gingerbase/yumparser.py | 283 ++++++++++++++++++++
plugins/kimchi/disks.py | 196 --------------
plugins/kimchi/repositories.py | 529 -------------------------------------
plugins/kimchi/swupdate.py | 263 ------------------
plugins/kimchi/yumparser.py | 283 --------------------
19 files changed, 2239 insertions(+), 1271 deletions(-)
create mode 100644 plugins/gingerbase/Makefile.am
create mode 100644 plugins/gingerbase/VERSION
create mode 100644 plugins/gingerbase/__init__.py
create mode 100755 plugins/gingerbase/autogen.sh
create mode 100644 plugins/gingerbase/config.py.in
create mode 100644 plugins/gingerbase/configure.ac
create mode 100644 plugins/gingerbase/disks.py
create mode 100644 plugins/gingerbase/gingerbase.conf
create mode 100644 plugins/gingerbase/gingerbase.py
create mode 100644 plugins/gingerbase/i18n.py
create mode 100644 plugins/gingerbase/lscpu.py
create mode 100644 plugins/gingerbase/mockmodel.py
create mode 100644 plugins/gingerbase/repositories.py
create mode 100644 plugins/gingerbase/swupdate.py
create mode 100644 plugins/gingerbase/yumparser.py
delete mode 100644 plugins/kimchi/disks.py
delete mode 100644 plugins/kimchi/repositories.py
delete mode 100644 plugins/kimchi/swupdate.py
delete mode 100644 plugins/kimchi/yumparser.py
diff --git a/plugins/gingerbase/Makefile.am b/plugins/gingerbase/Makefile.am
new file mode 100644
index 0000000..cd7b7e8
--- /dev/null
+++ b/plugins/gingerbase/Makefile.am
@@ -0,0 +1,151 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+SUBDIRS = contrib control docs model po tests ui
+
+gingerbase_PYTHON = $(filter-out config.py, $(wildcard *.py))
+
+nodist_gingerbase_PYTHON = config.py
+
+wokdir = $(pythondir)/wok
+gingerbasedir = $(pythondir)/wok/plugins/gingerbase
+
+confdir = $(sysconfdir)/wok/plugins.d
+dist_conf_DATA = gingerbase.conf
+
+AUTOMAKE_OPTIONS = foreign
+
+ACLOCAL_AMFLAGS = --install -I m4
+
+EXTRA_DIST = \
+ config.rpath \
+ API.json \
+ autogen.sh \
+ COPYING.ASL2 \
+ COPYING.LGPL \
+ CONTRIBUTE.md \
+ VERSION \
+ build-aux/pkg-version \
+ config.py.in \
+ $(NULL)
+
+
+PEP8_BLACKLIST = *config.py,*i18n.py,*tests/test_config.py
+
+I18N_FILES = ./i18n.py \
+ $(NULL)
+
+check-local:
+ contrib/check_i18n.py $(I18N_FILES)
+ find . -path './.git' -prune -type f -o \
+ -name '*.py' -o -name '*.py.in' | xargs $(PYFLAKES) | \
+ while read LINE; do echo "$$LINE"; false; done
+
+ $(PEP8) --version
+ $(PEP8) --filename '*.py,*.py.in' --exclude="$(PEP8_BLACKLIST)" .
+
+
+# Link built mo files in the source tree to enable use of translations from
+# within the source tree
+all-local:
+ while read L && test -n "$$L"; do \
+ dir=mo/$$L/LC_MESSAGES ; \
+ $(MKDIR_P) $$dir ; \
+ ln -sf ../../../po/$$L.gmo $$dir/gingerbase.mo ; \
+ done < po/LINGUAS
+
+do_substitution = \
+ sed -e 's,[@]prefix[@],$(prefix),g' \
+ -e 's,[@]datadir[@],$(datadir),g' \
+ -e 's,[@]sysconfdir[@],$(sysconfdir),g' \
+ -e 's,[@]localstatedir[@],$(localstatedir),g' \
+ -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
+ -e 's,[@]wokdir[@],$(wokdir),g' \
+ -e 's,[@]gingerbasedir[@],$(gingerbasedir),g' \
+ -e 's,[@]kimchiversion[@],$(PACKAGE_VERSION),g' \
+ -e 's,[@]kimchirelease[@],$(PACKAGE_RELEASE),g' \
+ -e 's,[@]withspice[@],$(WITH_SPICE),g'
+
+config.py: config.py.in Makefile
+ $(do_substitution) < $(srcdir)/config.py.in > config.py
+
+
+#
+# Packaging helpers
+#
+
+install-deb: install
+ cp -R $(top_srcdir)/contrib/DEBIAN $(DESTDIR)/
+ mkdir -p $(DESTDIR)/var/lib/kimchi/debugreports
+
+
+deb: contrib/make-deb.sh
+ $(top_srcdir)/contrib/make-deb.sh
+
+gingerbase.spec: contrib/gingerbase.spec.fedora contrib/gingerbase.spec.suse
+ @if test -e /etc/redhat-release; then \
+ ln -sf contrib/gingerbase.spec.fedora $@ ; \
+ elif test -e /etc/SuSE-release; then \
+ ln -sf contrib/gingerbase.spec.suse $@ ; \
+ else \
+ echo "Unable to select a spec file for RPM build" ; \
+ /bin/false ; \
+ fi
+
+rpm: dist gingerbase.spec
+ $(MKDIR_P) rpm/BUILD rpm/RPMS rpm/SOURCES rpm/SPECS rpm/SRPMS
+ cp $(top_srcdir)/gingerbase.spec rpm/SPECS/gingerbase.spec
+ cp $(DIST_ARCHIVES) rpm/SOURCES
+ rpmbuild -ba --define "_topdir `pwd`/rpm" rpm/SPECS/gingerbase.spec
+
+fedora-rpm: contrib/gingerbase.spec.fedora
+ ln -sf contrib/gingerbase.spec.fedora gingerbase.spec
+ $(MAKE) rpm
+
+suse-rpm: contrib/gingerbase.spec.suse
+ ln -sf contrib/gingerbase.spec.suse gingerbase.spec
+ $(MAKE) rpm
+
+ChangeLog:
+ @if test -d .git; then \
+ $(top_srcdir)/build-aux/genChangelog --release > $@; \
+ fi
+
+install-data-local:
+ $(MKDIR_P) $(DESTDIR)$(gingerbasedir)
+ $(INSTALL_DATA) API.json $(DESTDIR)$(gingerbasedir)/API.json
+ mkdir -p $(DESTDIR)/var/lib/kimchi/debugreports
+
+uninstall-local:
+ $(RM) $(DESTDIR)$(gingerbasedir)/API.json
+ $(RM) -rf $(DESTDIR)/var/lib/kimchi
+
+VERSION:
+ @if test -d .git; then \
+ git describe --abbrev=0 > $@; \
+ fi
+
+.PHONY: deb install-deb rpm fedora-rpm suse-rpm ChangeLog VERSION
+
+
+clean-local:
+ rm -rf mo rpm
+
+BUILT_SOURCES = config.py
+CLEANFILES = config.py gingerbase.spec `find "$(top_srcdir)" -type f -name "*.pyc" -print`
diff --git a/plugins/gingerbase/VERSION b/plugins/gingerbase/VERSION
new file mode 100644
index 0000000..bc80560
--- /dev/null
+++ b/plugins/gingerbase/VERSION
@@ -0,0 +1 @@
+1.5.0
diff --git a/plugins/gingerbase/__init__.py b/plugins/gingerbase/__init__.py
new file mode 100644
index 0000000..21a12a9
--- /dev/null
+++ b/plugins/gingerbase/__init__.py
@@ -0,0 +1,21 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+from gingerbase import GingerBase
+__all__ = [GingerBase]
diff --git a/plugins/gingerbase/autogen.sh b/plugins/gingerbase/autogen.sh
new file mode 100755
index 0000000..0f22dba
--- /dev/null
+++ b/plugins/gingerbase/autogen.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+aclocal
+automake --add-missing
+autoreconf
+
+if [ ! -f "configure" ]; then
+ echo "Failed to generate configure script. Check to make sure autoconf, "
+ echo "automake, and other build dependencies are properly installed."
+ exit 1
+fi
+
+if [ "x$1" == "x--system" ]; then
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+else
+ if [ $# -gt 0 ]; then
+ ./configure $@
+ else
+ ./configure --prefix=/usr/local
+ fi
+fi
diff --git a/plugins/gingerbase/config.py.in b/plugins/gingerbase/config.py.in
new file mode 100644
index 0000000..1ebc46c
--- /dev/null
+++ b/plugins/gingerbase/config.py.in
@@ -0,0 +1,61 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+import os
+import platform
+import threading
+
+from wok.config import CACHEEXPIRES, PluginConfig, PluginPaths
+from wok.xmlutils.utils import xpath_get_text
+
+gingerBaseLock = threading.Lock()
+
+
+def get_debugreports_path():
+ return os.path.join(PluginPaths('gingerbase').state_dir, 'debugreports')
+
+
+class GingerBasePaths(PluginPaths):
+
+ def __init__(self):
+ super(GingerBasePaths, self).__init__('gingerbase')
+
+
+gingerBasePaths = GingerBasePaths()
+
+
+class GingerBaseConfig(PluginConfig):
+ def __init__(self):
+ super(GingerBaseConfig, self).__init__('gingerbase')
+
+ custom_config = {}
+ for dirname in ('css', 'js', 'images'):
+ custom_config['/' + dirname] = {
+ 'tools.staticdir.on': True,
+ 'tools.staticdir.dir': os.path.join(gingerBasePaths.ui_dir,
+ dirname),
+ 'tools.wokauth.on': False,
+ 'tools.nocache.on': False}
+ if dirname != 'images':
+ custom_config['/' + dirname].update({
+ 'tools.expires.on': True,
+ 'tools.expires.secs': CACHEEXPIRES})
+
+ self.update(custom_config)
diff --git a/plugins/gingerbase/configure.ac b/plugins/gingerbase/configure.ac
new file mode 100644
index 0000000..00aba89
--- /dev/null
+++ b/plugins/gingerbase/configure.ac
@@ -0,0 +1,103 @@
+#
+# Ginger Base
+#
+# Copyright IBM Corp, 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+AC_INIT([gingerbase], [m4_esyscmd([./build-aux/pkg-version --version])])
+
+AC_SUBST([PACKAGE_VERSION],
+ [m4_esyscmd([./build-aux/pkg-version --version])])
+
+AC_SUBST([PACKAGE_RELEASE],
+ [m4_esyscmd([./build-aux/pkg-version --release])])
+
+# Testing for version and release
+AS_IF([test "x$PACKAGE_VERSION" = x],
+ AC_MSG_ERROR([package version not defined]))
+AS_IF([test "x$PACKAGE_RELEASE" = x],
+ AC_MSG_ERROR([package release not defined]))
+
+AC_CONFIG_AUX_DIR([build-aux])
+AM_INIT_AUTOMAKE([-Wno-portability])
+AM_PATH_PYTHON([2.6])
+AC_PATH_PROG([PEP8], [pep8], [/usr/bin/pep8])
+AC_PYTHON_MODULE([unittest])
+AC_SUBST([HAVE_PYMOD_UNITTEST])
+AC_SUBST([PYTHON_VERSION])
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.10])
+AC_PATH_PROG([CHEETAH], [cheetah], [/usr/bin/cheetah])
+
+# Checking for pyflakes
+AC_PATH_PROG([PYFLAKES], [pyflakes])
+if test "x$PYFLAKES" = "x"; then
+ AC_MSG_WARN([pyflakes not found])
+fi
+
+AC_ARG_ENABLE(
+ [sample],
+ [AS_HELP_STRING(
+ [--enable-sample],
+ [enable sample plugin @<:@default=no@:>@]
+ )],
+ ,
+ [enable_sample="no"]
+)
+
+if test "${enable_sample}" = "yes"; then
+AC_SUBST([ENABLE_SAMPLE], [True])
+else
+AC_SUBST([ENABLE_SAMPLE], [False])
+fi
+
+AC_CONFIG_FILES([
+ po/Makefile.in
+ po/gen-pot
+ Makefile
+ docs/Makefile
+ control/Makefile
+ model/Makefile
+ ui/Makefile
+ ui/config/Makefile
+ ui/css/Makefile
+ ui/images/Makefile
+ ui/images/theme-default/Makefile
+ ui/js/Makefile
+ ui/pages/Makefile
+ ui/pages/help/Makefile
+ ui/pages/help/en_US/Makefile
+ ui/pages/help/de_DE/Makefile
+ ui/pages/help/es_ES/Makefile
+ ui/pages/help/fr_FR/Makefile
+ ui/pages/help/it_IT/Makefile
+ ui/pages/help/ja_JP/Makefile
+ ui/pages/help/ko_KR/Makefile
+ ui/pages/help/pt_BR/Makefile
+ ui/pages/help/ru_RU/Makefile
+ ui/pages/help/zh_CN/Makefile
+ ui/pages/help/zh_TW/Makefile
+ contrib/Makefile
+ contrib/DEBIAN/Makefile
+ contrib/DEBIAN/control
+ contrib/gingerbase.spec.fedora
+ contrib/gingerbase.spec.suse
+ tests/Makefile
+],[
+ chmod +x po/gen-pot
+])
+
+AC_OUTPUT
diff --git a/plugins/gingerbase/disks.py b/plugins/gingerbase/disks.py
new file mode 100644
index 0000000..7ce5135
--- /dev/null
+++ b/plugins/gingerbase/disks.py
@@ -0,0 +1,196 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import os.path
+import re
+import subprocess
+from parted import Device as PDevice
+from parted import Disk as PDisk
+
+from wok.exception import OperationFailed
+from wok.utils import wok_log
+
+
+def _get_dev_node_path(maj_min):
+ """ Returns device node path given the device number 'major:min' """
+
+ dm_name = "/sys/dev/block/%s/dm/name" % maj_min
+ if os.path.exists(dm_name):
+ with open(dm_name) as dm_f:
+ content = dm_f.read().rstrip('\n')
+ return "/dev/mapper/" + content
+
+ uevent = "/sys/dev/block/%s/uevent" % maj_min
+ with open(uevent) as ueventf:
+ content = ueventf.read()
+
+ data = dict(re.findall(r'(\S+)=(".*?"|\S+)', content.replace("\n", " ")))
+
+ return "/dev/%s" % data["DEVNAME"]
+
+
+def _get_lsblk_devs(keys, devs=[]):
+ lsblk = subprocess.Popen(
+ ["lsblk", "-Pbo"] + [','.join(keys)] + devs,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ out, err = lsblk.communicate()
+ if lsblk.returncode != 0:
+ raise OperationFailed("GGBDISKS0001E", {'err': err})
+
+ return _parse_lsblk_output(out, keys)
+
+
+def _get_dev_major_min(name):
+ maj_min = None
+
+ keys = ["NAME", "MAJ:MIN"]
+ dev_list = _get_lsblk_devs(keys)
+
+ for dev in dev_list:
+ if dev['name'].split()[0] == name:
+ maj_min = dev['maj:min']
+ break
+ else:
+ raise OperationFailed("GGBDISKS0002E", {'device': name})
+
+ return maj_min
+
+
+def _is_dev_leaf(devNodePath):
+ try:
+ # By default, lsblk prints a device information followed by children
+ # device information
+ childrenCount = len(
+ _get_lsblk_devs(["NAME"], [devNodePath])) - 1
+ except OperationFailed as e:
+ # lsblk is known to fail on multipath devices
+ # Assume these devices contain children
+ wok_log.error(
+ "Error getting device info for %s: %s", devNodePath, e)
+ return False
+
+ return childrenCount == 0
+
+
+def _is_dev_extended_partition(devType, devNodePath):
+ if devType != 'part':
+ return False
+ diskPath = devNodePath.rstrip('0123456789')
+ device = PDevice(diskPath)
+ try:
+ extended_part = PDisk(device).getExtendedPartition()
+ except NotImplementedError as e:
+ wok_log.warning(
+ "Error getting extended partition info for dev %s type %s: %s",
+ devNodePath, devType, e.message)
+ # Treate disk with unsupported partiton table as if it does not
+ # contain extended partitions.
+ return False
+ if extended_part and extended_part.path == devNodePath:
+ return True
+ return False
+
+
+def _parse_lsblk_output(output, keys):
+ # output is on format key="value",
+ # where key can be NAME, TYPE, FSTYPE, SIZE, MOUNTPOINT, etc
+ lines = output.rstrip("\n").split("\n")
+ r = []
+ for line in lines:
+ d = {}
+ for key in keys:
+ expression = r"%s=\".*?\"" % key
+ match = re.search(expression, line)
+ field = match.group()
+ k, v = field.split('=', 1)
+ d[k.lower()] = v[1:-1]
+ r.append(d)
+ return r
+
+
+def _get_vgname(devNodePath):
+ """ Return volume group name of a physical volume. If the device node path
+ is not a physical volume, return empty string. """
+ pvs = subprocess.Popen(
+ ["pvs", "--unbuffered", "--nameprefixes", "--noheadings",
+ "-o", "vg_name", devNodePath],
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ out, err = pvs.communicate()
+ if pvs.returncode != 0:
+ return ""
+
+ return re.findall(r"LVM2_VG_NAME='([^\']*)'", out)[0]
+
+
+def _is_available(name, devtype, fstype, mountpoint, majmin):
+ devNodePath = _get_dev_node_path(majmin)
+ # Only list unmounted and unformated and leaf and (partition or disk)
+ # leaf means a partition, a disk has no partition, or a disk not held
+ # by any multipath device. Physical volume belongs to no volume group
+ # is also listed. Extended partitions should not be listed.
+ if (devtype in ['part', 'disk', 'mpath'] and
+ fstype in ['', 'LVM2_member'] and
+ mountpoint == "" and
+ _get_vgname(devNodePath) == "" and
+ _is_dev_leaf(devNodePath) and
+ not _is_dev_extended_partition(devtype, devNodePath)):
+ return True
+ return False
+
+
+def get_partitions_names(check=False):
+ names = set()
+ keys = ["NAME", "TYPE", "FSTYPE", "MOUNTPOINT", "MAJ:MIN"]
+ # output is on format key="value",
+ # where key can be NAME, TYPE, FSTYPE, MOUNTPOINT
+ for dev in _get_lsblk_devs(keys):
+ # split()[0] to avoid the second part of the name, after the
+ # whiteline
+ name = dev['name'].split()[0]
+ if check and not _is_available(name, dev['type'], dev['fstype'],
+ dev['mountpoint'], dev['maj:min']):
+ continue
+ names.add(name)
+
+ return list(names)
+
+
+def get_partition_details(name):
+ majmin = _get_dev_major_min(name)
+ dev_path = _get_dev_node_path(majmin)
+
+ keys = ["TYPE", "FSTYPE", "SIZE", "MOUNTPOINT"]
+ try:
+ dev = _get_lsblk_devs(keys, [dev_path])[0]
+ except OperationFailed as e:
+ wok_log.error(
+ "Error getting partition info for %s: %s", name, e)
+ return {}
+
+ dev['available'] = _is_available(name, dev['type'], dev['fstype'],
+ dev['mountpoint'], majmin)
+ if dev['mountpoint']:
+ # Sometimes the mountpoint comes with [SWAP] or other
+ # info which is not an actual mount point. Filtering it
+ regexp = re.compile(r"\[.*\]")
+ if regexp.search(dev['mountpoint']) is not None:
+ dev['mountpoint'] = ''
+ dev['path'] = dev_path
+ dev['name'] = name
+ return dev
diff --git a/plugins/gingerbase/gingerbase.conf b/plugins/gingerbase/gingerbase.conf
new file mode 100644
index 0000000..27401c9
--- /dev/null
+++ b/plugins/gingerbase/gingerbase.conf
@@ -0,0 +1,32 @@
+[wok]
+enable = True
+plugin_class = "GingerBase"
+uri = "/plugins/gingerbase"
+extra_auth_api_class = "control.sub_nodes"
+
+[/]
+tools.trailing_slash.on = False
+request.methods_with_bodies = ('POST', 'PUT')
+tools.nocache.on = True
+tools.proxy.on = True
+tools.sessions.on = True
+tools.sessions.name = 'wok'
+tools.sessions.secure = True
+tools.sessions.httponly = True
+tools.sessions.locking = 'explicit'
+tools.sessions.storage_type = 'ram'
+tools.sessions.timeout = 10
+tools.wokauth.on = True
+
+[/data/debugreports]
+tools.staticdir.on = True
+tools.staticdir.dir = wok.config.PluginPaths('gingerbase').state_dir + '/debugreports'
+tools.nocache.on = False
+tools.wokauth.on = True
+tools.staticdir.content_types = {'xz': 'application/x-xz'}
+
+[/help]
+tools.staticdir.on = True
+tools.staticdir.dir = wok.config.PluginPaths('gingerbase').ui_dir + '/pages/help'
+tools.nocache.on = True
+
diff --git a/plugins/gingerbase/gingerbase.py b/plugins/gingerbase/gingerbase.py
new file mode 100644
index 0000000..95a088a
--- /dev/null
+++ b/plugins/gingerbase/gingerbase.py
@@ -0,0 +1,62 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import json
+import os
+
+from wok.i18n import messages
+from wok.root import WokRoot
+
+import config
+import mockmodel
+from control import sub_nodes
+from model import model as gingerBaseModel
+
+
+class GingerBase(WokRoot):
+ def __init__(self, wok_options):
+ if hasattr(wok_options, "model"):
+ self.model = wok_options.model
+ elif wok_options.test:
+ self.model = mockmodel.MockModel()
+ else:
+ self.model = gingerBaseModel.Model()
+
+ dev_env = wok_options.environment != 'production'
+ super(GingerBase, self).__init__(self.model, dev_env)
+
+ for ident, node in sub_nodes.items():
+ setattr(self, ident, node(self.model))
+
+ self.api_schema = json.load(open(os.path.join(os.path.dirname(
+ os.path.abspath(__file__)), 'API.json')))
+ self.paths = config.gingerBasePaths
+ self.domain = 'gingerbase'
+ self.messages = messages
+
+ make_dirs = [
+ os.path.abspath(config.get_debugreports_path()),
+ ]
+ for directory in make_dirs:
+ if not os.path.isdir(directory):
+ os.makedirs(directory)
+
+ def get_custom_conf(self):
+ return config.GingerBaseConfig()
+
diff --git a/plugins/gingerbase/i18n.py b/plugins/gingerbase/i18n.py
new file mode 100644
index 0000000..fa93ee6
--- /dev/null
+++ b/plugins/gingerbase/i18n.py
@@ -0,0 +1,96 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import gettext
+
+_ = gettext.gettext
+
+
+messages = {
+ "GGBAPI0001E": _("Unknown parameter %(value)s"),
+
+ "GGBASYNC0001E": _("Timeout of %(seconds)s seconds expired while running task '%(task)s."),
+
+ "GGBDISKS0001E": _("Error while getting block devices. Details: %(err)s"),
+ "GGBDISKS0002E": _("Error while getting block device information for %(device)s."),
+
+ "GGBDR0001E": _("Debug report %(name)s does not exist"),
+ "GGBDR0002E": _("Debug report tool not found in system"),
+ "GGBDR0003E": _("Unable to create debug report %(name)s. Details: %(err)s."),
+ "GGBDR0004E": _("Can not find any debug report with the given name %(name)s"),
+ "GGBDR0005E": _("Unable to generate debug report %(name)s. Details: %(err)s"),
+ "GGBDR0006E": _("You should give a name for the debug report file."),
+ "GGBDR0007E": _("Debug report name must be a string. Only letters, digits, underscore ('_') and hyphen ('-') are allowed."),
+ "GGBDR0008E": _("The debug report with specified name \"%(name)s\" already exists. Please use another one."),
+
+ "GGBPART0001E": _("Partition %(name)s does not exist in the host"),
+
+ "GGBHOST0001E": _("Unable to shutdown host machine as there are running virtual machines"),
+ "GGBHOST0002E": _("Unable to reboot host machine as there are running virtual machines"),
+ "GGBHOST0003E": _("Node device '%(name)s' not found"),
+ "GGBHOST0004E": _("Conflicting flag filters specified."),
+ "GGBHOST0005E": _("When specifying CPU topology, each element must be an integer greater than zero."),
+
+ "GGBPKGUPD0001E": _("No packages marked for update"),
+ "GGBPKGUPD0002E": _("Package %(name)s is not marked to be updated."),
+ "GGBPKGUPD0003E": _("Error while getting packages marked to be updated. Details: %(err)s"),
+ "GGBPKGUPD0004E": _("There is no compatible package manager for this system."),
+
+
+ "GGBREPOS0001E": _("YUM Repository ID must be one word only string."),
+ "GGBREPOS0002E": _("Repository URL must be an http://, ftp:// or file:// URL."),
+ "GGBREPOS0003E": _("Repository configuration is a dictionary with specific values according to repository type."),
+ "GGBREPOS0004E": _("Distribution to DEB repository must be a string"),
+ "GGBREPOS0005E": _("Components to DEB repository must be listed in a array"),
+ "GGBREPOS0006E": _("Components to DEB repository must be a string"),
+ "GGBREPOS0007E": _("Mirror list to repository must be a string"),
+ "GGBREPOS0008E": _("YUM Repository name must be string."),
+ "GGBREPOS0009E": _("GPG check must be a boolean value."),
+ "GGBREPOS0010E": _("GPG key must be a URL pointing to the ASCII-armored file."),
+ "GGBREPOS0011E": _("Could not update repository %(repo_id)s."),
+ "GGBREPOS0012E": _("Repository %(repo_id)s does not exist."),
+ "GGBREPOS0013E": _("Specify repository base URL, mirror list or metalink in order to create or update a YUM repository."),
+ "GGBREPOS0014E": _("Repository management tool was not recognized for your system."),
+ "GGBREPOS0015E": _("Repository %(repo_id)s is already enabled."),
+ "GGBREPOS0016E": _("Repository %(repo_id)s is already disabled."),
+ "GGBREPOS0017E": _("Could not remove repository %(repo_id)s."),
+ "GGBREPOS0018E": _("Could not write repository configuration file %(repo_file)s"),
+ "GGBREPOS0019E": _("Specify repository distribution in order to create a DEB repository."),
+ "GGBREPOS0020E": _("Could not enable repository %(repo_id)s."),
+ "GGBREPOS0021E": _("Could not disable repository %(repo_id)s."),
+ "GGBREPOS0022E": _("YUM Repository ID already exists"),
+ "GGBREPOS0023E": _("YUM Repository name must be a string"),
+ "GGBREPOS0024E": _("Unable to list repositories. Details: '%(err)s'"),
+ "GGBREPOS0025E": _("Unable to retrieve repository information. Details: '%(err)s'"),
+ "GGBREPOS0026E": _("Unable to add repository. Details: '%(err)s'"),
+ "GGBREPOS0027E": _("Unable to remove repository. Details: '%(err)s'"),
+ "GGBREPOS0028E": _("Configuration items: '%(items)s' are not supported by repository manager"),
+ "GGBREPOS0029E": _("Repository metalink must be an http://, ftp:// or file:// URL."),
+ "GGBREPOS0030E": _("Cannot specify mirrorlist and metalink at the same time."),
+
+
+ "GGBCPUINF0001E": _("The number of vCPUs is too large for this system."),
+ "GGBCPUINF0002E": _("Invalid vCPU/topology combination."),
+ "GGBCPUINF0003E": _("This host (or current configuration) does not allow CPU topology."),
+ "GGBCPUINF0004E": _("This host (or current configuration) does not allow to fetch lscpu details."),
+ "GGBCPUINF0005E": _("This host (or current configuration) does not provide Socket(s) information."),
+ "GGBCPUINF0006E": _("This host (or current configuration) does not provide Core(s) per socket information."),
+ "GGBCPUINF0007E": _("This host (or current configuration) does not provide Thread(s) per core information."),
+
+}
diff --git a/plugins/gingerbase/lscpu.py b/plugins/gingerbase/lscpu.py
new file mode 100644
index 0000000..af1c170
--- /dev/null
+++ b/plugins/gingerbase/lscpu.py
@@ -0,0 +1,122 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+import logging
+
+from wok.utils import run_command
+from wok.exception import NotFoundError
+
+
+class LsCpu(object):
+ """
+ Get CPU information about a CPU hyper threading/architecture on x86
+ """
+ def log_error(e):
+ """
+ param e: error details to be logged
+ """
+ log = logging.getLogger('Util')
+ log.warning('Exception in fetching the CPU architecture details: %s', e)
+
+ def __init__(self):
+ self.lsCpuInfo = {}
+ try:
+ # lscpu - display information about the CPU architecture
+ out, error, rc = run_command(['lscpu'])
+ # Output of lscpu on x86 is expected to be:
+ # Architecture: x86_64
+ # CPU op-mode(s): 32-bit, 64-bit
+ # Byte Order: Little Endian
+ # CPU(s): 4
+ # On-line CPU(s) list: 0-3
+ # Thread(s) per core: 2
+ # Core(s) per socket: 2
+ # Socket(s): 1
+ # NUMA node(s): 1
+ # Vendor ID: GenuineIntel
+ # CPU family: 6
+ # Model: 42
+ # Model name: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz
+ # Stepping: 7
+ # CPU MHz: 976.421
+ # CPU max MHz: 3300.0000
+ # CPU min MHz: 800.0000
+ # BogoMIPS: 5182.99
+ # Virtualization: VT-x
+ # L1d cache: 32K
+ # L1i cache: 32K
+ # L2 cache: 256K
+ # L3 cache: 3072K
+ # NUMA node0 CPU(s): 0-3
+
+ if not rc and (not out.isspace()):
+ lscpuout = out.split('\n')
+ if lscpuout and len(lscpuout) > 0:
+ for line in lscpuout:
+ if ":" in line and (len(line.split(':')) == 2) :
+ self.lsCpuInfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
+ else:
+ continue
+ except Exception, e:
+ self.log_error(e)
+ raise NotFoundError("GGBCPUINF0004E")
+
+ def get_sockets(self):
+ """
+ param self: object of the class self
+ return: Socket(s) (information about the CPU architecture)
+ """
+ try:
+ sockets = "Socket(s)"
+ if len(self.lsCpuInfo) > 0 and sockets in self.lsCpuInfo.keys():
+ return int(self.lsCpuInfo[sockets])
+ else:
+ raise NotFoundError("GGBCPUINF0005E")
+ except IndexError, e:
+ self.log_error(e)
+ raise NotFoundError("GGBCPUINF0005E")
+
+ def get_cores_per_socket(self):
+ """
+ param self: object of the class self
+ return: Core(s) per socket (information about the CPU architecture)
+ """
+ try:
+ cores_per_socket = "Core(s) per socket"
+ if len(self.lsCpuInfo) > 0 and cores_per_socket in self.lsCpuInfo.keys():
+ return int(self.lsCpuInfo[cores_per_socket])
+ else:
+ raise NotFoundError("GGBCPUINF0006E")
+ except IndexError, e:
+ self.log_error(e)
+ raise NotFoundError("GGBCPUINF0006E")
+
+ def get_threads_per_core(self):
+ """
+ param self: object of the class self
+ return: Thread(s) per core (information about the CPU architecture)
+ """
+ try:
+ threads_per_core = "Thread(s) per core"
+ if len(self.lsCpuInfo) > 0 and threads_per_core in self.lsCpuInfo.keys():
+ return int(self.lsCpuInfo[threads_per_core])
+ else:
+ raise NotFoundError("GGBCPUINF0007E")
+ except IndexError, e:
+ self.log_error(e)
+ raise NotFoundError("GGBCPUINF0007E")
diff --git a/plugins/gingerbase/mockmodel.py b/plugins/gingerbase/mockmodel.py
new file mode 100644
index 0000000..b92a24d
--- /dev/null
+++ b/plugins/gingerbase/mockmodel.py
@@ -0,0 +1,298 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import lxml.etree as ET
+import os
+import random
+import time
+
+from wok.objectstore import ObjectStore
+from wok.utils import add_task, wok_log
+
+import config
+from model import cpuinfo
+from model.debugreports import DebugReportsModel
+from model.model import Model
+
+
+fake_user = {'root': 'letmein!'}
+mockmodel_defaults = {'domain': 'test', 'arch': 'i686'}
+
+
+class MockModel(Model):
+
+ def __init__(self, objstore_loc=None):
+ # Override osinfo.defaults to ajust the values according to
+ # test:///default driver
+
+ self._mock_devices = MockDevices()
+ self._mock_partitions = MockPartitions()
+ self._mock_swupdate = MockSoftwareUpdate()
+ self._mock_repositories = MockRepositories()
+
+ cpuinfo.get_topo_capabilities = \
+ MockModel.get_topo_capabilities
+
+ super(MockModel, self).__init__(objstore_loc)
+ self.objstore_loc = objstore_loc
+ self.objstore = ObjectStore(objstore_loc)
+
+ # The MockModel methods are instantiated on runtime according to Model
+ # and BaseModel
+ # Because that a normal method override will not work here
+ # Instead of that we also need to do the override on runtime
+ for method in dir(self):
+ if method.startswith('_mock_'):
+ mock_method = getattr(self, method)
+ if not callable(mock_method):
+ continue
+
+ m = method[6:]
+ model_method = getattr(self, m)
+ setattr(self, '_model_' + m, model_method)
+ setattr(self, m, mock_method)
+
+ DebugReportsModel._gen_debugreport_file = self._gen_debugreport_file
+
+ def reset(self):
+ self._mock_swupdate = MockSoftwareUpdate()
+ self._mock_repositories = MockRepositories()
+
+ if hasattr(self, 'objstore'):
+ self.objstore = ObjectStore(self.objstore_loc)
+
+ @staticmethod
+ def get_topo_capabilities(conn):
+ # The libvirt test driver doesn't return topology.
+ xml = "<topology sockets='1' cores='2' threads='2'/>"
+ return ET.fromstring(xml)
+
+ def _gen_debugreport_file(self, name):
+ return add_task('/plugins/gingerbase/debugreports/%s' % name, self._create_log,
+ self.objstore, name)
+
+ def _create_log(self, cb, name):
+ path = config.get_debugreports_path()
+ tmpf = os.path.join(path, name + '.tmp')
+ realf = os.path.join(path, name + '.txt')
+ length = random.randint(1000, 10000)
+ with open(tmpf, 'w') as fd:
+ while length:
+ fd.write('I am logged')
+ length = length - 1
+ os.rename(tmpf, realf)
+ cb("OK", True)
+
+ def _mock_host_shutdown(self, *name):
+ wok_log.info("The host system will be shutted down")
+
+ def _mock_host_reboot(self, *name):
+ wok_log.info("The host system will be rebooted")
+
+ def _mock_partitions_get_list(self):
+ return self._mock_partitions.partitions.keys()
+
+ def _mock_partition_lookup(self, name):
+ return self._mock_partitions.partitions[name]
+
+ def _mock_packagesupdate_get_list(self):
+ return self._mock_swupdate.pkgs.keys()
+
+ def _mock_packageupdate_lookup(self, pkg_name):
+ return self._mock_swupdate.pkgs[pkg_name]
+
+ def _mock_host_swupdate(self, args=None):
+ task_id = add_task('/plugins/gingerbase/host/swupdate', self._mock_swupdate.doUpdate,
+ self.objstore)
+ return self.task_lookup(task_id)
+
+ def _mock_repositories_get_list(self):
+ return self._mock_repositories.repos.keys()
+
+ def _mock_repositories_create(self, params):
+ # Create a repo_id if not given by user. The repo_id will follow
+ # the format gingerbase_repo_<integer>, where integer is the number of
+ # seconds since the Epoch (January 1st, 1970), in UTC.
+ repo_id = params.get('repo_id', None)
+ if repo_id is None:
+ repo_id = "gingerbase_repo_%s" % str(int(time.time() * 1000))
+ params.update({'repo_id': repo_id})
+
+ config = params.get('config', {})
+ info = {'repo_id': repo_id,
+ 'baseurl': params['baseurl'],
+ 'enabled': True,
+ 'config': {'repo_name': config.get('repo_name', repo_id),
+ 'gpgkey': config.get('gpgkey', []),
+ 'gpgcheck': True,
+ 'mirrorlist': params.get('mirrorlist', '')}}
+ self._mock_repositories.repos[repo_id] = info
+ return repo_id
+
+ def _mock_repository_lookup(self, repo_id):
+ return self._mock_repositories.repos[repo_id]
+
+ def _mock_repository_delete(self, repo_id):
+ del self._mock_repositories.repos[repo_id]
+
+ def _mock_repository_enable(self, repo_id):
+ self._mock_repositories.repos[repo_id]['enabled'] = True
+
+ def _mock_repository_disable(self, repo_id):
+ self._mock_repositories.repos[repo_id]['enabled'] = False
+
+ def _mock_repository_update(self, repo_id, params):
+ self._mock_repositories.repos[repo_id].update(params)
+ return repo_id
+
+class MockPartitions(object):
+ def __init__(self):
+ self.partitions = {"vdx": {"available": True, "name": "vdx",
+ "fstype": "", "path": "/dev/vdx",
+ "mountpoint": "", "type": "disk",
+ "size": "2147483648"},
+ "vdz": {"available": True, "name": "vdz",
+ "fstype": "", "path": "/dev/vdz",
+ "mountpoint": "", "type": "disk",
+ "size": "2147483648"}}
+
+
+class MockDevices(object):
+ def __init__(self):
+ self.devices = {
+ 'computer': {'device_type': 'system',
+ 'firmware': {'release_date': '01/01/2012',
+ 'vendor': 'LENOVO',
+ 'version': 'XXXXX (X.XX )'},
+ 'hardware': {'serial': 'PXXXXX',
+ 'uuid':
+ '9d660370-820f-4241-8731-5a60c97e8aa6',
+ 'vendor': 'LENOVO',
+ 'version': 'ThinkPad T420'},
+ 'name': 'computer',
+ 'parent': None,
+ 'product': '4180XXX'},
+ 'pci_0000_03_00_0': {'bus': 3,
+ 'device_type': 'pci',
+ 'domain': 0,
+ 'driver': {'name': 'iwlwifi'},
+ 'function': 0,
+ 'iommuGroup': 7,
+ 'name': 'pci_0000_03_00_0',
+ 'parent': 'computer',
+ 'path':
+ '/sys/devices/pci0000:00/0000:03:00.0',
+ 'product': {
+ 'description':
+ 'Centrino Advanced-N 6205 [Taylor Peak]',
+ 'id': '0x0085'},
+ 'slot': 0,
+ 'vendor': {'description': 'Intel Corporation',
+ 'id': '0x8086'}},
+ 'pci_0000_0d_00_0': {'bus': 13,
+ 'device_type': 'pci',
+ 'domain': 0,
+ 'driver': {'name': 'sdhci-pci'},
+ 'function': 0,
+ 'iommuGroup': 7,
+ 'name': 'pci_0000_0d_00_0',
+ 'parent': 'computer',
+ 'path':
+ '/sys/devices/pci0000:00/0000:0d:00.0',
+ 'product': {'description':
+ 'PCIe SDXC/MMC Host Controller',
+ 'id': '0xe823'},
+ 'slot': 0,
+ 'vendor': {'description': 'Ricoh Co Ltd',
+ 'id': '0x1180'}},
+ 'scsi_host0': {'adapter': {'fabric_wwn': '37df6c1efa1b4388',
+ 'type': 'fc_host',
+ 'wwnn': 'efb6563f06434a98',
+ 'wwpn': '742f32073aab45d7'},
+ 'device_type': 'scsi_host',
+ 'host': 0,
+ 'name': 'scsi_host0',
+ 'parent': 'computer',
+ 'path': '/sys/devices/pci0000:00/0000:40:00.0/0'},
+ 'scsi_host1': {'adapter': {'fabric_wwn': '542efa5dced34123',
+ 'type': 'fc_host',
+ 'wwnn': 'b7433a40c9b84092',
+ 'wwpn': '25c1f485ae42497f'},
+ 'device_type': 'scsi_host',
+ 'host': 0,
+ 'name': 'scsi_host1',
+ 'parent': 'computer',
+ 'path': '/sys/devices/pci0000:00/0000:40:00.0/1'},
+ 'scsi_host2': {'adapter': {'fabric_wwn': '5c373c334c20478d',
+ 'type': 'fc_host',
+ 'wwnn': 'f2030bec4a254e6b',
+ 'wwpn': '07dbca4164d44096'},
+ 'device_type': 'scsi_host',
+ 'host': 0,
+ 'name': 'scsi_host2',
+ 'parent': 'computer',
+ 'path': '/sys/devices/pci0000:00/0000:40:00.0/2'}}
+
+
+class MockSoftwareUpdate(object):
+ def __init__(self):
+ self.pkgs = {
+ 'udevmountd': {'repository': 'openSUSE-13.1-Update',
+ 'version': '0.81.5-14.1',
+ 'arch': 'x86_64',
+ 'package_name': 'udevmountd'},
+ 'sysconfig-network': {'repository': 'openSUSE-13.1-Extras',
+ 'version': '0.81.5-14.1',
+ 'arch': 'x86_64',
+ 'package_name': 'sysconfig-network'},
+ 'libzypp': {'repository': 'openSUSE-13.1-Update',
+ 'version': '13.9.0-10.1',
+ 'arch': 'noarch',
+ 'package_name': 'libzypp'}}
+ self._num2update = 3
+
+ def doUpdate(self, cb, params):
+ msgs = []
+ for pkg in self.pkgs.keys():
+ msgs.append("Updating package %s" % pkg)
+ cb('\n'.join(msgs))
+ time.sleep(1)
+
+ time.sleep(2)
+ msgs.append("All packages updated")
+ cb('\n'.join(msgs), True)
+
+ # After updating all packages any package should be listed to be
+ # updated, so reset self._packages
+ self.pkgs = {}
+
+
+class MockRepositories(object):
+ def __init__(self):
+ self.repos = {"gingerbase_repo_1392167832":
+ {"repo_id": "gingerbase_repo_1392167832",
+ "enabled": True,
+ "baseurl": "http://www.fedora.org",
+ "config": {"repo_name": "gingerbase_repo_1392167832",
+ "gpgkey": [],
+ "gpgcheck": True,
+ "mirrorlist": ""}}}
+
+
+
diff --git a/plugins/gingerbase/repositories.py b/plugins/gingerbase/repositories.py
new file mode 100644
index 0000000..a53dd49
--- /dev/null
+++ b/plugins/gingerbase/repositories.py
@@ -0,0 +1,529 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2014-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import copy
+import os
+import time
+import urlparse
+from ConfigParser import ConfigParser
+
+from wok.basemodel import Singleton
+from wok.exception import InvalidOperation, InvalidParameter
+from wok.exception import OperationFailed, NotFoundError, MissingParameter
+from wok.utils import validate_repo_url
+
+from config import gingerBaseLock
+from yumparser import get_yum_repositories, write_repo_to_file
+
+
+class Repositories(object):
+ __metaclass__ = Singleton
+
+ """
+ Class to represent and operate with repositories information.
+ """
+ def __init__(self):
+ try:
+ __import__('yum')
+ self._pkg_mnger = YumRepo()
+ except ImportError:
+ try:
+ __import__('apt_pkg')
+ self._pkg_mnger = AptRepo()
+ except ImportError:
+ raise InvalidOperation('GGBREPOS0014E')
+
+ def addRepository(self, params):
+ """
+ Add and enable a new repository
+ """
+ config = params.get('config', {})
+ extra_keys = list(
+ set(config.keys()).difference(set(self._pkg_mnger.CONFIG_ENTRY)))
+ if len(extra_keys) > 0:
+ raise InvalidParameter("GGBREPOS0028E",
+ {'items': ",".join(extra_keys)})
+
+ return self._pkg_mnger.addRepo(params)
+
+ def getRepositories(self):
+ """
+ Return a dictionary with all Ginger Base repositories. Each element uses
+ the format {<repo_id>: {repo}}, where repo is a dictionary in the
+ repositories.Repositories() format.
+ """
+ return self._pkg_mnger.getRepositoriesList()
+
+ def getRepository(self, repo_id):
+ """
+ Return a dictionary with all info from a given repository ID.
+ """
+ info = self._pkg_mnger.getRepo(repo_id)
+ info['repo_id'] = repo_id
+ return info
+
+ def enableRepository(self, repo_id):
+ """
+ Enable a repository.
+ """
+ return self._pkg_mnger.toggleRepo(repo_id, True)
+
+ def disableRepository(self, repo_id):
+ """
+ Disable a given repository.
+ """
+ return self._pkg_mnger.toggleRepo(repo_id, False)
+
+ def updateRepository(self, repo_id, params):
+ """
+ Update the information of a given repository.
+ The input is the repo_id of the repository to be updated and a dict
+ with the information to be updated.
+ """
+ return self._pkg_mnger.updateRepo(repo_id, params)
+
+ def removeRepository(self, repo_id):
+ """
+ Remove a given repository
+ """
+ return self._pkg_mnger.removeRepo(repo_id)
+
+
+class YumRepo(object):
+ """
+ Class to represent and operate with YUM repositories.
+ It's loaded only on those systems listed at YUM_DISTROS and loads necessary
+ modules in runtime.
+ """
+ TYPE = 'yum'
+ DEFAULT_CONF_DIR = "/etc/yum.repos.d"
+ CONFIG_ENTRY = ('repo_name', 'mirrorlist', 'metalink')
+
+ def __init__(self):
+ self._confdir = self.DEFAULT_CONF_DIR
+
+ def _get_repos(self, errcode):
+ try:
+ gingerBaseLock.acquire()
+ repos = get_yum_repositories()
+ except Exception, e:
+ gingerBaseLock.release()
+ raise OperationFailed(errcode, {'err': str(e)})
+ finally:
+ gingerBaseLock.release()
+
+ return repos
+
+ def getRepositoriesList(self):
+ """
+ Return a list of repositories IDs
+ """
+ repos = self._get_repos('GGBREPOS0024E')
+ return repos.keys()
+
+ def getRepo(self, repo_id):
+ """
+ Return a dictionary in the repositories.Repositories() of the given
+ repository ID format with the information of a YumRepository object.
+ """
+ repos = self._get_repos('GGBREPOS0025E')
+
+ if repo_id not in repos.keys():
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ entry = repos.get(repo_id)
+
+ info = {}
+ info['enabled'] = entry.enabled
+ info['baseurl'] = entry.baseurl or ''
+ info['config'] = {}
+ info['config']['repo_name'] = entry.name or ''
+ info['config']['gpgcheck'] = entry.gpgcheck
+ info['config']['gpgkey'] = entry.gpgkey or ''
+ info['config']['mirrorlist'] = entry.mirrorlist or ''
+ info['config']['metalink'] = entry.metalink or ''
+ return info
+
+ def addRepo(self, params):
+ """
+ Add a given repository to YumBase
+ """
+ # At least one base url, or one mirror, must be given.
+ baseurl = params.get('baseurl', '')
+
+ config = params.get('config', {})
+ mirrorlist = config.get('mirrorlist', '')
+ metalink = config.get('metalink', '')
+ if not baseurl and not mirrorlist and not metalink:
+ raise MissingParameter("GGBREPOS0013E")
+
+ if baseurl:
+ validate_repo_url(baseurl)
+
+ if mirrorlist:
+ validate_repo_url(mirrorlist)
+
+ if metalink:
+ validate_repo_url(metalink)
+
+ if mirrorlist and metalink:
+ raise InvalidOperation('GGBREPOS0030E')
+
+ repo_id = params.get('repo_id', None)
+ if repo_id is None:
+ repo_id = "gingerbase_repo_%s" % str(int(time.time() * 1000))
+
+ repos = self._get_repos('GGBREPOS0026E')
+ if repo_id in repos.keys():
+ raise InvalidOperation("GGBREPOS0022E", {'repo_id': repo_id})
+
+ repo_name = config.get('repo_name', repo_id)
+ repo = {'baseurl': baseurl, 'mirrorlist': mirrorlist,
+ 'name': repo_name, 'gpgcheck': 1,
+ 'gpgkey': [], 'enabled': 1, 'metalink': metalink}
+
+ # write a repo file in the system with repo{} information.
+ parser = ConfigParser()
+ parser.add_section(repo_id)
+
+ for key, value in repo.iteritems():
+ if value:
+ parser.set(repo_id, key, value)
+
+ repofile = os.path.join(self._confdir, repo_id + '.repo')
+ try:
+ with open(repofile, 'w') as fd:
+ parser.write(fd)
+ except:
+ raise OperationFailed("GGBREPOS0018E",
+ {'repo_file': repofile})
+
+ return repo_id
+
+ def toggleRepo(self, repo_id, enable):
+ repos = self._get_repos('GGBREPOS0011E')
+ if repo_id not in repos.keys():
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ entry = repos.get(repo_id)
+ if enable and entry.enabled:
+ raise InvalidOperation("GGBREPOS0015E", {'repo_id': repo_id})
+
+ if not enable and not entry.enabled:
+ raise InvalidOperation("GGBREPOS0016E", {'repo_id': repo_id})
+
+ gingerBaseLock.acquire()
+ try:
+ if enable:
+ entry.enable()
+ else:
+ entry.disable()
+
+ write_repo_to_file(entry)
+ except:
+ if enable:
+ raise OperationFailed("GGBREPOS0020E", {'repo_id': repo_id})
+
+ raise OperationFailed("GGBREPOS0021E", {'repo_id': repo_id})
+ finally:
+ gingerBaseLock.release()
+
+ return repo_id
+
+ def updateRepo(self, repo_id, params):
+ """
+ Update a given repository in repositories.Repositories() format
+ """
+ repos = self._get_repos('GGBREPOS0011E')
+ if repo_id not in repos.keys():
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ entry = repos.get(repo_id)
+
+ baseurl = params.get('baseurl', None)
+ config = params.get('config', {})
+ mirrorlist = config.get('mirrorlist', None)
+ metalink = config.get('metalink', None)
+
+ if baseurl is not None and len(baseurl.strip()) == 0:
+ baseurl = None
+
+ if mirrorlist is not None and len(mirrorlist.strip()) == 0:
+ mirrorlist = None
+
+ if metalink is not None and len(metalink.strip()) == 0:
+ metalink = None
+
+ if baseurl is None and mirrorlist is None and metalink is None:
+ raise MissingParameter("GGBREPOS0013E")
+
+ if baseurl is not None:
+ validate_repo_url(baseurl)
+ entry.baseurl = baseurl
+
+ if mirrorlist is not None:
+ validate_repo_url(mirrorlist)
+ entry.mirrorlist = mirrorlist
+
+ if metalink is not None:
+ validate_repo_url(metalink)
+ entry.metalink = metalink
+
+ if mirrorlist and metalink:
+ raise InvalidOperation('GGBREPOS0030E')
+
+ entry.id = params.get('repo_id', repo_id)
+ entry.name = config.get('repo_name', entry.name)
+ entry.gpgcheck = config.get('gpgcheck', entry.gpgcheck)
+ entry.gpgkey = config.get('gpgkey', entry.gpgkey)
+ gingerBaseLock.acquire()
+ write_repo_to_file(entry)
+ gingerBaseLock.release()
+ return repo_id
+
+ def removeRepo(self, repo_id):
+ """
+ Remove a given repository
+ """
+ repos = self._get_repos('GGBREPOS0027E')
+ if repo_id not in repos.keys():
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ entry = repos.get(repo_id)
+ parser = ConfigParser()
+ with open(entry.repofile) as fd:
+ parser.readfp(fd)
+
+ if len(parser.sections()) == 1:
+ os.remove(entry.repofile)
+ return
+
+ parser.remove_section(repo_id)
+ with open(entry.repofile, "w") as fd:
+ parser.write(fd)
+
+
+class AptRepo(object):
+ """
+ Class to represent and operate with YUM repositories.
+ It's loaded only on those systems listed at YUM_DISTROS and loads necessary
+ modules in runtime.
+ """
+ TYPE = 'deb'
+ GINGERBASE_LIST = "gingerbase-source.list"
+ CONFIG_ENTRY = ('dist', 'comps')
+
+ def __init__(self):
+ getattr(__import__('apt_pkg'), 'init_config')()
+ getattr(__import__('apt_pkg'), 'init_system')()
+ config = getattr(__import__('apt_pkg'), 'config')
+ self.pkg_lock = getattr(__import__('apt_pkg'), 'SystemLock')
+ module = __import__('aptsources.sourceslist', globals(), locals(),
+ ['SourcesList'], -1)
+
+ self._sourceparts_path = '/%s%s' % (
+ config.get('Dir::Etc'), config.get('Dir::Etc::sourceparts'))
+ self._sourceslist = getattr(module, 'SourcesList')
+ self.filename = os.path.join(self._sourceparts_path, self.GINGERBASE_LIST)
+ if not os.path.exists(self.filename):
+ with open(self.filename, 'w') as fd:
+ fd.write("# This file is managed by Ginger Base and it must not "
+ "be modified manually\n")
+
+ def _get_repos(self):
+ try:
+ with self.pkg_lock():
+ repos = self._sourceslist()
+ repos.refresh()
+ except Exception, e:
+ gingerBaseLock.release()
+ raise OperationFailed('GGBREPOS0025E', {'err': e.message})
+
+ return repos
+
+ def _get_repo_id(self, repo):
+ data = urlparse.urlparse(repo.uri)
+ name = data.hostname or data.path
+ return '%s-%s-%s' % (name, repo.dist, "-".join(repo.comps))
+
+ def _get_source_entry(self, repo_id):
+ gingerBaseLock.acquire()
+ repos = self._get_repos()
+ gingerBaseLock.release()
+
+ for r in repos:
+ # Ignore deb-src repositories
+ if r.type != 'deb':
+ continue
+
+ if self._get_repo_id(r) != repo_id:
+ continue
+
+ return r
+
+ return None
+
+ def getRepositoriesList(self):
+ """
+ Return a list of repositories IDs
+
+ APT repositories there aren't the concept about repository ID, so for
+ internal control, the repository ID will be built as described in
+ _get_repo_id()
+ """
+ gingerBaseLock.acquire()
+ repos = self._get_repos()
+ gingerBaseLock.release()
+
+ res = []
+ for r in repos:
+ # Ignore deb-src repositories
+ if r.type != 'deb':
+ continue
+
+ res.append(self._get_repo_id(r))
+
+ return res
+
+ def getRepo(self, repo_id):
+ """
+ Return a dictionary in the repositories.Repositories() format of the
+ given repository ID with the information of a SourceEntry object.
+ """
+ r = self._get_source_entry(repo_id)
+ if r is None:
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ info = {'enabled': not r.disabled,
+ 'baseurl': r.uri,
+ 'config': {'dist': r.dist,
+ 'comps': r.comps}}
+ return info
+
+ def addRepo(self, params):
+ """
+ Add a new APT repository based on <params>
+ """
+ # To create a APT repository the dist is a required parameter
+ # (in addition to baseurl, verified on controller through API.json)
+ config = params.get('config', None)
+ if config is None:
+ raise MissingParameter("GGBREPOS0019E")
+
+ if 'dist' not in config.keys():
+ raise MissingParameter("GGBREPOS0019E")
+
+ uri = params['baseurl']
+ dist = config['dist']
+ comps = config.get('comps', [])
+
+ validate_repo_url(uri)
+
+ gingerBaseLock.acquire()
+ try:
+ repos = self._get_repos()
+ source_entry = repos.add('deb', uri, dist, comps,
+ file=self.filename)
+ with self.pkg_lock():
+ repos.save()
+ except Exception as e:
+ gingerBaseLock.release()
+ raise OperationFailed("GGBREPOS0026E", {'err': e.message})
+ gingerBaseLock.release()
+ return self._get_repo_id(source_entry)
+
+ def toggleRepo(self, repo_id, enable):
+ """
+ Enable a given repository
+ """
+ r = self._get_source_entry(repo_id)
+ if r is None:
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ if enable and not r.disabled:
+ raise InvalidOperation("GGBREPOS0015E", {'repo_id': repo_id})
+
+ if not enable and r.disabled:
+ raise InvalidOperation("GGBREPOS0016E", {'repo_id': repo_id})
+
+ if enable:
+ line = 'deb'
+ else:
+ line = '#deb'
+
+ gingerBaseLock.acquire()
+ try:
+ repos = self._get_repos()
+ with self.pkg_lock():
+ repos.remove(r)
+ repos.add(line, r.uri, r.dist, r.comps, file=self.filename)
+ repos.save()
+ except:
+ gingerBaseLock.release()
+ if enable:
+ raise OperationFailed("GGBREPOS0020E", {'repo_id': repo_id})
+
+ raise OperationFailed("GGBREPOS0021E", {'repo_id': repo_id})
+ finally:
+ gingerBaseLock.release()
+
+ return repo_id
+
+ def updateRepo(self, repo_id, params):
+ """
+ Update a given repository in repositories.Repositories() format
+ """
+ old_info = self.getRepo(repo_id)
+ updated_info = copy.deepcopy(old_info)
+ updated_info['baseurl'] = params.get(
+ 'baseurl', updated_info['baseurl'])
+
+ if 'config' in params.keys():
+ config = params['config']
+ updated_info['config']['dist'] = config.get(
+ 'dist', old_info['config']['dist'])
+ updated_info['config']['comps'] = config.get(
+ 'comps', old_info['config']['comps'])
+
+ self.removeRepo(repo_id)
+ try:
+ return self.addRepo(updated_info)
+ except:
+ self.addRepo(old_info)
+ raise
+
+ def removeRepo(self, repo_id):
+ """
+ Remove a given repository
+ """
+ r = self._get_source_entry(repo_id)
+ if r is None:
+ raise NotFoundError("GGBREPOS0012E", {'repo_id': repo_id})
+
+ gingerBaseLock.acquire()
+ try:
+ repos = self._get_repos()
+ with self.pkg_lock():
+ repos.remove(r)
+ repos.save()
+ except:
+ gingerBaseLock.release()
+ raise OperationFailed("GGBREPOS0017E", {'repo_id': repo_id})
+ finally:
+ gingerBaseLock.release()
diff --git a/plugins/gingerbase/swupdate.py b/plugins/gingerbase/swupdate.py
new file mode 100644
index 0000000..f70130b
--- /dev/null
+++ b/plugins/gingerbase/swupdate.py
@@ -0,0 +1,263 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2014-2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import subprocess
+import time
+
+from wok.basemodel import Singleton
+from wok.exception import NotFoundError, OperationFailed
+from wok.utils import run_command, wok_log
+
+from config import gingerBaseLock
+from yumparser import get_yum_packages_list_update
+
+
+class SoftwareUpdate(object):
+ __metaclass__ = Singleton
+
+ """
+ Class to represent and operate with OS software update.
+ """
+ def __init__(self):
+ # This stores all packages to be updated for Ginger Base perspective. It's a
+ # dictionary of dictionaries, in the format {'package_name': package},
+ # where:
+ # package = {'package_name': <string>, 'version': <string>,
+ # 'arch': <string>, 'repository': <string>
+ # }
+ self._packages = {}
+
+ # This stores the number of packages to update
+ self._num2update = 0
+
+ # Get the distro of host machine and creates an object related to
+ # correct package management system
+ try:
+ __import__('yum')
+ wok_log.info("Loading YumUpdate features.")
+ self._pkg_mnger = YumUpdate()
+ except ImportError:
+ try:
+ __import__('apt')
+ wok_log.info("Loading AptUpdate features.")
+ self._pkg_mnger = AptUpdate()
+ except ImportError:
+ zypper_help = ["zypper", "--help"]
+ (stdout, stderr, returncode) = run_command(zypper_help)
+ if returncode == 0:
+ wok_log.info("Loading ZypperUpdate features.")
+ self._pkg_mnger = ZypperUpdate()
+ else:
+ raise Exception("There is no compatible package manager "
+ "for this system.")
+
+ def _scanUpdates(self):
+ """
+ Update self._packages with packages to be updated.
+ """
+ self._packages = {}
+ self._num2update = 0
+
+ # Call system pkg_mnger to get the packages as list of dictionaries.
+ for pkg in self._pkg_mnger.getPackagesList():
+
+ # Check if already exist a package in self._packages
+ pkg_id = pkg.get('package_name')
+ if pkg_id in self._packages.keys():
+ # package already listed to update. do nothing
+ continue
+
+ # Update the self._packages and self._num2update
+ self._packages[pkg_id] = pkg
+ self._num2update = self._num2update + 1
+
+ def getUpdates(self):
+ """
+ Return the self._packages.
+ """
+ self._scanUpdates()
+ return self._packages
+
+ def getUpdate(self, name):
+ """
+ Return a dictionary with all info from a given package name.
+ """
+ if name not in self._packages.keys():
+ raise NotFoundError('GGBPKGUPD0002E', {'name': name})
+
+ return self._packages[name]
+
+ def getNumOfUpdates(self):
+ """
+ Return the number of packages to be updated.
+ """
+ self._scanUpdates()
+ return self._num2update
+
+ def doUpdate(self, cb, params):
+ """
+ Execute the update
+ """
+ # reset messages
+ cb('')
+
+ cmd = self._pkg_mnger.update_cmd
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ msgs = []
+ while proc.poll() is None:
+ msgs.append(proc.stdout.readline())
+ cb(''.join(msgs))
+ time.sleep(0.5)
+
+ # read the final output lines
+ msgs.extend(proc.stdout.readlines())
+
+ retcode = proc.poll()
+ if retcode == 0:
+ return cb(''.join(msgs), True)
+
+ msgs.extend(proc.stderr.readlines())
+ return cb(''.join(msgs), False)
+
+
+class YumUpdate(object):
+ """
+ Class to represent and operate with YUM software update system.
+ It's loaded only on those systems listed at YUM_DISTROS and loads necessary
+ modules in runtime.
+ """
+ def __init__(self):
+ self._pkgs = {}
+ self.update_cmd = ["yum", "-y", "update"]
+
+ def _refreshUpdateList(self):
+ """
+ Update the list of packages to be updated in the system.
+ """
+ try:
+ gingerBaseLock.acquire()
+ self._pkgs = get_yum_packages_list_update()
+ except Exception, e:
+ raise OperationFailed('GGBPKGUPD0003E', {'err': str(e)})
+ finally:
+ gingerBaseLock.release()
+
+ def getPackagesList(self):
+ """
+ Return a list of package's dictionaries. Each dictionary contains the
+ information about a package, in the format:
+ package = {'package_name': <string>, 'version': <string>,
+ 'arch': <string>, 'repository': <string>}
+ """
+ self._refreshUpdateList()
+ pkg_list = []
+ for pkg in self._pkgs:
+ package = {'package_name': pkg.name, 'version': pkg.version,
+ 'arch': pkg.arch, 'repository': pkg.ui_from_repo}
+ pkg_list.append(package)
+ return pkg_list
+
+
+class AptUpdate(object):
+ """
+ Class to represent and operate with APT software update system.
+ It's loaded only on those systems listed at APT_DISTROS and loads necessary
+ modules in runtime.
+ """
+ def __init__(self):
+ self._pkgs = {}
+ self.pkg_lock = getattr(__import__('apt_pkg'), 'SystemLock')
+ self.update_cmd = ['apt-get', 'upgrade', '-y']
+
+ def _refreshUpdateList(self):
+ """
+ Update the list of packages to be updated in the system.
+ """
+ apt_cache = getattr(__import__('apt'), 'Cache')()
+ try:
+ with self.pkg_lock():
+ apt_cache.update()
+ apt_cache.upgrade()
+ self._pkgs = apt_cache.get_changes()
+ except Exception, e:
+ gingerBaseLock.release()
+ raise OperationFailed('GGBPKGUPD0003E', {'err': e.message})
+
+ def getPackagesList(self):
+ """
+ Return a list of package's dictionaries. Each dictionary contains the
+ information about a package, in the format
+ package = {'package_name': <string>, 'version': <string>,
+ 'arch': <string>, 'repository': <string>}
+ """
+ gingerBaseLock.acquire()
+ self._refreshUpdateList()
+ gingerBaseLock.release()
+ pkg_list = []
+ for pkg in self._pkgs:
+ package = {'package_name': pkg.shortname,
+ 'version': pkg.candidate.version,
+ 'arch': pkg._pkg.architecture,
+ 'repository': pkg.candidate.origins[0].label}
+ pkg_list.append(package)
+
+ return pkg_list
+
+
+class ZypperUpdate(object):
+ """
+ Class to represent and operate with Zypper software update system.
+ It's loaded only on those systems listed at ZYPPER_DISTROS and loads
+ necessary modules in runtime.
+ """
+ def __init__(self):
+ self._pkgs = {}
+ self.update_cmd = ["zypper", "--non-interactive", "update",
+ "--auto-agree-with-licenses"]
+
+ def _refreshUpdateList(self):
+ """
+ Update the list of packages to be updated in the system.
+ """
+ self._pkgs = []
+ cmd = ["zypper", "list-updates"]
+ (stdout, stderr, returncode) = run_command(cmd)
+
+ if len(stderr) > 0:
+ raise OperationFailed('GGBPKGUPD0003E', {'err': stderr})
+
+ for line in stdout.split('\n'):
+ if line.find('v |') >= 0:
+ info = line.split(' | ')
+ package = {'package_name': info[2], 'version': info[4],
+ 'arch': info[5], 'repository': info[1]}
+ self._pkgs.append(package)
+
+ def getPackagesList(self):
+ """
+ Return a list of package's dictionaries. Each dictionary contains the
+ information about a package, in the format
+ package = {'package_name': <string>, 'version': <string>,
+ 'arch': <string>, 'repository': <string>}
+ """
+ gingerBaseLock.acquire()
+ self._refreshUpdateList()
+ gingerBaseLock.release()
+ return self._pkgs
diff --git a/plugins/gingerbase/yumparser.py b/plugins/gingerbase/yumparser.py
new file mode 100644
index 0000000..06104a2
--- /dev/null
+++ b/plugins/gingerbase/yumparser.py
@@ -0,0 +1,283 @@
+#
+# Project Ginger Base
+#
+# Copyright IBM, Corp. 2015
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import subprocess
+from os import listdir
+from os.path import isfile, splitext
+
+
+class YumRepoObject(object):
+
+ def __init__(self, repo_id, repofile):
+ self.repo_id = repo_id
+ self.name = None
+ self.baseurl = None
+ self.enabled = True
+ self.gpgcheck = True
+ self.gpgkey = None
+ self.metalink = None
+ self.mirrorlist = None
+ self.repofile = repofile
+ self.string_attrs = ['baseurl', 'gpgkey', 'name',
+ 'metalink', 'mirrorlist']
+ self.boolean_attrs = ['enabled', 'gpgcheck']
+
+ def set_attribute(self, key, strvalue):
+ if key in self.string_attrs:
+ setattr(self, key, strvalue)
+ elif key in self.boolean_attrs:
+ setattr(self, key, (strvalue == '1'))
+
+ def get_attribute_str(self, key):
+ if key not in self.get_attributes():
+ return None
+
+ if key in self.boolean_attrs:
+ str_value = '1' if getattr(self, key) is True else '0'
+ else:
+ str_value = getattr(self, key)
+
+ if str_value is None:
+ return None
+
+ return key + '=' + str_value
+
+ def get_attributes(self):
+ return self.string_attrs + self.boolean_attrs
+
+ def enable(self):
+ self.enabled = True
+
+ def disable(self):
+ self.enabled = False
+
+ def __str__(self):
+ str_obj = '[' + self.repo_id + ']' + '\n'
+ for key in self.get_attributes():
+ if self.get_attribute_str(key) is not None:
+ str_obj += self.get_attribute_str(key) + '\n'
+ return str_obj
+
+
+def get_repo_files():
+ def _is_repository_file(f):
+ _, f_extension = splitext(f)
+ return isfile(f) and (f_extension == '.repo')
+
+ YUM_REPO_DIR = '/etc/yum.repos.d'
+ return [YUM_REPO_DIR+'/'+f for f in listdir(YUM_REPO_DIR)
+ if _is_repository_file(YUM_REPO_DIR+'/'+f)]
+
+
+def _ignore_line_repo_file(line):
+ return line.startswith("#") or '=' not in line
+
+
+def _get_repos_from_file(repo_file):
+ repos_from_file = {}
+ current_repo = None
+ current_repo_id = None
+ with open(repo_file) as f:
+ for line in f.readlines():
+ line = line.strip()
+ if line.startswith("["):
+ if current_repo is not None:
+ repos_from_file[current_repo_id] = current_repo
+ current_repo_id = line.strip('[]')
+ current_repo = YumRepoObject(current_repo_id, repo_file)
+ continue
+ if _ignore_line_repo_file(line):
+ continue
+ key, value = line.split('=', 1)
+ key = key.strip()
+ value = value.strip()
+ current_repo.set_attribute(key, value)
+
+ # add the last repo from file.
+ if current_repo is not None:
+ repos_from_file[current_repo_id] = current_repo
+
+ return repos_from_file
+
+
+def get_yum_repositories():
+ repo_files = get_repo_files()
+ repos = {}
+ for yum_repo in repo_files:
+ repos.update(_get_repos_from_file(yum_repo))
+
+ return repos
+
+
+def _retrieve_repo_line_index(data, repo):
+ repo_entry = '[' + repo.repo_id + ']\n'
+ try:
+ repo_index = data.index(repo_entry)
+ except:
+ return None
+ return repo_index
+
+
+def _update_repo_file_data(data, repo, repo_index):
+ remaining_repo_attrs = repo.get_attributes()
+
+ for i in range(repo_index + 1, len(data)):
+ line = data[i].strip()
+ if line.startswith('['):
+ break
+ if _ignore_line_repo_file(line):
+ continue
+ key, _ = line.split('=', 1)
+ key = key.strip()
+ attr_str = repo.get_attribute_str(key)
+ if attr_str is None:
+ continue
+ remaining_repo_attrs.remove(key)
+ data[i] = attr_str + '\n'
+
+ for attr in remaining_repo_attrs:
+ attr_str = repo.get_attribute_str(attr)
+ if attr_str is None:
+ continue
+ data.insert(repo_index+1, attr_str + '\n')
+
+ return data
+
+
+def write_repo_to_file(repo):
+ with open(repo.repofile) as f:
+ data = f.readlines()
+
+ repo_index = _retrieve_repo_line_index(data, repo)
+ if repo_index is None:
+ return
+
+ data = _update_repo_file_data(data, repo, repo_index)
+
+ with open(repo.repofile, 'w') as f:
+ f.writelines(data)
+
+
+def _get_last_line_repo(data, repo_index):
+ stop_delete_index = None
+ for i in range(repo_index+1, len(data)):
+ line = data[i].strip()
+ if line.startswith('['):
+ stop_delete_index = i - 1
+ break
+ if stop_delete_index is None:
+ stop_delete_index = len(data) - 1
+
+ return stop_delete_index
+
+
+def _remove_repo_file_data(data, repo_index):
+ last_line_repo = _get_last_line_repo(data, repo_index)
+ for i in range(last_line_repo, repo_index - 1, -1):
+ data.pop(i)
+ return data
+
+
+def delete_repo_from_file(repo):
+ with open(repo.repofile) as f:
+ data = f.readlines()
+
+ repo_index = _retrieve_repo_line_index(data, repo)
+ if repo_index is None:
+ return
+
+ data = _remove_repo_file_data(data, repo_index)
+
+ with open(repo.repofile, 'w') as f:
+ f.writelines(data)
+
+
+class YumUpdatePackageObject(object):
+
+ def __init__(self, name, arch, version, repo):
+ self.name = name
+ self.arch = arch
+ self.version = version
+ self.ui_from_repo = repo
+
+
+def _include_line_checkupdate_output(line):
+ tokens = line.split()
+
+ if len(tokens) != 3:
+ return False
+
+ if '.' not in tokens[0]:
+ return False
+
+ return True
+
+
+def _ignore_obsoleting_packages_in(output):
+ out = ''
+ for l in output.split('\n'):
+ if 'Obsoleting ' in l:
+ break
+ out += l + '\n'
+ return out
+
+
+def _filter_lines_checkupdate_output(output):
+ if output is None:
+ return []
+
+ output = _ignore_obsoleting_packages_in(output)
+
+ out = [l for l in output.split('\n')
+ if _include_line_checkupdate_output(l)]
+ return out
+
+
+def _get_yum_checkupdate_output():
+ cmd = ['yum', 'check-update', '-d0']
+ yum_update_cmd = subprocess.Popen(cmd,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ out, error = yum_update_cmd.communicate()
+ return_code = yum_update_cmd.returncode
+ if return_code == 1:
+ return None
+
+ return out
+
+
+def get_yum_packages_list_update(checkupdate_output=None):
+ if checkupdate_output is None:
+ checkupdate_output = _get_yum_checkupdate_output()
+
+ filtered_output = _filter_lines_checkupdate_output(checkupdate_output)
+
+ packages = []
+ for line in filtered_output:
+ line = line.split()
+ index = 0
+ name_arch = line[index]
+ index += 1
+ version = line[index]
+ index += 1
+ repo = line[index]
+ name, arch = name_arch.rsplit('.', 1)
+ packages.append(YumUpdatePackageObject(name, arch, version, repo))
+
+ return packages
diff --git a/plugins/kimchi/disks.py b/plugins/kimchi/disks.py
deleted file mode 100644
index eb40e3a..0000000
--- a/plugins/kimchi/disks.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2013-2015
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-import os.path
-import re
-import subprocess
-from parted import Device as PDevice
-from parted import Disk as PDisk
-
-from wok.exception import OperationFailed
-from wok.utils import wok_log
-
-
-def _get_dev_node_path(maj_min):
- """ Returns device node path given the device number 'major:min' """
-
- dm_name = "/sys/dev/block/%s/dm/name" % maj_min
- if os.path.exists(dm_name):
- with open(dm_name) as dm_f:
- content = dm_f.read().rstrip('\n')
- return "/dev/mapper/" + content
-
- uevent = "/sys/dev/block/%s/uevent" % maj_min
- with open(uevent) as ueventf:
- content = ueventf.read()
-
- data = dict(re.findall(r'(\S+)=(".*?"|\S+)', content.replace("\n", " ")))
-
- return "/dev/%s" % data["DEVNAME"]
-
-
-def _get_lsblk_devs(keys, devs=[]):
- lsblk = subprocess.Popen(
- ["lsblk", "-Pbo"] + [','.join(keys)] + devs,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- out, err = lsblk.communicate()
- if lsblk.returncode != 0:
- raise OperationFailed("KCHDISKS0001E", {'err': err})
-
- return _parse_lsblk_output(out, keys)
-
-
-def _get_dev_major_min(name):
- maj_min = None
-
- keys = ["NAME", "MAJ:MIN"]
- dev_list = _get_lsblk_devs(keys)
-
- for dev in dev_list:
- if dev['name'].split()[0] == name:
- maj_min = dev['maj:min']
- break
- else:
- raise OperationFailed("KCHDISKS0002E", {'device': name})
-
- return maj_min
-
-
-def _is_dev_leaf(devNodePath):
- try:
- # By default, lsblk prints a device information followed by children
- # device information
- childrenCount = len(
- _get_lsblk_devs(["NAME"], [devNodePath])) - 1
- except OperationFailed as e:
- # lsblk is known to fail on multipath devices
- # Assume these devices contain children
- wok_log.error(
- "Error getting device info for %s: %s", devNodePath, e)
- return False
-
- return childrenCount == 0
-
-
-def _is_dev_extended_partition(devType, devNodePath):
- if devType != 'part':
- return False
- diskPath = devNodePath.rstrip('0123456789')
- device = PDevice(diskPath)
- try:
- extended_part = PDisk(device).getExtendedPartition()
- except NotImplementedError as e:
- wok_log.warning(
- "Error getting extended partition info for dev %s type %s: %s",
- devNodePath, devType, e.message)
- # Treate disk with unsupported partiton table as if it does not
- # contain extended partitions.
- return False
- if extended_part and extended_part.path == devNodePath:
- return True
- return False
-
-
-def _parse_lsblk_output(output, keys):
- # output is on format key="value",
- # where key can be NAME, TYPE, FSTYPE, SIZE, MOUNTPOINT, etc
- lines = output.rstrip("\n").split("\n")
- r = []
- for line in lines:
- d = {}
- for key in keys:
- expression = r"%s=\".*?\"" % key
- match = re.search(expression, line)
- field = match.group()
- k, v = field.split('=', 1)
- d[k.lower()] = v[1:-1]
- r.append(d)
- return r
-
-
-def _get_vgname(devNodePath):
- """ Return volume group name of a physical volume. If the device node path
- is not a physical volume, return empty string. """
- pvs = subprocess.Popen(
- ["pvs", "--unbuffered", "--nameprefixes", "--noheadings",
- "-o", "vg_name", devNodePath],
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- out, err = pvs.communicate()
- if pvs.returncode != 0:
- return ""
-
- return re.findall(r"LVM2_VG_NAME='([^\']*)'", out)[0]
-
-
-def _is_available(name, devtype, fstype, mountpoint, majmin):
- devNodePath = _get_dev_node_path(majmin)
- # Only list unmounted and unformated and leaf and (partition or disk)
- # leaf means a partition, a disk has no partition, or a disk not held
- # by any multipath device. Physical volume belongs to no volume group
- # is also listed. Extended partitions should not be listed.
- if (devtype in ['part', 'disk', 'mpath'] and
- fstype in ['', 'LVM2_member'] and
- mountpoint == "" and
- _get_vgname(devNodePath) == "" and
- _is_dev_leaf(devNodePath) and
- not _is_dev_extended_partition(devtype, devNodePath)):
- return True
- return False
-
-
-def get_partitions_names(check=False):
- names = set()
- keys = ["NAME", "TYPE", "FSTYPE", "MOUNTPOINT", "MAJ:MIN"]
- # output is on format key="value",
- # where key can be NAME, TYPE, FSTYPE, MOUNTPOINT
- for dev in _get_lsblk_devs(keys):
- # split()[0] to avoid the second part of the name, after the
- # whiteline
- name = dev['name'].split()[0]
- if check and not _is_available(name, dev['type'], dev['fstype'],
- dev['mountpoint'], dev['maj:min']):
- continue
- names.add(name)
-
- return list(names)
-
-
-def get_partition_details(name):
- majmin = _get_dev_major_min(name)
- dev_path = _get_dev_node_path(majmin)
-
- keys = ["TYPE", "FSTYPE", "SIZE", "MOUNTPOINT"]
- try:
- dev = _get_lsblk_devs(keys, [dev_path])[0]
- except OperationFailed as e:
- wok_log.error(
- "Error getting partition info for %s: %s", name, e)
- return {}
-
- dev['available'] = _is_available(name, dev['type'], dev['fstype'],
- dev['mountpoint'], majmin)
- if dev['mountpoint']:
- # Sometimes the mountpoint comes with [SWAP] or other
- # info which is not an actual mount point. Filtering it
- regexp = re.compile(r"\[.*\]")
- if regexp.search(dev['mountpoint']) is not None:
- dev['mountpoint'] = ''
- dev['path'] = dev_path
- dev['name'] = name
- return dev
diff --git a/plugins/kimchi/repositories.py b/plugins/kimchi/repositories.py
deleted file mode 100644
index 9caabc4..0000000
--- a/plugins/kimchi/repositories.py
+++ /dev/null
@@ -1,529 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2014-2015
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-import copy
-import os
-import time
-import urlparse
-from ConfigParser import ConfigParser
-
-from wok.basemodel import Singleton
-from wok.exception import InvalidOperation, InvalidParameter
-from wok.exception import OperationFailed, NotFoundError, MissingParameter
-from wok.utils import validate_repo_url
-
-from config import kimchiLock
-from yumparser import get_yum_repositories, write_repo_to_file
-
-
-class Repositories(object):
- __metaclass__ = Singleton
-
- """
- Class to represent and operate with repositories information.
- """
- def __init__(self):
- try:
- __import__('yum')
- self._pkg_mnger = YumRepo()
- except ImportError:
- try:
- __import__('apt_pkg')
- self._pkg_mnger = AptRepo()
- except ImportError:
- raise InvalidOperation('KCHREPOS0014E')
-
- def addRepository(self, params):
- """
- Add and enable a new repository
- """
- config = params.get('config', {})
- extra_keys = list(
- set(config.keys()).difference(set(self._pkg_mnger.CONFIG_ENTRY)))
- if len(extra_keys) > 0:
- raise InvalidParameter("KCHREPOS0028E",
- {'items': ",".join(extra_keys)})
-
- return self._pkg_mnger.addRepo(params)
-
- def getRepositories(self):
- """
- Return a dictionary with all Kimchi's repositories. Each element uses
- the format {<repo_id>: {repo}}, where repo is a dictionary in the
- repositories.Repositories() format.
- """
- return self._pkg_mnger.getRepositoriesList()
-
- def getRepository(self, repo_id):
- """
- Return a dictionary with all info from a given repository ID.
- """
- info = self._pkg_mnger.getRepo(repo_id)
- info['repo_id'] = repo_id
- return info
-
- def enableRepository(self, repo_id):
- """
- Enable a repository.
- """
- return self._pkg_mnger.toggleRepo(repo_id, True)
-
- def disableRepository(self, repo_id):
- """
- Disable a given repository.
- """
- return self._pkg_mnger.toggleRepo(repo_id, False)
-
- def updateRepository(self, repo_id, params):
- """
- Update the information of a given repository.
- The input is the repo_id of the repository to be updated and a dict
- with the information to be updated.
- """
- return self._pkg_mnger.updateRepo(repo_id, params)
-
- def removeRepository(self, repo_id):
- """
- Remove a given repository
- """
- return self._pkg_mnger.removeRepo(repo_id)
-
-
-class YumRepo(object):
- """
- Class to represent and operate with YUM repositories.
- It's loaded only on those systems listed at YUM_DISTROS and loads necessary
- modules in runtime.
- """
- TYPE = 'yum'
- DEFAULT_CONF_DIR = "/etc/yum.repos.d"
- CONFIG_ENTRY = ('repo_name', 'mirrorlist', 'metalink')
-
- def __init__(self):
- self._confdir = self.DEFAULT_CONF_DIR
-
- def _get_repos(self, errcode):
- try:
- kimchiLock.acquire()
- repos = get_yum_repositories()
- except Exception, e:
- kimchiLock.release()
- raise OperationFailed(errcode, {'err': str(e)})
- finally:
- kimchiLock.release()
-
- return repos
-
- def getRepositoriesList(self):
- """
- Return a list of repositories IDs
- """
- repos = self._get_repos('KCHREPOS0024E')
- return repos.keys()
-
- def getRepo(self, repo_id):
- """
- Return a dictionary in the repositories.Repositories() of the given
- repository ID format with the information of a YumRepository object.
- """
- repos = self._get_repos('KCHREPOS0025E')
-
- if repo_id not in repos.keys():
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- entry = repos.get(repo_id)
-
- info = {}
- info['enabled'] = entry.enabled
- info['baseurl'] = entry.baseurl or ''
- info['config'] = {}
- info['config']['repo_name'] = entry.name or ''
- info['config']['gpgcheck'] = entry.gpgcheck
- info['config']['gpgkey'] = entry.gpgkey or ''
- info['config']['mirrorlist'] = entry.mirrorlist or ''
- info['config']['metalink'] = entry.metalink or ''
- return info
-
- def addRepo(self, params):
- """
- Add a given repository to YumBase
- """
- # At least one base url, or one mirror, must be given.
- baseurl = params.get('baseurl', '')
-
- config = params.get('config', {})
- mirrorlist = config.get('mirrorlist', '')
- metalink = config.get('metalink', '')
- if not baseurl and not mirrorlist and not metalink:
- raise MissingParameter("KCHREPOS0013E")
-
- if baseurl:
- validate_repo_url(baseurl)
-
- if mirrorlist:
- validate_repo_url(mirrorlist)
-
- if metalink:
- validate_repo_url(metalink)
-
- if mirrorlist and metalink:
- raise InvalidOperation('KCHREPOS0030E')
-
- repo_id = params.get('repo_id', None)
- if repo_id is None:
- repo_id = "kimchi_repo_%s" % str(int(time.time() * 1000))
-
- repos = self._get_repos('KCHREPOS0026E')
- if repo_id in repos.keys():
- raise InvalidOperation("KCHREPOS0022E", {'repo_id': repo_id})
-
- repo_name = config.get('repo_name', repo_id)
- repo = {'baseurl': baseurl, 'mirrorlist': mirrorlist,
- 'name': repo_name, 'gpgcheck': 1,
- 'gpgkey': [], 'enabled': 1, 'metalink': metalink}
-
- # write a repo file in the system with repo{} information.
- parser = ConfigParser()
- parser.add_section(repo_id)
-
- for key, value in repo.iteritems():
- if value:
- parser.set(repo_id, key, value)
-
- repofile = os.path.join(self._confdir, repo_id + '.repo')
- try:
- with open(repofile, 'w') as fd:
- parser.write(fd)
- except:
- raise OperationFailed("KCHREPOS0018E",
- {'repo_file': repofile})
-
- return repo_id
-
- def toggleRepo(self, repo_id, enable):
- repos = self._get_repos('KCHREPOS0011E')
- if repo_id not in repos.keys():
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- entry = repos.get(repo_id)
- if enable and entry.enabled:
- raise InvalidOperation("KCHREPOS0015E", {'repo_id': repo_id})
-
- if not enable and not entry.enabled:
- raise InvalidOperation("KCHREPOS0016E", {'repo_id': repo_id})
-
- kimchiLock.acquire()
- try:
- if enable:
- entry.enable()
- else:
- entry.disable()
-
- write_repo_to_file(entry)
- except:
- if enable:
- raise OperationFailed("KCHREPOS0020E", {'repo_id': repo_id})
-
- raise OperationFailed("KCHREPOS0021E", {'repo_id': repo_id})
- finally:
- kimchiLock.release()
-
- return repo_id
-
- def updateRepo(self, repo_id, params):
- """
- Update a given repository in repositories.Repositories() format
- """
- repos = self._get_repos('KCHREPOS0011E')
- if repo_id not in repos.keys():
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- entry = repos.get(repo_id)
-
- baseurl = params.get('baseurl', None)
- config = params.get('config', {})
- mirrorlist = config.get('mirrorlist', None)
- metalink = config.get('metalink', None)
-
- if baseurl is not None and len(baseurl.strip()) == 0:
- baseurl = None
-
- if mirrorlist is not None and len(mirrorlist.strip()) == 0:
- mirrorlist = None
-
- if metalink is not None and len(metalink.strip()) == 0:
- metalink = None
-
- if baseurl is None and mirrorlist is None and metalink is None:
- raise MissingParameter("KCHREPOS0013E")
-
- if baseurl is not None:
- validate_repo_url(baseurl)
- entry.baseurl = baseurl
-
- if mirrorlist is not None:
- validate_repo_url(mirrorlist)
- entry.mirrorlist = mirrorlist
-
- if metalink is not None:
- validate_repo_url(metalink)
- entry.metalink = metalink
-
- if mirrorlist and metalink:
- raise InvalidOperation('KCHREPOS0030E')
-
- entry.id = params.get('repo_id', repo_id)
- entry.name = config.get('repo_name', entry.name)
- entry.gpgcheck = config.get('gpgcheck', entry.gpgcheck)
- entry.gpgkey = config.get('gpgkey', entry.gpgkey)
- kimchiLock.acquire()
- write_repo_to_file(entry)
- kimchiLock.release()
- return repo_id
-
- def removeRepo(self, repo_id):
- """
- Remove a given repository
- """
- repos = self._get_repos('KCHREPOS0027E')
- if repo_id not in repos.keys():
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- entry = repos.get(repo_id)
- parser = ConfigParser()
- with open(entry.repofile) as fd:
- parser.readfp(fd)
-
- if len(parser.sections()) == 1:
- os.remove(entry.repofile)
- return
-
- parser.remove_section(repo_id)
- with open(entry.repofile, "w") as fd:
- parser.write(fd)
-
-
-class AptRepo(object):
- """
- Class to represent and operate with YUM repositories.
- It's loaded only on those systems listed at YUM_DISTROS and loads necessary
- modules in runtime.
- """
- TYPE = 'deb'
- KIMCHI_LIST = "kimchi-source.list"
- CONFIG_ENTRY = ('dist', 'comps')
-
- def __init__(self):
- getattr(__import__('apt_pkg'), 'init_config')()
- getattr(__import__('apt_pkg'), 'init_system')()
- config = getattr(__import__('apt_pkg'), 'config')
- self.pkg_lock = getattr(__import__('apt_pkg'), 'SystemLock')
- module = __import__('aptsources.sourceslist', globals(), locals(),
- ['SourcesList'], -1)
-
- self._sourceparts_path = '/%s%s' % (
- config.get('Dir::Etc'), config.get('Dir::Etc::sourceparts'))
- self._sourceslist = getattr(module, 'SourcesList')
- self.filename = os.path.join(self._sourceparts_path, self.KIMCHI_LIST)
- if not os.path.exists(self.filename):
- with open(self.filename, 'w') as fd:
- fd.write("# This file is managed by Kimchi and it must not "
- "be modified manually\n")
-
- def _get_repos(self):
- try:
- with self.pkg_lock():
- repos = self._sourceslist()
- repos.refresh()
- except Exception, e:
- kimchiLock.release()
- raise OperationFailed('KCHREPOS0025E', {'err': e.message})
-
- return repos
-
- def _get_repo_id(self, repo):
- data = urlparse.urlparse(repo.uri)
- name = data.hostname or data.path
- return '%s-%s-%s' % (name, repo.dist, "-".join(repo.comps))
-
- def _get_source_entry(self, repo_id):
- kimchiLock.acquire()
- repos = self._get_repos()
- kimchiLock.release()
-
- for r in repos:
- # Ignore deb-src repositories
- if r.type != 'deb':
- continue
-
- if self._get_repo_id(r) != repo_id:
- continue
-
- return r
-
- return None
-
- def getRepositoriesList(self):
- """
- Return a list of repositories IDs
-
- APT repositories there aren't the concept about repository ID, so for
- internal control, the repository ID will be built as described in
- _get_repo_id()
- """
- kimchiLock.acquire()
- repos = self._get_repos()
- kimchiLock.release()
-
- res = []
- for r in repos:
- # Ignore deb-src repositories
- if r.type != 'deb':
- continue
-
- res.append(self._get_repo_id(r))
-
- return res
-
- def getRepo(self, repo_id):
- """
- Return a dictionary in the repositories.Repositories() format of the
- given repository ID with the information of a SourceEntry object.
- """
- r = self._get_source_entry(repo_id)
- if r is None:
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- info = {'enabled': not r.disabled,
- 'baseurl': r.uri,
- 'config': {'dist': r.dist,
- 'comps': r.comps}}
- return info
-
- def addRepo(self, params):
- """
- Add a new APT repository based on <params>
- """
- # To create a APT repository the dist is a required parameter
- # (in addition to baseurl, verified on controller through API.json)
- config = params.get('config', None)
- if config is None:
- raise MissingParameter("KCHREPOS0019E")
-
- if 'dist' not in config.keys():
- raise MissingParameter("KCHREPOS0019E")
-
- uri = params['baseurl']
- dist = config['dist']
- comps = config.get('comps', [])
-
- validate_repo_url(uri)
-
- kimchiLock.acquire()
- try:
- repos = self._get_repos()
- source_entry = repos.add('deb', uri, dist, comps,
- file=self.filename)
- with self.pkg_lock():
- repos.save()
- except Exception as e:
- kimchiLock.release()
- raise OperationFailed("KCHREPOS0026E", {'err': e.message})
- kimchiLock.release()
- return self._get_repo_id(source_entry)
-
- def toggleRepo(self, repo_id, enable):
- """
- Enable a given repository
- """
- r = self._get_source_entry(repo_id)
- if r is None:
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- if enable and not r.disabled:
- raise InvalidOperation("KCHREPOS0015E", {'repo_id': repo_id})
-
- if not enable and r.disabled:
- raise InvalidOperation("KCHREPOS0016E", {'repo_id': repo_id})
-
- if enable:
- line = 'deb'
- else:
- line = '#deb'
-
- kimchiLock.acquire()
- try:
- repos = self._get_repos()
- with self.pkg_lock():
- repos.remove(r)
- repos.add(line, r.uri, r.dist, r.comps, file=self.filename)
- repos.save()
- except:
- kimchiLock.release()
- if enable:
- raise OperationFailed("KCHREPOS0020E", {'repo_id': repo_id})
-
- raise OperationFailed("KCHREPOS0021E", {'repo_id': repo_id})
- finally:
- kimchiLock.release()
-
- return repo_id
-
- def updateRepo(self, repo_id, params):
- """
- Update a given repository in repositories.Repositories() format
- """
- old_info = self.getRepo(repo_id)
- updated_info = copy.deepcopy(old_info)
- updated_info['baseurl'] = params.get(
- 'baseurl', updated_info['baseurl'])
-
- if 'config' in params.keys():
- config = params['config']
- updated_info['config']['dist'] = config.get(
- 'dist', old_info['config']['dist'])
- updated_info['config']['comps'] = config.get(
- 'comps', old_info['config']['comps'])
-
- self.removeRepo(repo_id)
- try:
- return self.addRepo(updated_info)
- except:
- self.addRepo(old_info)
- raise
-
- def removeRepo(self, repo_id):
- """
- Remove a given repository
- """
- r = self._get_source_entry(repo_id)
- if r is None:
- raise NotFoundError("KCHREPOS0012E", {'repo_id': repo_id})
-
- kimchiLock.acquire()
- try:
- repos = self._get_repos()
- with self.pkg_lock():
- repos.remove(r)
- repos.save()
- except:
- kimchiLock.release()
- raise OperationFailed("KCHREPOS0017E", {'repo_id': repo_id})
- finally:
- kimchiLock.release()
diff --git a/plugins/kimchi/swupdate.py b/plugins/kimchi/swupdate.py
deleted file mode 100644
index 84b927f..0000000
--- a/plugins/kimchi/swupdate.py
+++ /dev/null
@@ -1,263 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2014-2015
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-import subprocess
-import time
-
-from wok.basemodel import Singleton
-from wok.exception import NotFoundError, OperationFailed
-from wok.utils import run_command, wok_log
-
-from config import kimchiLock
-from yumparser import get_yum_packages_list_update
-
-
-class SoftwareUpdate(object):
- __metaclass__ = Singleton
-
- """
- Class to represent and operate with OS software update.
- """
- def __init__(self):
- # This stores all packages to be updated for Kimchi perspective. It's a
- # dictionary of dictionaries, in the format {'package_name': package},
- # where:
- # package = {'package_name': <string>, 'version': <string>,
- # 'arch': <string>, 'repository': <string>
- # }
- self._packages = {}
-
- # This stores the number of packages to update
- self._num2update = 0
-
- # Get the distro of host machine and creates an object related to
- # correct package management system
- try:
- __import__('yum')
- wok_log.info("Loading YumUpdate features.")
- self._pkg_mnger = YumUpdate()
- except ImportError:
- try:
- __import__('apt')
- wok_log.info("Loading AptUpdate features.")
- self._pkg_mnger = AptUpdate()
- except ImportError:
- zypper_help = ["zypper", "--help"]
- (stdout, stderr, returncode) = run_command(zypper_help)
- if returncode == 0:
- wok_log.info("Loading ZypperUpdate features.")
- self._pkg_mnger = ZypperUpdate()
- else:
- raise Exception("There is no compatible package manager "
- "for this system.")
-
- def _scanUpdates(self):
- """
- Update self._packages with packages to be updated.
- """
- self._packages = {}
- self._num2update = 0
-
- # Call system pkg_mnger to get the packages as list of dictionaries.
- for pkg in self._pkg_mnger.getPackagesList():
-
- # Check if already exist a package in self._packages
- pkg_id = pkg.get('package_name')
- if pkg_id in self._packages.keys():
- # package already listed to update. do nothing
- continue
-
- # Update the self._packages and self._num2update
- self._packages[pkg_id] = pkg
- self._num2update = self._num2update + 1
-
- def getUpdates(self):
- """
- Return the self._packages.
- """
- self._scanUpdates()
- return self._packages
-
- def getUpdate(self, name):
- """
- Return a dictionary with all info from a given package name.
- """
- if name not in self._packages.keys():
- raise NotFoundError('KCHPKGUPD0002E', {'name': name})
-
- return self._packages[name]
-
- def getNumOfUpdates(self):
- """
- Return the number of packages to be updated.
- """
- self._scanUpdates()
- return self._num2update
-
- def doUpdate(self, cb, params):
- """
- Execute the update
- """
- # reset messages
- cb('')
-
- cmd = self._pkg_mnger.update_cmd
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- msgs = []
- while proc.poll() is None:
- msgs.append(proc.stdout.readline())
- cb(''.join(msgs))
- time.sleep(0.5)
-
- # read the final output lines
- msgs.extend(proc.stdout.readlines())
-
- retcode = proc.poll()
- if retcode == 0:
- return cb(''.join(msgs), True)
-
- msgs.extend(proc.stderr.readlines())
- return cb(''.join(msgs), False)
-
-
-class YumUpdate(object):
- """
- Class to represent and operate with YUM software update system.
- It's loaded only on those systems listed at YUM_DISTROS and loads necessary
- modules in runtime.
- """
- def __init__(self):
- self._pkgs = {}
- self.update_cmd = ["yum", "-y", "update"]
-
- def _refreshUpdateList(self):
- """
- Update the list of packages to be updated in the system.
- """
- try:
- kimchiLock.acquire()
- self._pkgs = get_yum_packages_list_update()
- except Exception, e:
- raise OperationFailed('KCHPKGUPD0003E', {'err': str(e)})
- finally:
- kimchiLock.release()
-
- def getPackagesList(self):
- """
- Return a list of package's dictionaries. Each dictionary contains the
- information about a package, in the format:
- package = {'package_name': <string>, 'version': <string>,
- 'arch': <string>, 'repository': <string>}
- """
- self._refreshUpdateList()
- pkg_list = []
- for pkg in self._pkgs:
- package = {'package_name': pkg.name, 'version': pkg.version,
- 'arch': pkg.arch, 'repository': pkg.ui_from_repo}
- pkg_list.append(package)
- return pkg_list
-
-
-class AptUpdate(object):
- """
- Class to represent and operate with APT software update system.
- It's loaded only on those systems listed at APT_DISTROS and loads necessary
- modules in runtime.
- """
- def __init__(self):
- self._pkgs = {}
- self.pkg_lock = getattr(__import__('apt_pkg'), 'SystemLock')
- self.update_cmd = ['apt-get', 'upgrade', '-y']
-
- def _refreshUpdateList(self):
- """
- Update the list of packages to be updated in the system.
- """
- apt_cache = getattr(__import__('apt'), 'Cache')()
- try:
- with self.pkg_lock():
- apt_cache.update()
- apt_cache.upgrade()
- self._pkgs = apt_cache.get_changes()
- except Exception, e:
- kimchiLock.release()
- raise OperationFailed('KCHPKGUPD0003E', {'err': e.message})
-
- def getPackagesList(self):
- """
- Return a list of package's dictionaries. Each dictionary contains the
- information about a package, in the format
- package = {'package_name': <string>, 'version': <string>,
- 'arch': <string>, 'repository': <string>}
- """
- kimchiLock.acquire()
- self._refreshUpdateList()
- kimchiLock.release()
- pkg_list = []
- for pkg in self._pkgs:
- package = {'package_name': pkg.shortname,
- 'version': pkg.candidate.version,
- 'arch': pkg._pkg.architecture,
- 'repository': pkg.candidate.origins[0].label}
- pkg_list.append(package)
-
- return pkg_list
-
-
-class ZypperUpdate(object):
- """
- Class to represent and operate with Zypper software update system.
- It's loaded only on those systems listed at ZYPPER_DISTROS and loads
- necessary modules in runtime.
- """
- def __init__(self):
- self._pkgs = {}
- self.update_cmd = ["zypper", "--non-interactive", "update",
- "--auto-agree-with-licenses"]
-
- def _refreshUpdateList(self):
- """
- Update the list of packages to be updated in the system.
- """
- self._pkgs = []
- cmd = ["zypper", "list-updates"]
- (stdout, stderr, returncode) = run_command(cmd)
-
- if len(stderr) > 0:
- raise OperationFailed('KCHPKGUPD0003E', {'err': stderr})
-
- for line in stdout.split('\n'):
- if line.find('v |') >= 0:
- info = line.split(' | ')
- package = {'package_name': info[2], 'version': info[4],
- 'arch': info[5], 'repository': info[1]}
- self._pkgs.append(package)
-
- def getPackagesList(self):
- """
- Return a list of package's dictionaries. Each dictionary contains the
- information about a package, in the format
- package = {'package_name': <string>, 'version': <string>,
- 'arch': <string>, 'repository': <string>}
- """
- kimchiLock.acquire()
- self._refreshUpdateList()
- kimchiLock.release()
- return self._pkgs
diff --git a/plugins/kimchi/yumparser.py b/plugins/kimchi/yumparser.py
deleted file mode 100644
index 74f9fa0..0000000
--- a/plugins/kimchi/yumparser.py
+++ /dev/null
@@ -1,283 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2015
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-import subprocess
-from os import listdir
-from os.path import isfile, splitext
-
-
-class YumRepoObject(object):
-
- def __init__(self, repo_id, repofile):
- self.repo_id = repo_id
- self.name = None
- self.baseurl = None
- self.enabled = True
- self.gpgcheck = True
- self.gpgkey = None
- self.metalink = None
- self.mirrorlist = None
- self.repofile = repofile
- self.string_attrs = ['baseurl', 'gpgkey', 'name',
- 'metalink', 'mirrorlist']
- self.boolean_attrs = ['enabled', 'gpgcheck']
-
- def set_attribute(self, key, strvalue):
- if key in self.string_attrs:
- setattr(self, key, strvalue)
- elif key in self.boolean_attrs:
- setattr(self, key, (strvalue == '1'))
-
- def get_attribute_str(self, key):
- if key not in self.get_attributes():
- return None
-
- if key in self.boolean_attrs:
- str_value = '1' if getattr(self, key) is True else '0'
- else:
- str_value = getattr(self, key)
-
- if str_value is None:
- return None
-
- return key + '=' + str_value
-
- def get_attributes(self):
- return self.string_attrs + self.boolean_attrs
-
- def enable(self):
- self.enabled = True
-
- def disable(self):
- self.enabled = False
-
- def __str__(self):
- str_obj = '[' + self.repo_id + ']' + '\n'
- for key in self.get_attributes():
- if self.get_attribute_str(key) is not None:
- str_obj += self.get_attribute_str(key) + '\n'
- return str_obj
-
-
-def get_repo_files():
- def _is_repository_file(f):
- _, f_extension = splitext(f)
- return isfile(f) and (f_extension == '.repo')
-
- YUM_REPO_DIR = '/etc/yum.repos.d'
- return [YUM_REPO_DIR+'/'+f for f in listdir(YUM_REPO_DIR)
- if _is_repository_file(YUM_REPO_DIR+'/'+f)]
-
-
-def _ignore_line_repo_file(line):
- return line.startswith("#") or '=' not in line
-
-
-def _get_repos_from_file(repo_file):
- repos_from_file = {}
- current_repo = None
- current_repo_id = None
- with open(repo_file) as f:
- for line in f.readlines():
- line = line.strip()
- if line.startswith("["):
- if current_repo is not None:
- repos_from_file[current_repo_id] = current_repo
- current_repo_id = line.strip('[]')
- current_repo = YumRepoObject(current_repo_id, repo_file)
- continue
- if _ignore_line_repo_file(line):
- continue
- key, value = line.split('=', 1)
- key = key.strip()
- value = value.strip()
- current_repo.set_attribute(key, value)
-
- # add the last repo from file.
- if current_repo is not None:
- repos_from_file[current_repo_id] = current_repo
-
- return repos_from_file
-
-
-def get_yum_repositories():
- repo_files = get_repo_files()
- repos = {}
- for yum_repo in repo_files:
- repos.update(_get_repos_from_file(yum_repo))
-
- return repos
-
-
-def _retrieve_repo_line_index(data, repo):
- repo_entry = '[' + repo.repo_id + ']\n'
- try:
- repo_index = data.index(repo_entry)
- except:
- return None
- return repo_index
-
-
-def _update_repo_file_data(data, repo, repo_index):
- remaining_repo_attrs = repo.get_attributes()
-
- for i in range(repo_index + 1, len(data)):
- line = data[i].strip()
- if line.startswith('['):
- break
- if _ignore_line_repo_file(line):
- continue
- key, _ = line.split('=', 1)
- key = key.strip()
- attr_str = repo.get_attribute_str(key)
- if attr_str is None:
- continue
- remaining_repo_attrs.remove(key)
- data[i] = attr_str + '\n'
-
- for attr in remaining_repo_attrs:
- attr_str = repo.get_attribute_str(attr)
- if attr_str is None:
- continue
- data.insert(repo_index+1, attr_str + '\n')
-
- return data
-
-
-def write_repo_to_file(repo):
- with open(repo.repofile) as f:
- data = f.readlines()
-
- repo_index = _retrieve_repo_line_index(data, repo)
- if repo_index is None:
- return
-
- data = _update_repo_file_data(data, repo, repo_index)
-
- with open(repo.repofile, 'w') as f:
- f.writelines(data)
-
-
-def _get_last_line_repo(data, repo_index):
- stop_delete_index = None
- for i in range(repo_index+1, len(data)):
- line = data[i].strip()
- if line.startswith('['):
- stop_delete_index = i - 1
- break
- if stop_delete_index is None:
- stop_delete_index = len(data) - 1
-
- return stop_delete_index
-
-
-def _remove_repo_file_data(data, repo_index):
- last_line_repo = _get_last_line_repo(data, repo_index)
- for i in range(last_line_repo, repo_index - 1, -1):
- data.pop(i)
- return data
-
-
-def delete_repo_from_file(repo):
- with open(repo.repofile) as f:
- data = f.readlines()
-
- repo_index = _retrieve_repo_line_index(data, repo)
- if repo_index is None:
- return
-
- data = _remove_repo_file_data(data, repo_index)
-
- with open(repo.repofile, 'w') as f:
- f.writelines(data)
-
-
-class YumUpdatePackageObject(object):
-
- def __init__(self, name, arch, version, repo):
- self.name = name
- self.arch = arch
- self.version = version
- self.ui_from_repo = repo
-
-
-def _include_line_checkupdate_output(line):
- tokens = line.split()
-
- if len(tokens) != 3:
- return False
-
- if '.' not in tokens[0]:
- return False
-
- return True
-
-
-def _ignore_obsoleting_packages_in(output):
- out = ''
- for l in output.split('\n'):
- if 'Obsoleting ' in l:
- break
- out += l + '\n'
- return out
-
-
-def _filter_lines_checkupdate_output(output):
- if output is None:
- return []
-
- output = _ignore_obsoleting_packages_in(output)
-
- out = [l for l in output.split('\n')
- if _include_line_checkupdate_output(l)]
- return out
-
-
-def _get_yum_checkupdate_output():
- cmd = ['yum', 'check-update', '-d0']
- yum_update_cmd = subprocess.Popen(cmd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- out, error = yum_update_cmd.communicate()
- return_code = yum_update_cmd.returncode
- if return_code == 1:
- return None
-
- return out
-
-
-def get_yum_packages_list_update(checkupdate_output=None):
- if checkupdate_output is None:
- checkupdate_output = _get_yum_checkupdate_output()
-
- filtered_output = _filter_lines_checkupdate_output(checkupdate_output)
-
- packages = []
- for line in filtered_output:
- line = line.split()
- index = 0
- name_arch = line[index]
- index += 1
- version = line[index]
- index += 1
- repo = line[index]
- name, arch = name_arch.rsplit('.', 1)
- packages.append(YumUpdatePackageObject(name, arch, version, repo))
-
- return packages
--
2.1.0
1
0
Hi all,
As Kimchi 1.5.1 was released, I've just merged the next branch into master.
The next step is to merge wok into master. I hope to get some update on
that for the next week.
Regards,
Aline Manera
1
0
On behalf of everyone who has worked hard on this release, I am pleased
to announce the availability of *Kimchi 1.5.1*!
We have worked hard to ensure that Kimchi runs well on the most popular
Linux distributions including: Fedora 22, Ubuntu 15.04, openSUSE 13.2,
and RHEL 7.1. Kimchi uses standard Linux interfaces so it should run well
on many other distributions too.
You can easily grab this release in tarball format or via git:
✔https://github.com/kimchi-project/kimchi/archive/1.5.1.tar.gz <https://github.com/kimchi-project/kimchi/archive/1.5.0.tar.gz>
✔ git clonehttps://github.com/kimchi-project/kimchi.git <clonehttps://github.com/kimchi-project/kimchi.git>
There are also some packages available at:
✔http://kimchi-project.github.io/kimchi/downloads/
Go ahead! Give it a try and let us know what you think!
Regards,
Aline Manera
1
0
Hi,
I'd need help to clarify which file has what license.
>From the COPYING file we can say that :
Files: *
License: LGPL-3.0
Files: ui/*
License: Apache-2.0
ui/spice-html5 and ui/libs are different
But we also have the following :
Files: contrib/*
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Files: plugins/sample/i18n.py
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: plugins/sample/ui/*
Copyright: IBM, Corp. 2014
License: Apache-2.0
Files: src/kimchi/auth.py
src/kimchi/disks.py
src/kimchi/distroloader.py
src/kimchi/isoinfo.py
src/kimchi/mockmodel.py
src/kimchi/netinfo.py
src/kimchi/osinfo.py
src/kimchi/root.py
src/kimchi/utils.py
src/kimchi/vmtemplate.py
src/kimchi/vnc.py
Copyright: IBM, Corp. 2013-2015
License: LGPL-2.1+
Files: src/kimchi/basemodel.py
src/kimchi/imageinfo.py
src/kimchi/iscsi.py
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: src/kimchi/control/base.py
src/kimchi/control/debugreports.py
src/kimchi/control/host.py
src/kimchi/control/networks.py
src/kimchi/control/storagepools.py
src/kimchi/control/storagevolumes.py
src/kimchi/control/templates.py
src/kimchi/control/vms.py
Copyright: IBM, Corp. 2013-2015
License: LGPL-2.1+
Files: src/kimchi/control/cpuinfo.py
src/kimchi/control/peers.py
src/kimchi/control/storageservers.py
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: src/kimchi/control/vm/*
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: src/kimchi/control/vm/ifaces.py
src/kimchi/control/vm/storages.py
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Files: src/kimchi/i18n.py
src/kimchi/kvmusertests.py
src/kimchi/proxy.py
src/kimchi/repositories.py
src/kimchi/swupdate.py
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Files: src/kimchi/model/*
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Files: src/kimchi/model/__init__.py
src/kimchi/model/groups.py
src/kimchi/model/hostdev.py
src/kimchi/model/interfaces.py
src/kimchi/model/libvirtconnection.py
src/kimchi/model/libvirtstoragepool.py
src/kimchi/model/plugins.py
src/kimchi/model/storageservers.py
src/kimchi/model/storagetargets.py
src/kimchi/model/tasks.py
src/kimchi/model/users.py
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: src/kimchi/model/featuretests.py
Copyright: IBM, Corp. 2013-2015
License: LGPL-2.1+
Files: src/kimchi/sslcert.py
Copyright: 2004-2005, OSAF. / IBM, Corp. 2013-2014
License: LGPL-2.1+
Files: src/kimchi/xmlutils/*
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: src/kimchi/xmlutils/cpu.py
Copyright: IBM, Corp. 2015
License: LGPL-2.1+
Files: src/kimchi/xmlutils/interface.py
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Files: src/kimchi/yumparser.py
Copyright: IBM, Corp. 2015
License: LGPL-2.1+
Files: tests/*
Copyright: IBM, Corp. 2015
License: LGPL-2.1+
Files: tests/iso_gen.py
tests/test_mockmodel.py
tests/test_model.py
tests/test_osinfo.py
tests/test_rest.py
tests/test_server.py
tests/test_vmtemplate.py
tests/utils.py
Copyright: IBM, Corp. 2013-2015
License: LGPL-2.1+
Files: tests/test_authorization.py
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Files: tests/test_exception.py
tests/test_networkxml.py
tests/test_plugin.py
Copyright: IBM, Corp. 2013-2014
License: LGPL-2.1+
Files: tests/test_rollbackcontext.py
Copyright: IBM, Corp. 2014
License: LGPL-2.1+
Files: ui/pages/*
Copyright: IBM, Corp. 2014-2015
License: LGPL-2.1+
Should these be LGPL-3 ?
Note : plugins/sample/ui/* is apache-2.0, maybe it's right because in a ui dir ?
Also, I just wanted to make sure, kimchi is LGPL-3 not LGPL-3+, right ?
Thanks,
Fred
2
2
[PATCH 2/2] [WOK] Adding new webapp icons for mobile devices and Windows
by sguimaraes943@gmail.com 23 Sep '15
by sguimaraes943@gmail.com 23 Sep '15
23 Sep '15
From: samhenri <samuel.guimaraes(a)eldorado.org.br>
This commit adds Kimchi logo in HD as a bookmark icon for modern browsers, mobile devices menus and Windows 8/8.1/10 start menu tiles.
This update also includes two SVG icons for the new-ui with embedded licenses.
*spin5.svg is part of Fontellico font and it is distributed under CC BY 3.0.
*edit-alt.svg is part of Elusive icons and it is licensed under SIL OFL and CC BY 3.0.
Signed-off-by: samhenri <samuel.guimaraes(a)eldorado.org.br>
---
ui/images/Makefile.am | 2 +-
ui/images/android-chrome-192x192.png | Bin 0 -> 3508 bytes
ui/images/apple-touch-icon-114.png | Bin 0 -> 2360 bytes
ui/images/apple-touch-icon-120.png | Bin 0 -> 2382 bytes
ui/images/apple-touch-icon-144.png | Bin 0 -> 2758 bytes
ui/images/apple-touch-icon-152.png | Bin 0 -> 2962 bytes
ui/images/apple-touch-icon-180.png | Bin 0 -> 3404 bytes
ui/images/apple-touch-icon-57.png | Bin 0 -> 1449 bytes
ui/images/apple-touch-icon-60.png | Bin 0 -> 1476 bytes
ui/images/apple-touch-icon-72.png | Bin 0 -> 1718 bytes
ui/images/apple-touch-icon-76.png | Bin 0 -> 1734 bytes
ui/images/apple-touch-icon-precomposed.png | Bin 0 -> 3673 bytes
ui/images/apple-touch-icon.png | Bin 0 -> 3404 bytes
ui/images/favicon.ico | Bin 15086 -> 15086 bytes
ui/images/favicon.png | Bin 0 -> 17356 bytes
ui/images/large.png | Bin 0 -> 36434 bytes
ui/images/square.png | Bin 0 -> 15679 bytes
ui/images/theme-default/edit-alt.svg | 134 +++++++++++++++++++++++++++++
ui/images/theme-default/spin5.svg | 54 ++++++++++++
ui/images/tiny.png | Bin 0 -> 6539 bytes
ui/images/wide.png | Bin 0 -> 44544 bytes
ui/pages/login.html.tmpl | 20 ++++-
ui/pages/wok-ui.html.tmpl | 20 ++++-
23 files changed, 227 insertions(+), 3 deletions(-)
create mode 100644 ui/images/android-chrome-192x192.png
create mode 100644 ui/images/apple-touch-icon-114.png
create mode 100644 ui/images/apple-touch-icon-120.png
create mode 100644 ui/images/apple-touch-icon-144.png
create mode 100644 ui/images/apple-touch-icon-152.png
create mode 100644 ui/images/apple-touch-icon-180.png
create mode 100644 ui/images/apple-touch-icon-57.png
create mode 100644 ui/images/apple-touch-icon-60.png
create mode 100644 ui/images/apple-touch-icon-72.png
create mode 100644 ui/images/apple-touch-icon-76.png
create mode 100644 ui/images/apple-touch-icon-precomposed.png
create mode 100644 ui/images/apple-touch-icon.png
create mode 100644 ui/images/favicon.png
create mode 100644 ui/images/large.png
create mode 100644 ui/images/square.png
create mode 100644 ui/images/theme-default/edit-alt.svg
create mode 100644 ui/images/theme-default/spin5.svg
create mode 100644 ui/images/tiny.png
create mode 100644 ui/images/wide.png
diff --git a/ui/images/Makefile.am b/ui/images/Makefile.am
index 297c0bd..0c8700e 100644
--- a/ui/images/Makefile.am
+++ b/ui/images/Makefile.am
@@ -19,4 +19,4 @@ SUBDIRS = theme-default
imagedir = $(datadir)/wok/ui/images
-dist_image_DATA = *.ico
+dist_image_DATA = *.ico *.png
diff --git a/ui/images/android-chrome-192x192.png b/ui/images/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..8beb37f0669354f6b041c1d6aeeff1b30cf92fe9
GIT binary patch
literal 3508
zcmV;l4NLNgP)<h;3K|Lk000e1NJLTq006)M006)U0{{R3WdfWv00004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px$hEPmYMgRZ*0A!!L6>b1xo{Yyp+88Rk7jXao{~@pC
z@sS^k$3EH?DDjXSAFk#9{{8>_`u6+&{rLKq%u?(1`tp?~`u+C&{{IVYr2O&p`{d^1
z^!q`Kw<xjZkjY2BBX<L5q1N#FEr77|pF95d?(&*2^3>$qBs8+)_S59<!Qq*D&+nel
zUdB9y`swZ(b*b_B{M#Kb!ZCmK-|GD2$gtUc{_*2FxaXwD-Bg&q$lmHmz3J)n-1fS1
z=V^5H`tJGJ+{Eel|M~O#-n*yNZM@dz{p!}zXrbZk^VfK)iq!GwbA9mm=Jl;v;6P5u
z<fQ4j)86mMRl(}?s7=u4u<gUy>Vb-B$?f7yTJWZ<)#|!p#_Xit^!Bo1+l8{;Ej{$T
z!Y{Pu_{NREDSGp?y5BWK<fFy9-HgaZi~7^0_QuNj%$Unhk>&Ez`q!`b!Gh&nXm+g2
zW1+<7uFUO`n&Ftfin!DG($&vhntrg(mcQ5Tn4huF;_Ql(-j2AK+Vkh~>HOu};*PED
zb7VaL0004WQchF&^MImA000ZWNkl<Zc-rlq_g5NC7snqKkiLK*T?9culwt?0*hNKA
zQDZl1tWnc@{`PklF~aW5?#{|k&ddEFCoyWipS^YN>@olS*YKujXlnvA0h$0!fF?i_
zpb5|fXaY0=ngF#0AZ`6!U0o4lg96yL7H|99?!L?Ui+-~40E}zj-Vy}S(n9~z`zO+1
z0A$y^n-c$QM9b|K*+>A!i(aBcKaJ40Mm7#WWYJwN|B0Ys0J^@lu=G;|y<JE_NY)Hs
z>k=TJCRh|uPmK}#*W<I@pTG0@PrGN=lcH;|cz~^5u>Ka}?G{hnojm(AzO#BBh{xq}
zjYcky2hMjgKd&QXH36Xdxm`d;u75wA2PoYdT6)n6e+ca4kI@;#0(4zM^;22U4-1^H
zzjp$q%1e#<cwpz#q`oQu{kL%aErc6fh-}B>M{<bzX9oG|?@1CrKxCdnKV=u7r++;j
z;8b5^kgx9Aa03|sv~b&J_Se|+M*`#*5aJm-W`MP~1R{X`ct<Wwe!&UjcB}xATOR$a
z5VCzb5-h)985>3b@-vV87G@GhGI2Ehn!qkbfc{<{2M~SbWz;?{N7GLc?AWmZkcWH@
zAm+;&nf*bIZt-1g09}224k(YH$hZjoa?Q9A699Qg@H(J018o_(D1cQvCV(#93@96?
z^*`epQ2<9@@c@u~J&bt!vGntgk2K;u5IDvI5V<6H^k0-tW0O1L^ix@Uh6muIn@@jf
z@})D(c~et9N5c)12aKFk96?;Jl}*EE0nLkc`rNWg8+DSA^FiRs0j?TK5N{V59jq8Y
z8cqC&I&z&|f3?##c}<<jR=G!0Tvg}-rk!YU_bzUg*KYDtQT=LWcam||GTP5F=Nt_h
zQy&0F5J9+a4=>jGng8VExrUM-c-XZY!N;@wxu(jU7&rz|k+Wq3oTBu3N`K(t7(Q4U
zuOF&B3vB@wSuNkTz~26PuF>$FuI!mtIsg&iGhpyJgzR%E2gJvD&$r-7Ni&Y;JU}iI
ztjYNTmTZ&f@w|XtHE7n>>`dZ0k=ecxO#L6BkN8tOFX%Bw@{EG2kv|C6j|RY;BdECt
zs^2*NAn>lhc=k}TE7E9=@(5>oGyrB1a({-0xc*G|W3(M-R*TEJ_<80UX-$d*!0f}E
zTU?~|l+k{?o6n4o=XWO&x4f?aATIkWy6Gp4MkD%qS3Cf0fmmgG1;C=Q;Q;ze01z)?
z>H{EBT7~|QjR#<R*(t*B0O}c_becXS8xY`SCq(qsM+TryqaPvL!-fIqdcGKNe^fLi
z!1K*O-J~!oz;hDRPXwWECDz=~OR!fAL3-cN+`zyzZ3A;dK0QW&rxO9;-m0AXp{x6Y
zjm}QLxnO>O=f>FS^jw<61E46xP$g5qH|961v|6p|*{I)Z&7B7~18FP(g?Wy+wN(s2
zPesqw*oOIq;E6)zKX~uM08nVg70+S)(E9^_IRXV?UJ-zRe8I8iCa6hTU-4>^o?bDl
zSO^Ex`bq=Pn+akO#~|dp>D00i{P#l@2B2Ml2S7m%tf<(wGC)=qz&1}{JB$sDu>rK5
zS9&o3hJ{cv8Co!~|7NR?_-4Zcpzz(B*#zcOA1Z)lVdR51YPCkai60>gvk)B;z1ZGw
zO`oy}ROWjh8i47Cw?kUA4)2!*=F#}Ff}L0pfojZ$0uV}cNG1PFDsd*6#{xIT^H};`
zg+c%TnDv&(FCci6%pjV#VFMt22Oxs`v`~N~Q$I}*Vi5G>9H-|tw17Og(F+4uaI*AM
z1RrA6objjq02lb*3j(lwmw>Eeq?!PFP#S1E2ZR8GqEZlm)VWYif+0{4X*Y%h0DO^1
z>c9nx_hw)zO7jAkoKi4=G*Q(o@ErhLpfX?a0wkj_fM}@pF3@()@d5nmkkm&E`Bp$K
z(2f~-07hW?CDO<0u1jt}Nucsi^8r9TAWaym3NY8H0=gj04KQnk0ywJ+kOro)%0Ivj
z5P~If)d3WzTCfZB;>su$LKa2s>yS#tEJO?d%LgdH_bM+v2mC+))eUzihGub<%P5`2
z;22u*iJ65Y66<W00fxW;%rs^K#GLg4Fb4@CMhvme1F&hX>Hx4DVALTN0BjnndJbGc
z9H8wS;sh`xq;*k+^kZ5GL3t9e&&0p1bumi#Hedj%D{cTtFRS)E4XL7Z44v|<RUoaP
z<43&!lw~mh0OkUxsZIb6cmQBoVEt9|bA7QF^8pw>)WNYhy&@h!5%L0q$Xd--K;Dba
z0XmPZwO<ZRo5fZkI*1;@mFUq>2T5R_<_A!i5|XM15o2Rdo<bb3F(d#0yyImr+AC@6
zn{9#$DbF<eFOk6n7}H?AwY!bq1<Va8{FX8aE=37!?W}FE{S9vxXqlTKj%!v3!3S&v
zo3ftK@*@E&h_wDIQZN9N09O=^wyFmw%7SQ`L7?q?uU7~MfaHNBfoU$Cm{GT9%N{T}
za8U9Zi`IO=zP0DRsb5HR0Bg~#1y2&F)jfBNW5Lymzwio?R^?y0^6{?MS^ePA3c50j
ze!(#ok?+(p^<W$GWHWs_wz9D@b~6CHY2|xY!Y~3#1ZhViS$QXr-D;VPQHh?8muX)b
z_PzxF%O2&|-Y-u09<ty7P|r*teUX5-RZJsJ0D@HFeN4tG9zv80HY*K4<?<IV5W(vF
zG8<Z0FjdGE`T_u=3xvHdWLfy(v`VE+2<ju&Xw+M&)<#t!nGBo-uLYn3Y4*D_`t%OV
zvv~Tq)~NHbQf-0i12h1;5LE<#a)T*3@|f^Oqt=2&z0SnrkJ(VHV!2Fp;sQYH9Ug!J
zguxU_&eE0)Etm|ItwZbWvVy6*@d049tgHxtlE!reP|RV(7^)+HVhYffZAgI4XZc8V
zsD1$cMGythGtqzmB@v`<9c?@SvRn3I?dy#Pu-v0AA$Zex09je7Wg8A)w9Ekry|_*Q
z$}*r40oGg9RRpjY3>6;ZmS@ye^FVCsZ+LreJG>P1pzPW`9<Cl%9zc|B;sS^Tb0<n2
zZA#bhcF-a8>m0ei90{=5&IG_!Mm^guo$}dqI#(_z%nPxwD+t&BraS>KHnOSIi~J`B
zSJ)v)zcOb+(2r}BVCkoAkDtI1Rx0<Q@t<Ysr-r#@8~~0SK)+JC%|l?A$|-dz$S0Ab
zgY7K+n8s<#k`iotTm{DB37=5h;1q5f?e1aAM>`Y?2k;E*AOxxX81(6fhv`%SIbdQv
zJJ>1%=|{<71OS)==v3YdIxOsV=h@$*YA*d5><pOLoN1S-f%1`3KsZ1wr&Dquq{2au
z>A9v_Vh&GmX>a&Ry;8?2LFC;G_}L?;fN%iMu#(HDrZAkM`ZI0e@Lp=zrThnc66CL(
zBKt4`K+vV+vqFPb78`Ymg$>Nk%c&ow3m^dOD@B?v#jH|1&tLscUsnLE0J`JWk83+E
zAcVlS#0a2?8E*Yp?g!{O;zXSOZ4>9=7hqWh768YvPD}#i9Gu$+P!kx%17O(GRU&~)
z7KpGECh-7>$zok<ierHYsiAiYOaP9Q4mo~2Jo~HH)=;!@dLOk8fyUHPo*sah0Z0Ib
zFw)~cSpprxc$xs>B{AZO%&{$8zA^<qE^~W8{jLosfWj1Z3CaVVZg|NdWQWV@Vap1v
z0187er_>3MAD)6OzPS3Zx^-QF8Gv%ae$J)SagWtYTr00`D1f?slf(}|Aq2OnlZp<e
zej9K&E8Bv$LlZdLrl<x06-b`_?UYMdGWHi&b-6JAz7f{R)a~73^o!k28yr)A>2ueK
z%jG&b8BXQ4!~0VnL2n(b1M84j{jXWCTVf{9)KoAyHRW-{gfDu@EKq+|oc>ze4@|t1
zv3H4^BK6ngf@7k)d>f~h&8&<5SuHiWp=sOfDOm}rTf3LVf3F%{F^zWj$kYXswGOVo
z=0}dz>W++De)Ddor>AEyd)M}=Z&breK5}AtdAaSi-=+EA`!)fZ08M}<Kog(|&;)1#
iGy$3b|JMKwZvO*UAN`SW0pCyn0000<MNUMnLSTaR2DjV*
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-114.png b/ui/images/apple-touch-icon-114.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3a5fbb8c1058c57d6759e5b734271a26ef8c6c4
GIT binary patch
literal 2360
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
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-120.png b/ui/images/apple-touch-icon-120.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3db3fe047232df72b7447661044c4fdac13dbcb
GIT binary patch
literal 2382
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
AGynhq
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-144.png b/ui/images/apple-touch-icon-144.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d8b5402f681c74b46505b36fc2c6ad858227b8c
GIT binary patch
literal 2758
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
M07*qoM6N<$f`&Db`Tzg`
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-152.png b/ui/images/apple-touch-icon-152.png
new file mode 100644
index 0000000000000000000000000000000000000000..83e288d3569aaaaf95168ca7cbe7e4f6f7999316
GIT binary patch
literal 2962
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
IM6N<$f(Uf#@Bjb+
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-180.png b/ui/images/apple-touch-icon-180.png
new file mode 100644
index 0000000000000000000000000000000000000000..1483a5f11f4925125c40099611fddfd717211847
GIT binary patch
literal 3404
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
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-57.png b/ui/images/apple-touch-icon-57.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc02906234d94a741a4245c11467b2466d3539b8
GIT binary patch
literal 1449
zcmV;a1y=frP)<h;3K|Lk000e1NJLTq0021v0021%0{{R3yT)_300004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px$+E7eXMgRZ*yB2T&VxAtZ<&4KbA+O~DWS{^4|JoNR
z@sS?c6esbI8@dy1|Nj1p#yz_gZ~poE5^<-C$3Ol4|Nj2`{`>v@{rTke{Q3O;2Wq46
z_~wzxNZu|!^!xt)`S$+!@bQ!*{qW*e!Rn*ZX7r{>_xthm-RblA`}e<n{`Kn9X`=V~
z{BFwa`P<&a+vxo2?BYyW{qpnG>bZWg&h+~2yWWn)>G+$@S1PjR@%sJd^47`aru_8z
z+$1#G=<%At+4izych2tn-n{j$Tl1Ya%~h57=kO(buJ*fizaw|-^Z5Mb%Z$fAv)X~k
zMT`FX`{Sa-_s!Au!^ipj^+CGmJ&CsHw9xIw+tzid@zLV>%$SY3)FiOx?wFs@Vx91#
zs`~Hs^PxZCK~K!!>sFY*<y>f`$lYMY>&HNdzTlML@5}4={N`eBM!e{i%ule`d(!E(
zk=OC@tg^P-g~8#O=4Em6w7UA#sI1}j(eC-dEPTW@f}7g%x8?TfdxgCobm(z=>xPg`
zzUkYBv+BCk#yp1dm@B5<^!(}7M2)$S*YSkX@b}Z!k-XJCxaa5a_S*6Ky&ZGd>%QPU
zOt#YFMvu9)(c<W{&$<z8-jBKFVr^xi#N_Vu_SxZP3zzc%0004WQchF-gX&ht000AE
zNkl<ZNXO0A2U8kB6ae7Rgo8UcN+{A4MJa+{@4aF{jmF-4?=5zt#`GT3er$GcJv<W@
zn48IrZy1K-=DYXy-CMXvkNAg_UpyR1QT$}tO`oTufrrc(`ACwg`V4Lj;cx=7znv6-
zAp0JpW7@ZIcDl5EJo?5KTV^0AP#rM!(p}pYnH+}9veZSzkYyeO1*&JT-0b6Wxr`0D
zWhaJwdV-*UtRDmLr;Ho&KsHvE)!(Khn{TAj;HiwMG(yWev9h<BsgzV5bbtnp%4C+n
z^mM?IfP79eOZ0SPfM)n60;9elO$U9$$jT?M)zYw7ReLYGA;ZH#_C(ibP_w*z1KXjo
zIh8<l*?)VPPWtYQ?<_Dey%WaDhD((IwkFyr2eV^M!q^;1dT2g-g&rYKF8J-TAK&Mq
zZW79U-O_TMYQxL^=8<qTsjq1oPr0hA9Z01xlJ@jriqp4L5rl#m-?iPB#>uyXelHxN
zzA$cKc2^2P5GgJ@S7zp_g+fzqrc@ff7{m6&-bBD~**LN?Ntgs)m2rN8Qq!SK8PG*!
zW)FaX_GHGn6T7fp;;JShLybtPE8<8ulT=Y_XQlULf|6=dF!k0%)|rcB<NJ7n<6@+u
ziDISSlvqxE6_V+8R(hwHq)9Vzq&=OHL|tlR68vgNg<nGn<>X3jrHRQpsKu%$PVhEB
zpyt}{=GK@CsZc$GrFo@*x@$pFMO_Vd;=O}vhE{qpQny(O$H<jFUe!X~+bh~HJxM|^
zy;J^Bbevz93@_kz>;Kthp_!>hwaL`@>sz#vb#2O0{BMHs_oRQaB4mt~(wU}AbMpGP
zFEMM(C43~cr4)-l@sTBk8gc6yUVeC0{raewv+(`fW;s_uN^uTW7Ice5qM<AUdu%;?
zfj%T}0w*>v;AF8wBmp6E6cmG0M#ItUIlPFjWGhVrpoY1jQRRM-gb7j6c~*7xZ1<1^
zrqq|NC}F8$Wt$Es3vMN_D6*{J+Z;1YDE@1i_od;TNWuxxtN~2`a>}$ktkkYc?kL--
z<Q0^%)w~wtAIW;y%@$hZ*t4Rx7NVS*e0|I(DZ^g1V|m$;wO+v9Rb4)mt(vyHcu#Ly
z>*Au7yIGP~#Y&}lK99%qturToenJ0mpQ-=5<QsngjS;|9a@D%b00000NkvXXu0mjf
DLMJDc
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-60.png b/ui/images/apple-touch-icon-60.png
new file mode 100644
index 0000000000000000000000000000000000000000..d985d9723537ea44123d82d0c8ed957535ce74ae
GIT binary patch
literal 1476
zcmV;#1v~nQP)<h;3K|Lk000e1NJLTq002Ay002A)0{{R34I(K(00004XF*Lt006O%
z3;baP00001b5ch_0Itp)=>Px$%TP>IMgRZ*yBBZ)WS`m<Cn2xp@sS^l$3Xx8|NsC0
z+88SFkQ@MEo{Gjj|Nj0SuI0NGZ~gZ8|NQ#^W1sx~`??ct{r>;||NkGZ<&Viki^o6m
zl_c@^`u_Ls@cRD#`t{fAy_CyMGPURT<n8pURIu56`u+a<?C<>P)0*1ztl{<Y`Rc$b
zd)po`&RLfvvF2c(!@K79`|tFS*YQo0yby7wlfBmHaeLnK`$4+s-0j8FX`#H{kM+gL
zqS9pf;N<A^+K1Ee+$T5t=IG4q`S{6^%H^oqgR=3_;_|Pxyc=@ukeS3Zf%ULn<L&hF
znlW(8?)SieD1EN|@Z(dLzHFw)f6(vw(xbm4cSw-B$lmGE=(Fs>*y5eR<)y~!gpCMm
zqsT*v_sr1bQ()cc^5tA-;6P8!;q2(N(C7C2_PBAv;+o%*yZhtD`Tg~<&*2PirTgE%
z_4@Dhrb+g-X#3r|?wzEk)NRM)qVJ@u?Z(?t!0OfS`snfY>b%wD@zVO(u+-%4^PfEP
zyTI?Dr`C3<@1m)>)a2eWLE=hRhPBb{$J_V%{N`hCsmk6RuI1l4N&Mx^y&!e-xxSmu
zT3*EK=4W%N%ip%-_Nd?VB`)xj00008bW%=J{r~^}|NsB}U#c{P000AnNkl<ZNXOmR
z=TqW96aa9+zyN6kaHvv51Qh{Auw(C{V8h<a+1uIg^t|(`*W38#UUm}#IwW}Uo9`0?
z^P9JC_dT-7$$3;LM8{LYc){xQC$%`Np6Zp5iP{1&xahi@lt@TjEti{WnSb5YRUc7j
z#pSg$rGreIGGDZueE!z#RVuyjm)^DrW2!@vjA>ZI$+9vxR|z9m`JrAAPbNs#cCUgO
z!d_M~d^sY3)nz)?>gMPjD-SF0#Tx-UnP4cXE2R_TJ@k@caH(hbF@6mblafT)B(6}*
zH+z@EJ%@)g3(d*0d-!qr9Kht<RA)J;;m<->5e}=VUw}Hdd7dA4mV)g{_DB6p5%)`E
z2~^<iq4@F3ZhEK6k|a`;-aB34rSMO+LJ*U^ojl!$t0}<_JN+RcJ8+Rx73tNLc8VQI
zx<|?~&mwLabi3VyR$QP-rgR;dvrw07SEl|eXPcYi#Ra_^eA{K+?31Zfs{YvEeQX}z
z9yfyz8yoyJT4E-dOr~<W@8XrQS?SKuB1k<=@oQ^L2K2r=9WTaFjZ}jML2k9sNm=?-
zF!x{@{)kFpe93w`oBc5Nnw7(OLkvd!Suu40Qp-%2DePx)(3Mq>%3x}zg<Ez=!{FiU
zUA1X~+O*5zl}gP+@h*c^Z5+N~iblt7vf?%sgZn7%oZroY)SAli2V<v|!>(aw-Tthp
zpR>#EOJT)}AYAxtNWg71(*0xEXHt)*560pc3K#x2j~8p#FF@*kdOBolmOE1w^-EEp
zLuOumT)0I~*Y}w7VAOJNB+a3?2GyX_;C9rUxxd@xHfA`f4D-Ag3dSpUcH;i+%$>H5
z9c>Bx4c$avt-OkwGuN#x#OxPh?<6I^j99x^JRz53b+|ZO(tydaLahL<y7d%SrI(!l
zj5}qyTo?zc5dv{k<fm-KIon?C27v4MYp$v$5CqZtM%Z-uf!_o0)Jkd!4MrNvC-|{P
zk1$a^avKQTHl6t#t)MGx4F(KQqrH(Ik9=jZo<Mv)gdmU#P`}L%DJWT>Nh%2BPUr{n
z*==THLf}Ey>d>cCWB}G)V_+$Ev?qY`JPsns2_m`cHr5*LHG+>=SL;BvPfyUrI?kHT
z+4F9+!;Ll?+Vis9JzZ4+Pg9epxHWaw+B%HZnBiC}=CZz5XO|lqY+7+QeQl$yrsQeA
ep!^4ZMEnB_Xw@PM#VX<e0000<MNUMnLSTYNfHCy|
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-72.png b/ui/images/apple-touch-icon-72.png
new file mode 100644
index 0000000000000000000000000000000000000000..2951d54933eefa4dbab35bd3b8543b7879738987
GIT binary patch
literal 1718
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
M07*qoM6N<$f?y<=GXMYp
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-76.png b/ui/images/apple-touch-icon-76.png
new file mode 100644
index 0000000000000000000000000000000000000000..9561d284e2e4d16ef5f058da17ad526cdc7cb261
GIT binary patch
literal 1734
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
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon-precomposed.png b/ui/images/apple-touch-icon-precomposed.png
new file mode 100644
index 0000000000000000000000000000000000000000..1033bc99be53986f54624b0745e2713cced5c79d
GIT binary patch
literal 3673
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
literal 0
HcmV?d00001
diff --git a/ui/images/apple-touch-icon.png b/ui/images/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..1483a5f11f4925125c40099611fddfd717211847
GIT binary patch
literal 3404
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
literal 0
HcmV?d00001
diff --git a/ui/images/favicon.ico b/ui/images/favicon.ico
index cb3a3dc2f9c9ce0e5d3e14f0adab89c28c729ce0..1d998c2543576a16c72e49630317afb8e1373b38 100644
GIT binary patch
literal 15086
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
bLvKw_5T{H{Hi%=kc3}MAXJ2X`9G>?-JFBHw
literal 15086
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¥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
diff --git a/ui/images/favicon.png b/ui/images/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b27e41af9d2a13816eb16eccae38304fd82bc3b
GIT binary patch
literal 17356
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
Dv2qs%
literal 0
HcmV?d00001
diff --git a/ui/images/large.png b/ui/images/large.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e58eebd70006dc9c3f6734848ba1aa414c0ee8a
GIT binary patch
literal 36434
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�p5
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≪A>^egPEVje>_*LkKF(5
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
literal 0
HcmV?d00001
diff --git a/ui/images/square.png b/ui/images/square.png
new file mode 100644
index 0000000000000000000000000000000000000000..e97d58483f0b1fd396d0901270edd84ce42fb960
GIT binary patch
literal 15679
zcmd6uWm6qZw}!F6#@Pgd`zBa$cX#*T5Zv9}-60SN?i+V^5AN>n?)LKhigP|pbxl|G
z>Rw$_HGN<A>Tm@)abyHs1PBNSWJw7TB?t&el>Z(8>}QW#^;5xT1L>$FE(B3Aj(_y|
z0%IyDD+mEm9gFyC@a6NJ*ib@A76QWKI|PJZ5Cp{YXP4h01cWmK1jMmE1O!(q1O%4d
z-xft42ne2bNfAL6H{CNGc<m(PccQOVKT6LQG5+9G;0z$<TbJ_IamcvV_O3NFSaYi=
zaAV9amydOxD{3J)fZgrPY_y8~;7B)B9n39UQlTuULnE+K9;RM9J5904)Qw>Gc}*Ul
zp4y0D*4;A?-uNzV_FO+$aNh?33{X)JWL^J{nn@d&d3V{{ACqzb+RLbS#}1$EkrSt>
z%H5M(vYYy;&WSVLtq$_EqSX~%4&OMSK8!Y;KPGR{TAdoZy_r877o;Bl$b#4$=J5uD
z?Uj$Tc6$2;OXZ9_Qy@==R%PV)(2V@ERt{Tk<q2_@e9vdzY-Dln6HToPLTQwfqAA-a
z1?U%@Y3%+CY<?gCVw2a`fAuIEwzKkVSUZ_QZ+Zfxiq4kKidnm!vR)2>CJO556nl6$
zkYZh&z@NW7_V(+a!*>>rzI)e7ezXur-nB^blScf`x4-)kWFk%(-Y1P4g7re#I5;q;
z2;!!|ZL<*b1Dbt>EXL~<#O@dQ=A=Wbp&iRmamP)HpCB}ENs-}CyW8$miPciy4CwIx
zO!hCd|0s8^rw~(EVD*hq^@ARl47Pe=m}oR`r()>jt|rAXyQkC$2HRf^_%kmOMXM<K
zJpzSoiT*U1+NwS4l(>K)KOkFb;e_JEO&a@i*^<Dan=}UaW05>j+{f-ka~hmQPofe&
za^hI1v%YQFj-3k!rA4=;D1ieJ;?jju*WIJs8NRu8n|BOY1yA^FvWKsNK=)lsiZab#
zX&#OTtB^hxVqL>%l$U=tQMCrd94ae1|CKKTg{lr}^Bdx(SoHX}F63Z|=u?1)UVvRU
zx#uq^XEvnKF&;9fBoUTtFH}f{Cr*mUG@fE`t<Q2QkFRZmbk=qg2$en^o^^uWop%U?
zb<#u}x!QQQ+cr9zj|dlCRC_Jiz9}bxg~>ZF4%VADo*r;0<&$4fR?pTpnv`8PcrjaY
z2rFW~@@F9cf0k!pbm+1-g8}zZF@zrC-kDZ3fNxr0p{7&a1P$hb5w?p>E!UIh4QV){
zg>>U*NM>p$L89anXvC3QLC=4;{)2)jvc%zzkMGxnZvr=b7ykQ!>)rd*S^8IZ++LmH
zL`HNoUv&GNVMUZ;Jx4~I1TF8~;Kr$EP+w2zDzhmbo>oiO%$e-NI@h@SiK=k?wa-q3
z=TGut!Qm`nUPF<!a@<#^npu*aHBSaAPCE-N?|jDXftkgV$bTcC+Y#W}py1kV=uv!-
z!#3k4+V?HI%3(<GyXuMZ1^NVxs<H9~VFcAhBS)^8Upt=oTC(`Gf=9Rr_nU)Wz+Xs?
z0@l|G5WSM}(J=*krR`l{)HY-j2KqD+4jq#6H;3#ctb5#uIH1SVZSRh%wb(DQ6i5nB
z=a97_6CPuR{D%Bd*nmNzzp%|hj7Ww>LBjct5I2)vEbKraDBYGMCqKm<)yu0$Uay>a
zbJ$Xa3hJb7;2mE#3M_<KLZP0B;_iIy{FP>;mG`hj47(8)t~L225bkUqt|PYdQj{b6
zK%yWUS~_%rno&X&!#Y}8M94CmH9o0!5HF|zaW%HmQGlVdWb$Z{Eq4G*y4>>L9qxrz
zc6w7OK+-fO2@Rk3oALZ~>WN1O80__p$z*%7BTTr75boyGpqK!p8rFG^F8S3uK8Uun
zQG%>{pX?|7yf?g2qkYjrm#OQz&98+<P1I7&`Q!u6D~dQ4K5I2-6<K_Yg)1CMf@L$+
zCX<mnZ&?mI-;F%PWl^wS@((M{I*V3QB8i}R`D2Vzx`Ng^XuY2~@Ewx07gUwPq5vZ^
zCYzxd(KmHuI(4mr#9u@bqV0M7YUl$Ox6sae>w?vucmCq#u(C>!vtqDk8mPRXs`UZZ
zCc@1&`l$&&Z&s;AAb>f_C6g#$G?qN<k~?DCc;h%6lKdRCCN|Suj^IRg1PIFf-Q-;m
zSxZUJNKj5p!vqd-NWA~j+z`gWR8F2r>5n^tk^EVguVTp_cJYn#sAXaAN99G}dS0CB
zZQ9C0+8nYV4T!@hhN>h|O3?@AjD$0Z9L{?DT8_A3QcF%*_xFav1u8Zk*S|a;dRwrE
z=te38mHxz2{ke_forj+qpA$#Q`rrYV0n7woDN3Hki-mzKgKvRNiMh&qT^R=oBv6)Z
z-+v_0jLZ?5_x$!8)<IG=rd=}44{7L`VL^klA_Ky{?bRPtHE*{IT~B_o{upSaUyzJ{
z-cw$Ae6)PS4rrrWQQn^T4NbeiOS&bCl}yW80a)_!siZq(IC{!Z{AU*ZXyJXqN@n`~
zW5n~>HN^wf%`2Jsa*ubyd16MElH6RlBJljsy_nBDlg*+-B`%H8uGyz+qr)=h+(~pe
zhin4WMz=0P2u&ef564sS4^4nEQ@y0PYI>>SjQs2MyMn!;gzQefpG#+odgEG4_R>5|
zO$<JR`umTqK>fyL?{$Azs(b%I6(AI6i~4zv&v%P4;p$)+$|+==ngjO3?;9s(X0CYA
zjhhT!LLNNi(aqQ0u6?xx0c&vZPVh17aD?*4fNb4EjC$j?Wub4h7v?criwP$;nyBJE
zp0D#-p2Ut$f5>h8C40a9$^j_5X~n3m9qn8UwQp9d1a*1DN206JxE}F)hHrU1BzmYG
z(rQ;L#soFM3hIQ#U?jle30lYckYic1GC*&2Yz@8rHwr?+u#kB-S38zNqF?B2Dx$vF
z|CrK@S<K9)OK;&x2Djm>n6!ERz=7$$gY}1V%rYvWxG13P!E+5uH;hchXCfZm@2_FJ
z;w`fv{?|bc^yRf@$Qeq`=()suARLaQVu{rRN~M76Z%(`2*6E{xe-9Dw>hYALJ3LR6
z>WNB>xN2B#?Y|p0{MXi8P6Bm>YH;CPoQctYgHr^JIXgFMC#vLJtF)i|9nZbq2p3`Q
zm8e_(q6d&2<gO+`t>u%Iddi<(6t`1f5V-jU`)tB*shxIpADw2AbBmLczuYm!ILxkJ
za!?BpPtbVOFz@I63^yeMppF$!WV7}p#st*%upiQ?AZ@6P<xd$*gSNAA3HP4;cL?hF
zd1871KiE6$5q}Z7a9OSnh^-mj6kX=-zKF;=fs!ca)5S1bxTIZ5la!`V`+zKC@t%E#
zRACUSDV@S{|Hw_j^;d!Uj2bG>Lh(5tj-VjS=dSoFOYMD#%6lB)%I_pJ_SwWYD&pr~
zV++urlqVaZ2PR`P7%74Q&}TSwdq)&94j`}Ohty}1{Y?&c#r#*A)jtCb=x`Ct+)kDF
z%@;hs2>@lsyxl|=|KLrjr-dPPlb#~V)-;=9vl@5oty`Q^_{^yKEuC)lwP=D95f_#R
zMOY*)Doo^zA2fAmd4`v1g3lZ8CG5Yb9!2!!obk^W%5J95Mt3di?&yA~6jofvTxKgo
z!Q<FZ*_BZ05jl6}O|6v@U5W=u=zV|4Y3~yZ4Fo4gc7Vp_I?Luprqc6cwy`ho5G9zi
zwm(YIg42R~_?LduFd#}gHa}`cU5p(1jQS2Q$B!wk%(zEFvnFm9FnNDa;J2IdWR3z9
zB-^3Rf}E3l&clRh=deKraUviDa?3n<470qAe^c#Vt$AC^O9vgE#8Ma4KR>L=P)@oF
zS1}Pv2M%!Uy`uxO;Jx2794`DP$nJb5*Vp~uigSSO7R5?GLrj7w=|oDNoTm7X>uZFG
z+_Xe1-`icc-g#&9CHXHkz|^q0R1jOIMNbmAq{IDx0;a-l{f2WgmOH%h+im|_TGHyB
z6T>MU@=3a9oP_h`8BU5sKvbOyPuNgEKH~NLrm6UXCB=AX5)gzb^BDPI%avqZ0_&tN
z2}aw4bQUy~6cQl6;WTdX&l{<S_K^+Mi(ozP<d)DYM1Jno&B_+R?{PRj6+0<#`O<)%
zq4Y2ZU_$w^-BG91hQkya?pN7aOyUygk^NIr2%CpCzBGkIV^*kVD971mRu&-+J+spD
zfe509LvC(Ji(A{smAC{-2_jhDc72B1%_G=F|FJ^%f%6B&z`SWbC-Cn*QX8KJN8EvA
zvSKL=X~OCcl7o-ByQfFKWKw}`#(&4wKUAv7R=6ZEL9&4BX*r%|HLQ9*JuCv{P1db~
zdfl%+UxcozBW{&?e-`3ZRj~$A76eBw<2`3TBb@meZydv+<fY*&RSwTzNn!@f)_QbG
z(Zt7#z&zXsBTPV|E<Ve6Wk~@kZ~tWX>s<#*1*Il()xbk)o!rL#s8d{-Kc<k?&WlD-
zLjY&!`gcN6{cUL(Vrahv{UQr~$9_+v$h*4smMX6<cfShF9<i~W%p&$yi9?wC-9ldU
zPv}JOYzn{j`(k<d!RAIOKI9@=X0A}51DrQ}a?o+AMP4J8o9LVU@L470vL^=IIqV{$
zgQgVT?`L3-fCs$qu<}2zXH<nJ7hR2YcHQod$CFIiP*r3wVmy7=gHZ5;fa=|)^Y1s6
zHLen7yndlL?{2~!W6z5M_b>*wV~V-0kB@(??zi%@5K_%H0@(S{h`Z(4ojtd6zXk!z
z4J#COO}O)B7r4~CL`}e5#@IGtsYJNoQ|JY9wTbxliJpg2fIo7YxeoBQUaDdhBf&z%
z_S;*Z^%JiiPX0GaiDf?u(IiL_S((zvn{8d4k3Y%mp5TDR<w(pDI^up#7305c^bX+f
z^UYyR)NRnEBTjGRtX7R!Wbc1707=;=JSxH74oPsJMleH{hp1`U<)2Gs?iA{yGf$5@
z-zp(2r}1TP0=<*$hF6VgNn?Dk&IMwXU#O#C(L35^X@Ue-3nEZ6llA2c6Caa2IXRT2
zrz}&Kry{*`DyJ%Lk%e|~JfmZUNyRaeAp>X}i)7=mG%Bcp%(!JUM`^pFZ?V+_=fcmM
zBr%`5nQJs2>zKG=tp&1@=4zCuNCZI4wr!6#*uU=vFKLBe91ZCStF-3X$t4^8Oe;YK
zaEbaVJ~ReK<WkvMv#k=bqv1PEd3$jU1z~m)QAa8eSw%%y$9f3++gE+n5z1cH!|=7!
z^)m!Qn70XX5-G82k=_|4KAh}pS01_&v^oq%!>$ahP<UVDEk-FDXF_v{a&kK?2pLn=
zhLmw92n+$FLlhR3V@{{;9C4f{>}~%dM%AeiWq?%49WD2%Yt&3-{r%<2?c&p>H(iN>
z1v^XTS*5Bg)&~6B?~ejMst38vh$M-eG<c=X;u*piD5+Io+>ZhrI;K$+eh`Wyw7HFb
z1MHrB_xgcpKiL!}F*be~)uA|+eK7?qn`dK%$(0eBwm>zvjP?c&<N^kBB%^~SGRTw1
z()?F6r8?_nAb`l^<?!&m=?Rd~h*Y5_G;nT`^*YDcSkqn9R0t1o4>0*xb7E^J55+r@
zT6+CgTE6SOW$yoU&Q6j%yqy*eJ^&=7qHMM(*OFiXw4^Q1KT&@{@o@&pbU>_MNB>-K
zjqESE*SeD0GrP$+>}8L2l)4|2q+&a&@DK=AgEO^ThiZ7^4>;eksNH0Ag}Bj(p(w>S
z5_x@~10KwvvtT)8ph{j56P7%;r{UfRG`fJTn*)4qp$+QXg`2S)G*FRK(wKdUR_5fJ
zsl|#2mkGIhxwXGWPfTF6QT(Hyi&q4&(+O}`rE*Tp_LDlhEiKqnpreSwKIJS+8va^(
zV=qB#zha*tH3AP+=z{s6qcMd~H#VfYsQ#06Zm3i|nF^+qcAh;YU7zaJ_Q5Y0Y)Im&
zK9;$50iybG;1{o<E(G-DOvG0Bz>!ZmPZt9L3fd!Z9!wB)3iP?&gYv#5(#EIr;rUeB
z#4rlZmiFS%T_U3)Y+yeSwpjA#8n_^#s$~1ZsI||W29@akX`c1nn3ba~!*6bje+p?x
zA!0pl5?qTAGvP_XYhqTocFmi8SaC3&YNl)I=V*`+u{s_vzDo?^Ny*Qu3?(?#@8Us+
z#zEzd{@=pyLqm;WRKmM7FC<~n#99%a6kg%dNUe3I9G7LmUL3j@pX5a%&@YT|PVAzg
zleI@g(T-z~*`tPqW=HW8DhSjAWTs?}pu%?yJp;SgNTuoou$)1N1#qe_c5Muw3B{p6
zHYsgjBoCf3#A$L>h|<Q}sPZs<1}(<*hq{oA?WXng*Dh_qmY{{yOVr;;eT)JVMPdC1
zeWppOP|6XAolooM#syiW6!VJ^?t$%2rQ7lU&3gyPUVdWIYMsM!?+nkby!vAjjcfV4
zl+Z$#m~4{^K>V950V&^liIWoXo*8XWY=Y6Yb$sR~@slM9w4(jIATSQny0_Dc{u5*^
zjOR?(={oy%mKMgJuL(1%EPF1#Q^y-i@qA}4aqF4Q*UjI?IQ$6H!M74;<W^0$jy9EQ
zhA*p!hyEtcMvk3XBF(^~L1YTx#=IbM`sJcWf1`~oj#latO0J2mbehtTOeNj#F+^B1
z|F}<pP8%4SjP0NHvo{0zssoh`^uoU!XO_B(W}6yVX=!KuMKWoQ0vmkwk=Qi8$&{60
z&7${A-1Yj_MpQB42;Dbv^w9KyR6#}@&r6&%aq{)e@%U>LytBPe-o)rNkqZCdCfOC)
z)uj|^+$U7|Dv7Z$q6M7FT`n%bgOxo2?`pc+yZ{%o&gaUnpf?zcOmRAFWSCMXMw!wk
zCK%J`*%Eum<GR0i`Jw~~baH1{v1CcHrKa1_uWbMlnjE$~pE=*&S<cDPbE?gvF6?z)
zyO?0Z_8h!(w}{WjDq<h9rqE0u&q_47=F~eHiPq#^!?iaW&;QNHna#Bd-6JPR2;k3f
zG0Moj96Apd>PuiD?>|ARO9X=8o-+Y?@SsmVpd=zrPl}6J{WENcx_t8hizN9pl)BDu
z_OBsT<Jxwe-*u0#0EF0d)BLex7{a~^aLuwuI_l32i2}}v`_AxE2&Cz@ENbT8Blae$
z;R|#8ZC8nU2m_V4AOR5}xC|5@@!=iKEDEX+&{xvZLeOa9>4&j$?gzg-`4b!$QEuBd
z4IpmnYeGMjRDCBGb`(?}TBkjUJp0rhSF`KA`sS#W9{nPFCX_*b7n(;ZAV>wf1P~+<
zJd2+exF6u;(8joaX|SXHmOb8qCHL|wkvNgV2B-cN&RsjZ5MO78In6VG>+HOt-Of$Y
z%Pwq#FWG3(y53WQ#QWzU$bl3u+`R)Hobcf;!B522_for1aaOLhK;Yg^fg)NSeRHBu
zX)Q^(tJwYU;@Cd$0=DdL!=*ywU|U-(Wt_T@m4JR3784Xxpn?w?`0hL$)l3{c8`!jc
z{0nJai3cy13KGghb^tl<heIVDl^MKbEVW~ZPZfICw0UTm{OwIJfe|5Km$U>^DKT{J
z%c@o1+6u$SL%$qiM=dXh&?J#K#?jtyB{(3QrkGFq3HLjlsVAYX?I6%h;?fsmV61Y?
zQMN~m6wY7a6;Q%hg#O0Q^^HjX^ilZ|kU(0c`t=A_*vv;-OWYBCwZbcF*j1W~6SYDU
zCZ_XZq1C?OL;S!#^+<qBOxOX6gp68}s45uWO5)O8u72~f=LbNb1v@4!*Tk~rExC9q
z^J`s{;(=&a)apQs+m4=HHodk$b_#w1+?e1roE32jZUXX!I_Q{(>jI_tb$F~81r}Ah
zkQHfdTQ!_dd-7%Oom!8JULF=k|Kaf~4&z>p=g;UOqvGHL<EP<NJ}w->nef8Yv~^i#
zk8XL^JS7iv(u4b19;_Lik~!Psw;n&JwcSJ!T#&aP$9Uzu9D=$9FHdC)TDAaF+@KBD
zsDmUSM!bbC#1YxjWB(LK=Qtj&9T}j9*I|pHap?A8m2^g}MKs^$K1}8f_T%H*N70F6
zV_2Ok;bXg}(LY<(ujodqnAf+7g^8h}A~7DF2D*DVtV%kS^p#?gFmj`}N2m)&?7L#g
zkvwLEHJ)7(TJB5(onOC1M^CP9GJYqY<=yVpAP#bfWkeh!r2iN^y*eH=iB;#TdEM}s
zdbo9bCVXg)mRz~uyXGfyB6yn8=hRJ&{=@?Q`HEs&`#qv3m;^L~Z9Jhj#CD|JMMOh8
zr6Wv<a3zwLxA=U72mF2RlNJY3tsP7k>NbYc>H#q09&OLVm_iW#sl22!6^>gEA`Cn4
zhUaXAB1|q@<`0Y|I5zYXgp=b1i?7xAm6E>s3I4hAWj3z|8<s5W%dZ9<)yl+nEb}XV
zc6S*LiEyHgnSYEq+@bz7R>0q8eS5eJlSn@XHdiU44J?XUqxIiOz;xzK7~(e$1&gl^
z<cpaziLDZ2+To-D*}D{4j3OtrRMuWk#m-W*Bw4XyPuc)~b;~@nsk(nkhiagxmlwkY
zM1oKkHDi>oNDf3VaA{nL5(y!wc4}?%9im>U41?_JRY+CRVn@&8&56u2(_Bkcy7umT
z`cVZ9LR}tTiT27y<17dX7n*@)VTjm1TuYM@8dVNUJYhUPSOt*k2NmN-n}Jrk?JLDe
z{tQm%*KV}XU@@&@2|Oh+OE6Li!%m9OvxHu*JESg7_<Q+`*hk0WOSEAem&=b%YtVvH
z9Kh6+sDX}8e^;YVdnkTmI^l27ZoCnX!;h&8-J*d>>($V=RkE1}k2WaDotFDZ7j&@^
z#_*)<mL~Chuk83LDEFB2Jx>z*C@Q9o?!K*A+oHNiTZwD=Z;V*zbN6PlY1K_3Z=K~?
zQxlwtjIGf+hwy<1C<YU8X)I+svBA5L^fC)rSh5NC^_x>T{wHMmx+^>L&u+rNX4yR@
zjk23C&aX&#CkMBkYt8rYtek6NMYO=<aP5494Aa$L#Ukc+HbBI`TH1~k1P61v(Ecrt
ze1fvW1Dc#?1R{i>Jq2%6G<C4Db=2VDmptA+$PgG}cKb;$h8|Kot8yDN(!pEqx%3^6
z$a48h0#BQm;%oBKT|t~S6@ycwfDJ7<|KsS&{Ea{f`9)T=rUDrA$-kuQhK%upH*%1;
z^wY*b1~M6l;P9JWHI1Pep*v;8iCZt>wg*EnT$82IF(_939dSBtDDW2z&J-@GlFRD#
zH9p16jY?;Kn*cYEgLmY^N8~q~rf2n#`AyZV9IG0kG!x8XvlWhQ)~kW*?jNs`;yMHJ
zZ`U=%1HH7Q!8DY^j|i743u2ohZCgaUbjd3tq}Q5p7@=0{@|{`lh|V5Rg180>^5f1N
z)U#?Ox#cg!&P}nBG?Oxari1m&!~`T^I^^%#OX<3O>AzSEQ`t{y8|gLkESL?veyE@a
zsvWpQ%6Q9z^6Q<m_nzN=MkvYJ+C`>*_)$adh&oflY?5Y(^!p~oaiPVDbsL!C?LYE^
z=_bhzTKqZY6&@Qc!k}U1kh@KF$dsB|+gjFt%QdGBh-|b95PI&G;hQAeh{#1!LhW|O
zN)dxip$CfAgD0;MwnCDnbE}LA-CPCCp3=-$FI0Kyr4MxAt&l$`Ot-RrTf~!h1Zvm4
z9}m}GhoxSe0ppkRabE_K{TPaAfaZfOyqyyBPy!hbW|xV2sQxXWa`yM<1%+<IW@`eL
ztbS2T4n?dBqWp*q2cpJBz|Ns@e?W(3A|E9ZFVh{VgNb&Xu0M4{7M1}V)E#^X2B&4R
zuB^ho`*)@!x*Egb={2d68zE6eYR$U2QH>_!_<yl=FT>Nkys@Kz#m_TzOpXE`o$?7Z
zc|OW9cBsPRjH$_qkHHI=yk&;Wp@ROsCQC5`Oe!>4vMFzoD-t{2%LL^@GKp>3^i^q4
z9pi5SjQvlG-)W=B_8|pk55yXfKUM^)gVKoX+;RxDkg~1U0*$yEr>GFEJ<&QMfpLV8
z`0HOBLUS5HR0&*hFs}Ev+v^XKA9V}qTg|AgWbFA07??IE#3OH>q%n#|MAV3A6XSqa
zKLMTG4YM4kp}(*52|Posf%{61m>XEs8>Yj`_5uck;xQzkm|Ki~$n7r-P-6g=vFnpa
z+?*mx25BniJ^W;L876$b$bsbu8zhxv->{b47@pf0Y(%4w280V51QhvkK%Ic!DZX>~
z`<}zX@uQ-)xMPkX+M*uj8b1Dbk)rx-E|`aAcTcbfFJPuAJ|Wi@PJSI7@@7?^9a}<O
zLDZ=Lgp!tmR7V_R8&iOtEbZs$dqn1|^3DYYA1Y3TkkrFJQ6B@`wr+X>EMySegZKrx
z66Hq05vNtP*!1k6N6J6F*X^N$#lZ!Hm0-%#zX;DFg=gaY%UPFrBY<LfND<o(;c~Jm
z5lzJs;U<%>UM4gV$UHR6Ji4m!{wi+nO8kj6)&aSGH@k9?5UV-1iPCE3+f5K;RI`OO
zg+biDVC>ZMyqT<;Sv=JysMNXQ2rC^J-}1?*Aq9>}(Q4YQaMcKiTya%Fe3dK}r{KsN
zwJNx?$T3#&IrIsVFf!W2$fx4lTc>T~t*VYnSk>Sf6Z-ggmMQGKLzgas^ujbZ6hZtW
z&NOqp7HR~9&#lxBhOjWqr}=a0;*8bw4C)ng3<)4PJO`S`M*hWQ1+@uY3+gYM$nLhK
zKaLs0%m#FgYZRs{zP0TJ1UymGh6f^0ks01kUWs(_{WE|;g$?NLP!)Y_E|3*U-d~D6
zS3yC``~!Ssgt~J?;$w)Jr%`-*)wCzWc$P~ZRxmr1k2p_WIh=h^0g6f`$cr3PHHJCG
z>?qtuZw_mb`mNVY#4Ao)q^d9hWSo3^$$v?qziy~H73s$ziS3n(p(--`>|Vu`-aRyq
z!B@R?-W;wJ$|e~$Wy73ROk>a-msczcBh@J=&Iq&<l20_QVau?I&eqKvSfE0DJo`+=
z&(D21yW&!Rmy&?hgVj9znHWAK;`vMFKUnE?2AlUh!kuqA3ab)QXOv`0ox6vMtoV4k
zy<6B>t)CjGQz3Wx=?;Vs7Dw1FwoW}Nvf~EA=yWqQ|AVGQz))8wouPLQ*TxvAq$SH{
zf$CvMJN(GtC`JfPZ~Xhgg83lH^0y+AIYtea44G>IRa7~DgfQ2vDxd-7_;_Fs8q=4^
z4H8#YxU3P<nSpvv3}5zl5IY#DFaRARkj=>%uU5ZcoABE)8Qz~3dFJ!p)~7vVm?V*G
zzVS`yWc@59T6E1shoM>_7nCNGIYr3!6X{6bGhp-Ok5htwk_5T%^#Fcf)!~$o0~46E
zG;4gRZ!|X1JU>V--%C|%rH2$`l~;R(&Zx+y8!W&3F6yv$T?%m#K&kY>!MR3j_KayI
z0Dy4XHCbR&WwC-o5lkoY#Eqa?L2Bvckz>dZ^=TZSnbfVka?QWb?LonoU@x|ix6>bV
zixT!mB6s{*oMI*Nk8Uj09Y3G~+?eM`3mbYP>o7>IvG=OED_BilJQiPGvF2tG&fRR<
znj@I-i||_lmx#9bKNV;H-qIr(z~86`q9ACGc<pQp`(gBOMc3v55GHFuLkEUUp3-x3
zw8qcU;(w$F$h18BY#!Zy<F_@}wO}~^=P&FZ`E*m+X300D@R6FVT^&=4sb*f<yb|?4
z;Z=T{ZW%Nen=P={+1o|RX!Is`t2{+GMTnA2(JIcqs7Ruvh8f8+sCn_90gZ*nD;r;Q
z2J_nsire#+6pk5f{A+m0x%z=yp>5xwWZ?%CV01DHq;@QbQJLn2ywfVr*Mu6i7P+T+
zDIsM`p7RfX#fHr@6Z$^y8aM~`mpY2Vuqo7N1sDY4uGSc>K=@}=%HMm6y#4I0g{&`7
zh!f8j>W`+SrD?R(mF*CI^SeUW6C<`cnapI=5`vXvwe7{vidQk#Hou6tEbM!+UH;U$
zvS3r^!=|-?AJfy_sw^Bxx`d0|HLQt-91Np5ttYR6W0W}8BdH0K%GK$;Oose;yL*Qe
zT+I!G<#)`;D@iid6sqv+86#$rPoCoZS@}E7{3*XgUWU90rS38?=`@Wl#qtNFpR;+I
zW=I&GMo88SBYN42h_G#9XyMlwEO&(2xt~ckhutEi0Mx3;qiqm6CtssVUF2Asxu2In
zM5yp)552Nl<v*RBs2Mq2ri_~+DJ0&jc>I+~(3F{sRJO5VQx8t@Ei!en(+&^&)0xFq
z{e-%SXn>L)@jO(LA<Koke(y0pbV~y#Odj3B5eabpu2FB7_{RkupcUa85wJM1{Y>R~
z1TD%E_sL1leo*;ViplRF-it#~-w*%puS+Gy8zZwpxbda?H&x|blpftjDoK|97mU<<
z294E`C^X;Q73jtmgAa(^Uzeun;bITk0H7qkTfuEC;jv+ELdJ<zd|f={R|S4?e&pHU
z$(i8+F3uX0a25$(F3y<==bHZDT}Bs!=wG`A@jT;A(FVi4Q=z>YgXy}s?>}D;w)UH*
z?U*GA8T)hGl~Xv@zbm9{zJTIGljt;$mthSLmlExLDmhMk>RQe#fH%I;k1=oG)XSlg
zdxLhX5C0CPsw_Y+?5%%0A~GA8H|V&mnEh@=02NLqBSFZRF7!d#KT3h_<r~;l1-*}v
zI7DEtVuuYFw$jySVkdvOunfB)qU&E)Wh`7-oE0cWUI{8y3nykIasMI2X1)A^3py-;
z!q5#O1<0(hy%sJeRLLg_U_V;Ot+MsuH*&Vo*+@T5<o}!u*YNTFq$fWpoCES>WBT0V
zT9a4XiE|>G_&C2^SSS4&JH~Y!<)IDeV*^|(<l0cVYoUQ)1I^VQ;=^4_5b<@R{{luS
z;k8&!N^=4@4%3j6$s0JFdh0NI$<664G7FEE<4#|o@?*=B{KP`Dj+2xU&8Tl&+tK~z
z$E}R4`rlGWtgWnM7<kNoe`V-D!2P|_>+Q6RADcn~8HYjKcr0`$oXwO2cXqHQM*mo_
z?RE);Aqde2+(_V%FqZU7cX=*kkVF*D@Y;BpFLdiHnzCejP)YbubjV4-5NbeR%GacS
z&P<~QcE=^zTl_X4YIavt^p-F#JBW_(D-4mG8n|MOwLdE2)x|W}zShIY<TEj7_uTC<
z8%v_nne~IO6y$^XCEZh$U`^IAOKLxvT$Ry*S`tC!qd+kzCHEa0miT<Tzffd{8~G}v
z06<71Dt3akEyYwO-ag49fo(fS{`h+Cl&fdUIlqhHxO(}TyU`?C=zGFQ7@wIhHY7_7
zx)QjykCpjY^j49gn8eK3u8%X0ukPRax*crK@`_-O=05r?1`{%tXbhzN&L}_S^hB7@
z_rUnp8cCygK=Oe5*P_G5kpJ=)yPgA+EjIF7O8F?fLw-x#7&&P<EU<Dajelb6H=^7f
zY`tyuB{(XW@zysiaJ4Q@XndT~J#}vJUXbRZXtHw899!-o3?EA>UR~%pn<>cf+qoTH
zy;=T1)5|w^;O5e<2yx-zavw=P3bw2vf^aSKD49*1qb!d)H}LRYDGh6g4CQ?Jd*p$r
z$z8u@F9tP|6+?kd9#+gul)UkUH1~t@7*QbHUK$tyD31RbLz@135+8cSzUgMYPOzU=
zUytY7V7_S>!f~abw_=b0L#0_~TnCnDgo!gwGSlvFtZCbwF$ZKA6O7;w+M`Gkex?}B
z==@vOCus=+@*J9?)Fr!fC+>4X#skIIxrvaqow6`4a!j%DO-4&eAteLS89GCPl~ppO
zkHC)l#1@hKV86|050UY^JM8p|2kbw`j)uFdnc5GtoVvA~TCig>&km_Lk~aU%G8~v6
z(?n~4RfHA%I>4D3rvAhaaKd5dhuPYWTqT>93yU~bu?@^e(~yLjMg@jdbt}Ann!L&r
z0`*`~77OHgrPzzk<8RfeYbJ7+C=>5qmu>l#niMfa0X;%Y%%ivs&K%vD4J{%MVNbA4
zavOfnad3BAEO)V(nb^{iFi%KeQYcKvL<~>`5-Ag!gh$eMhl+G&!&QxWLS_6+&J!Bx
zA$LnG_n*bT7M;R{rnnL3kKM<q_UTl90MLg-ijkWiPxQ>ILpLG5#>c6UMqnkX1Z1s{
z{h4gP#X$%!nwa4b`q$lLRE3FLtVA#5T++9IE`dL+P?YKD>(e2~3vne?5!yAH0OtcG
zw3sQu7IT6YTIKAgy^YZO6<ZNY1j3o$iBkQMrJ_?9eHf}FNsx&%W-)4}r(7Bxz65)F
z)7R?UC3@tUTM%8ygT&#p=;<KVAKyioK;!INGXrGKapD@8G9g(jtoUE9gOOVw1Bs2)
zgeoy$?G&s%z<~;dR{Ra+zJl|>Wu@sDh{L|hVl%!*7?0@P8YAUCX|3|i{O#^L>$l7_
zQ~?-7LCQ$tf*%+Q*suJg<OD%CkV6LFeID43lf_6e-WadX<ECm~B$|u{DI7pq(OTK}
zE5z1F6w^&y7Pp!prmrMN@I#rwz&nk4eyqya|D1-;ubpN0tnZ9C@S8jJLLyH>XAo^Z
z#}DNm@~g?uBF=0V7-IV$SVof}X%6I1$mnq3yoK>a-0jkP)15m;s3<=e0LX@L6|Vpa
zHKEUd#y-v{At>qPPr()t{YQA{e^y6583d~_Ou`CX-ge4ZAIY`4!l9{{{UVg?0XQ@7
z{%rR%$~7@V9?R`o!!~;bc{l+6%X+e}E&R@X?zI)>L=T`C+TVO7z&1@0y(M`TMQaY@
z#QQ2MF@x;ZNqb5-VU}DKPN)sx)3<mef+<Yl;lU1>s%_}A)t3EHWt&=ZDK8`0baG3#
z<r?&v?XsA@n4%ff67^{^TiHY8#J6DY$$J?uxKDGV2?nYf4{ifqHIFC$IAZxQr2Uys
zs$TqMXl{lL>G&8u`%?JRiRiimhAm;dn*t#tEcVaHV_*!3kymgYmL@Z!*#8T{0kxx!
zdKX58KvPF?c%r%ct2#P}t&5qttDj_N(D1W@GIgTICsNqgKjLen`f~P!q77odZ(Mw`
zqVeZWVTnUbi<vk?R#=~rqmrT=v*RhFU&CRAMiIpV4_5(w7$LktaaS(Q`X3AAmcvP+
z>k;{D>s${pS2N5|2xJV-!^-CzyY4DcMeRyrBNK|_2%>ShzX#J1_;KYYKHV8560};X
z{H4Tc#+8s{o(eQ^`^C<DP3GAD3@!xHxSxz=;#P`7DFk=<ud#jpc6T_U1{YM1W<0F_
z`ANZDx7$_bl4jJ_meqt>DmbNmjCr7-aA9!tjy(=!0a~gC_B(`jrL)mcT`-ze`#}U)
z3F8^HAT#<v72AKa+@x`{S*tnOzvpH1@W}Mc>(C^>GezM;T?@W@{-vzXU+%%z`L@NK
zCz(WFvu0+kD%Zk~vG&<`rv@xyXrkIeRqJ6cpyq5N;Bt5DSC$qVt-<ODT?1ZcH&*S`
z|5tWus$CapNyl=Lw=oFk?XMB`uc3Z!uMZ=%FJ7lNo?1$Jrx>6`kL)|Fak=Td9PUSV
zuzBXA!3rb}f>OTEft>;8?ejfF|F)Fnt>79-UeJHS>45#gZ^UM@zyf2Wmi)zN0R;D>
z(q}Z)p=`#b9PVfxDPavaPD4YV;x%FwrFB3;%G*|cxs6r{?u%c)Ev9T*2+g%0Pe~Bq
zl%*BV0i_cl`Aa-&H8B8RhQ@LXaw&8)j;X?zmjA~&>mEK_Jj*sSYtzRh7I9J|vc`)n
zdWB}PaQbfox1x{l%nZf<RQI5?eo)&u4xyn9z>BZ2`s}J!hy29~e%Cy6yL>(s=%Uz>
z@GZvUEL0sF^>#S1B8xnU3x^l^MV{ri7mAu*Q~GW^3O>iMh_W}IbA+U^oVe5S9I*PS
z$U75b9rre$DvP>-I+xGn9=daeOB>!hjm}iY=%2W1v|%{>oyA0*&p_L!xKQ3F@ehhu
z`n0IlwD`z|@HLteKm}KVL=V>MdW|fBHw*#xeuU@oXIDgTw2=2m85gp)sumr+$xPgf
zp|tP=7d6+d2emYmg?o14V57YjXSwc|O7p=Kw5mFXd~?w=jRX{Ysn3dIL_p9f86=H`
z{Ffi)xEoi=rM5wSr{Ik*WgHIEA{M%YnXIK;!rrBIWo8~zn;Qbt94wItr**X)vAkJ%
zLVN&&iD8D=&GS18Zz?OD6sl5-AoIN`=E6COeDdgTpkM#|sbSzj`Wng7PdCVak`tlT
z2zjkFqfNDZU>3G+AeWNCNfp2NeL+k%mTumj2&gN<-_&`ib0O~-9IyAgZ>+r8pFS&I
zHao%8Xkrt+J(=;U<aqXRD#E(BN_zS?sl`feR=R3gf0sQs6XeK*Krd*sUr98&gWDCY
ztLYrCLsz4v_TcT)d+A*Bk+R!&Nj!#Zh(6D!Opmr~&?D?%RLHD;Oy0`?tb6j-K;C-<
zxOGIy(AnRJVUA%+L_!VaLsf0pIB^&3LSHN!kpFD{E;MB}QsXyVp}byYtp$B@Xaz4}
zdt9YvZ7nhkMm_t(=A(3BqTdJR?%yQQ7>o(hBr4P*N9vH-OM^O#puYn^wa?x<zk+9+
z>ex-x)<Z3+cqn=tXVJw4Ni|fpo_*b#T0!ZigV{3<p?6_4xJ)o&!>b(ly5a{}i`4D_
zc3b<yoIfW*yk|f8Ho)IuqCR*R5vK<__?VViH7SayYt8$CBU@TN9E0?=-+#*fd^4j}
z9@TkeDkWqvAxbkHt*`+FJQAU*IR1zvDZP%B;(=2|lcz(tz*NTO@-mTJ>{QrsMC{Nd
zrOL}I_^=`mw_Fns`m#MFTZVni;)|cO$getq6Q}yr@>p72Rd+?k<nOj&DjT@e^m=J8
zLG<z6K^Za3o9WnhJ4^BDhe|>+aifPrZA5mHrNpmqD`I;d2y-cpZy)QAVH+|m+yO?4
zep0(|c5d_v9q>5($si<}@X^BcYORoW9XS~{IylnJKZ@>Tx^6&BaDK$}@+#@0Odr3>
zg}=Q$LeG3OikDY<=<&mbH-7>CSCPr@y?!sz&N}755Qaw~2ce`>QN#Hh12*~DZoG|^
z$2h(Ymfg3-=_+bcgoGc(|9;~R^+@5?{r*#sgH>efds~gdN9U_e1@oGsjuMdO0BMg0
z2BFa8#Ca~(J%b$dz%ku~wb;Xs^e<&x#~Y5KW3o#6t|!|&yhzfeurOt1xI0;nAb9Mv
zAQ2bI-5q^`hM-ktzjSkrJM?HI+NCiQS*%;iaFO>x!H8Hi*$m^bezOUD(47Kvk^ATG
zHTl<tn+y&b;HTOR>Rbs`IgTFHHb#hY4sMrsWUnVi!jOps=@sM>oSq2&P_K^$oc9@{
zP#W9(`l_pO^f$H$y;}{<H@KaeKwr@x(zy8%mGSD13809Mp;{94YV$9mlglPNHoAK4
zlCXHPrw!e%1Ia-?f5V_9Q!xINosooD`oP*O8X0VC&c`z0+lCi*Wl=4%Gl@W@1!ba3
z4u~aW3{3`uNb@23GO=sH;|3Mp3RHZ9j^)fI^JRYQ(B|)|k%BN|SZ|%jokI#^f*O9&
zkDTY_bb}MPQ~+6{=U+c?)!kh6Evr4>h?_c$R(|Tf#fWgb8ZV~G=6DZna=xS+fR)5G
z$#CO=k#cvG!b27jv-F`VJIVn#C=+bXZpvJTP~XjA*uDURscYP*=7^}?llJM~H?A$N
zn2QO%ndfruEI`8kBI%|rUEOat%F54u9G!rD!$*$(Cvs!*O75DfLYxyp7BCti>^g{n
z+N=eBNE=MXhGb&dt~^q_N|{>%p(IzRV@s>!b8eUx)WIrRqyv(T_}wY~`ZJVSf?h^O
zbK{J{^{feXrC?r}fxj|Uy`McYA-`jAgGiJVDX(3Yx;2!}wYK-W+wIX@B^1ZyrO++z
zPqqIxKgEX@^o0)o{+w*pAA6j^eo+u*A>K*k-qPjnch~7#qh!4^<CAbpZ&fP$0p5Y4
ze1!y_5e6;%o0rAeY<fXY=wLD=WalV!_hkPBcn$LeNh!7}F*`r^qvoHWl8ug);vv5&
z8DC&jl#&!&3}HGCZ|x+cjfdi)meO{w;fSA~t6Dwe6?{EupmG5lbkR?&;34HEACo;x
zB^xa(12c}kH|E*mr71YA<12Jg8>z*d)G^_<g1)f9-;j{j`~I02i@WH$m<3^|=gS=!
zOD$ze(=F)A>`2FKc^s$ArnQ!@`WV4!N?b-UNR_PeB&<+@Y*vQ|+e6<-)}#n{D6$%D
zbrYB3RBPw!^3{~u2}qVF6ve2HO*k^@1gUNn%E$Y@g?vaIyQU4Mz(anl_FmkIwn0aE
z$Pl_Dq+VtlEu1o#Tr5a8>)bRTcTyEn8l{IdB{2*LfvY8@gu>kA#9&hZN!Psb&Q>4E
zp`qy_mq~$$=qv7k4B74K{7Ir^Q%&cltXVv^c8*(k2V*dm;+R?j@Fb+qe_*;Z5to8c
zPYmYv=*5=VgzyLZ-jKTC?2^Rx@m<0SX8u*iQ6hBBEW#f}+y;HNX1xrB<thvi3T-BA
ziR8dST2TVDzu#z@c~94YpPi*CMR3EsygM)Ds`A;x@H^b@V)|-CcB?+dTS&sf-)N2@
z<G)pBz?;7lM9;POKd<na$R<&73Wl^ee^5uaHbqRGAJmEk=VlheU(q{QE1vW9LcI3#
zk)!wimD$eLB&G~%3&vF+3C5ZrV}=SD1vfrNq~)Cr!8$wF_`iwI&JXd`@onx{1pd|f
zTFVK7>9b#2I>p<S6oguLPol!7rqJa{`7F~-W%&i{$R4*odoMi=fD!7pR}lfQ^1shm
zM!ud=3*t`14P99EF?t>_ILatK3jNVD%#?$NDNaSUFw5NaV`wTY*V$K_%VaWA&3g#d
z2&bLOPJE%<`eT=i=BUWo4sz1t`G-vng)2|Z5A{BR@`|D}DEG&KyD~*o<*nv6W$Bl;
z2eHb#&ZEIV>h@(y7|Y*a4hhk2XOae%zle8~PurA?jf^*4X84)kr%e05%*Co@!IvY6
zV4Pi(nHo%lE$rd9>A=5gjfZ!x%IBIVC>K*F4T;(89EoawQ#g7MtA0Wr0sBDL8^<yr
zw0PKIBlYB3U`qjW6JK%pXX#Xt9!tN+&?9)F!44pf>+hhsvlJKvUva}qtEmalzVw_l
zp+I%uB>Notx6IZdtPS_+{lbc*v;NHx#&Y?0MfML|R?#Z~Ydc1DdJht1y{n89pK>X8
z1BcA5rGKBIbn@_Q5K*Nl6^z2<VpZF|WSm&XVby#t1-KT>Xw+M!<}&!P&`tSTquaC1
zO|aB5{PfnE_c#U{5w1XEuaL&SEkpOIDqcTtF8s@K7KCY=W_LPC)OllBhQ?6Xv(4!V
z`}U=w9#J992<Avp)JbuweV@g`v@9g)s!9F%-Ns_00w>tuB0QjvI*CIfnAAKF@wWJl
zR>{NrFy*+j%!4CLA95KDpIOloO6oC}wA})MFz+5d7m{UOoG@W8bONu|vLVm9XJyw#
z4Oh%_KbD@5iL#L8G+>orZ-tav>Pr6IBGui)evv1*ZSKBn=mGo%vbW|9()%~jGae}J
z$Lw8k(Y1SkNO5lJDu^_VRfDTv3ztn%wHEw63GruW@!}$%S+ARA{}rJ{_jsnW472Sa
zS02bKBW)J*HV-r3-z8C+RNW3Lo%dz<K@%uom9!BN=pBE-G!>`O4m&MTVD?*tSGH^{
zni49}qr^p|p2PudZG(|59wQzmnttEkpSiY$5a#|%8V^0RxeQ>4Z#v6kr=>@%-y4?;
zzZySfj@TK^T%me5b-QXWJ@$oz9H+I1d&^-0Vw*u=J6oWpaVnP)j#?JS#|1`@K2>d}
zYerDq;u%vZN2t>*AJo%&M5;vW8Dv&AD}!{413vkq>I}cD0GGg}udUV&ZB&g!H|zRZ
z8^d#u;=T)6l1@xjukoKy#Z^Y{a9~4tZzvFwczS7~1)2M?NQD}Gc#eE^r3{9fI5`Fw
zrP^NVwqB@Nyc=n2-f%p($}xP(sIPH4tazb5RDexpr^FXr{tf7al7Oumbp8$a1S;62
z-R+l;?GH)fDBnrbtJ)$YoMiq^$Nu=N^_#7SHCE+9Cwpf=`9w;UB#QwTSS5lNN9Ze1
zj!^IQ(pM=ax~-sgb9|yi2<G{K=v=Ox^2Hy3R7%Y&h>#hQ%<77pLe$z{XH?XRkWzM-
zpg``0p^B8!I?XvoF})kvV>-5mds;{d;Nkp~p^LE)2rn{{i*map^0t`qb@%RzOE{uA
zw!~$jAOFFKT2jBx*N^<|ekHLaC9Y1hcNJV0GqI^&ZRS}Gy>GhgWRvLrN5MIX+k8Y0
zX;H~Z`uh@jW~87rBc?tZ6s@;UFrz1y`N;{i0sc$rzHczUcw7*UdLaqcDZR4*hWo!S
z$qw7t$k}!vQ|wGzCx74MF+jx#Zm!7+UkH(|w%QjM$R^FpO$Qv(TIOL0O(XP&D*W`^
zz85b(nmNuNBk_;XAc+0%b|_ekxSC;CH%@>_!jON7Z>U%j>rHPK!uotnNU!9P5h#Ps
zL!M-bu8i)I2{1IdiZk7}i8iVX2fL<ymRU;pb$JFG@Y!n#`^MG;Ix3DB(&Wcmh`47C
zIRByZ@`V?%N7oy%$0UBaFK<d9>HIq#{_7XWFXNNNXv0BTsPVQ__Hnd>yzFGm4;fla
zvadO)Bi~-voOAe{Gbr{b3_dx;Cri=)zi+a80k8aJMv^K5xU<ZkH=H3PMdd^)g!BXc
E2PkrQ3jhEB
literal 0
HcmV?d00001
diff --git a/ui/images/theme-default/edit-alt.svg b/ui/images/theme-default/edit-alt.svg
new file mode 100644
index 0000000..c7ea499
--- /dev/null
+++ b/ui/images/theme-default/edit-alt.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+Copyright (c) 2014-2015, Team Redux (http://reduxframework.com)
+with Elusive Icons.
+Copyright (c) 2014-2015, Dave Gandy (http://elusiveicons.com)
+with Elusive Icons.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+#################################
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+#################################
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting - in part or in whole - any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+-->
+ <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" id="edit-alt" height="20" width="20">
+ <title id="title4694">Elusive Icons by Team Redux - http://reduxframework.com/</title>
+ <metadata id="metadata4152">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Elusive Icons by Team Redux - http://reduxframework.com/</dc:title>
+ <cc:license rdf:resource="http://scripts.sil.org/OFL" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Elusive Icons by Dave Gandy - http://elusiveicons.com</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Team Redux</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ </cc:Work>
+ <cc:License rdf:about="http://scripts.sil.org/OFL">
+ <cc:permits rdf:resource="http://scripts.sil.org/pub/OFL/Reproduction" />
+ <cc:permits rdf:resource="http://scripts.sil.org/pub/OFL/Distribution" />
+ <cc:permits rdf:resource="http://scripts.sil.org/pub/OFL/Embedding" />
+ <cc:permits rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeWorks" />
+ <cc:requires rdf:resource="http://scripts.sil.org/pub/OFL/Notice" />
+ <cc:requires rdf:resource="http://scripts.sil.org/pub/OFL/Attribution" />
+ <cc:requires rdf:resource="http://scripts.sil.org/pub/OFL/ShareAlike" />
+ <cc:requires rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeRenaming" />
+ <cc:requires rdf:resource="http://scripts.sil.org/pub/OFL/BundlingWhenSelling" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <path id="path4656" d="M 0,20 C 0,13.333333 0,6.666667 0,0 4.3066666,0 8.6133335,0 12.92,0 11.826667,1.093333 10.733334,2.186667 9.6400001,3.28 c -2.12,0 -4.24,0 -6.3600001,0 0,4.48 0,8.96 0,13.44 4.4800001,0 8.96,0 13.44,0 0,-2.126667 0,-4.253333 0,-6.38 1.093333,-1.093333 2.186667,-2.186667 3.28,-3.28 0,4.313333 0,8.626667 0,12.94 -6.666667,0 -13.3333333,0 -20,0 z m 7.2600001,-7.26 c 0,-0.786667 0,-1.573333 0,-2.36 1.2707368,-0.104839 2.347146,1.140345 2.34,2.36 -0.78,0 -1.56,0 -2.34,0 z m 1.02,-3.52 C 10.726667,6.773333 13.173334,4.326667 15.62,1.88 c 0.833334,0.833333 1.666667,1.666667 2.5,2.5 -2.446666,2.446667 -4.893333,4.893333 -7.34,7.34 C 9.9466667,10.886667 9.1133335,10.053333 8.2800001,9.22 Z M 16.22,1.28 C 16.646667,0.853333 17.073334,0.426667 17.5,0 18.333333,0.833333 19.166667,1.666667 20,2.5 19.573333,2.926667 19.146667,3.353333 18.72,3.78 17.886667,2.946667 17.053334,2.113333 16.22,1.28 Z" style="fill:#ffffff" />
+ </svg>
diff --git a/ui/images/theme-default/spin5.svg b/ui/images/theme-default/spin5.svg
new file mode 100644
index 0000000..350c54e
--- /dev/null
+++ b/ui/images/theme-default/spin5.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+2012 - Opensource iconic font from Fontello project http://fontello.github.com/fontelico.font/demo.html
+
+Vitaly Puzrin (Fontello project)
+
+* Angela Berbentseva (emoticons, spinners). berbentseva_angela(a)yahoo.com
+* Sebastian Janzen (crowns). sebastian.janzen(a)hl-services.de, https://github.com/sja
+
+Contacts
+
+Vitaly Puzrin (Fontello project)
+
+vitaly(a)rcdesign.ru
+https://github.com/puzrin
+https://twitter.com/puzrin
+
+Licence
+
+All icons are distributed under CC BY licence.
+
+This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
+-->
+ <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" id="spin5" height="20" width="20">
+ <title id="title4144">spin5</title>
+ <metadata id="metadata4142">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>spin5</dc:title>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by/3.0/" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Angela Berbentseva</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Fontello project</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/by/3.0/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <path id="path3" d="m 9.23077,19.99992 c -0.11988,0 -0.23976,-0.0999 -0.23976,-0.23976 l 0,-3.63636 c 0,-0.11988 0.0999,-0.23976 0.23976,-0.23976 l 1.37862,0 c 0,0 0.02,0 0.02,0 0.11988,0 0.23976,0.0999 0.23976,0.23976 l 0,3.63636 c 0,0.11988 -0.0999,0.23976 -0.23976,0.23976 l -1.37862,0 c 0,0 -0.02,0 -0.02,0 z m 4.995,-0.93906 c -0.0799,0 -0.15984,-0.04 -0.1998,-0.11988 l -1.81818,-3.15684 c -0.0599,-0.11988 -0.02,-0.25974 0.0799,-0.31968 l 1.1988,-0.69931 c 0,0 0,0 0.02,0 0.11988,-0.0599 0.25974,-0.02 0.31968,0.0799 l 1.81819,3.15685 c 0.0599,0.11988 0.02,0.25974 -0.0799,0.31968 l -1.21879,0.6993 c -0.04,0.02 -0.0799,0.02 -0.0999,0.04 z m -8.55144,-0.0599 c -0.04,0 -0.0799,-0.02 -0.0999,-0.04 l -1.21879,-0.6993 c -0.0999,-0.0599 -0.13986,-0.1998 -0.0799,-0.31968 l 1.81819,-3.13687 c 0,0 0,0 0,-0.02 0.0599,-0.11988 0.1998,-0.13986 0.31968,-0.0799 l 1.21878,0.69931 c 0.0999,0.0599 0.13986,0.1998 0.0799,0.31968 l -1.81818,3.13686 c 0,0 0,0 0,0.02 -0.04,0.0799 -0.11988,0.11988 -0.1998,0.11988 z M 18.06194,15.7642 c -0.04,0 -0.0799,-0.02 -0.0999,-0.04 l -3.13687,-1.81819 c 0,0 0,0 -0.02,0 -0.11988,-0.0599 -0.13986,-0.1998 -0.0799,-0.31968 l 0.69931,-1.21878 c 0.0599,-0.0999 0.1998,-0.13986 0.31968,-0.0799 l 3.13686,1.81818 c 0,0 0,0 0.02,0 0.11988,0.0599 0.13986,0.1998 0.0799,0.31968 l -0.6993,1.21879 c -0.04,0.0799 -0.11988,0.11988 -0.1998,0.11988 z M 1.87812,15.6643 c -0.0799,0 -0.15984,-0.04 -0.1998,-0.11988 l -0.6993,-1.21879 c -0.0599,-0.11988 -0.02,-0.25974 0.0799,-0.31968 l 3.15684,-1.81818 c 0.11988,-0.0599 0.25974,-0.02 0.31968,0.0799 l 0.69931,1.1988 c 0,0 0,0 0,0.02 0.0599,0.11988 0.02,0.25974 -0.0799,0.31968 L 1.998,15.62434 c -0.04,0.02 -0.0799,0.02 -0.0999,0.04 z m 14.24576,-4.67533 c -0.11988,0 -0.23976,-0.0999 -0.23976,-0.23976 l 0,-1.37862 c 0,0 0,-0.02 0,-0.02 0,-0.11988 0.0999,-0.23976 0.23976,-0.23976 l 3.63636,0 C 19.88012,9.11083 20,9.21073 20,9.35059 l 0,1.37862 c 0,0 0,0.02 0,0.02 0,0.11988 -0.0999,0.23976 -0.23976,0.23976 l -3.63636,0 z M 0.23976,10.88907 C 0.11988,10.88907 0,10.78917 0,10.64931 L 0,9.27069 c 0,0 0,-0.02 0,-0.02 C 0,9.13081 0.0999,9.01093 0.23976,9.01093 l 3.63636,0 c 0.11988,0 0.23976,0.0999 0.23976,0.23976 l 0,1.37862 c 0,0 0,0.02 0,0.02 0,0.11988 -0.0999,0.23976 -0.23976,0.23976 l -3.63636,0 z M 15.68432,7.83213 c -0.0799,0 -0.15984,-0.04 -0.1998,-0.11988 l -0.69931,-1.1988 c 0,0 0,0 0,-0.02 -0.0599,-0.11988 -0.02,-0.25974 0.0799,-0.31968 l 3.15685,-1.81819 c 0.11988,-0.0599 0.25974,-0.02 0.31968,0.0799 l 0.6993,1.21879 c 0.0599,0.11988 0.02,0.25974 -0.0799,0.31968 L 15.8042,7.79213 c -0.04,0.02 -0.0799,0.02 -0.0999,0.04 z M 4.37562,7.73223 c -0.04,0 -0.0799,-0.02 -0.0999,-0.04 L 1.13886,5.87405 c 0,0 0,0 -0.02,0 C 0.99898,5.81415 0.979,5.67425 1.03896,5.55437 l 0.6993,-1.21879 c 0.0599,-0.0999 0.1998,-0.13986 0.31968,-0.0799 l 3.13687,1.81819 c 0,0 0,0 0.02,0 0.11988,0.0599 0.13986,0.1998 0.0799,0.31968 L 4.5954,7.61233 c -0.04,0.0799 -0.11988,0.11988 -0.1998,0.11988 z m 9.33067,-2.41758 c -0.04,0 -0.0799,-0.02 -0.0999,-0.04 L 12.38761,4.57534 c -0.0999,-0.0599 -0.13986,-0.1998 -0.0799,-0.31968 L 14.12589,1.1188 c 0,0 0,0 0,-0.02 0.0599,-0.11988 0.1998,-0.13986 0.31968,-0.0799 l 1.21879,0.6993 c 0.0999,0.0599 0.13986,0.1998 0.0799,0.31968 l -1.81819,3.13687 c 0,0 0,0 0,0.02 -0.04,0.0799 -0.11988,0.11988 -0.1998,0.11988 z M 6.39361,5.25475 c -0.0799,0 -0.15984,-0.04 -0.1998,-0.11988 L 4.37562,1.97802 c -0.0599,-0.11988 -0.02,-0.25974 0.0799,-0.31968 l 1.21879,-0.6993 c 0.11988,-0.0599 0.25974,-0.02 0.31968,0.0799 l 1.81818,3.15684 c 0.0599,0.11988 0.02,0.25974 -0.0799,0.31968 l -1.1988,0.69931 c 0,0 0,0 -0.02,0 -0.04,0.02 -0.0799,0.04 -0.0999,0.04 z M 9.35065,4.11588 c -0.11988,0 -0.23976,-0.0999 -0.23976,-0.23976 l 0,-3.63636 C 9.11089,0.11988 9.21079,0 9.35065,0 l 1.37862,0 c 0,0 0.02,0 0.02,0 0.11988,0 0.23976,0.0999 0.23976,0.23976 l 0,3.63636 c 0,0.11988 -0.0999,0.23976 -0.23976,0.23976 l -1.37862,0 c 0,0 -0.02,0 -0.02,0 z" style="fill:#777777;" />
+ </svg>
diff --git a/ui/images/tiny.png b/ui/images/tiny.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c52a5192114d92b4e3e6b7e9553d3bcb8f0a7a8
GIT binary patch
literal 6539
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
literal 0
HcmV?d00001
diff --git a/ui/images/wide.png b/ui/images/wide.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a0a2a9ac966ec7141b148c12ef3f6a6de98ff3c
GIT binary patch
literal 44544
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
RLP5X_dcy8_zU8@F{|2yHZH@o{
literal 0
HcmV?d00001
diff --git a/ui/pages/login.html.tmpl b/ui/pages/login.html.tmpl
index 5aa10bb..9a2a393 100644
--- a/ui/pages/login.html.tmpl
+++ b/ui/pages/login.html.tmpl
@@ -30,7 +30,25 @@
<title>Kimchi</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
-<link rel="shortcut icon" href="images/favicon.ico">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-title" content="Wok">
+<link href="images/apple-touch-icon-152.png" sizes="152x152" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-144.png" sizes="144x144" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-76.png" sizes="76x76" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-72.png" sizes="72x72" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-180x180.png" sizes="120x120" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-114x114.png" sizes="114x114" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-57x57.png" sizes="57x57" rel="apple-touch-icon-precomposed">
+<link rel="icon" type="image/png" href="images/android-chrome-192x192.png" sizes="192x192">
+<!--[if IE lte 9]><link rel="shortcut icon" href="images/favicon.ico"><![endif]-->
+<link rel="shortcut icon" href="images/favicon.png">
+<meta name="application-name" content="Wok">
+<meta name="msapplication-config" content="none" />
+<meta name="msapplication-TileColor" content="#4f4f4f"/>
+<meta name="msapplication-square70x70logo" content="images/tiny.png"/>
+<meta name="msapplication-square150x150logo" content="images/square.png"/>
+<meta name="msapplication-wide310x150logo" content="images/wide.png"/>
+<meta name="msapplication-square310x310logo" content="images/large.png"/>
<link rel="stylesheet" href="$href('libs/jquery-ui/themes/base/jquery-ui.min.css')">
<link rel="stylesheet" href="$href('css/jquery-ui.custom.css')">
<link rel="stylesheet" href="$href('css/theme-default.min.css')">
diff --git a/ui/pages/wok-ui.html.tmpl b/ui/pages/wok-ui.html.tmpl
index 9ac0e89..a562e70 100644
--- a/ui/pages/wok-ui.html.tmpl
+++ b/ui/pages/wok-ui.html.tmpl
@@ -29,7 +29,25 @@
<title>Kimchi</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
-<link rel="shortcut icon" href="images/favicon.ico">
+<meta name="apple-mobile-web-app-capable" content="yes">
+<meta name="apple-mobile-web-app-title" content="Wok">
+<link href="images/apple-touch-icon-152.png" sizes="152x152" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-144.png" sizes="144x144" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-76.png" sizes="76x76" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-72.png" sizes="72x72" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-180x180.png" sizes="120x120" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-114x114.png" sizes="114x114" rel="apple-touch-icon-precomposed">
+<link href="images/apple-touch-icon-57x57.png" sizes="57x57" rel="apple-touch-icon-precomposed">
+<link rel="icon" type="image/png" href="images/android-chrome-192x192.png" sizes="192x192">
+<!--[if IE lte 9]><link rel="shortcut icon" href="images/favicon.ico"><![endif]-->
+<link rel="shortcut icon" href="images/favicon.png">
+<meta name="application-name" content="Wok">
+<meta name="msapplication-config" content="none" />
+<meta name="msapplication-TileColor" content="#4f4f4f"/>
+<meta name="msapplication-square70x70logo" content="images/tiny.png"/>
+<meta name="msapplication-square150x150logo" content="images/square.png"/>
+<meta name="msapplication-wide310x150logo" content="images/wide.png"/>
+<meta name="msapplication-square310x310logo" content="images/large.png"/>
<link rel="stylesheet" href="$href('libs/jquery-ui/themes/base/jquery-ui.min.css')">
<link rel="stylesheet" href="$href('css/jquery-ui.custom.css')">
<link rel="stylesheet" href="$href('css/theme-default.min.css')">
--
1.9.3
2
1
[PATCH] [WOK] Moving JS libraries to new folders and added license files
by sguimaraes943@gmail.com 23 Sep '15
by sguimaraes943@gmail.com 23 Sep '15
23 Sep '15
From: samhenri <samuel.guimaraes(a)eldorado.org.br>
This commit updates jquery and jquery-ui to the latest compatible versions (v1.11.3 and v1.11.4) and adds all the JS libraries that are required in order to run and develop the new-ui.
Updated the old-ui login.html.tmpl and wok-ui.html.tmpl to point to correct Js path otherwise the CherryPy would throw a 404 error when loading the pages.
Moved all libs/themes files to libs/jquery-ui/themes/ and added a copy of jquery-ui license to this folder.
All the new libraries where added to ui/libs folder and configure.ac was properly updated to read the new Makefiles.
*New-ui related:
*Removed logo.ico and updated with favicon.ico in high resolution (name convention for IE9 compatibility). This change can be spotted in the browser tab bar with the old-ui.
*Updated opensans.css to point to local font family when the user already has it installed.
Signed-off-by: samhenri <samuel.guimaraes(a)eldorado.org.br>
---
configure.ac | 12 +-
ui/css/Makefile.am | 2 +-
ui/css/jquery-ui.custom.css | 203 +++++++++++++++++++++
ui/css/opensans/opensans.css | 20 +-
ui/images/favicon.ico | Bin 0 -> 15086 bytes
ui/images/logo.ico | Bin 1214 -> 0 bytes
ui/images/theme-default/Makefile.am | 2 +-
ui/libs/Makefile.am | 6 +-
ui/libs/bootstrap-select/LICENSE | 21 +++
ui/libs/bootstrap-select/Makefile.am | 20 ++
ui/libs/bootstrap-select/bootstrap-select.min.js | 8 +
ui/libs/bootstrap/LICENSE | 21 +++
ui/libs/bootstrap/Makefile.am | 20 ++
ui/libs/bootstrap/bootstrap.min.js | 7 +
ui/libs/es5-shim/LICENSE | 22 +++
ui/libs/es5-shim/Makefile.am | 20 ++
ui/libs/es5-shim/es5-shim.min.js | 7 +
ui/libs/jquery-1.10.0.min.js | 6 -
ui/libs/jquery-i18n/LICENSE | 19 ++
ui/libs/jquery-i18n/Makefile.am | 20 ++
ui/libs/jquery-i18n/jquery.i18n.min.js | 1 +
ui/libs/jquery-ui-i18n.min.js | 7 -
ui/libs/jquery-ui.min.js | 13 --
ui/libs/jquery-ui/LICENSE | 44 +++++
ui/libs/jquery-ui/Makefile.am | 22 +++
ui/libs/jquery-ui/jquery-ui-i18n.min.js | 7 +
ui/libs/jquery-ui/jquery-ui.min.js | 13 ++
ui/libs/jquery-ui/themes/Makefile.am | 18 ++
ui/libs/jquery-ui/themes/base/Makefile.am | 22 +++
ui/libs/jquery-ui/themes/base/images/Makefile.am | 20 ++
.../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 457 bytes
.../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 351 bytes
.../base/images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 244 bytes
.../base/images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 301 bytes
.../base/images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 387 bytes
.../base/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 246 bytes
.../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 5854 bytes
.../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 317 bytes
.../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 367 bytes
.../themes/base/images/ui-icons_222222_256x240.png | Bin 0 -> 7006 bytes
.../themes/base/images/ui-icons_228ef1_256x240.png | Bin 0 -> 4599 bytes
.../themes/base/images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4599 bytes
.../themes/base/images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4599 bytes
.../themes/base/images/ui-icons_ffffff_256x240.png | Bin 0 -> 6468 bytes
ui/libs/jquery-ui/themes/base/jquery-ui.min.css | 7 +
ui/libs/jquery/LICENSE | 21 +++
ui/libs/jquery/Makefile.am | 20 ++
ui/libs/jquery/jquery.min.js | 6 +
ui/libs/themes/Makefile.am | 18 --
ui/libs/themes/base/Makefile.am | 22 ---
ui/libs/themes/base/images/Makefile.am | 20 --
.../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 457 -> 0 bytes
.../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 351 -> 0 bytes
.../base/images/ui-bg_flat_10_000000_40x100.png | Bin 244 -> 0 bytes
.../base/images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 301 -> 0 bytes
.../base/images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 387 -> 0 bytes
.../base/images/ui-bg_glass_65_ffffff_1x400.png | Bin 246 -> 0 bytes
.../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 5854 -> 0 bytes
.../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 317 -> 0 bytes
.../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 367 -> 0 bytes
.../themes/base/images/ui-icons_222222_256x240.png | Bin 7006 -> 0 bytes
.../themes/base/images/ui-icons_228ef1_256x240.png | Bin 4599 -> 0 bytes
.../themes/base/images/ui-icons_ef8c08_256x240.png | Bin 4599 -> 0 bytes
.../themes/base/images/ui-icons_ffd27a_256x240.png | Bin 4599 -> 0 bytes
.../themes/base/images/ui-icons_ffffff_256x240.png | Bin 6468 -> 0 bytes
ui/libs/themes/base/jquery-ui.min.css | 7 -
ui/pages/error.html.tmpl | 2 +
ui/pages/login.html.tmpl | 10 +-
ui/pages/wok-ui.html.tmpl | 13 +-
69 files changed, 625 insertions(+), 124 deletions(-)
create mode 100644 ui/css/jquery-ui.custom.css
create mode 100644 ui/images/favicon.ico
delete mode 100644 ui/images/logo.ico
create mode 100644 ui/libs/bootstrap-select/LICENSE
create mode 100644 ui/libs/bootstrap-select/Makefile.am
create mode 100644 ui/libs/bootstrap-select/bootstrap-select.min.js
create mode 100644 ui/libs/bootstrap/LICENSE
create mode 100644 ui/libs/bootstrap/Makefile.am
create mode 100644 ui/libs/bootstrap/bootstrap.min.js
create mode 100644 ui/libs/es5-shim/LICENSE
create mode 100644 ui/libs/es5-shim/Makefile.am
create mode 100644 ui/libs/es5-shim/es5-shim.min.js
delete mode 100644 ui/libs/jquery-1.10.0.min.js
create mode 100644 ui/libs/jquery-i18n/LICENSE
create mode 100644 ui/libs/jquery-i18n/Makefile.am
create mode 100644 ui/libs/jquery-i18n/jquery.i18n.min.js
delete mode 100644 ui/libs/jquery-ui-i18n.min.js
delete mode 100644 ui/libs/jquery-ui.min.js
create mode 100644 ui/libs/jquery-ui/LICENSE
create mode 100644 ui/libs/jquery-ui/Makefile.am
create mode 100644 ui/libs/jquery-ui/jquery-ui-i18n.min.js
create mode 100644 ui/libs/jquery-ui/jquery-ui.min.js
create mode 100644 ui/libs/jquery-ui/themes/Makefile.am
create mode 100644 ui/libs/jquery-ui/themes/base/Makefile.am
create mode 100644 ui/libs/jquery-ui/themes/base/images/Makefile.am
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_flat_10_000000_40x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_222222_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_228ef1_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_ef8c08_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_ffd27a_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/jquery-ui.min.css
create mode 100644 ui/libs/jquery/LICENSE
create mode 100644 ui/libs/jquery/Makefile.am
create mode 100644 ui/libs/jquery/jquery.min.js
delete mode 100644 ui/libs/themes/Makefile.am
delete mode 100644 ui/libs/themes/base/Makefile.am
delete mode 100644 ui/libs/themes/base/images/Makefile.am
delete mode 100644 ui/libs/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_flat_10_000000_40x100.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_222222_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_228ef1_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_ef8c08_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_ffd27a_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_ffffff_256x240.png
delete mode 100644 ui/libs/themes/base/jquery-ui.min.css
diff --git a/configure.ac b/configure.ac
index 2c76bad..e11a17d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -110,9 +110,15 @@ AC_CONFIG_FILES([
ui/images/theme-default/Makefile
ui/js/Makefile
ui/libs/Makefile
- ui/libs/themes/Makefile
- ui/libs/themes/base/Makefile
- ui/libs/themes/base/images/Makefile
+ ui/libs/bootstrap/Makefile
+ ui/libs/bootstrap-select/Makefile
+ ui/libs/es5-shim/Makefile
+ ui/libs/jquery/Makefile
+ ui/libs/jquery-i18n/Makefile
+ ui/libs/jquery-ui/Makefile
+ ui/libs/jquery-ui/themes/Makefile
+ ui/libs/jquery-ui/themes/base/Makefile
+ ui/libs/jquery-ui/themes/base/images/Makefile
ui/pages/Makefile
ui/pages/websockify/Makefile
contrib/Makefile
diff --git a/ui/css/Makefile.am b/ui/css/Makefile.am
index aeebe02..6f8fe05 100644
--- a/ui/css/Makefile.am
+++ b/ui/css/Makefile.am
@@ -20,7 +20,7 @@ SUBDIRS = fontawesome opensans
EXTRA_DIST = theme-default
cssdir = $(datadir)/wok/ui/css
-dist_css_DATA = theme-default.min.css
+dist_css_DATA = theme-default.min.css jquery-ui.custom.css
theme-default.min.css: theme-default/*.css
cat $^ > $@
diff --git a/ui/css/jquery-ui.custom.css b/ui/css/jquery-ui.custom.css
new file mode 100644
index 0000000..48b44ab
--- /dev/null
+++ b/ui/css/jquery-ui.custom.css
@@ -0,0 +1,203 @@
+/*
+ * Project Kimchi
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ */
+
+.ui-button-primary {
+ border-radius: 8px 8px 8px 8px;
+}
+
+.ui-button-primary.ui-state-default {
+ background: none repeat scroll 0 0 #0066FF;
+ border: 0 none;
+}
+
+.ui-button-primary.ui-state-disabled {
+ background-color: silver;
+ opacity: 1;
+}
+
+.ui-button-primary.ui-state-hover {
+ background: #0044DD;
+}
+
+.ui-button-primary .ui-button-text {
+ padding: 10px 23px;
+ font-size: 13px;
+ color: #EEEEEE;
+}
+
+.ui-button-secondary {
+ border: 1px solid #AAAAAA;
+ border-radius: 5px 5px 5px 5px;
+ cursor: pointer;
+}
+
+.ui-button-secondary.ui-state-default {
+ background: linear-gradient(to bottom, #FFFFFF 0%, #E5E5E5 100%) repeat
+ scroll 0 0 transparent;
+ box-shadow: -2px -2px 2px #EAEAEA, 2px 2px 2px #FFFFFF, 3px 3px 3px white
+ inset, -3px -3px 3px rgba(0, 0, 0, 0.25) inset;
+}
+
+.ui-button-secondary.ui-state-hover {
+ background: linear-gradient(to bottom, #d5d5d5 0%, #eeeeee 100%);
+ box-shadow: -2px -2px 2px #dadada, 2px 2px 2px #fff, 3px 3px 3px white
+ inset, -3px -3px 3px rgba(0, 0, 0, .25) inset;
+}
+
+.ui-button-secondary .ui-button-text {
+ font-size: 13px;
+ color: #333333;
+ text-overflow: ellipsis;
+ text-shadow: -1px -1px 1px #AAAAAA, 1px 1px 1px #FFFFFF;
+ white-space: nowrap;
+}
+
+.ui-button-secondary.ui-button-text-only .ui-button-text {
+ padding: 12px 23px 13px 20px;
+}
+
+.ui-button-secondary.ui-button-text-icon-secondary .ui-button-text {
+ padding: 12px 35px 13px 13px;
+}
+
+.ui-button-secondary .ui-button-icon-secondary {
+ padding-right: 5px;
+ width: 15px;
+ height: 15px;
+}
+
+.ui-menu {
+ background: linear-gradient(to bottom, #EEEEEE 0%, #CCCCCC 10px, #CCCCCC
+ 96%, #A5A5A5 100%) repeat scroll 0 0 transparent;
+ padding: 10px 10px 0;
+ width: 250px;
+}
+
+.ui-menu .ui-menu-item a {
+ background: linear-gradient(to bottom, #FFFFFF 0%, #E5E5E5 100%) repeat
+ scroll 0 0 transparent;
+ border: 1px solid #CCCCCC;
+ border-radius: 5px 5px 5px 5px;
+ box-shadow: -1px -1px 1px #CCCCCC, 1px 1px 1px #EEEEEE;
+ display: block;
+ font-size: 13px;
+ line-height: 38px;
+ margin-bottom: 10px;
+ text-align: center;
+ text-shadow: -1px -1px 1px #CCCCCC, 1px 1px 1px #FFFFFF;
+ width: 96%;
+}
+
+.ui-menu .ui-menu-item a.ui-state-focus {
+ background: linear-gradient(to bottom, #EEEEEE 0%, #D5D5D5 100%) repeat
+ scroll 0 0 transparent;
+ box-shadow: -1px -1px 1px #BBBBBB, 1px 1px 1px #DDDDDD;
+ margin: 0px 0px 10px 0px;
+}
+
+.ui-menu .ui-menu-item a.red:not([disabled]) {
+ background: linear-gradient(to bottom, #FF3019 0%, #CF0404 100%) repeat
+ scroll 0 0 transparent;
+ border: 1px solid #B10F14;
+ color: #FFFFFF;
+ text-shadow: -1px -1px 1px #9E0505, 1px 1px 1px #FC5D4C;
+}
+
+.ui-menu .ui-menu-item a.red:hover:not([disabled]) {
+ background: linear-gradient(to bottom, #EF2009 0%, #BF0404 100%) repeat
+ scroll 0 0 transparent;
+}
+
+.ui-menu .ui-state-disabled {
+ opacity: 1;
+}
+
+.ui-menu .ui-state-disabled a {
+ color: gray;
+}
+
+.ui-widget-overlay {
+ background: url("../images/theme-default/bg-mask.png") repeat scroll
+ 0 0 transparent;
+ opacity: 1;
+}
+
+.ui-dialog {
+ background: none;
+ background-color: #EEEEEE;
+ border: 2px solid #0F71B4;
+ border-radius: 8px;
+ padding: 0px;
+}
+
+.ui-dialog .ui-dialog-titlebar {
+ border: none;
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+ background: none;
+ padding: 13px 0px 13px 10px;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.15), 0 -1px 0 rgba(0,0,0,0.05) inset;
+}
+
+.ui-dialog .ui-dialog-title {
+ font-size: 18px;
+ color: #0066CC;
+}
+
+.ui-dialog .ui-dialog-titlebar-close {
+ margin: 4px 0 0;
+ background: none repeat scroll 0 0 #EEEEEE;
+ border: 2px solid #CCCCCC;
+ border-radius: 35px 35px 35px 35px;
+ color: #CCCCCC;
+ cursor: pointer;
+ height: 35px;
+ width: 35px;
+ position: absolute;
+ right: 7px;
+ text-align: center;
+ top: 5px;
+}
+
+.ui-dialog .ui-dialog-titlebar .ui-state-hover {
+ border: 2px solid #444444;
+ color: #444444;
+}
+
+.ui-dialog .ui-dialog-titlebar .ui-button-text {
+ font-size: 24px;
+ font-weight: bold;
+ padding: 0px;
+ text-indent: 0px;
+}
+
+.ui-dialog .ui-dialog-titlebar .ui-button-icon-primary {
+ display: none;
+}
+
+.ui-dialog .ui-dialog-buttonpane {
+ padding: 0px;
+ background-color: transparent;
+ border-width: 0;
+ box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.15);
+}
+
+.ui-dialog .ui-dialog-buttonpane button {
+ cursor: pointer;
+ margin: 0.5em 13px 0.5em 0;
+}
diff --git a/ui/css/opensans/opensans.css b/ui/css/opensans/opensans.css
index 6ab53b4..57a6533 100644
--- a/ui/css/opensans/opensans.css
+++ b/ui/css/opensans/opensans.css
@@ -22,7 +22,7 @@
/* BEGIN Light */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Light.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Light.ttf") format("truetype");
font-weight: 300;
font-style: normal; }
/* END Light */
@@ -30,7 +30,7 @@
/* BEGIN Light Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-LightItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-LightItalic.ttf") format("truetype");
font-weight: 300;
font-style: italic; }
/* END Light Italic */
@@ -38,7 +38,7 @@
/* BEGIN Regular */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Regular.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Regular.ttf") format("truetype");
font-weight: normal;
font-style: normal; }
/* END Regular */
@@ -46,7 +46,7 @@
/* BEGIN Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Italic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Italic.ttf") format("truetype");
font-weight: normal;
font-style: italic; }
/* END Italic */
@@ -54,7 +54,7 @@
/* BEGIN Semibold */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Semibold.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Semibold.ttf") format("truetype");
font-weight: 600;
font-style: normal; }
/* END Semibold */
@@ -62,7 +62,7 @@
/* BEGIN Semibold Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-SemiboldItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-SemiboldItalic.ttf") format("truetype");
font-weight: 600;
font-style: italic; }
/* END Semibold Italic */
@@ -70,7 +70,7 @@
/* BEGIN Bold */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Bold.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Bold.ttf") format("truetype");
font-weight: bold;
font-style: normal; }
/* END Bold */
@@ -78,7 +78,7 @@
/* BEGIN Bold Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-BoldItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-BoldItalic.ttf") format("truetype");
font-weight: bold;
font-style: italic; }
/* END Bold Italic */
@@ -86,7 +86,7 @@
/* BEGIN Extrabold */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-ExtraBold.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-ExtraBold.ttf") format("truetype");
font-weight: 800;
font-style: normal; }
/* END Extrabold */
@@ -94,7 +94,7 @@
/* BEGIN Extrabold Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-ExtraBoldItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-ExtraBoldItalic.ttf") format("truetype");
font-weight: 800;
font-style: italic; }
/* END Extrabold Italic */
diff --git a/ui/images/favicon.ico b/ui/images/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..cb3a3dc2f9c9ce0e5d3e14f0adab89c28c729ce0
GIT binary patch
literal 15086
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¥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
literal 0
HcmV?d00001
diff --git a/ui/images/logo.ico b/ui/images/logo.ico
deleted file mode 100644
index 446143f066a60f479b2cb8f8d04ab3c97ff60e56..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1214
zcma)*3rLeu6vyu=X_;nPV)$&PPF)r(wTQ|dTGOUtnOdf0mZ=cR#99xbub1{BqnD9^
z^Z>PV6h)fUny6#CN{3di2P{*h2ek@Oq0a4o*=I}2Iv?krbAR`oKi_vQA0faVCr83o
zF{!X2#Dx$Nz}$(sm^sgR<Jj30yCMGpMl1z837jm3H1$<DU4IV>Tbdw<FM-;Hi<#et
z=I}n~iB^qh8{XzCNyvT<I;$&znmT~?eFXZgAE@Om?1h(6Iq+2e1-ca!zOAO7n3*};
zXq6n?2kF<!f%cez;-Fgx4$e+xo{WR;oqhc_OW;#nF!Zm|JK}m8gi6aC+##`QA5PmJ
zfeZ(o(}%&&1P5#*1vVbnssk~XhN5bNz=T)>5^+BS=V54SJ|^z)5I7%kU;>-skiq*{
z5B^=eF<T)pK9+)bV;9UCK>t-HOi+bkR-wK1xpfXL;S<?ho1pQ5gYzxiHR~=e+XHS(
zYe7QMZb3IjWV72H-JpD~6z(tbgwn1o$D2s!YteWNJS!i9l%iW?+34Lvr*KL(6{_X|
zobEjAb{lD|4qsmYvGF;~r0Aunc#>=c)0W4s|D{#(q9~vaX{rGms=((Wn*~LeWqIu}
zkGvlzwaxjL25hey2bVweu<xK*t+@Oa_)UKTK^x4IwmKMOjm@oL`l)}_NGPy}tdb}w
zHa>H`ji2N7m}Xsj#j7-`#=Dv}`)h&)9th^&^dR%>WH_MB8KcIXVf8p&s1xD|_k)R-
zrk$Z0-|Gf}&4Au$KhU$k?3YR5by~D9M&-q$=ocNz4!IY&p7%OxuJf&+Ei-G(23hU;
zHTLhMtjFR9ExVbPQVLzBFlROcIZ|#jmX6fm_hsVa3XP<aKAeAt8dqp&oBW=V^+d>Q
zkcNnm%Ds?ggd^Rv2~9_o82cv;p6LSBD_g_s-n1uZ8#<EeLwTm~LE9J!Zdo@M&*jFU
zoM+Z%F5)(8$8y`Wz~%Pd;Nlx@aH{<lk}}CcRMRXZMD&%Uhz3Ze$jpg#uec1IlFMPW
MDQ4iZEk#_;cNAJoqyPW_
diff --git a/ui/images/theme-default/Makefile.am b/ui/images/theme-default/Makefile.am
index 336729c..bf594d7 100644
--- a/ui/images/theme-default/Makefile.am
+++ b/ui/images/theme-default/Makefile.am
@@ -17,4 +17,4 @@
imagedir = $(datadir)/wok/ui/images/theme-default
-dist_image_DATA = *.png *.gif
+dist_image_DATA = *.png *.gif *.svg
diff --git a/ui/libs/Makefile.am b/ui/libs/Makefile.am
index 49ad3bb..38af60b 100644
--- a/ui/libs/Makefile.am
+++ b/ui/libs/Makefile.am
@@ -15,8 +15,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SUBDIRS = themes
-
-jsdir = $(datadir)/wok/ui/libs
-
-dist_js_DATA = $(wildcard *.js) $(NULL)
+SUBDIRS = bootstrap jquery jquery-ui bootstrap-select es5-shim jquery-i18n
diff --git a/ui/libs/bootstrap-select/LICENSE b/ui/libs/bootstrap-select/LICENSE
new file mode 100644
index 0000000..4e7f552
--- /dev/null
+++ b/ui/libs/bootstrap-select/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2014 bootstrap-select
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/ui/libs/bootstrap-select/Makefile.am b/ui/libs/bootstrap-select/Makefile.am
new file mode 100644
index 0000000..df7964e
--- /dev/null
+++ b/ui/libs/bootstrap-select/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+bootstrapselectjsdir = $(datadir)/wok/ui/libs/bootstrap-select
+
+dist_bootstrapselectjs_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/bootstrap-select/bootstrap-select.min.js b/ui/libs/bootstrap-select/bootstrap-select.min.js
new file mode 100644
index 0000000..d770e9b
--- /dev/null
+++ b/ui/libs/bootstrap-select/bootstrap-select.min.js
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/)
+ *
+ * Copyright 2013-2014 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a){"use strict";function b(a,b){return a.toUpperCase().indexOf(b.toUpperCase())>-1}function c(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function d(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function e(b,c){var d=arguments,e=b,b=d[0],c=d[1];[].shift.apply(d),"undefined"==typeof b&&(b=e);var g,h=this.each(function(){var e=a(this);if(e.is("select")){var h=e.data("selectpicker"),i="object"==typeof b&&b;if(h){if(i)for(var j in i)i.hasOwnProperty(j)&&(h.options[j]=i[j])}else{var k=a.extend({},f.DEFAULTS,a.fn.selectpicker.defaults||{},e.data(),i);e.data("selectpicker",h=new f(this,k,c))}"string"==typeof b&&(g=h[b]instanceof Function?h[b].apply(h,d):h.options[b])}});return"undefined"!=typeof g?g:h}a.expr[":"].icontains=function(c,d,e){return b(a(c).text(),e[3])},a.expr[":"].aicontains=function(c,d,e){return b(a(c).data("normalizedText")||a(c).text(),e[3])};var f=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=f.prototype.val,this.render=f.prototype.render,this.refresh=f.prototype.refresh,this.setStyle=f.prototype.setStyle,this.selectAll=f.prototype.selectAll,this.deselectAll=f.prototype.deselectAll,this.destroy=f.prototype.remove,this.remove=f.prototype.remove,this.show=f.prototype.show,this.hide=f.prototype.hide,this.init()};f.VERSION="1.6.3",f.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results match",countSelectedText:function(a){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){var c=[];return c[0]=1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",c[1]=1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)",c},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", ",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,searchAccentInsensitive:!1},f.prototype={constructor:f,init:function(){var b=this,c=this.$element.attr("id");this.$element.hide(),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement),this.$menu=this.$newElement.find("> .dropdown-menu"),this.$button=this.$newElement.find("> button"),this.$searchbox=this.$newElement.find("input"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.liHeight(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile()},createDropdown:function(){var b=this.multiple?" show-tick":"",c=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.$element.parents().hasClass("form-group-lg")?" btn-lg":this.$element.parents().hasClass("form-group-sm")?" btn-sm":"",g=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>'+this.options.header+"</div>":"",h=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+d(this.options.liveSearchPlaceholder)+'"')+"></div>":"",i=this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-block"><button class="actions-btn bs-select-all btn btn-sm btn-default">'+this.options.selectAllText+'</button><button class="actions-btn bs-deselect-all btn btn-sm btn-default">'+this.options.deselectAllText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+c+'"><button type="button" class="btn dropdown-toggle form-control selectpicker'+f+'" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span> <span class="caret"></span></button><div class="dropdown-menu open">'+g+h+i+'<ul class="dropdown-menu inner selectpicker" role="menu"></ul></div></div>';return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul").append(b),a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menu.find("ul").append(a)},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var b=this,e=[],f=0,g=function(a,b,c){return"<li"+("undefined"!=typeof c?' class="'+c+'"':"")+("undefined"!=typeof b|null===b?' data-original-index="'+b+'"':"")+">"+a+"</li>"},h=function(a,e,f,g){var h=c(d(a));return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+("undefined"!=typeof g?'data-optgroup="'+g+'"':"")+' data-normalized-text="'+h+'">'+a+'<span class="'+b.options.iconBase+" "+b.options.tickIcon+' check-mark"></span></a>'};return this.$element.find("option").each(function(){var c=a(this),d=c.attr("class")||"",i=c.attr("style"),j=c.data("content")?c.data("content"):c.html(),k="undefined"!=typeof c.data("subtext")?'<small class="muted text-muted">'+c.data("subtext")+"</small>":"",l="undefined"!=typeof c.data("icon")?'<span class="'+b.options.iconBase+" "+c.data("icon")+'"></span> ':"",m=c.is(":disabled")||c.parent().is(":disabled"),n=c.index();if(""!==l&&m&&(l="<span>"+l+"</span>"),c.data("content")||(j=l+'<span class="text">'+j+k+"</span>"),!b.options.hideDisabled||!m)if(c.parent().is("optgroup")&&c.data("divider")!==!0){if(0===c.index()){f+=1;var o=c.parent().attr("label"),p="undefined"!=typeof c.parent().data("subtext")?'<small class="muted text-muted">'+c.parent().data("subtext")+"</small>":"",q=c.parent().data("icon")?'<span class="'+b.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";o=q+'<span class="text">'+o+p+"</span>",0!==n&&e.length>0&&e.push(g("",null,"divider")),e.push(g(o,null,"dropdown-header"))}e.push(g(h(j,"opt "+d,i,f),n))}else e.push(c.data("divider")===!0?g("",n,"divider"):c.data("hidden")===!0?g(h(j,d,i),n,"hidden is-hidden"):g(h(j,d,i),n))}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),a(e.join(""))},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c=this;b!==!1&&this.$element.find("option").each(function(b){c.setDisabled(b,a(this).is(":disabled")||a(this).parent().is(":disabled")),c.setSelected(b,a(this).is(":selected"))}),this.tabIndex();var d=this.options.hideDisabled?":not([disabled])":"",e=this.$element.find("option:selected"+d).map(function(){var b,d=a(this),e=d.data("icon")&&c.options.showIcon?'<i class="'+c.options.iconBase+" "+d.data("icon")+'"></i> ':"";return b=c.options.showSubtext&&d.attr("data-subtext")&&!c.multiple?' <small class="muted text-muted">'+d.data("subtext")+"</small>":"",d.data("content")&&c.options.showContent?d.data("content"):"undefined"!=typeof d.attr("title")?d.attr("title"):e+d.html()+b}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){d=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+d).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}this.options.title=this.$element.attr("title"),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$newElement.find(".filter-option").html(f)},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(){if(this.options.size!==!1){var a=this.$menu.parent().clone().find("> .dropdown-toggle").prop("autofocus",!1).end().appendTo("body"),b=a.addClass("open").find("> .dropdown-menu"),c=b.find("li").not(".divider").not(".dropdown-header").filter(":visible").children("a").outerHeight(),d=this.options.header?b.find(".popover-title").outerHeight():0,e=this.options.liveSearch?b.find(".bs-searchbox").outerHeight():0,f=this.options.actionsBox?b.find(".bs-actionsbox").outerHeight():0;a.remove(),this.$newElement.data("liHeight",c).data("headerHeight",d).data("searchHeight",e).data("actionsHeight",f)}},setSize:function(){this.findLis();var b,c,d,e=this,f=this.$menu,g=f.find(".inner"),h=this.$newElement.outerHeight(),i=this.$newElement.data("liHeight"),j=this.$newElement.data("headerHeight"),k=this.$newElement.data("searchHeight"),l=this.$newElement.data("actionsHeight"),m=this.$lis.filter(".divider").outerHeight(!0),n=parseInt(f.css("padding-top"))+parseInt(f.css("padding-bottom"))+parseInt(f.css("border-top-width"))+parseInt(f.css("border-bottom-width")),o=this.options.hideDisabled?", .disabled":"",p=a(window),q=n+parseInt(f.css("margin-top"))+parseInt(f.css("margin-bottom"))+2,r=function(){c=e.$newElement.offset().top-p.scrollTop(),d=p.height()-c-h};if(r(),this.options.header&&f.css("padding-top",0),"auto"==this.options.size){var s=function(){var a,h=e.$lis.not(".hidden");r(),b=d-q,e.options.dropupAuto&&e.$newElement.toggleClass("dropup",c>d&&b-q<f.height()),e.$newElement.hasClass("dropup")&&(b=c-q),a=h.length+h.filter(".dropdown-header").length>3?3*i+q-2:0,f.css({"max-height":b+"px",overflow:"hidden","min-height":a+j+k+l+"px"}),g.css({"max-height":b-j-k-l-n+"px","overflow-y":"auto","min-height":Math.max(a-n,0)+"px"})};s(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",s),a(window).off("resize.getSize").on("resize.getSize",s),a(window).off("scroll.getSize").on("scroll.getSize",s)}else if(this.options.size&&"auto"!=this.options.size&&f.find("li"+o).length>this.options.size){var t=this.$lis.not(".divider"+o).find(" > *").slice(0,this.options.size).last().parent().index(),u=this.$lis.slice(0,t+1).filter(".divider").length;b=i*this.options.size+u*m+n,e.options.dropupAuto&&this.$newElement.toggleClass("dropup",c>d&&b<f.height()),f.css({"max-height":b+j+k+l+"px",overflow:"hidden"}),g.css({"max-height":b-n+"px","overflow-y":"auto"})}},setWidth:function(){if("auto"==this.options.width){this.$menu.css("min-width","0");var a=this.$newElement.clone().appendTo("body"),b=a.find("> .dropdown-menu").css("width"),c=a.css("width","auto").find("> button").css("width");a.remove(),this.$newElement.css("width",Math.max(parseInt(b),parseInt(c))+"px")}else"fit"==this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){var b,c,d=this,e="<div />",f=a(e),g=function(a){f.addClass(a.attr("class").replace(/form-control/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,f.css({top:b.top+c,left:b.left,width:a[0].offsetWidth,position:"absolute"})};this.$newElement.on("click",function(){d.isDisabled()||(g(a(this)),f.appendTo(d.options.container),f.toggleClass("open",!a(this).hasClass("open")),f.append(d.$menu))}),a(window).resize(function(){g(d.$newElement)}),a(window).on("scroll",function(){g(d.$newElement)}),a("html").on("click",function(b){a(b.target).closest(d.$newElement).length<1&&f.removeClass("open")})},setSelected:function(a,b){this.findLis(),this.$lis.filter('[data-original-index="'+a+'"]').toggleClass("selected",b)},setDisabled:function(a,b){this.findLis(),b?this.$lis.filter('[data-original-index="'+a+'"]').addClass("disabled").find("a").attr("href","#").attr("tabindex",-1):this.$lis.filter('[data-original-index="'+a+'"]').removeClass("disabled").find("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element.is(":disabled")},checkDisabled:function(){var a=this;this.isDisabled()?this.$button.addClass("disabled").attr("tabindex",-1):(this.$button.hasClass("disabled")&&this.$button.removeClass("disabled"),-1==this.$button.attr("tabindex")&&(this.$element.data("tabindex")||this.$button.removeAttr("tabindex"))),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.is("[tabindex]")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex")))},clickListener:function(){var b=this;this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),this.$newElement.on("click",function(){b.setSize(),b.options.liveSearch||b.multiple||setTimeout(function(){b.$menu.find(".selected a").focus()},10)}),this.$menu.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected",!1),i.prop("selected",!0);var p=d.data("optgroup");b.$menu.find(".selected").has('a[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.change()}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(a){a.currentTarget==this&&(a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus())}),this.$menu.on("click","li.divider, li.dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.focus()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).is(".bs-select-all")?b.selectAll():b.deselectAll(),b.$element.change()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var b=this,e=a('<li class="no-results"></li>');this.$newElement.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){b.$menu.find(".active").removeClass("active"),b.$searchbox.val()&&(b.$searchbox.val(""),b.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),b.multiple||b.$menu.find(".selected").addClass("active"),setTimeout(function(){b.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){b.$searchbox.val()?(b.options.searchAccentInsensitive?b.$lis.not(".is-hidden").removeClass("hidden").find("a").not(":aicontains("+c(b.$searchbox.val())+")").parent().addClass("hidden"):b.$lis.not(".is-hidden").removeClass("hidden").find("a").not(":icontains("+b.$searchbox.val()+")").parent().addClass("hidden"),b.$menu.find("li").filter(":visible:not(.no-results)").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(b.options.noneResultsText+' "'+d(b.$searchbox.val())+'"').show(),b.$menu.find("li").last().after(e))):(b.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),b.$menu.find("li.active").removeClass("active"),b.$menu.find("li").filter(":visible:not(.divider)").eq(0).addClass("active").find("a").focus(),a(this).focus()})},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},selectAll:function(){this.findLis(),this.$lis.not(".divider").not(".disabled").not(".selected").filter(":visible").find("a").click()},deselectAll:function(){this.findLis(),this.$lis.not(".divider").not(".disabled").filter(".selected").filter(":visible").find("a").click()},keydown:function(b){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li a",n),l=o.$menu.parent().hasClass("open"),!l&&/([0-9]|[A-z])/.test(String.fromCharCode(b.keyCode))&&(o.options.container?o.$newElement.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(b.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(b.preventDefault(),o.$menu.parent().removeClass("open"),o.$button.focus()),d=a("[role=menu] li:not(.divider):not(.dropdown-header):visible",n),m.val()||/(38|40)/.test(b.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$newElement.find("li").filter(o.options.searchAccentInsensitive?":aicontains("+c(p[b.keyCode])+")":":icontains("+p[b.keyCode]+")"))),d.length){if(/(38|40)/.test(b.keyCode.toString(10)))e=d.index(d.filter(":focus")),g=d.parent(":not(.disabled):visible").first().index(),h=d.parent(":not(.disabled):visible").last().index(),f=d.eq(e).parent().nextAll(":not(.disabled):visible").eq(0).index(),i=d.eq(e).parent().prevAll(":not(.disabled):visible").eq(0).index(),j=d.eq(f).parent().prevAll(":not(.disabled):visible").eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).is(":not(.disabled)")&&a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.filter(":not(.disabled):visible").first().data("index"),h=d.filter(":not(.disabled):visible").last().data("index"),f=d.eq(e).nextAll(":not(.disabled):visible").eq(0).data("index"),i=d.eq(e).prevAll(":not(.disabled):visible").eq(0).data("index"),j=d.eq(f).prevAll(":not(.disabled):visible").eq(0).data("index")),k=m.data("prevIndex"),38==b.keyCode&&(o.options.liveSearch&&(e-=1),e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)),40==b.keyCode&&(o.options.liveSearch&&(e+=1),-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(b.preventDefault(),m.is(".dropdown-toggle")||(d.removeClass("active"),d.eq(e).addClass("active").find("a").focus(),m.focus())):d.eq(e).focus();else if(!m.is("input")){var q,r,s=[];d.each(function(){a(this).parent().is(":not(.disabled)")&&a.trim(a(this).text().toLowerCase()).substring(0,1)==p[b.keyCode]&&s.push(a(this).parent().index())}),q=a(document).data("keycount"),q++,a(document).data("keycount",q),r=a.trim(a(":focus").text().toLowerCase()).substring(0,1),r!=p[b.keyCode]?(q=1,a(document).data("keycount",q)):q>=s.length&&(a(document).data("keycount",0),q>s.length&&(q=1)),d.eq(s[q-1]).focus()}(/(13|32)/.test(b.keyCode.toString(10))||/(^9$)/.test(b.keyCode.toString(10))&&o.options.selectOnTab)&&l&&(/(32)/.test(b.keyCode.toString(10))||b.preventDefault(),o.options.liveSearch?/(32)/.test(b.keyCode.toString(10))||(o.$menu.find(".active a").click(),m.focus()):a(":focus").click(),a(document).data("keycount",0)),(/(^9$|27)/.test(b.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(b.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device").appendTo(this.$newElement),this.options.container&&this.$menu.hide()},refresh:function(){this.$lis=null,this.reloadLi(),this.render(),this.setWidth(),this.setStyle(),this.checkDisabled(),this.liHeight()},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()}};var g=a.fn.selectpicker;a.fn.selectpicker=e,a.fn.selectpicker.Constructor=f,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=g,this},a(document).data("keycount",0).on("keydown",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input",f.prototype.keydown).on("focusin.modal",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input",function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);e.call(b,b.data())})})}(jQuery);
+//# sourceMappingURL=bootstrap-select.js.map
\ No newline at end of file
diff --git a/ui/libs/bootstrap/LICENSE b/ui/libs/bootstrap/LICENSE
new file mode 100644
index 0000000..9a683e3
--- /dev/null
+++ b/ui/libs/bootstrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Twitter, Inc
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/ui/libs/bootstrap/Makefile.am b/ui/libs/bootstrap/Makefile.am
new file mode 100644
index 0000000..da746a1
--- /dev/null
+++ b/ui/libs/bootstrap/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+bootstrapjsdir = $(datadir)/wok/ui/libs/bootstrap
+
+dist_bootstrapjs_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/bootstrap/bootstrap.min.js b/ui/libs/bootstrap/bootstrap.min.js
new file mode 100644
index 0000000..133aeec
--- /dev/null
+++ b/ui/libs/bootstrap/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),
+d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/ui/libs/es5-shim/LICENSE b/ui/libs/es5-shim/LICENSE
new file mode 100644
index 0000000..3dbd7de
--- /dev/null
+++ b/ui/libs/es5-shim/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (C) 2009-2014 Kristopher Michael Kowal and contributors
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/ui/libs/es5-shim/Makefile.am b/ui/libs/es5-shim/Makefile.am
new file mode 100644
index 0000000..0d40e3d
--- /dev/null
+++ b/ui/libs/es5-shim/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+es5shimdir = $(datadir)/wok/ui/libs/es5-shim
+
+dist_es5shim_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/es5-shim/es5-shim.min.js b/ui/libs/es5-shim/es5-shim.min.js
new file mode 100644
index 0000000..f05f5c7
--- /dev/null
+++ b/ui/libs/es5-shim/es5-shim.min.js
@@ -0,0 +1,7 @@
+/*!
+ * https://github.com/es-shims/es5-shim
+ * @license es5-shim Copyright 2009-2015 by contributors, MIT License
+ * see https://github.com/es-shims/es5-shim/blob/v4.1.10/LICENSE
+ */
+(function(e,t){"use strict";if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){var e=Array;var t=e.prototype;var r=Object;var n=r.prototype;var a=Function.prototype;var i=String;var o=i.prototype;var l=Number;var u=l.prototype;var f=t.slice;var s=t.splice;var c=t.push;var v=t.unshift;var p=t.concat;var h=a.call;var g=Math.max;var y=Math.min;var d=n.toString;var w=typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol";var m;var b=Function.prototype.toString,T=function Me(e){try{b.call(e);return true}catch(t){return false}},x="[object Function]",O="[object GeneratorFunction]";m=function Fe(e){if(typeof e!=="function"){return false}if(w){return T(e)}var t=d.call(e);return t===x||t===O};var S;var j=RegExp.prototype.exec,E=function Re(e){try{j.call(e);return true}catch(t){return false}},I="[object RegExp]";S=function $e(e){if(typeof e!=="object"){return false}return w?E(e):d.call(e)===I};var D;var N=String.prototype.valueOf,k=function Ae(e){try{N.call(e);return true}catch(t){return false}},M="[object String]";D=function Ue(e){if(typeof e==="string"){return true}if(typeof e!=="object"){return false}return w?k(e):d.call(e)===M};var F=function(e){var t=r.defineProperty&&function(){try{var e={};r.defineProperty(e,"x",{enumerable:false,value:e});for(var t in e){return false}return e.x===e}catch(n){return false}}();var n;if(t){n=function(e,t,n,a){if(!a&&t in e){return}r.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:n})}}else{n=function(e,t,r,n){if(!n&&t in e){return}e[t]=r}}return function a(t,r,i){for(var o in r){if(e.call(r,o)){n(t,o,r[o],i)}}}}(n.hasOwnProperty);var R=function Ce(e){var t=typeof e;return e===null||t!=="object"&&t!=="function"};var $={ToInteger:function Pe(e){var t=+e;if(t!==t){t=0}else if(t!==0&&t!==1/0&&t!==-(1/0)){t=(t>0||-1)*Math.floor(Math.abs(t))}return t},ToPrimitive:function Ze(e){var t,r,n;if(R(e)){return e}r=e.valueOf;if(m(r)){t=r.call(e);if(R(t)){return t}}n=e.toString;if(m(n)){t=n.call(e);if(R(t)){return t}}throw new TypeError},ToObject:function(e){if(e==null){throw new TypeError("can't convert "+e+" to object")}return r(e)},ToUint32:function Je(e){return e>>>0}};var A=function ze(){};F(a,{bind:function Be(e){var t=this;if(!m(t)){throw new TypeError("Function.prototype.bind called on incompatible "+t)}var n=f.call(arguments,1);var a;var i=function(){if(this instanceof a){var i=t.apply(this,p.call(n,f.call(arguments)));if(r(i)===i){return i}return this}else{return t.apply(e,p.call(n,f.call(arguments)))}};var o=g(0,t.length-n.length);var l=[];for(var u=0;u<o;u++){c.call(l,"$"+u)}a=Function("binder","return function ("+l.join(",")+"){ return binder.apply(this, arguments); }")(i);if(t.prototype){A.prototype=t.prototype;a.prototype=new A;A.prototype=null}return a}});var U=h.bind(n.hasOwnProperty);var C=h.bind(n.toString);var P=h.bind(o.slice);var Z=h.bind(o.split);var J=e.isArray||function Ge(e){return C(e)==="[object Array]"};var z=[].unshift(0)!==1;F(t,{unshift:function(){v.apply(this,arguments);return this.length}},z);F(e,{isArray:J});var B=r("a");var G=B[0]!=="a"||!(0 in B);var H=function He(e){var t=true;var r=true;if(e){e.call("foo",function(e,r,n){if(typeof n!=="object"){t=false}});e.call([1],function(){"use strict";r=typeof this==="string"},"x")}return!!e&&t&&r};F(t,{forEach:function Le(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=-1;var a=r.length>>>0;var i;if(arguments.length>1){i=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.forEach callback must be a function")}while(++n<a){if(n in r){if(typeof i!=="undefined"){e.call(i,r[n],n,t)}else{e(r[n],n,t)}}}}},!H(t.forEach));F(t,{map:function Xe(t){var r=$.ToObject(this);var n=G&&D(this)?Z(this,""):r;var a=n.length>>>0;var i=e(a);var o;if(arguments.length>1){o=arguments[1]}if(!m(t)){throw new TypeError("Array.prototype.map callback must be a function")}for(var l=0;l<a;l++){if(l in n){if(typeof o!=="undefined"){i[l]=t.call(o,n[l],l,r)}else{i[l]=t(n[l],l,r)}}}return i}},!H(t.map));F(t,{filter:function Ye(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;var a=[];var i;var o;if(arguments.length>1){o=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.filter callback must be a function")}for(var l=0;l<n;l++){if(l in r){i=r[l];if(typeof o==="undefined"?e(i,l,t):e.call(o,i,l,t)){c.call(a,i)}}}return a}},!H(t.filter));F(t,{every:function qe(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;var a;if(arguments.length>1){a=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.every callback must be a function")}for(var i=0;i<n;i++){if(i in r&&!(typeof a==="undefined"?e(r[i],i,t):e.call(a,r[i],i,t))){return false}}return true}},!H(t.every));F(t,{some:function Ke(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;var a;if(arguments.length>1){a=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.some callback must be a function")}for(var i=0;i<n;i++){if(i in r&&(typeof a==="undefined"?e(r[i],i,t):e.call(a,r[i],i,t))){return true}}return false}},!H(t.some));var L=false;if(t.reduce){L=typeof t.reduce.call("es5",function(e,t,r,n){return n})==="object"}F(t,{reduce:function Qe(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;if(!m(e)){throw new TypeError("Array.prototype.reduce callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduce of empty array with no initial value")}var a=0;var i;if(arguments.length>=2){i=arguments[1]}else{do{if(a in r){i=r[a++];break}if(++a>=n){throw new TypeError("reduce of empty array with no initial value")}}while(true)}for(;a<n;a++){if(a in r){i=e(i,r[a],a,t)}}return i}},!L);var X=false;if(t.reduceRight){X=typeof t.reduceRight.call("es5",function(e,t,r,n){return n})==="object"}F(t,{reduceRight:function Ve(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;if(!m(e)){throw new TypeError("Array.prototype.reduceRight callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduceRight of empty array with no initial value")}var a;var i=n-1;if(arguments.length>=2){a=arguments[1]}else{do{if(i in r){a=r[i--];break}if(--i<0){throw new TypeError("reduceRight of empty array with no initial value")}}while(true)}if(i<0){return a}do{if(i in r){a=e(a,r[i],i,t)}}while(i--);return a}},!X);var Y=t.indexOf&&[0,1].indexOf(1,2)!==-1;F(t,{indexOf:function We(e){var t=G&&D(this)?Z(this,""):$.ToObject(this);var r=t.length>>>0;if(r===0){return-1}var n=0;if(arguments.length>1){n=$.ToInteger(arguments[1])}n=n>=0?n:g(0,r+n);for(;n<r;n++){if(n in t&&t[n]===e){return n}}return-1}},Y);var q=t.lastIndexOf&&[0,1].lastIndexOf(0,-3)!==-1;F(t,{lastIndexOf:function _e(e){var t=G&&D(this)?Z(this,""):$.ToObject(this);var r=t.length>>>0;if(r===0){return-1}var n=r-1;if(arguments.length>1){n=y(n,$.ToInteger(arguments[1]))}n=n>=0?n:r-Math.abs(n);for(;n>=0;n--){if(n in t&&e===t[n]){return n}}return-1}},q);var K=function(){var e=[1,2];var t=e.splice();return e.length===2&&J(t)&&t.length===0}();F(t,{splice:function et(e,t){if(arguments.length===0){return[]}else{return s.apply(this,arguments)}}},!K);var Q=function(){var e={};t.splice.call(e,0,0,1);return e.length===1}();F(t,{splice:function tt(e,t){if(arguments.length===0){return[]}var r=arguments;this.length=g($.ToInteger(this.length),0);if(arguments.length>0&&typeof t!=="number"){r=f.call(arguments);if(r.length<2){c.call(r,this.length-e)}else{r[1]=$.ToInteger(t)}}return s.apply(this,r)}},!Q);var V=function(){var t=new e(1e5);t[8]="x";t.splice(1,1);return t.indexOf("x")===7}();var W=function(){var e=256;var t=[];t[e]="a";t.splice(e+1,0,"b");return t[e]==="a"}();F(t,{splice:function rt(e,t){var r=$.ToObject(this);var n=[];var a=$.ToUint32(r.length);var o=$.ToInteger(e);var l=o<0?g(a+o,0):y(o,a);var u=y(g($.ToInteger(t),0),a-l);var s=0;var c;while(s<u){c=i(l+s);if(U(r,c)){n[s]=r[c]}s+=1}var v=f.call(arguments,2);var p=v.length;var h;if(p<u){s=l;while(s<a-u){c=i(s+u);h=i(s+p);if(U(r,c)){r[h]=r[c]}else{delete r[h]}s+=1}s=a;while(s>a-u+p){delete r[s-1];s-=1}}else if(p>u){s=a-u;while(s>l){c=i(s+u-1);h=i(s+p-1);if(U(r,c)){r[h]=r[c]}else{delete r[h]}s-=1}}s=l;for(var d=0;d<v.length;++d){r[s]=v[d];s+=1}r.length=a-u+p;return n}},!V||!W);var _=!{toString:null}.propertyIsEnumerable("toString");var ee=function(){}.propertyIsEnumerable("prototype");var te=!U("x","0");var re=function(e){var t=e.constructor;return t&&t.prototype===e};var ne={$window:true,$console:true,$parent:true,$self:true,$frames:true,$frameElement:true,$webkitIndexedDB:true,$webkitStorageInfo:true};var ae=function(){if(typeof window==="undefined"){return false}for(var e in window){if(!ne["$"+e]&&U(window,e)&&window[e]!==null&&typeof window[e]==="object"){try{re(window[e])}catch(t){return true}}}return false}();var ie=function(e){if(typeof window==="undefined"||!ae){return re(e)}try{return re(e)}catch(t){return false}};var oe=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var le=oe.length;var ue=function nt(e){var t=C(e);var r=t==="[object Arguments]";if(!r){r=!J(e)&&e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&m(e.callee)}return r};F(r,{keys:function at(e){var t=m(e);var r=ue(e);var n=e!==null&&typeof e==="object";var a=n&&D(e);if(!n&&!t&&!r){throw new TypeError("Object.keys called on a non-object")}var o=[];var l=ee&&t;if(a&&te||r){for(var u=0;u<e.length;++u){c.call(o,i(u))}}if(!r){for(var f in e){if(!(l&&f==="prototype")&&U(e,f)){c.call(o,i(f))}}}if(_){var s=ie(e);for(var v=0;v<le;v++){var p=oe[v];if(!(s&&p==="constructor")&&U(e,p)){c.call(o,p)}}}return o}});var fe=r.keys&&function(){return r.keys(arguments).length===2}(1,2);var se=r.keys;F(r,{keys:function it(e){if(ue(e)){return se(f.call(e))}else{return se(e)}}},!fe);var ce=-621987552e5;var ve="-000001";var pe=Date.prototype.toISOString&&new Date(ce).toISOString().indexOf(ve)===-1;var he=Date.prototype.toISOString&&new Date(-1).toISOString()!=="1969-12-31T23:59:59.999Z";F(Date.prototype,{toISOString:function ot(){var e,t,r,n,a;if(!isFinite(this)){throw new RangeError("Date.prototype.toISOString called on non-finite value.")}n=this.getUTCFullYear();a=this.getUTCMonth();n+=Math.floor(a/12);a=(a%12+12)%12;e=[a+1,this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds()];n=(n<0?"-":n>9999?"+":"")+P("00000"+Math.abs(n),0<=n&&n<=9999?-4:-6);t=e.length;while(t--){r=e[t];if(r<10){e[t]="0"+r}}return n+"-"+f.call(e,0,2).join("-")+"T"+f.call(e,2).join(":")+"."+P("000"+this.getUTCMilliseconds(),-3)+"Z"}},pe||he);var ge=function(){try{return Date.prototype.toJSON&&new Date(NaN).toJSON()===null&&new Date(ce).toJSON().indexOf(ve)!==-1&&Date.prototype.toJSON.call({toISOString:function(){return true}})}catch(e){return false}}();if(!ge){Date.prototype.toJSON=function lt(e){var t=r(this);var n=$.ToPrimitive(t);if(typeof n==="number"&&!isFinite(n)){return null}var a=t.toISOString;if(!m(a)){throw new TypeError("toISOString property is not callable")}return a.call(t)}}var ye=Date.parse("+033658-09-27T01:46:40.000Z")===1e15;var de=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z"));var we=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(!Date.parse||we||de||!ye){Date=function(e){var t=function s(r,n,a,o,l,u,f){var s=arguments.length;var c;if(this instanceof e){c=s===1&&i(r)===r?new e(t.parse(r)):s>=7?new e(r,n,a,o,l,u,f):s>=6?new e(r,n,a,o,l,u):s>=5?new e(r,n,a,o,l):s>=4?new e(r,n,a,o):s>=3?new e(r,n,a):s>=2?new e(r,n):s>=1?new e(r):new e}else{c=e.apply(this,arguments)}F(c,{constructor:t},true);return c};var r=new RegExp("^"+"(\\d{4}|[+-]\\d{6})"+"(?:-(\\d{2})"+"(?:-(\\d{2})"+"(?:"+"T(\\d{2})"+":(\\d{2})"+"(?:"+":(\\d{2})"+"(?:(\\.\\d{1,}))?"+")?"+"("+"Z|"+"(?:"+"([-+])"+"(\\d{2})"+":(\\d{2})"+")"+")?)?)?)?"+"$");var n=[0,31,59,90,120,151,181,212,243,273,304,334,365];var a=function c(e,t){var r=t>1?1:0;return n[t]+Math.floor((e-1969+r)/4)-Math.floor((e-1901+r)/100)+Math.floor((e-1601+r)/400)+365*(e-1970)};var o=function v(t){return l(new e(1970,0,1,0,0,0,t))};for(var u in e){if(U(e,u)){t[u]=e[u]}}F(t,{now:e.now,UTC:e.UTC},true);t.prototype=e.prototype;F(t.prototype,{constructor:t},true);var f=function p(t){var n=r.exec(t);if(n){var i=l(n[1]),u=l(n[2]||1)-1,f=l(n[3]||1)-1,s=l(n[4]||0),c=l(n[5]||0),v=l(n[6]||0),p=Math.floor(l(n[7]||0)*1e3),h=Boolean(n[4]&&!n[8]),g=n[9]==="-"?1:-1,y=l(n[10]||0),d=l(n[11]||0),w;if(s<(c>0||v>0||p>0?24:25)&&c<60&&v<60&&p<1e3&&u>-1&&u<12&&y<24&&d<60&&f>-1&&f<a(i,u+1)-a(i,u)){w=((a(i,u)+f)*24+s+y*g)*60;w=((w+c+d*g)*60+v)*1e3+p;if(h){w=o(w)}if(-864e13<=w&&w<=864e13){return w}}return NaN}return e.parse.apply(this,arguments)};F(t,{parse:f});return t}(Date)}if(!Date.now){Date.now=function ut(){return(new Date).getTime()}}var me=u.toFixed&&(8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)!=="1"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128");var be={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function ft(e,t){var r=-1;var n=t;while(++r<be.size){n+=e*be.data[r];be.data[r]=n%be.base;n=Math.floor(n/be.base)}},divide:function st(e){var t=be.size,r=0;while(--t>=0){r+=be.data[t];be.data[t]=Math.floor(r/e);r=r%e*be.base}},numToString:function ct(){var e=be.size;var t="";while(--e>=0){if(t!==""||e===0||be.data[e]!==0){var r=i(be.data[e]);if(t===""){t=r}else{t+=P("0000000",0,7-r.length)+r}}}return t},pow:function vt(e,t,r){return t===0?r:t%2===1?vt(e,t-1,r*e):vt(e*e,t/2,r)},log:function pt(e){var t=0;var r=e;while(r>=4096){t+=12;r/=4096}while(r>=2){t+=1;r/=2}return t}};F(u,{toFixed:function ht(e){var t,r,n,a,o,u,f,s;t=l(e);t=t!==t?0:Math.floor(t);if(t<0||t>20){throw new RangeError("Number.toFixed called with invalid number of decimals")}r=l(this);if(r!==r){return"NaN"}if(r<=-1e21||r>=1e21){return i(r)}n="";if(r<0){n="-";r=-r}a="0";if(r>1e-21){o=be.log(r*be.pow(2,69,1))-69;u=o<0?r*be.pow(2,-o,1):r/be.pow(2,o,1);u*=4503599627370496;o=52-o;if(o>0){be.multiply(0,u);f=t;while(f>=7){be.multiply(1e7,0);f-=7}be.multiply(be.pow(10,f,1),0);f=o-1;while(f>=23){be.divide(1<<23);f-=23}be.divide(1<<f);be.multiply(1,1);be.divide(2);a=be.numToString()}else{be.multiply(0,u);be.multiply(1<<-o,0);a=be.numToString()+P("0.00000000000000000000",2,2+t)}}if(t>0){s=a.length;if(s<=t){a=n+P("0.0000000000000000000",0,t-s+2)+a}else{a=n+P(a,0,s-t)+"."+P(a,s-t)}}else{a=n+a}return a}},me);if("ab".split(/(?:ab)*/).length!==2||".".split(/(.?)(.?)/).length!==4||"tesst".split(/(s)*/)[1]==="t"||"test".split(/(?:)/,-1).length!==4||"".split(/.?/).length||".".split(/()()/).length>1){(function(){var e=typeof/()??/.exec("")[1]==="undefined";o.split=function(t,r){var n=this;if(typeof t==="undefined"&&r===0){return[]}if(!S(t)){return Z(this,t,r)}var a=[];var i=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),o=0,l,u,s,v;var p=new RegExp(t.source,i+"g");n+="";if(!e){l=new RegExp("^"+p.source+"$(?!\\s)",i)}var h=typeof r==="undefined"?-1>>>0:$.ToUint32(r);u=p.exec(n);while(u){s=u.index+u[0].length;if(s>o){c.call(a,P(n,o,u.index));if(!e&&u.length>1){u[0].replace(l,function(){for(var e=1;e<arguments.length-2;e++){if(typeof arguments[e]==="undefined"){u[e]=void 0}}})}if(u.length>1&&u.index<n.length){c.apply(a,f.call(u,1))}v=u[0].length;o=s;if(a.length>=h){break}}if(p.lastIndex===u.index){p.lastIndex++}u=p.exec(n)}if(o===n.length){if(v||!p.test("")){c.call(a,"")}}else{c.call(a,P(n,o))}return a.length>h?P(a,0,h):a}})()}else if("0".split(void 0,0).length){o.split=function gt(e,t){if(typeof e==="undefined"&&t===0){return[]}return Z(this,e,t)}}var Te=o.replace;var xe=function(){var e=[];"x".replace(/x(.)?/g,function(t,r){c.call(e,r)});return e.length===1&&typeof e[0]==="undefined"}();if(!xe){o.replace=function yt(e,t){var r=m(t);var n=S(e)&&/\)[*?]/.test(e.source);if(!r||!n){return Te.call(this,e,t)}else{var a=function(r){var n=arguments.length;var a=e.lastIndex;e.lastIndex=0;var i=e.exec(r)||[];e.lastIndex=a;c.call(i,arguments[n-2],arguments[n-1]);return t.apply(this,i)};return Te.call(this,e,a)}}}var Oe=o.substr;var Se="".substr&&"0b".substr(-1)!=="b";F(o,{substr:function dt(e,t){var r=e;if(e<0){r=g(this.length+e,0)}return Oe.call(this,r,t)}},Se);var je=" \n\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003"+"\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028"+"\u2029\ufeff";var Ee="\u200b";var Ie="["+je+"]";var De=new RegExp("^"+Ie+Ie+"*");var Ne=new RegExp(Ie+Ie+"*$");var ke=o.trim&&(je.trim()||!Ee.trim());F(o,{trim:function wt(){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}return i(this).replace(De,"").replace(Ne,"")}},ke);if(parseInt(je+"08")!==8||parseInt(je+"0x16")!==22){parseInt=function(e){var t=/^0[xX]/;return function r(n,a){var o=i(n).trim();var u=l(a)||(t.test(o)?16:10);return e(o,u)}}(parseInt)}});
+//# sourceMappingURL=es5-shim.map
diff --git a/ui/libs/jquery-1.10.0.min.js b/ui/libs/jquery-1.10.0.min.js
deleted file mode 100644
index 01c6881..0000000
--- a/ui/libs/jquery-1.10.0.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! jQuery v1.10.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.0.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.0",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),r.attributes=ct(function(e){return e.innerHTML="<a href='#'></a>",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="<input>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;
-if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})
-}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(n.unit=o,n.start=+a||+r||0,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);a.finish=function(){t.stop(!0)},(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/ui/libs/jquery-i18n/LICENSE b/ui/libs/jquery-i18n/LICENSE
new file mode 100644
index 0000000..978ee2a
--- /dev/null
+++ b/ui/libs/jquery-i18n/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010 Dave Perrett, http://recursive-design.com/
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/ui/libs/jquery-i18n/Makefile.am b/ui/libs/jquery-i18n/Makefile.am
new file mode 100644
index 0000000..56872b0
--- /dev/null
+++ b/ui/libs/jquery-i18n/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+jqueryi18ndir = $(datadir)/wok/ui/libs/jquery-i18n
+
+dist_jqueryi18n_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/jquery-i18n/jquery.i18n.min.js b/ui/libs/jquery-i18n/jquery.i18n.min.js
new file mode 100644
index 0000000..fead704
--- /dev/null
+++ b/ui/libs/jquery-i18n/jquery.i18n.min.js
@@ -0,0 +1 @@
+!function(a){var b=Array.prototype.slice,c={dict:null,load:function(b){null!==this.dict?a.extend(this.dict,b):this.dict=b},_:function(a){return dict=this.dict,dict&&dict.hasOwnProperty(a)&&(a=dict[a]),args=b.call(arguments),args[0]=a,this.printf.apply(this,args)},printf:function(c,d){return arguments.length<2?c:(d=a.isArray(d)?d:b.call(arguments,1),c.replace(/([^%]|^)%(?:(\d+)\$)?s/g,function(a,b,c){return c?b+d[parseInt(c)-1]:b+d.shift()}).replace(/%%s/g,"%s"))}};a.fn._t=function(){return a(this).html(c._.apply(c,arguments))},a.i18n=c}(jQuery);
\ No newline at end of file
diff --git a/ui/libs/jquery-ui-i18n.min.js b/ui/libs/jquery-ui-i18n.min.js
deleted file mode 100644
index 3ba8a92..0000000
--- a/ui/libs/jquery-ui-i18n.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.11.2 - 2014-10-16
-* http://jqueryui.com
-* Includes: datepicker-af.js, datepicker-ar-DZ.js, datepicker-ar.js, datepicker-az.js, datepicker-be.js, datepicker-bg.js, datepicker-bs.js, datepicker-ca.js, datepicker-cs.js, datepicker-cy-GB.js, datepicker-da.js, datepicker-de.js, datepicker-el.js, datepicker-en-AU.js, datepicker-en-GB.js, datepicker-en-NZ.js, datepicker-eo.js, datepicker-es.js, datepicker-et.js, datepicker-eu.js, datepicker-fa.js, datepicker-fi.js, datepicker-fo.js, datepicker-fr-CA.js, datepicker-fr-CH.js, datepicker-fr.js, datepicker-gl.js, datepicker-he.js, datepicker-hi.js, datepicker-hr.js, datepicker-hu.js, datepicker-hy.js, datepicker-id.js, datepicker-is.js, datepicker-it-CH.js, datepicker-it.js, datepicker-ja.js, datepicker-ka.js, datepicker-kk.js, datepicker-km.js, datepicker-ko.js, datepicker-ky.js, datepicker-lb.js, datepicker-lt.js, datepicker-lv.js, datepicker-mk.js, datepicker-ml.js, datepicker-ms.js, datepicker-nb.js, datepicker-nl-BE.js, datepicker-nl.js, datepicker-nn.js, datepicker-no.js, datepicker-pl.js, datepicker-pt-BR.js, datepicker-pt.js, datepicker-rm.js, datepicker-ro.js, datepicker-ru.js, datepicker-sk.js, datepicker-sl.js, datepicker-sq.js, datepicker-sr-SR.js, datepicker-sr.js, datepicker-sv.js, datepicker-ta.js, datepicker-th.js, datepicker-tj.js, datepicker-tr.js, datepicker-uk.js, datepicker-vi.js, datepicker-zh-CN.js, datepicker-zh-HK.js, datepicker-zh-TW.js
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){var t=e.datepicker;t.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.af),t.regional.af,t.regional["ar-DZ"]={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["ar-DZ"]),t.regional["ar-DZ"],t.regional.ar={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ar),t.regional.ar,t.regional.az={closeText:"Bağla",prevText:"<Geri",nextText:"İrəli>",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.az),t.regional.az,t.regional.be={closeText:"Зачыніць",prevText:"←Папяр.",nextText:"Наст.→",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.be),t.regional.be,t.regional.bg={closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bg),t.regional.bg,t.regional.bs={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bs),t.regional.bs,t.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ca),t.regional.ca,t.regional.cs={closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.cs),t.regional.cs,t.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["cy-GB"]),t.regional["cy-GB"],t.regional.da={closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.da),t.regional.da,t.regional.de={closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.de),t.regional.de,t.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.el),t.regional.el,t.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-AU"]),t.regional["en-AU"],t.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-GB"]),t.regional["en-GB"],t.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-NZ"]),t.regional["en-NZ"],t.regional.eo={closeText:"Fermi",prevText:"<Anta",nextText:"Sekv>",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eo),t.regional.eo,t.regional.es={closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.es),t.regional.es,t.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.et),t.regional.et,t.regional.eu={closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eu),t.regional.eu,t.regional.fa={closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fa),t.regional.fa,t.regional.fi={closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fi),t.regional.fi,t.regional.fo={closeText:"Lat aftur",prevText:"<Fyrra",nextText:"Næsta>",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fo),t.regional.fo,t.regional["fr-CA"]={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CA"]),t.regional["fr-CA"],t.regional["fr-CH"]={closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CH"]),t.regional["fr-CH"],t.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fr),t.regional.fr,t.regional.gl={closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.gl),t.regional.gl,t.regional.he={closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.he),t.regional.he,t.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hi),t.regional.hi,t.regional.hr={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hr),t.regional.hr,t.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.hu),t.regional.hu,t.regional.hy={closeText:"Փակել",prevText:"<Նախ.",nextText:"Հաջ.>",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hy),t.regional.hy,t.regional.id={closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.id),t.regional.id,t.regional.is={closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.is),t.regional.is,t.regional["it-CH"]={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["it-CH"]),t.regional["it-CH"],t.regional.it={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.it),t.regional.it,t.regional.ja={closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional.ja),t.regional.ja,t.regional.ka={closeText:"დახურვა",prevText:"< წინა",nextText:"შემდეგი >",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ka),t.regional.ka,t.regional.kk={closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.kk),t.regional.kk,t.regional.km={closeText:"ធ្វើរួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃនេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.km),t.regional.km,t.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},t.setDefaults(t.regional.ko),t.regional.ko,t.regional.ky={closeText:"Жабуу",prevText:"<Мур",nextText:"Кий>",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ky),t.regional.ky,t.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lb),t.regional.lb,t.regional.lt={closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.lt),t.regional.lt,t.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lv),t.regional.lv,t.regional.mk={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.mk),t.regional.mk,t.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്ച്ച്","ഏപ്രില്","മേയ്","ജൂണ്","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്","ഒക്ടോബര്","നവംബര്","ഡിസംബര്"],monthNamesShort:["ജനു","ഫെബ്","മാര്","ഏപ്രി","മേയ്","ജൂണ്","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്","തിങ്കള്","ചൊവ്വ","ബുധന്","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ml),t.regional.ml,t.regional.ms={closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ms),t.regional.ms,t.regional.nb={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nb),t.regional.nb,t.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["nl-BE"]),t.regional["nl-BE"],t.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nl),t.regional.nl,t.regional.nn={closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nn),t.regional.nn,t.regional.no={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.no),t.regional.no,t.regional.pl={closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pl),t.regional.pl,t.regional["pt-BR"]={closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["pt-BR"]),t.regional["pt-BR"],t.regional.pt={closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pt),t.regional.pt,t.regional.rm={closeText:"Serrar",prevText:"<Suandant",nextText:"Precedent>",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.rm),t.regional.rm,t.regional.ro={closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ro),t.regional.ro,t.regional.ru={closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ru),t.regional.ru,t.regional.sk={closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sk),t.regional.sk,t.regional.sl={closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sl),t.regional.sl,t.regional.sq={closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sq),t.regional.sq,t.regional["sr-SR"]={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["sr-SR"]),t.regional["sr-SR"],t.regional.sr={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sr),t.regional.sr,t.regional.sv={closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sv),t.regional.sv,t.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ta),t.regional.ta,t.regional.th={closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.th),t.regional.th,t.regional.tj={closeText:"Идома",prevText:"<Қафо",nextText:"Пеш>",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tj),t.regional.tj,t.regional.tr={closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tr),t.regional.tr,t.regional.uk={closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.uk),t.regional.uk,t.regional.vi={closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.vi),t.regional.vi,t.regional["zh-CN"]={closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-CN"]),t.regional["zh-CN"],t.regional["zh-HK"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-HK"]),t.regional["zh-HK"],t.regional["zh-TW"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-TW"]),t.regional["zh-TW"]
-});
diff --git a/ui/libs/jquery-ui.min.js b/ui/libs/jquery-ui.min.js
deleted file mode 100644
index 17eab79..0000000
--- a/ui/libs/jquery-ui.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*! jQuery UI - v1.11.2 - 2014-10-16
-* http://jqueryui.com
-* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return n=!a&&o.length?e.widget.extend.apply(null,[n].concat(o)):n,a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))}),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=h&&l.down||l,d=function(){o._toggleComplete(i)};return"number"==typeof u&&(a=u),"string"==typeof u&&(n=u),n=n||u.easing||l.easing,a=a||u.duration||l.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?r+=i.now:"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,d):e.animate(this.showProps,a,n,d)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)
-}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.2"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0
-},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,z,H,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),z=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=z,H=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;z>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],j=H.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>H||$&&H>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(H.getTime()===G.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(j&&!v?" ":W?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.2",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
-},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=u-t.height,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.2",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
-if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.2",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
-f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.2",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.2",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this,i=this.element.attr("tabindex");this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:i||this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.attr("value"),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=(this.options.max-this._valueMin())%this.options.step;this.max=this.options.max-e},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
-return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td> </td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]
-}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),s._trigger("load",i,r)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.2",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&n._delay(function(){t&&(t.type=a),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){u.of=e,o.is(":hidden")||o.position(u)}var a,o,r,h,l,u=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(l=s.clone(),l.removeAttr("id").find("[id]").removeAttr("id")):l=s,e("<div>").html(l).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(u.of),clearInterval(h))},e.fx.interval)),this._trigger("open",t,{tooltip:o}),r={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}},i[0]!==this.element[0]&&(r.remove=function(){this._removeTooltip(o)}),t&&"mouseover"!==t.type||(r.mouseleave="close"),t&&"focusin"!==t.type||(r.focusout="close"),this._on(!0,i,r)}},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);a&&(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)))},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
\ No newline at end of file
diff --git a/ui/libs/jquery-ui/LICENSE b/ui/libs/jquery-ui/LICENSE
new file mode 100644
index 0000000..c36fa56
--- /dev/null
+++ b/ui/libs/jquery-ui/LICENSE
@@ -0,0 +1,44 @@
+Copyright 2007, 2014 jQuery Foundation and other contributors,
+https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+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 AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
\ No newline at end of file
diff --git a/ui/libs/jquery-ui/Makefile.am b/ui/libs/jquery-ui/Makefile.am
new file mode 100644
index 0000000..9d9f646
--- /dev/null
+++ b/ui/libs/jquery-ui/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+SUBDIRS = themes
+
+jqueryuidir = $(datadir)/wok/ui/libs/jquery-ui
+
+dist_jqueryui_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/jquery-ui/jquery-ui-i18n.min.js b/ui/libs/jquery-ui/jquery-ui-i18n.min.js
new file mode 100644
index 0000000..3ba8a92
--- /dev/null
+++ b/ui/libs/jquery-ui/jquery-ui-i18n.min.js
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.11.2 - 2014-10-16
+* http://jqueryui.com
+* Includes: datepicker-af.js, datepicker-ar-DZ.js, datepicker-ar.js, datepicker-az.js, datepicker-be.js, datepicker-bg.js, datepicker-bs.js, datepicker-ca.js, datepicker-cs.js, datepicker-cy-GB.js, datepicker-da.js, datepicker-de.js, datepicker-el.js, datepicker-en-AU.js, datepicker-en-GB.js, datepicker-en-NZ.js, datepicker-eo.js, datepicker-es.js, datepicker-et.js, datepicker-eu.js, datepicker-fa.js, datepicker-fi.js, datepicker-fo.js, datepicker-fr-CA.js, datepicker-fr-CH.js, datepicker-fr.js, datepicker-gl.js, datepicker-he.js, datepicker-hi.js, datepicker-hr.js, datepicker-hu.js, datepicker-hy.js, datepicker-id.js, datepicker-is.js, datepicker-it-CH.js, datepicker-it.js, datepicker-ja.js, datepicker-ka.js, datepicker-kk.js, datepicker-km.js, datepicker-ko.js, datepicker-ky.js, datepicker-lb.js, datepicker-lt.js, datepicker-lv.js, datepicker-mk.js, datepicker-ml.js, datepicker-ms.js, datepicker-nb.js, datepicker-nl-BE.js, datepicker-nl.js, datepicker-nn.js, datepicker-no.js, datepicker-pl.js, datepicker-pt-BR.js, datepicker-pt.js, datepicker-rm.js, datepicker-ro.js, datepicker-ru.js, datepicker-sk.js, datepicker-sl.js, datepicker-sq.js, datepicker-sr-SR.js, datepicker-sr.js, datepicker-sv.js, datepicker-ta.js, datepicker-th.js, datepicker-tj.js, datepicker-tr.js, datepicker-uk.js, datepicker-vi.js, datepicker-zh-CN.js, datepicker-zh-HK.js, datepicker-zh-TW.js
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){var t=e.datepicker;t.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.af),t.regional.af,t.regional["ar-DZ"]={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["ar-DZ"]),t.regional["ar-DZ"],t.regional.ar={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ar),t.regional.ar,t.regional.az={closeText:"Bağla",prevText:"<Geri",nextText:"İrəli>",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.az),t.regional.az,t.regional.be={closeText:"Зачыніць",prevText:"←Папяр.",nextText:"Наст.→",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.be),t.regional.be,t.regional.bg={closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bg),t.regional.bg,t.regional.bs={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bs),t.regional.bs,t.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ca),t.regional.ca,t.regional.cs={closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.cs),t.regional.cs,t.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["cy-GB"]),t.regional["cy-GB"],t.regional.da={closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.da),t.regional.da,t.regional.de={closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.de),t.regional.de,t.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.el),t.regional.el,t.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-AU"]),t.regional["en-AU"],t.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-GB"]),t.regional["en-GB"],t.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-NZ"]),t.regional["en-NZ"],t.regional.eo={closeText:"Fermi",prevText:"<Anta",nextText:"Sekv>",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eo),t.regional.eo,t.regional.es={closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.es),t.regional.es,t.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.et),t.regional.et,t.regional.eu={closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eu),t.regional.eu,t.regional.fa={closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fa),t.regional.fa,t.regional.fi={closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fi),t.regional.fi,t.regional.fo={closeText:"Lat aftur",prevText:"<Fyrra",nextText:"Næsta>",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fo),t.regional.fo,t.regional["fr-CA"]={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CA"]),t.regional["fr-CA"],t.regional["fr-CH"]={closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CH"]),t.regional["fr-CH"],t.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fr),t.regional.fr,t.regional.gl={closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.gl),t.regional.gl,t.regional.he={closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.he),t.regional.he,t.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hi),t.regional.hi,t.regional.hr={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hr),t.regional.hr,t.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.hu),t.regional.hu,t.regional.hy={closeText:"Փակել",prevText:"<Նախ.",nextText:"Հաջ.>",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hy),t.regional.hy,t.regional.id={closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.id),t.regional.id,t.regional.is={closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.is),t.regional.is,t.regional["it-CH"]={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["it-CH"]),t.regional["it-CH"],t.regional.it={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.it),t.regional.it,t.regional.ja={closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional.ja),t.regional.ja,t.regional.ka={closeText:"დახურვა",prevText:"< წინა",nextText:"შემდეგი >",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ka),t.regional.ka,t.regional.kk={closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.kk),t.regional.kk,t.regional.km={closeText:"ធ្វើរួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃនេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.km),t.regional.km,t.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},t.setDefaults(t.regional.ko),t.regional.ko,t.regional.ky={closeText:"Жабуу",prevText:"<Мур",nextText:"Кий>",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ky),t.regional.ky,t.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lb),t.regional.lb,t.regional.lt={closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.lt),t.regional.lt,t.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lv),t.regional.lv,t.regional.mk={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.mk),t.regional.mk,t.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്ച്ച്","ഏപ്രില്","മേയ്","ജൂണ്","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്","ഒക്ടോബര്","നവംബര്","ഡിസംബര്"],monthNamesShort:["ജനു","ഫെബ്","മാര്","ഏപ്രി","മേയ്","ജൂണ്","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്","തിങ്കള്","ചൊവ്വ","ബുധന്","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ml),t.regional.ml,t.regional.ms={closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ms),t.regional.ms,t.regional.nb={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nb),t.regional.nb,t.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["nl-BE"]),t.regional["nl-BE"],t.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nl),t.regional.nl,t.regional.nn={closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nn),t.regional.nn,t.regional.no={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.no),t.regional.no,t.regional.pl={closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pl),t.regional.pl,t.regional["pt-BR"]={closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["pt-BR"]),t.regional["pt-BR"],t.regional.pt={closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pt),t.regional.pt,t.regional.rm={closeText:"Serrar",prevText:"<Suandant",nextText:"Precedent>",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.rm),t.regional.rm,t.regional.ro={closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ro),t.regional.ro,t.regional.ru={closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ru),t.regional.ru,t.regional.sk={closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sk),t.regional.sk,t.regional.sl={closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sl),t.regional.sl,t.regional.sq={closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sq),t.regional.sq,t.regional["sr-SR"]={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["sr-SR"]),t.regional["sr-SR"],t.regional.sr={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sr),t.regional.sr,t.regional.sv={closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sv),t.regional.sv,t.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ta),t.regional.ta,t.regional.th={closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.th),t.regional.th,t.regional.tj={closeText:"Идома",prevText:"<Қафо",nextText:"Пеш>",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tj),t.regional.tj,t.regional.tr={closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tr),t.regional.tr,t.regional.uk={closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.uk),t.regional.uk,t.regional.vi={closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.vi),t.regional.vi,t.regional["zh-CN"]={closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-CN"]),t.regional["zh-CN"],t.regional["zh-HK"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-HK"]),t.regional["zh-HK"],t.regional["zh-TW"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-TW"]),t.regional["zh-TW"]
+});
diff --git a/ui/libs/jquery-ui/jquery-ui.min.js b/ui/libs/jquery-ui/jquery-ui.min.js
new file mode 100644
index 0000000..5824d12
--- /dev/null
+++ b/ui/libs/jquery-ui/jquery-ui.min.js
@@ -0,0 +1,13 @@
+/*! jQuery UI - v1.11.4 - 2015-03-11
+* http://jqueryui.com
+* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
+* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);
+i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);
+return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?" ":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
+},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
+if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
+f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
+return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td> </td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;
+this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
\ No newline at end of file
diff --git a/ui/libs/jquery-ui/themes/Makefile.am b/ui/libs/jquery-ui/themes/Makefile.am
new file mode 100644
index 0000000..1ce56d9
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/Makefile.am
@@ -0,0 +1,18 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013
+#
+# 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.
+
+SUBDIRS = base
diff --git a/ui/libs/jquery-ui/themes/base/Makefile.am b/ui/libs/jquery-ui/themes/base/Makefile.am
new file mode 100644
index 0000000..8a5bbd2
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/base/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013
+#
+# 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.
+
+SUBDIRS = images
+
+basedir = $(datadir)/wok/ui/libs/jquery-ui/themes/base
+
+dist_base_DATA = $(wildcard *.css) $(NULL)
diff --git a/ui/libs/jquery-ui/themes/base/images/Makefile.am b/ui/libs/jquery-ui/themes/base/images/Makefile.am
new file mode 100644
index 0000000..38e6f18
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/base/images/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013
+#
+# 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.
+
+imagesdir = $(datadir)/wok/ui/libs/jquery-ui/themes/base/images
+
+dist_images_DATA = *.png
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e4af1db3ac79771f85b26e10e3ae8710059765e
GIT binary patch
literal 457
zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K&}
zc)B=-WZZju!;p)~P{8fsS+h8Y3A#s59Xebow0`qkb;0a|Q5!b@SnY5ug{8al<myW)
z?dxy*?2_|ef49!4Dt=!3@!FzomihVL%%gwZzq3<*73Z=b?gTSa=I;)nnX%K4*6S*T
zp1sFixN_EO2KVK!?y#f<%s!x!#d>D(tOTvC3~9l}1^gjX_wAqN5%Tok#}4nScjONW
zuC&^HuyAEwLCGrSGYiZbJ+E-ha5p^|lErvtS=s}+6<Ke#?6|V=@}gi&lT6E^VqV?I
zya?00ihoo6y^Jjd{qul+RV{IiC`m~yNwrEYN(E93Mh1o^x`qb2hGrp#hE_(FR>r2f
n1}0Vp2H&16zJa14H$NpatrE9}_MOrxKn)C@u6{1-oD!M<f0eCi
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..efd1ff3e7bbb28391e02788cff94f93bdb085679
GIT binary patch
literal 351
zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp`;z
zr;B5V$MLsUPYX6E@VEx9@?|&6ay8;f`myuF-MNb1M(HzW_kEU|eed)0=e7D9W0*D9
zHOYiKOggP_TGyf1*jvZE!RmS=%X5deY=xtt6CQJU6iKG+<oz+X_<8q3u?5F`7o6f<
zaIRG0plfi6-mFE%7e(fFFMDxEe|8b$t>uffPdu6X1Lz9X64!{5l*E!$tK_0oAjM#0
zU}&OiXrOCo7Gh{<Wn^h(Y^rNuVr5|P?aAUBC>nC}Q!>*kacgMbDV+k;z~JfX=d#Wz
Gp$P!pes!Aw
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_flat_10_000000_40x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_flat_10_000000_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a5aa914b236c0b1552513ab4d5fdda1aa4eef51
GIT binary patch
literal 244
zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRl<n8Xlz<9SycnOfl
z@9E+gqH#VsL4tL015h7R1OsEKSz9?!O0~o_q9i4;B-JXpC>2OC7#SFv=o%X68k&U|
w8d@1yS{a+_8kkra7<_xO_y&rG-29Zxv`X9>+ILE)05vdpy85}Sb4q9e0Ooo;w*UYD
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..068406ca901c5d06855a86906b2e36d0d3f79980
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
z4^J1z5R22vKTKyPiu5Y2TAY7hVxPBR&H2P1b#orJiyiJ~<*`31QRkQXL-o*y)!h%x
znGe5@X}d2j`A@^}PiM-H$tGQHf`%LnpC-BAQ(ov705nsz#5JNMC9x#cD!C{XNHG{0
z7@FuB8t59Dg%}!I8ChBxo9Y^vSQ!|6d$RZjiiX_$l+3hB+#1?<N~ZudFnGH9xvX<a
GXaWF(5L_bw
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..979591a8a9e0232ca073fe0689418fe58a16da90
GIT binary patch
literal 387
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
zWR|CkV~EG`x99D-85t$mAKd@F*+VUM$~ukHXUpObgeREBN9LXpoBz~pv(Vg&OI9xy
zIa;#Q{_g4J0*9?_KQrG=jkHl_U}#H}IJVs}Qq5B$Xw{>WZ5atiOdlp3V!tRfU-re1
zQVTbiXtAl5B~#th+Y3@pGVD4#@1sD~x#iPsx14w%KK+u&{MbF!t_9wmR%~B57PbA0
zU&4FXpzZ{_)IXz8*O(oRKv$}kxJHzuB$lLFB^RXvDF!10Lla#?16@P25JN*NBTFk|
pQ(XfSD+7aXPZr-m(U6;;l9^VCTSNO!=@g&_22WQ%mvv4FO#o0qho}Gm
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1dc6be0aed5c308955956e5cb2c8dfcb1128ea3
GIT binary patch
literal 246
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadP-
z^mK6y(Kw%+ks#5!xIpAl1H;se6O5NlHf91PRZCnWN>UO_QmvAUQh^kMk%6I!uAzah
zp;?Hbp_P%Pm9eR=fr*uY!M7)iZ=h(%%}>cptHiCLeW!E^Py>UftDnm{r-UW|!TUb#
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..8dc23e251b0505078f3a0912ddf41db6a89bf72e
GIT binary patch
literal 5854
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
R;LcxOwQ;(FyX1T4zX0?Pvm^ij
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9b25ef80d30a7a6f6fa40e7c77dcd78aba85ea5
GIT binary patch
literal 317
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&7i
z2u~Ns5Q)o25AEf3aA0V-*e_{PA|fT+A^2utsBza39wB9crJ?W6{k5E{TTy8vDu0%P
zeWCi2JKE*V_dn|99lm;lH99HHr%CRj;q?Qe3)MmzZ6?YZxp&C#57L`*<)qw^(?B~^
zOI#yLQW8s2t&)pUffR$0fuV`6p@FWUS%{&bm64^Dv8k?siIsuDw<n8lplHa=PsvQH
W#I2!yr*sNX1B0ilpUXO@geCxOC}8*i
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a479d12cc304f7c5259a9db8a4827c13d693543
GIT binary patch
literal 367
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
zw0XKXhG?9BI>C_ZP=J7od~g)E*+$=Uk7Um%7IiGy@^6Xv0k022VsdT*YtE+W*g57e
zNcdV|y;(=+TXOLhh6nuxi$!<LpWI+~sl7BX;r{we)de%z8fQzeUJ2IxP`8TZ+%}%q
zD~iInZrJ+2-@EkY5rqQj+c}F5{IrS{VLJCY>OnXE{r{KzAG1DtYTsG7sYVLuBGnSt
zh?11Vl2ohYqEsNoU}RuuqHAcNYiJf?XlP|*X=QAxYhYq!VDRn9;u|O$a`RI%(<*Um
UXx}NF0@T3Z>FVdQ&MBb@02WezsQ>@~
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_222222_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed5adeabaf07b8784f55c2487e1cc70ee648c7fb
GIT binary patch
literal 7006
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
Gzx@w(&o~JH
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_228ef1_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_228ef1_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e787bb98f072e1080b4557a20a86cd79b814040
GIT binary patch
literal 4599
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
G^#1@bXoG10
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_ef8c08_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_ef8c08_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dcbe012df24899416caee1a55d1bdf6c22fd837
GIT binary patch
literal 4599
zcmeHL_cxqfw0_?iy_ZC<kxUR}^cIZXi54Q5(OZ;H??#D|q6Hy*GATMCqK`5}myqb9
z6N1sAOBh%3{c`XBaG!P7+54Qeo^#fE_Fnsxq&tRM)D&zK002<yXseq50C?#FyJXPI
zeo{yG^wJQys2HdK!21-+GdtqTF^_|`i2(qF!T<mr2LQh=r_gHv5C8{&4HN*#X9EDU
zPhOMp?aRgJ@93Lp>^vd+|MtHX5Gy5-y;RN0-^9=qu+$2_CZ4_6G7#jPSDjQ^U}YHk
z1L5@0^s#1IhJ&2}#?>>|uPp-Cyj-!e{yjR`W`1^|aeR8Xb8K|N{+kbhdN9ZBL{^ZA
zqbuZVQSY-ala;%lQxmJOJ!Q*}`!B--fcAP?>Odkfr#1l4dg!RDm<4~^vY~XCuA?XE
z(=J`lPG@h_%a!$Nf%!>`_SxD@1bB`XdMwMAVBg|HFD??O7AO-GZg-j#y0X7~(5Hn4
zwwJ+XDB@n?CFpsg9j6T@s|j#ll292@u#G_OjBw)0qO*_2pcoL-4sXjwiMT=3Rdf-=
zH}doc2BspM%9#4)h-LkNLL9QT-VDi-V@(CeBe4|u{(~5v#`A({@tbq{?8F~XbLyed
zjSqt>;q`zKG`=2C5GYSlf=o`~^gB)E#o8Bp&{8K2qgY@|_2WEoU2^U=nTGmbJYjjh
zP3|>Ct7}<9G8$sE#wv-WU$|KgnGXkY>Cy{mb(0FfCqP!Tv&_e?ICBK~uKM%R1KwEP
z@yM{pihWtEnVo)3Wcr}04h}T}&cr<Y?EKW#^XVzNQ|R-=n>tVM?)7}8<CnAxijHLt
z2$qR+5jy(+@Luu2?=1G6Th-ZIwAK&=En1|SFw-*KQxB~oA=ZUn(7)r-A<6H$&1vm+
zMA1xL_4XIOK68ODvEV~THc7KQPtt<+0~V*1G)7!zgXZ~d>v%da971-+7H4$qD0a2n
z@0r{!2?gOV123f#CgPeowI_w*;9hdG-me$gnu?h>m$MYr7mR2#v_(jXM71#xx^em0
zlId1T>%G&(X~+Mx=`_%|@GMcBebQOYK5O&#GcC1<IdSREIJ#DFw`c!>=h!fiA+ozP
z%4Yj-|0azguBmy5z3-9#gm;p638b~UJ=B<986s-5H*O`3y=e=9gnfKC_9>hy_*745
zL@|1ulrPV-V{sL@uW*y8v%^kLa*%6^&O;KH@9vbHVK`JjiT>@c33!0s`8kGI%WNPF
zn)lqN!jTD%C9ir{v41u62QkV9?VpBXt~%c9%!w7-oaMmnTT<y~6O+}ca`T|6Vy<UW
z>%C&-uxeXjJAJlQ;X~J8xXV=q<cG}cgVT{puxo!{KiV*Zl?^iMeN&w!A&s|;dmQUE
zrLaMJMwUz{cR`JhTZ!Ie8~L<wWvV|pYOzcKy~QLG(c|tpyzd{38>@E&3aj9+jYN4-
zq8~)T?H|~I>qE!T$yJF@hwkIHNS`lxl<!7l3=xc8O=Q|ai*WCzoB2!Ybz^QkB@07T
z>~DGA*Q7qgq7AMzM@*Wq{Y&?A``&v71h%vLqk>{_Ngol@zd1w4_lJ{E_@ivPZX<Lm
z-Qv03;9AvM#%(c%L|e67wCX-B;q;A1BK{rnPvANaHAB0+9hvH(;REKQ>;$P_DQ*I|
zrcd^vNH-rTIuny(i!1hKk9i;9s}VmRnMggnLagQ-{#?}wly9pNiI#x$411!rME%2B
zM&}a;sUVnZ?TIcWiH8O#Ya+|6c{vq<Gy(9$)Y4wYU&swRY1xEhW5Vs_Do6{)a4;c`
zZ%O*6Xhs$Cu|u_K@Kgq+6>-U67Pa^rv8Y*?S_gMBFZYVk7De=m=tHpW)(0pwFWHMZ
zX$~5pt*MPb`hQja6OtuoUeid`x=6x(#-#gdwO)ekGP%Een;Ca!P({9()`HHGa{K%L
z=zRwo8#E{oE}OdlSjalQ;P;x~xhW~wZfmTc_Q8VSNoUfe;n(`Rk)F9Wo>FbTuFK5%
z)_rV1=*Wf+%`@`vjBmggVn+YU3iD!`Po7eBDptl<+=x|sKk)!!K)?FUrf$wy;NC&2
zI$l@J0epA3T`Fs{Km^-q4I_nv11rN9MDaMHL;%E+L}SdfNU!sf!``}MbWWmU1|TSk
zH8peV6cEkkT62QAeU4z<-44UHiIFvg9g9qJ?PT?Vy6EAH2z|7h3D2R7CzX=+7^Qiz
zMY|jLTQ?wk8y|u$uerzq%#~i)mpvLG?icad;o64i@rp)=dmHukPgGt<tVjJO{Puz{
z_#(J;($9$=!hM2+*SMf4q&UxE4^f7)Fu1~#NEVD4jNHY@`Iu41XsL7hLvErKU-OcI
z+)JlPr%QF=qSi!TC>Gx^6n88yJA8rl3-L_9G+fEuh7@eV78+C|c={GwZnr_@A~neZ
zctaNIS19ocuZZ-?K$IoU8o$Gf5#C;A===^721g;)=M0~3*ozm71yX3f{Iq{0k}7lf
z!;o@;D6R=Gtn9|U{yf8wnsZp&WgZDM^KtMn(KS)u-O9=JgXgpcKrLk9Yr;N<XTS}N
zBZe+lElXI}fA^3jp%Bk7NYhf787Na4^*6nHf9}3gRwUkOmPUKx`BVx&&T6fAZW!~8
zw+FI240(ji<==0FVLb*^&ys73cIPG>YXT57ebdt8$^(*6i4~3f@1|EadtpOCR$7C)
z8igs!r8Ym~!H{amJvVX1T<gXdkAbm6S1JAsiRX34M`r&h^h_Lx;T&GK`DW1668dGl
z-yoY5^5mQ$k)p`329=!VLDqina_Zqp)iag6N6Jel($7`BdOI>`VWir3w~#{C)N$XY
zDp$G}QoH)PMNGEj?@BOv`gf5RJCo9ZMqIZe0x!T9(*18ETpAQ@Aq1kRtjabNaVFl#
zkt4i!GC19IzCP2#MX7e;xQhO(EIhX5;dcx};0xAVPG<0sA1#EUB~Z`?#J(lC_KQ3K
zqZnT%w&4W|9PGiKPDpYRvCxxAwIj59s{8VNllh{|1Gj0Mcy`ZwXt5Xq&kS4Wi=|ag
z7sV24i;~H;U*!e3e~-es>>V1_ICQKn7lbGD^0#cZF>uR~xxU7Zy3)Ppj<!qQgXcU_
z<Fma^<QQl7Itt6zaUJM;8RZ)kc#K4j?nRo;Y=`c3G>66nL|b()E%#X6t(zYVvLdG=
za!<J<IP)wW0c+$QqaF_eYrC`?n&LLL-^#WLB@%9<jouTM)}Q;H<VKy=+&~;%jQS~=
z`VW#A`=w_Z>@g~%4Z|3xj;P^EAu5MO^(w}m8^e7ok8oSB6}c_RNqqkyHufjmrRL`U
zTh%GEmy+C8`rE|@_N^~M`tDPjuYq$|?gKX!id(0x9rde>h<B^McgHM{QPfDx>ZZWC
zUa#`@Ou|j01;W3ue>dx03)x?s#@{U@{kHJ*mx0`;!VzW?C_$8&(vEka-?)Z6J^Jcl
zH*M{Y!>1i>wYQpH^h2108r(*nPG%@N+K^Vtr}%S9ux_q(wF|0{TJ($Awo?vxO(AvA
zzO`Rib&vNZBmo0l{k&onVYa?W(G={0RBqmZJQ3!*W2pIxnzp34P|#${!^K^Rgnn1Q
zVr-GZ;!yxIDB1jdBmJOSkN2@vX7#wT)V`V<9=o+J>NHH%SO({17yq<B5O600G+Pi@
zmWvifDfRpw+y5YO)z%&ImH;t`Htu$-LNO;L)o*z}0M?N<?aovuRDm}ZoN{0BKiOZz
z8R62-_O;I?`}%Q(K8ZqT^~$0AEoFt+XLUH{(tr=2=@G&UzfHWHSKQBQV@^vuUxhTm
zsD^22XlSS)8@KL9aOj4MMD@leWcpFbDwuKtv@xQEBU2=#D&i#J$P`cts(aBvrnOUi
z#I-SE5#|%aa)+4nm0e{{v)jS%ljUCtEQx+p+0HI5E<W+BnEG~ud19`zq<gbmY)uub
zeu{QCv=FDy+(~dJu7nv+nlIBRH~JeK4uJkuI9TT~nE=GpG#{m~E90uQzHrzT)HZ96
zX`eRhC`P4cBk|Yzjo)O!a$XD%yr5>EJx6aXuZ@-QT^BjJVzIuTCH4(f=O=!dIj@-u
zgM$w6+@o~+AMu_t?g(qZx~3!LbMf!xx?CxiZGnKDu@3x3@|(F@Y9YHMqmz`b9Qxep
zkUF7L<dLYWjdd}w@tSGQ6*5;NmpF~u=c6znzaNSrEvC{7FhYh7w5iXOU1?1aEP6-k
zVWdlY<r_bQT_*D^aBtlDU#Br@9W)1MMiyab=2d5x%-k(_ez<3Ex8XhAgw<xYY^&ef
zsz|eI)POu%4Q2L%Pz<kthNgM(hxPQSY%o(V$(JmPH7W>_ffZj_Ba2&`F!amVgXc}`
zvG(4SEP-@F)R<7$!qLS{*uvF*vlB|(dP@)5?v0fEn&Q}!X<kyEIt%<{J%X9e9>?ob
za`l~+&s^dUOD%a4RLSJo_I?EkUb)2WUhwIN^fbJ1>d~KDePW`XCaCnY8kAV-EkBG?
z=ic1BbKcHps{|tW;bi<HCV8*23pPIYVpLZ(^DS~_7ClwMf5hBSYgCoy0b#^2(A;Wz
zb#G7m(3K<>$QvZbv|oEk1(#W-Q3d9x^vU^)ls7c9xFu#*<)JW?^H+iL_q<+v7o_DH
zI5blg69~PJt8xIk#(U7wJCN{Jhk>AIdK5Mi@%Nzk9DgBKjZZ#kgG3TIwq`SI`}?SW
z<y#+e2%K4Cez5K>6|8`dx@BI?M}0Bp;=H@7tb;~ipIyBr(G5gYo9#^Oz*49M@+f}#
z@f!Xd881^~{rX~P!d(MK%6K~BH6IW4Q^uyZXWZP7Vl4^F9s9j%ba1tw8520YBS*&H
z#wI-F-HN1T&}In0q#cjxMP20UKG#Y=Ph+@ah3*t+U2?a!WW_$C2a#s32F-77%YW(*
zTYzkZq_wYIp(&z)yqo38hUVqxE!nlbNdCer@Zdz*I+^<PVY3pm#a_wjU+L#CL!@zz
zO-ZF?GqtU)zGMfd=v4jsuK}6Z@d*nW+bGwcp`1BhZ#M;lDk>{Eh$560o{C`7hBCc_
zZ3o8geiJ`8zXi>FC~^MOFlxCRiI%b1TD!g;Q-@sm!5I$NfHl6RiNzMNLqk6|eE5}(
zTuu)e8ihG4^QV;CT~kh0o+IO?xOfN0t&z|J{YtgFEysD1EHa5J%=)}hk*bI)#n-0+
zy)K!ATs~BEYwVyZdh5eu)%IV)OiLfo62|Lo(%_;9rZuAMaZ*APSsd9xpn%Gr={<3u
z@m1OwC2kb!=nIuQwD$g~5J4=dIi5!cUld!OGq<~(ZqDtx!V};6^swb=VCF}bZ)xjz
z?SMZ{<`!NzD3k9``M-AUb}?sy-ZL%Qy$k5aJ*n%!8BvC4IcArUXH8j=L#DLyI#G%~
zS<LF^8_%MmWCGPG8-6<A4B9CFWX>fXu=S1oB#OcE@Zwv)O7UKByMEGE$5eRGAu5l}
zhocyo5Qi-$zjB%GczKH=X&~QfWlWK=Y5_;JoX~2LLc+--i(g1i_B9XCoKRL4g`{lQ
z`*qwxDSOaX=YRmLF3KFBDwJ!Gf}nkNdNJQK?&QaX5lpiQMwf5!8~z%W{*HG3PVx@E
zPL~D{hl@!Hi@}A(q|L;{<i#ZA#pHzHlJamkcLX2m{}4RA9o?Km{v*JpgvI|7BxU3!
z#Qq~ZJ?Fo;B(VP3!PMK?KgiD42~ctLws+#u@w9VsGI6qV4Ed+e>GC%Q0CY4A)!(V2
GV*UpY-FO86
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_ffd27a_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_ffd27a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd39c1b25bbb7734571820d7890a0401c2b70d53
GIT binary patch
literal 4599
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
Hp`-r?FR{ND
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..39e64723fe6a862f00d5e2578110ce781288070e
GIT binary patch
literal 6468
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
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/jquery-ui.min.css b/ui/libs/jquery-ui/themes/base/jquery-ui.min.css
new file mode 100644
index 0000000..91f16a3
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/base/jquery-ui.min.css
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.11.2 - 2014-10-16
+* http://jqueryui.com
+* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdan…
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file
diff --git a/ui/libs/jquery/LICENSE b/ui/libs/jquery/LICENSE
new file mode 100644
index 0000000..788a7c5
--- /dev/null
+++ b/ui/libs/jquery/LICENSE
@@ -0,0 +1,21 @@
+Copyright 2015 jQuery Foundation and other contributors
+http://jquery.com/
+
+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 AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ui/libs/jquery/Makefile.am b/ui/libs/jquery/Makefile.am
new file mode 100644
index 0000000..1aef505
--- /dev/null
+++ b/ui/libs/jquery/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+jquerydir = $(datadir)/wok/ui/libs/jquery
+
+dist_jquery_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/jquery/jquery.min.js b/ui/libs/jquery/jquery.min.js
new file mode 100644
index 0000000..f364443
--- /dev/null
+++ b/ui/libs/jquery/jquery.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",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(".#.+[+~]")}),ja(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))&&ja(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 la(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?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.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},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,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(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===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]||ga.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]&&ga.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(ca,da).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=ga.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()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(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:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).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:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(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 ta(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 ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(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 wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(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=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(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=[sa(ta(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 wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(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=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.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(ca,da),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(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(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}),ga}(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.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;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=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",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 aa(){return!0}function ba(){return!1}function ca(){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<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(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,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(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 xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(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 Ba(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?(xa(b).text=a.text,ya(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)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(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=da(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(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.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(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.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=wa(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=wa(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(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(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(ua(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(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(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(ua(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&&na.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(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.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(qa,"")));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 Ca,Da={};function Ea(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 Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return 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="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;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),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){
+return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
+//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/ui/libs/themes/Makefile.am b/ui/libs/themes/Makefile.am
deleted file mode 100644
index 1ce56d9..0000000
--- a/ui/libs/themes/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Kimchi
-#
-# Copyright IBM, Corp. 2013
-#
-# 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.
-
-SUBDIRS = base
diff --git a/ui/libs/themes/base/Makefile.am b/ui/libs/themes/base/Makefile.am
deleted file mode 100644
index 1bbaa50..0000000
--- a/ui/libs/themes/base/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Kimchi
-#
-# Copyright IBM, Corp. 2013
-#
-# 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.
-
-SUBDIRS = images
-
-basedir = $(datadir)/wok/ui/libs/themes/base
-
-dist_base_DATA = $(wildcard *.css) $(NULL)
diff --git a/ui/libs/themes/base/images/Makefile.am b/ui/libs/themes/base/images/Makefile.am
deleted file mode 100644
index dd619c8..0000000
--- a/ui/libs/themes/base/images/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Kimchi
-#
-# Copyright IBM, Corp. 2013
-#
-# 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.
-
-imagesdir = $(datadir)/wok/ui/libs/themes/base/images
-
-dist_images_DATA = *.png
diff --git a/ui/libs/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/ui/libs/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
deleted file mode 100644
index 7e4af1db3ac79771f85b26e10e3ae8710059765e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 457
zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K&}
zc)B=-WZZju!;p)~P{8fsS+h8Y3A#s59Xebow0`qkb;0a|Q5!b@SnY5ug{8al<myW)
z?dxy*?2_|ef49!4Dt=!3@!FzomihVL%%gwZzq3<*73Z=b?gTSa=I;)nnX%K4*6S*T
zp1sFixN_EO2KVK!?y#f<%s!x!#d>D(tOTvC3~9l}1^gjX_wAqN5%Tok#}4nScjONW
zuC&^HuyAEwLCGrSGYiZbJ+E-ha5p^|lErvtS=s}+6<Ke#?6|V=@}gi&lT6E^VqV?I
zya?00ihoo6y^Jjd{qul+RV{IiC`m~yNwrEYN(E93Mh1o^x`qb2hGrp#hE_(FR>r2f
n1}0Vp2H&16zJa14H$NpatrE9}_MOrxKn)C@u6{1-oD!M<f0eCi
diff --git a/ui/libs/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png b/ui/libs/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
deleted file mode 100644
index efd1ff3e7bbb28391e02788cff94f93bdb085679..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 351
zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp`;z
zr;B5V$MLsUPYX6E@VEx9@?|&6ay8;f`myuF-MNb1M(HzW_kEU|eed)0=e7D9W0*D9
zHOYiKOggP_TGyf1*jvZE!RmS=%X5deY=xtt6CQJU6iKG+<oz+X_<8q3u?5F`7o6f<
zaIRG0plfi6-mFE%7e(fFFMDxEe|8b$t>uffPdu6X1Lz9X64!{5l*E!$tK_0oAjM#0
zU}&OiXrOCo7Gh{<Wn^h(Y^rNuVr5|P?aAUBC>nC}Q!>*kacgMbDV+k;z~JfX=d#Wz
Gp$P!pes!Aw
diff --git a/ui/libs/themes/base/images/ui-bg_flat_10_000000_40x100.png b/ui/libs/themes/base/images/ui-bg_flat_10_000000_40x100.png
deleted file mode 100644
index 0a5aa914b236c0b1552513ab4d5fdda1aa4eef51..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 244
zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRl<n8Xlz<9SycnOfl
z@9E+gqH#VsL4tL015h7R1OsEKSz9?!O0~o_q9i4;B-JXpC>2OC7#SFv=o%X68k&U|
w8d@1yS{a+_8kkra7<_xO_y&rG-29Zxv`X9>+ILE)05vdpy85}Sb4q9e0Ooo;w*UYD
diff --git a/ui/libs/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png b/ui/libs/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
deleted file mode 100644
index 068406ca901c5d06855a86906b2e36d0d3f79980..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
z4^J1z5R22vKTKyPiu5Y2TAY7hVxPBR&H2P1b#orJiyiJ~<*`31QRkQXL-o*y)!h%x
znGe5@X}d2j`A@^}PiM-H$tGQHf`%LnpC-BAQ(ov705nsz#5JNMC9x#cD!C{XNHG{0
z7@FuB8t59Dg%}!I8ChBxo9Y^vSQ!|6d$RZjiiX_$l+3hB+#1?<N~ZudFnGH9xvX<a
GXaWF(5L_bw
diff --git a/ui/libs/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png b/ui/libs/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
deleted file mode 100644
index 979591a8a9e0232ca073fe0689418fe58a16da90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 387
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
zWR|CkV~EG`x99D-85t$mAKd@F*+VUM$~ukHXUpObgeREBN9LXpoBz~pv(Vg&OI9xy
zIa;#Q{_g4J0*9?_KQrG=jkHl_U}#H}IJVs}Qq5B$Xw{>WZ5atiOdlp3V!tRfU-re1
zQVTbiXtAl5B~#th+Y3@pGVD4#@1sD~x#iPsx14w%KK+u&{MbF!t_9wmR%~B57PbA0
zU&4FXpzZ{_)IXz8*O(oRKv$}kxJHzuB$lLFB^RXvDF!10Lla#?16@P25JN*NBTFk|
pQ(XfSD+7aXPZr-m(U6;;l9^VCTSNO!=@g&_22WQ%mvv4FO#o0qho}Gm
diff --git a/ui/libs/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/ui/libs/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644
index b1dc6be0aed5c308955956e5cb2c8dfcb1128ea3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 246
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadP-
z^mK6y(Kw%+ks#5!xIpAl1H;se6O5NlHf91PRZCnWN>UO_QmvAUQh^kMk%6I!uAzah
zp;?Hbp_P%Pm9eR=fr*uY!M7)iZ=h(%%}>cptHiCLeW!E^Py>UftDnm{r-UW|!TUb#
diff --git a/ui/libs/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/ui/libs/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
deleted file mode 100644
index 8dc23e251b0505078f3a0912ddf41db6a89bf72e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5854
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
R;LcxOwQ;(FyX1T4zX0?Pvm^ij
diff --git a/ui/libs/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/ui/libs/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
deleted file mode 100644
index f9b25ef80d30a7a6f6fa40e7c77dcd78aba85ea5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 317
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&7i
z2u~Ns5Q)o25AEf3aA0V-*e_{PA|fT+A^2utsBza39wB9crJ?W6{k5E{TTy8vDu0%P
zeWCi2JKE*V_dn|99lm;lH99HHr%CRj;q?Qe3)MmzZ6?YZxp&C#57L`*<)qw^(?B~^
zOI#yLQW8s2t&)pUffR$0fuV`6p@FWUS%{&bm64^Dv8k?siIsuDw<n8lplHa=PsvQH
W#I2!yr*sNX1B0ilpUXO@geCxOC}8*i
diff --git a/ui/libs/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/ui/libs/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
deleted file mode 100644
index 6a479d12cc304f7c5259a9db8a4827c13d693543..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 367
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
zw0XKXhG?9BI>C_ZP=J7od~g)E*+$=Uk7Um%7IiGy@^6Xv0k022VsdT*YtE+W*g57e
zNcdV|y;(=+TXOLhh6nuxi$!<LpWI+~sl7BX;r{we)de%z8fQzeUJ2IxP`8TZ+%}%q
zD~iInZrJ+2-@EkY5rqQj+c}F5{IrS{VLJCY>OnXE{r{KzAG1DtYTsG7sYVLuBGnSt
zh?11Vl2ohYqEsNoU}RuuqHAcNYiJf?XlP|*X=QAxYhYq!VDRn9;u|O$a`RI%(<*Um
UXx}NF0@T3Z>FVdQ&MBb@02WezsQ>@~
diff --git a/ui/libs/themes/base/images/ui-icons_222222_256x240.png b/ui/libs/themes/base/images/ui-icons_222222_256x240.png
deleted file mode 100644
index ed5adeabaf07b8784f55c2487e1cc70ee648c7fb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 7006
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
Gzx@w(&o~JH
diff --git a/ui/libs/themes/base/images/ui-icons_228ef1_256x240.png b/ui/libs/themes/base/images/ui-icons_228ef1_256x240.png
deleted file mode 100644
index 1e787bb98f072e1080b4557a20a86cd79b814040..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4599
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
G^#1@bXoG10
diff --git a/ui/libs/themes/base/images/ui-icons_ef8c08_256x240.png b/ui/libs/themes/base/images/ui-icons_ef8c08_256x240.png
deleted file mode 100644
index 5dcbe012df24899416caee1a55d1bdf6c22fd837..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4599
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
GV*UpY-FO86
diff --git a/ui/libs/themes/base/images/ui-icons_ffd27a_256x240.png b/ui/libs/themes/base/images/ui-icons_ffd27a_256x240.png
deleted file mode 100644
index dd39c1b25bbb7734571820d7890a0401c2b70d53..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4599
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
Hp`-r?FR{ND
diff --git a/ui/libs/themes/base/images/ui-icons_ffffff_256x240.png b/ui/libs/themes/base/images/ui-icons_ffffff_256x240.png
deleted file mode 100644
index 39e64723fe6a862f00d5e2578110ce781288070e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6468
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
diff --git a/ui/libs/themes/base/jquery-ui.min.css b/ui/libs/themes/base/jquery-ui.min.css
deleted file mode 100644
index 91f16a3..0000000
--- a/ui/libs/themes/base/jquery-ui.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.11.2 - 2014-10-16
-* http://jqueryui.com
-* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdan…
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file
diff --git a/ui/pages/error.html.tmpl b/ui/pages/error.html.tmpl
index eea1179..c767ffb 100644
--- a/ui/pages/error.html.tmpl
+++ b/ui/pages/error.html.tmpl
@@ -27,7 +27,9 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
<title>Wok</title>
+ <link rel="shortcut icon" href="images/favicon.ico">
<link rel="stylesheet" href="$href("css/theme-default.min.css")">
</head>
diff --git a/ui/pages/login.html.tmpl b/ui/pages/login.html.tmpl
index 12ca69f..5aa10bb 100644
--- a/ui/pages/login.html.tmpl
+++ b/ui/pages/login.html.tmpl
@@ -30,11 +30,13 @@
<title>Kimchi</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
-<link rel="shortcut icon" href="images/logo.ico">
+<link rel="shortcut icon" href="images/favicon.ico">
+<link rel="stylesheet" href="$href('libs/jquery-ui/themes/base/jquery-ui.min.css')">
+<link rel="stylesheet" href="$href('css/jquery-ui.custom.css')">
<link rel="stylesheet" href="$href('css/theme-default.min.css')">
-<script src="$href('libs/jquery-1.10.0.min.js')"></script>
-<script src="$href('libs/jquery-ui.min.js')"></script>
-<script src="$href('libs/jquery-ui-i18n.min.js')"></script>
+<script src="$href('libs/jquery/jquery.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui-i18n.min.js')"></script>
<script src="$href('js/wok.min.js')"></script>
<style type="text/css">
.topbar select {
diff --git a/ui/pages/wok-ui.html.tmpl b/ui/pages/wok-ui.html.tmpl
index 2dc4d7a..9ac0e89 100644
--- a/ui/pages/wok-ui.html.tmpl
+++ b/ui/pages/wok-ui.html.tmpl
@@ -29,14 +29,13 @@
<title>Kimchi</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
-<link rel="shortcut icon" href="images/logo.ico">
-<link rel="stylesheet" href="$href('libs/themes/base/jquery-ui.min.css')">
+<link rel="shortcut icon" href="images/favicon.ico">
+<link rel="stylesheet" href="$href('libs/jquery-ui/themes/base/jquery-ui.min.css')">
+<link rel="stylesheet" href="$href('css/jquery-ui.custom.css')">
<link rel="stylesheet" href="$href('css/theme-default.min.css')">
-<link rel="stylesheet" href="$href('css/fontawesome/fontawesome.css')">
-<link rel="stylesheet" href="$href('css/opensans/opensans.css')">
-<script src="$href('libs/jquery-1.10.0.min.js')"></script>
-<script src="$href('libs/jquery-ui.min.js')"></script>
-<script src="$href('libs/jquery-ui-i18n.min.js')"></script>
+<script src="$href('libs/jquery/jquery.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui-i18n.min.js')"></script>
<script src="$href('js/wok.min.js')"></script>
<!-- This is used for detecting if the UI needs to be built -->
--
1.9.3
3
2
Hi All,
Kimchi latest master code is not working. Its failing to import magic
module. Can someone please look into the issue on priority? For now i have
commented this code and working on same.
[root@abhiram src]# ./kimchid
Traceback (most recent call last):
File "./kimchid", line 28, in <module>
import kimchi.server
File "/root/PycharmProjects/master/kimchi/src/kimchi/server.py", line 29,
in <module>
from kimchi import mockmodel
File "/root/PycharmProjects/master/kimchi/src/kimchi/mockmodel.py", line
41, in <module>
from kimchi.model.storagevolumes import StorageVolumeModel,
StorageVolumesModel
File
"/root/PycharmProjects/master/kimchi/src/kimchi/model/storagevolumes.py",
line 22, in <module>
import magic
ImportError: No module named magic
[root@abhiram src]#
vi /root/PycharmProjects/master/kimchi/src/kimchi/model/storagevolumes.py
[root@abhiram src]# pip install magic
Downloading/unpacking magic
Could not find any downloads that satisfy the requirement magic
Some externally hosted files were ignored (use --allow-external magic to
allow).
Cleaning up...
No distributions at all found for magic
Storing debug log for failure in /root/.pip/pip.log
[root@abhiram kimchi]# pwd
/root/PycharmProjects/master/kimchi
[root@abhiram kimchi]# git pull
Already up-to-date.
[root@abhiram kimchi]#
=======================================================
Thanks,
Abhiram Kulkarni,
Staff Software Engineer, Z Firmware Development,
IBM India Systems & Technology Lab, Bangalore, India.
Phone: +91 80 28063288
“Be who you are and say what you feel, because those who mind don't matter,
and those who matter don't mind.”
=======================================================
2
2
From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
Changed the error and warning messages in Wok from the format KCHXXX0000{E,W}
to WOKXXX0000{E,W}.
Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
---
plugins/kimchi/tests/test_exception.py | 8 +++----
plugins/kimchi/tests/utils.py | 2 +-
plugins/kimchi/utils.py | 2 +-
src/wok/asynctask.py | 4 ++--
src/wok/auth.py | 10 ++++----
src/wok/control/base.py | 12 +++++-----
src/wok/control/utils.py | 6 ++---
src/wok/i18n.py | 44 +++++++++++++++++-----------------
src/wok/objectstore.py | 4 ++--
src/wok/root.py | 2 +-
src/wok/utils.py | 20 ++++++++--------
11 files changed, 57 insertions(+), 57 deletions(-)
diff --git a/plugins/kimchi/tests/test_exception.py b/plugins/kimchi/tests/test_exception.py
index 2b89adb..4459aa6 100644
--- a/plugins/kimchi/tests/test_exception.py
+++ b/plugins/kimchi/tests/test_exception.py
@@ -63,7 +63,7 @@ class ExceptionTests(unittest.TestCase):
# test 405 wrong method
resp = json.loads(request(host, ssl_port, '/', None, 'DELETE').read())
- msg = u'KCHAPI0002E: Delete is not allowed for wokroot'
+ msg = u'WOKAPI0002E: Delete is not allowed for wokroot'
self.assertEquals('405 Method Not Allowed', resp.get('code'))
self.assertEquals(msg, resp.get('reason'))
@@ -71,7 +71,7 @@ class ExceptionTests(unittest.TestCase):
resp = json.loads(
request(host, ssl_port, '/plugins/kimchi/vms', '{', 'POST').read()
)
- msg = u'KCHAPI0006E: Unable to parse JSON request'
+ msg = u'WOKAPI0006E: Unable to parse JSON request'
self.assertEquals('400 Bad Request', resp.get('code'))
self.assertEquals(msg, resp.get('reason'))
self.assertNotIn('call_stack', resp)
@@ -99,7 +99,7 @@ class ExceptionTests(unittest.TestCase):
# test 405 wrong method
resp = json.loads(request(host, ssl_port, '/', None, 'DELETE').read())
- msg = u'KCHAPI0002E: Delete is not allowed for wokroot'
+ msg = u'WOKAPI0002E: Delete is not allowed for wokroot'
self.assertEquals('405 Method Not Allowed', resp.get('code'))
self.assertEquals(msg, resp.get('reason'))
@@ -107,7 +107,7 @@ class ExceptionTests(unittest.TestCase):
resp = json.loads(
request(host, ssl_port, '/plugins/kimchi/vms', '{', 'POST').read()
)
- msg = u'KCHAPI0006E: Unable to parse JSON request'
+ msg = u'WOKAPI0006E: Unable to parse JSON request'
self.assertEquals('400 Bad Request', resp.get('code'))
self.assertEquals(msg, resp.get('reason'))
self.assertIn('call_stack', resp)
diff --git a/plugins/kimchi/tests/utils.py b/plugins/kimchi/tests/utils.py
index f80b14f..ecaa87f 100644
--- a/plugins/kimchi/tests/utils.py
+++ b/plugins/kimchi/tests/utils.py
@@ -205,7 +205,7 @@ class FakeUser(User):
try:
return mockmodel.fake_user[username] == password
except KeyError, e:
- raise OperationFailed("KCHAUTH0001E", {'username': 'username',
+ raise OperationFailed("WOKAUTH0001E", {'username': 'username',
'code': e.message})
diff --git a/plugins/kimchi/utils.py b/plugins/kimchi/utils.py
index 92ca83a..2480362 100644
--- a/plugins/kimchi/utils.py
+++ b/plugins/kimchi/utils.py
@@ -27,7 +27,7 @@ def _uri_to_name(collection, uri):
expr = '/plugins/kimchi/%s/(.*?)$' % collection
m = re.match(expr, uri)
if not m:
- raise InvalidParameter("KCHUTILS0001E", {'uri': uri})
+ raise InvalidParameter("WOKUTILS0001E", {'uri': uri})
return m.group(1)
diff --git a/src/wok/asynctask.py b/src/wok/asynctask.py
index 1e0ec4b..e3e10d5 100644
--- a/src/wok/asynctask.py
+++ b/src/wok/asynctask.py
@@ -28,7 +28,7 @@ from wok.exception import OperationFailed
class AsyncTask(object):
def __init__(self, id, target_uri, fn, objstore, opaque=None):
if objstore is None:
- raise OperationFailed("KCHASYNC0001E")
+ raise OperationFailed("WOKASYNC0001E")
self.id = str(id)
self.target_uri = target_uri
@@ -62,7 +62,7 @@ class AsyncTask(object):
with self.objstore as session:
session.store('task', self.id, obj)
except Exception as e:
- raise OperationFailed('KCHASYNC0002E', {'err': e.message})
+ raise OperationFailed('WOKASYNC0002E', {'err': e.message})
def _run_helper(self, opaque, cb):
cherrypy.serving.request = self._cp_request
diff --git a/src/wok/auth.py b/src/wok/auth.py
index cc470b6..6ae8bfc 100644
--- a/src/wok/auth.py
+++ b/src/wok/auth.py
@@ -179,7 +179,7 @@ class PAMUser(User):
if result.value != 0:
msg_args = {'username': username, 'code': result.value}
- raise OperationFailed("KCHAUTH0001E", msg_args)
+ raise OperationFailed("WOKAUTH0001E", msg_args)
return True
@@ -217,14 +217,14 @@ class LDAPUser(User):
return True
except ldap.INVALID_CREDENTIALS:
# invalid user password
- raise OperationFailed("KCHAUTH0002E")
+ raise OperationFailed("WOKAUTH0002E")
except ldap.NO_SUCH_OBJECT:
# ldap search base specified wrongly.
- raise OperationFailed("KCHAUTH0005E", {"item": 'ldap_search_base',
+ raise OperationFailed("WOKAUTH0005E", {"item": 'ldap_search_base',
"value": ldap_search_base})
except ldap.LDAPError, e:
arg = {"username": username, "code": e.message}
- raise OperationFailed("KCHAUTH0001E", arg)
+ raise OperationFailed("WOKAUTH0001E", arg)
def get_groups(self):
return self.user[USER_GROUPS]
@@ -348,5 +348,5 @@ def wokauth():
if not from_browser():
cherrypy.response.headers['WWW-Authenticate'] = 'Basic realm=wok'
- e = InvalidOperation('KCHAUTH0002E')
+ e = InvalidOperation('WOKAUTH0002E')
raise cherrypy.HTTPError(401, e.message.encode('utf-8'))
diff --git a/src/wok/control/base.py b/src/wok/control/base.py
index 5242f51..f2ad552 100644
--- a/src/wok/control/base.py
+++ b/src/wok/control/base.py
@@ -102,7 +102,7 @@ class Resource(object):
try:
self.lookup()
if not self.is_authorized():
- raise UnauthorizedError('KCHAPI0009E')
+ raise UnauthorizedError('WOKAPI0009E')
model_args = list(self.model_args)
if action_args is not None:
@@ -147,7 +147,7 @@ class Resource(object):
fn(*self.model_args)
cherrypy.response.status = 204
except AttributeError:
- e = InvalidOperation('KCHAPI0002E', {'resource':
+ e = InvalidOperation('WOKAPI0002E', {'resource':
get_class_name(self)})
raise cherrypy.HTTPError(405, e.message)
except OperationFailed, e:
@@ -163,7 +163,7 @@ class Resource(object):
try:
self.lookup()
if not self.is_authorized():
- raise UnauthorizedError('KCHAPI0009E')
+ raise UnauthorizedError('WOKAPI0009E')
return {'GET': self.get,
'DELETE': self.delete,
@@ -198,7 +198,7 @@ class Resource(object):
try:
update = getattr(self.model, model_fn(self, 'update'))
except AttributeError:
- e = InvalidOperation('KCHAPI0003E', {'resource':
+ e = InvalidOperation('WOKAPI0003E', {'resource':
get_class_name(self)})
raise cherrypy.HTTPError(405, e.message)
@@ -253,7 +253,7 @@ class Collection(object):
try:
create = getattr(self.model, model_fn(self, 'create'))
except AttributeError:
- e = InvalidOperation('KCHAPI0005E', {'resource':
+ e = InvalidOperation('WOKAPI0005E', {'resource':
get_class_name(self)})
raise cherrypy.HTTPError(405, e.message)
@@ -353,7 +353,7 @@ class AsyncCollection(Collection):
try:
create = getattr(self.model, model_fn(self, 'create'))
except AttributeError:
- e = InvalidOperation('KCHAPI0005E', {'resource':
+ e = InvalidOperation('WOKAPI0005E', {'resource':
get_class_name(self)})
raise cherrypy.HTTPError(405, e.message)
diff --git a/src/wok/control/utils.py b/src/wok/control/utils.py
index 496320c..56f9e7f 100644
--- a/src/wok/control/utils.py
+++ b/src/wok/control/utils.py
@@ -79,12 +79,12 @@ def parse_request():
try:
return json.loads(rawbody)
except ValueError:
- e = OperationFailed('KCHAPI0006E')
+ e = OperationFailed('WOKAPI0006E')
raise cherrypy.HTTPError(400, e.message)
elif mime_in_header('Content-Type', 'multipart/form-data'):
return cherrypy.request.params
else:
- e = OperationFailed('KCHAPI0007E')
+ e = OperationFailed('WOKAPI0007E')
raise cherrypy.HTTPError(415, e.message)
@@ -111,7 +111,7 @@ def validate_params(params, instance, action):
raise InvalidParameter(e.schema['error'], {'value':
str(e.instance)})
else:
- raise InvalidParameter("KCHAPI0008E", {"err": str(e.message)})
+ raise InvalidParameter("WOKAPI0008E", {"err": str(e.message)})
class UrlSubNode(object):
diff --git a/src/wok/i18n.py b/src/wok/i18n.py
index 1556e37..43a1edf 100644
--- a/src/wok/i18n.py
+++ b/src/wok/i18n.py
@@ -23,26 +23,26 @@ _ = gettext.gettext
messages = {
- "KCHAPI0002E": _("Delete is not allowed for %(resource)s"),
- "KCHAPI0003E": _("%(resource)s does not implement update method"),
- "KCHAPI0005E": _("Create is not allowed for %(resource)s"),
- "KCHAPI0006E": _("Unable to parse JSON request"),
- "KCHAPI0007E": _("This API only supports JSON"),
- "KCHAPI0008E": _("Parameters does not match requirement in schema: %(err)s"),
- "KCHAPI0009E": _("You don't have permission to perform this operation."),
-
- "KCHASYNC0001E": _("Datastore is not initiated in the model object."),
- "KCHASYNC0002E": _("Unable to start task due error: %(err)s"),
-
- "KCHAUTH0001E": _("Authentication failed for user '%(username)s'. [Error code: %(code)s]"),
- "KCHAUTH0002E": _("You are not authorized to access Kimchi"),
- "KCHAUTH0003E": _("Specify %(item)s to login into Kimchi"),
- "KCHAUTH0005E": _("Invalid LDAP configuration: %(item)s : %(value)s"),
-
- "KCHOBJST0001E": _("Unable to find %(item)s in datastore"),
-
- "KCHUTILS0001E": _("Invalid URI %(uri)s"),
- "KCHUTILS0002E": _("Timeout while running command '%(cmd)s' after %(seconds)s seconds"),
- "KCHUTILS0004E": _("Invalid data value '%(value)s'"),
- "KCHUTILS0005E": _("Invalid data unit '%(unit)s'"),
+ "WOKAPI0002E": _("Delete is not allowed for %(resource)s"),
+ "WOKAPI0003E": _("%(resource)s does not implement update method"),
+ "WOKAPI0005E": _("Create is not allowed for %(resource)s"),
+ "WOKAPI0006E": _("Unable to parse JSON request"),
+ "WOKAPI0007E": _("This API only supports JSON"),
+ "WOKAPI0008E": _("Parameters does not match requirement in schema: %(err)s"),
+ "WOKAPI0009E": _("You don't have permission to perform this operation."),
+
+ "WOKASYNC0001E": _("Datastore is not initiated in the model object."),
+ "WOKASYNC0002E": _("Unable to start task due error: %(err)s"),
+
+ "WOKAUTH0001E": _("Authentication failed for user '%(username)s'. [Error code: %(code)s]"),
+ "WOKAUTH0002E": _("You are not authorized to access Kimchi"),
+ "WOKAUTH0003E": _("Specify %(item)s to login into Kimchi"),
+ "WOKAUTH0005E": _("Invalid LDAP configuration: %(item)s : %(value)s"),
+
+ "WOKOBJST0001E": _("Unable to find %(item)s in datastore"),
+
+ "WOKUTILS0001E": _("Invalid URI %(uri)s"),
+ "WOKUTILS0002E": _("Timeout while running command '%(cmd)s' after %(seconds)s seconds"),
+ "WOKUTILS0004E": _("Invalid data value '%(value)s'"),
+ "WOKUTILS0005E": _("Invalid data unit '%(unit)s'"),
}
diff --git a/src/wok/objectstore.py b/src/wok/objectstore.py
index 107b568..aa2a21c 100644
--- a/src/wok/objectstore.py
+++ b/src/wok/objectstore.py
@@ -58,7 +58,7 @@ class ObjectStoreSession(object):
jsonstr = res.fetchall()[0][0]
except IndexError:
self.conn.rollback()
- raise NotFoundError("KCHOBJST0001E", {'item': ident})
+ raise NotFoundError("WOKOBJST0001E", {'item': ident})
return json.loads(jsonstr)
def delete(self, obj_type, ident, ignore_missing=False):
@@ -67,7 +67,7 @@ class ObjectStoreSession(object):
(obj_type, ident))
if c.rowcount != 1 and not ignore_missing:
self.conn.rollback()
- raise NotFoundError("KCHOBJST0001E", {'item': ident})
+ raise NotFoundError("WOKOBJST0001E", {'item': ident})
self.conn.commit()
def store(self, obj_type, ident, data):
diff --git a/src/wok/root.py b/src/wok/root.py
index 3a86a74..4262bd0 100644
--- a/src/wok/root.py
+++ b/src/wok/root.py
@@ -132,7 +132,7 @@ class WokRoot(Root):
username = params['username']
password = params['password']
except KeyError, item:
- e = MissingParameter('KCHAUTH0003E', {'item': str(item)})
+ e = MissingParameter('WOKAUTH0003E', {'item': str(item)})
raise cherrypy.HTTPError(400, e.message)
try:
diff --git a/src/wok/utils.py b/src/wok/utils.py
index 8d51f22..1970e1f 100644
--- a/src/wok/utils.py
+++ b/src/wok/utils.py
@@ -202,7 +202,7 @@ def run_command(cmd, timeout=None):
wok_log.error(msg)
msg_args = {'cmd': " ".join(cmd), 'seconds': str(timeout)}
- raise TimeoutExpired("KCHUTILS0002E", msg_args)
+ raise TimeoutExpired("WOKUTILS0002E", msg_args)
return out, error, proc.returncode
except TimeoutExpired:
@@ -295,10 +295,10 @@ def validate_repo_url(url):
if url_parts[0] in ['http', 'https', 'ftp']:
if not check_url_path(url):
- raise InvalidParameter("KCHUTILS0001E", {'uri': url})
+ raise InvalidParameter("WOKUTILS0001E", {'uri': url})
elif url_parts[0] == 'file':
if not os.path.exists(url_parts[1]):
- raise InvalidParameter("KCHUTILS0001E", {'uri': url})
+ raise InvalidParameter("WOKUTILS0001E", {'uri': url})
else:
raise InvalidParameter("KCHREPOS0002E")
@@ -466,9 +466,9 @@ def convert_data_size(value, from_unit, to_unit='B'):
DEFAULT_SUFFIX = 'B'
if not from_unit:
- raise InvalidParameter('KCHUTILS0005E', {'unit': from_unit})
+ raise InvalidParameter('WOKUTILS0005E', {'unit': from_unit})
if not to_unit:
- raise InvalidParameter('KCHUTILS0005E', {'unit': to_unit})
+ raise InvalidParameter('WOKUTILS0005E', {'unit': to_unit})
# set the default suffix
if from_unit[-1] not in SUFFIXES_WITH_MULT:
@@ -486,15 +486,15 @@ def convert_data_size(value, from_unit, to_unit='B'):
try:
value = float(value)
except TypeError:
- raise InvalidParameter('KCHUTILS0004E', {'value': value})
+ raise InvalidParameter('WOKUTILS0004E', {'value': value})
if from_p != '' and from_p not in (SI_PREFIXES + IEC_PREFIXES):
- raise InvalidParameter('KCHUTILS0005E', {'unit': from_unit})
+ raise InvalidParameter('WOKUTILS0005E', {'unit': from_unit})
if from_s not in SUFFIXES_WITH_MULT:
- raise InvalidParameter('KCHUTILS0005E', {'unit': from_unit})
+ raise InvalidParameter('WOKUTILS0005E', {'unit': from_unit})
if to_p != '' and to_p not in (SI_PREFIXES + IEC_PREFIXES):
- raise InvalidParameter('KCHUTILS0005E', {'unit': to_unit})
+ raise InvalidParameter('WOKUTILS0005E', {'unit': to_unit})
if to_s not in SUFFIXES_WITH_MULT:
- raise InvalidParameter('KCHUTILS0005E', {'unit': to_unit})
+ raise InvalidParameter('WOKUTILS0005E', {'unit': to_unit})
# if the units are the same, return the input value
if from_unit == to_unit:
--
2.4.3
2
1
From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
Move the KCHUTILS0001E ("Invalid URI %(uri)s") message error from Kimchi to Wok
to be usable to any plugin.
Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
---
plugins/kimchi/i18n.py | 1 -
src/wok/i18n.py | 1 +
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/kimchi/i18n.py b/plugins/kimchi/i18n.py
index 220bd24..253f00d 100644
--- a/plugins/kimchi/i18n.py
+++ b/plugins/kimchi/i18n.py
@@ -269,7 +269,6 @@ messages = {
"KCHPKGUPD0003E": _("Error while getting packages marked to be updated. Details: %(err)s"),
"KCHPKGUPD0004E": _("There is no compatible package manager for this system."),
- "KCHUTILS0001E": _("Invalid URI %(uri)s"),
"KCHUTILS0003E": _("Unable to choose a virtual machine name"),
"KCHVMSTOR0002E": _("Invalid storage type. Types supported: 'cdrom', 'disk'"),
diff --git a/src/wok/i18n.py b/src/wok/i18n.py
index 649283b..1556e37 100644
--- a/src/wok/i18n.py
+++ b/src/wok/i18n.py
@@ -41,6 +41,7 @@ messages = {
"KCHOBJST0001E": _("Unable to find %(item)s in datastore"),
+ "KCHUTILS0001E": _("Invalid URI %(uri)s"),
"KCHUTILS0002E": _("Timeout while running command '%(cmd)s' after %(seconds)s seconds"),
"KCHUTILS0004E": _("Invalid data value '%(value)s'"),
"KCHUTILS0005E": _("Invalid data unit '%(unit)s'"),
--
2.4.3
2
1
Wok is only a framework and does not know which configuratin is required
for each plugin. Based on that, the plugin is responsible for its API
configuration.
Update Kimchi configuration accordingly.
This patch also prevents the follwing error on server start up:
CherryPy Checker:
'/home/alinefm/wok/plugins/kimchi/ui/libs' (root + dir) is not an existing filesystem path.
section: [/libs]
root: None
dir: '/home/alinefm/wok/plugins/kimchi/ui/libs'
Signed-off-by: Aline Manera <alinefm(a)linux.vnet.ibm.com>
---
plugins/kimchi/config.py.in | 60 +++++++++++++++++++++++++--------------------
src/wok/config.py.in | 8 ++----
2 files changed, 35 insertions(+), 33 deletions(-)
diff --git a/plugins/kimchi/config.py.in b/plugins/kimchi/config.py.in
index 4b82e45..6ae0ccd 100644
--- a/plugins/kimchi/config.py.in
+++ b/plugins/kimchi/config.py.in
@@ -23,7 +23,7 @@ import os
import platform
import threading
-from wok.config import PluginConfig, PluginPaths
+from wok.config import CACHEEXPIRES, PluginConfig, PluginPaths
from wok.xmlutils.utils import xpath_get_text
kimchiLock = threading.Lock()
@@ -107,32 +107,38 @@ class KimchiConfig(PluginConfig):
def __init__(self):
super(KimchiConfig, self).__init__('kimchi')
- custom_config = {
- '/novnc': {
+ static_config = {
+ '/novnc': {'type': 'dir',
+ 'path': kimchiPaths.novnc_dir},
+ '/spice-html5': {'type': 'dir',
+ 'path': kimchiPaths.spice_dir},
+ '/spice_auto.html': {'type': 'file',
+ 'path': kimchiPaths.spice_file},
+ '/spice-html5/spice.css': {'type': 'file',
+ 'path': kimchiPaths.spice_css_file}}
+
+ custom_config = {}
+ for uri, data in static_config.iteritems():
+ custom_config[uri] = {'tools.nocache.on': True,
+ 'tools.wokauth.on': True}
+ path = data['path']
+ if data['type'] == 'dir':
+ custom_config[uri].update({'tools.staticdir.on': True,
+ 'tools.staticdir.dir': path})
+ elif data['type'] == 'file':
+ custom_config[uri].update({'tools.staticfile.on': True,
+ 'tools.staticfile.filename': path})
+
+ for dirname in ('css', 'js', 'images'):
+ custom_config['/' + dirname] = {
'tools.staticdir.on': True,
- 'tools.staticdir.dir': kimchiPaths.novnc_dir,
- 'tools.nocache.on': True,
- 'tools.wokauth.on': True,
- },
-
- '/spice_auto.html': {
- 'tools.staticfile.on': True,
- 'tools.staticfile.filename': kimchiPaths.spice_file,
- 'tools.nocache.on': True,
- 'tools.wokauth.on': True,
- },
-
- '/spice-html5': {
- 'tools.staticdir.on': True,
- 'tools.staticdir.dir': kimchiPaths.spice_dir,
- 'tools.nocache.on': True,
- },
-
- '/spice-html5/spice.css': {
- 'tools.staticfile.on': True,
- 'tools.staticfile.filename': kimchiPaths.spice_css_file,
- 'tools.nocache.on': True,
- },
- }
+ 'tools.staticdir.dir': os.path.join(kimchiPaths.ui_dir,
+ dirname),
+ 'tools.wokauth.on': False,
+ 'tools.nocache.on': False}
+ if dirname != 'images':
+ custom_config['/' + dirname].update({
+ 'tools.expires.on': True,
+ 'tools.expires.secs': CACHEEXPIRES})
self.update(custom_config)
diff --git a/src/wok/config.py.in b/src/wok/config.py.in
index da17257..616c013 100644
--- a/src/wok/config.py.in
+++ b/src/wok/config.py.in
@@ -25,6 +25,7 @@ from ConfigParser import SafeConfigParser
__version__ = "@wokversion@"
__release__ = "@wokrelease@"
+CACHEEXPIRES = 31536000 # expires is one year.
DEFAULT_LOG_LEVEL = "debug"
FONT_FILES = {'fontawesome': ['fontawesome-webfont.ttf'],
@@ -126,10 +127,6 @@ class PluginPaths(Paths):
class UIConfig(dict):
-
- # expires is one year.
- CACHEEXPIRES = 31536000
-
def __init__(self, paths):
ui_configs = {}
for sub_dir in ('css', 'js', 'libs', 'images'):
@@ -141,7 +138,7 @@ class UIConfig(dict):
if sub_dir != 'images':
ui_configs['/' + sub_dir].update({
'tools.expires.on': True,
- 'tools.expires.secs': self.CACHEEXPIRES})
+ 'tools.expires.secs': CACHEEXPIRES})
for font, files in FONT_FILES.iteritems():
paths = FONTS_PATH[font]
@@ -207,7 +204,6 @@ class PluginConfig(dict):
'config/tab-ext.xml'),
'tools.nocache.on': True}}
self.update(plugin_config)
- self.update(UIConfig(PluginPaths(plugin_name)))
def _get_config():
--
2.1.0
2
2
[PATCH] [WOK] Moving JS libraries to new folders and added license files
by sguimaraes943@gmail.com 21 Sep '15
by sguimaraes943@gmail.com 21 Sep '15
21 Sep '15
From: samhenri <samuel.guimaraes(a)eldorado.org.br>
This commit updates jquery and jquery-ui to the latest compatible versions (v1.11.3 and v1.11.4) and adds all the JS libraries that are required in order to run and develop the new-ui.
Updated the old-ui login.html.tmpl and wok-ui.html.tmpl to point to correct Js path otherwise the CherryPy would throw a 404 error when loading the pages.
Moved all libs/themes files to libs/jquery-ui/themes/ and added a copy of jquery-ui license to this folder.
All the new libraries where added to ui/libs folder and configure.ac was properly updated to read the new Makefiles.
*New-ui related:
*Removed logo.ico and updated with favicon.ico in high resolution (name convention for IE9 compatibility). This change can be spotted in the browser tab bar with the old-ui.
*Updated opensans.css to point to local font family when the user already has it installed.
Signed-off-by: samhenri <samuel.guimaraes(a)eldorado.org.br>
---
configure.ac | 12 +-
ui/css/Makefile.am | 2 +-
ui/css/jquery-ui.custom.css | 203 +++++++++++++++++++++
ui/css/opensans/opensans.css | 20 +-
ui/images/favicon.ico | Bin 0 -> 15086 bytes
ui/images/logo.ico | Bin 1214 -> 0 bytes
ui/images/theme-default/Makefile.am | 2 +-
ui/libs/Makefile.am | 6 +-
ui/libs/bootstrap-select/LICENSE | 21 +++
ui/libs/bootstrap-select/Makefile.am | 20 ++
ui/libs/bootstrap-select/bootstrap-select.min.js | 8 +
ui/libs/bootstrap/LICENSE | 21 +++
ui/libs/bootstrap/Makefile.am | 20 ++
ui/libs/bootstrap/bootstrap.min.js | 7 +
ui/libs/es5-shim/LICENSE | 22 +++
ui/libs/es5-shim/Makefile.am | 20 ++
ui/libs/es5-shim/es5-shim.min.js | 7 +
ui/libs/jquery-1.10.0.min.js | 6 -
ui/libs/jquery-i18n/LICENSE | 19 ++
ui/libs/jquery-i18n/Makefile.am | 20 ++
ui/libs/jquery-i18n/jquery.i18n.min.js | 1 +
ui/libs/jquery-ui-i18n.min.js | 7 -
ui/libs/jquery-ui.min.js | 13 --
ui/libs/jquery-ui/LICENSE | 44 +++++
ui/libs/jquery-ui/Makefile.am | 22 +++
ui/libs/jquery-ui/jquery-ui-i18n.min.js | 7 +
ui/libs/jquery-ui/jquery-ui.min.js | 13 ++
ui/libs/jquery-ui/themes/Makefile.am | 18 ++
ui/libs/jquery-ui/themes/base/Makefile.am | 22 +++
ui/libs/jquery-ui/themes/base/images/Makefile.am | 20 ++
.../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 457 bytes
.../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 351 bytes
.../base/images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 244 bytes
.../base/images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 301 bytes
.../base/images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 387 bytes
.../base/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 246 bytes
.../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 5854 bytes
.../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 317 bytes
.../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 367 bytes
.../themes/base/images/ui-icons_222222_256x240.png | Bin 0 -> 7006 bytes
.../themes/base/images/ui-icons_228ef1_256x240.png | Bin 0 -> 4599 bytes
.../themes/base/images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4599 bytes
.../themes/base/images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4599 bytes
.../themes/base/images/ui-icons_ffffff_256x240.png | Bin 0 -> 6468 bytes
ui/libs/jquery-ui/themes/base/jquery-ui.min.css | 7 +
ui/libs/jquery/LICENSE | 21 +++
ui/libs/jquery/Makefile.am | 20 ++
ui/libs/jquery/jquery.min.js | 6 +
ui/libs/themes/Makefile.am | 18 --
ui/libs/themes/base/Makefile.am | 22 ---
ui/libs/themes/base/images/Makefile.am | 20 --
.../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 457 -> 0 bytes
.../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 351 -> 0 bytes
.../base/images/ui-bg_flat_10_000000_40x100.png | Bin 244 -> 0 bytes
.../base/images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 301 -> 0 bytes
.../base/images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 387 -> 0 bytes
.../base/images/ui-bg_glass_65_ffffff_1x400.png | Bin 246 -> 0 bytes
.../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 5854 -> 0 bytes
.../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 317 -> 0 bytes
.../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 367 -> 0 bytes
.../themes/base/images/ui-icons_222222_256x240.png | Bin 7006 -> 0 bytes
.../themes/base/images/ui-icons_228ef1_256x240.png | Bin 4599 -> 0 bytes
.../themes/base/images/ui-icons_ef8c08_256x240.png | Bin 4599 -> 0 bytes
.../themes/base/images/ui-icons_ffd27a_256x240.png | Bin 4599 -> 0 bytes
.../themes/base/images/ui-icons_ffffff_256x240.png | Bin 6468 -> 0 bytes
ui/libs/themes/base/jquery-ui.min.css | 7 -
ui/pages/error.html.tmpl | 2 +
ui/pages/login.html.tmpl | 10 +-
ui/pages/wok-ui.html.tmpl | 13 +-
69 files changed, 625 insertions(+), 124 deletions(-)
create mode 100644 ui/css/jquery-ui.custom.css
create mode 100644 ui/images/favicon.ico
delete mode 100644 ui/images/logo.ico
create mode 100644 ui/libs/bootstrap-select/LICENSE
create mode 100644 ui/libs/bootstrap-select/Makefile.am
create mode 100644 ui/libs/bootstrap-select/bootstrap-select.min.js
create mode 100644 ui/libs/bootstrap/LICENSE
create mode 100644 ui/libs/bootstrap/Makefile.am
create mode 100644 ui/libs/bootstrap/bootstrap.min.js
create mode 100644 ui/libs/es5-shim/LICENSE
create mode 100644 ui/libs/es5-shim/Makefile.am
create mode 100644 ui/libs/es5-shim/es5-shim.min.js
delete mode 100644 ui/libs/jquery-1.10.0.min.js
create mode 100644 ui/libs/jquery-i18n/LICENSE
create mode 100644 ui/libs/jquery-i18n/Makefile.am
create mode 100644 ui/libs/jquery-i18n/jquery.i18n.min.js
delete mode 100644 ui/libs/jquery-ui-i18n.min.js
delete mode 100644 ui/libs/jquery-ui.min.js
create mode 100644 ui/libs/jquery-ui/LICENSE
create mode 100644 ui/libs/jquery-ui/Makefile.am
create mode 100644 ui/libs/jquery-ui/jquery-ui-i18n.min.js
create mode 100644 ui/libs/jquery-ui/jquery-ui.min.js
create mode 100644 ui/libs/jquery-ui/themes/Makefile.am
create mode 100644 ui/libs/jquery-ui/themes/base/Makefile.am
create mode 100644 ui/libs/jquery-ui/themes/base/images/Makefile.am
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_flat_10_000000_40x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_222222_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_228ef1_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_ef8c08_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_ffd27a_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png
create mode 100644 ui/libs/jquery-ui/themes/base/jquery-ui.min.css
create mode 100644 ui/libs/jquery/LICENSE
create mode 100644 ui/libs/jquery/Makefile.am
create mode 100644 ui/libs/jquery/jquery.min.js
delete mode 100644 ui/libs/themes/Makefile.am
delete mode 100644 ui/libs/themes/base/Makefile.am
delete mode 100644 ui/libs/themes/base/images/Makefile.am
delete mode 100644 ui/libs/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_flat_10_000000_40x100.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
delete mode 100644 ui/libs/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_222222_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_228ef1_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_ef8c08_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_ffd27a_256x240.png
delete mode 100644 ui/libs/themes/base/images/ui-icons_ffffff_256x240.png
delete mode 100644 ui/libs/themes/base/jquery-ui.min.css
diff --git a/configure.ac b/configure.ac
index 2c76bad..e11a17d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -110,9 +110,15 @@ AC_CONFIG_FILES([
ui/images/theme-default/Makefile
ui/js/Makefile
ui/libs/Makefile
- ui/libs/themes/Makefile
- ui/libs/themes/base/Makefile
- ui/libs/themes/base/images/Makefile
+ ui/libs/bootstrap/Makefile
+ ui/libs/bootstrap-select/Makefile
+ ui/libs/es5-shim/Makefile
+ ui/libs/jquery/Makefile
+ ui/libs/jquery-i18n/Makefile
+ ui/libs/jquery-ui/Makefile
+ ui/libs/jquery-ui/themes/Makefile
+ ui/libs/jquery-ui/themes/base/Makefile
+ ui/libs/jquery-ui/themes/base/images/Makefile
ui/pages/Makefile
ui/pages/websockify/Makefile
contrib/Makefile
diff --git a/ui/css/Makefile.am b/ui/css/Makefile.am
index aeebe02..6f8fe05 100644
--- a/ui/css/Makefile.am
+++ b/ui/css/Makefile.am
@@ -20,7 +20,7 @@ SUBDIRS = fontawesome opensans
EXTRA_DIST = theme-default
cssdir = $(datadir)/wok/ui/css
-dist_css_DATA = theme-default.min.css
+dist_css_DATA = theme-default.min.css jquery-ui.custom.css
theme-default.min.css: theme-default/*.css
cat $^ > $@
diff --git a/ui/css/jquery-ui.custom.css b/ui/css/jquery-ui.custom.css
new file mode 100644
index 0000000..48b44ab
--- /dev/null
+++ b/ui/css/jquery-ui.custom.css
@@ -0,0 +1,203 @@
+/*
+ * Project Kimchi
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * 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.
+ */
+
+.ui-button-primary {
+ border-radius: 8px 8px 8px 8px;
+}
+
+.ui-button-primary.ui-state-default {
+ background: none repeat scroll 0 0 #0066FF;
+ border: 0 none;
+}
+
+.ui-button-primary.ui-state-disabled {
+ background-color: silver;
+ opacity: 1;
+}
+
+.ui-button-primary.ui-state-hover {
+ background: #0044DD;
+}
+
+.ui-button-primary .ui-button-text {
+ padding: 10px 23px;
+ font-size: 13px;
+ color: #EEEEEE;
+}
+
+.ui-button-secondary {
+ border: 1px solid #AAAAAA;
+ border-radius: 5px 5px 5px 5px;
+ cursor: pointer;
+}
+
+.ui-button-secondary.ui-state-default {
+ background: linear-gradient(to bottom, #FFFFFF 0%, #E5E5E5 100%) repeat
+ scroll 0 0 transparent;
+ box-shadow: -2px -2px 2px #EAEAEA, 2px 2px 2px #FFFFFF, 3px 3px 3px white
+ inset, -3px -3px 3px rgba(0, 0, 0, 0.25) inset;
+}
+
+.ui-button-secondary.ui-state-hover {
+ background: linear-gradient(to bottom, #d5d5d5 0%, #eeeeee 100%);
+ box-shadow: -2px -2px 2px #dadada, 2px 2px 2px #fff, 3px 3px 3px white
+ inset, -3px -3px 3px rgba(0, 0, 0, .25) inset;
+}
+
+.ui-button-secondary .ui-button-text {
+ font-size: 13px;
+ color: #333333;
+ text-overflow: ellipsis;
+ text-shadow: -1px -1px 1px #AAAAAA, 1px 1px 1px #FFFFFF;
+ white-space: nowrap;
+}
+
+.ui-button-secondary.ui-button-text-only .ui-button-text {
+ padding: 12px 23px 13px 20px;
+}
+
+.ui-button-secondary.ui-button-text-icon-secondary .ui-button-text {
+ padding: 12px 35px 13px 13px;
+}
+
+.ui-button-secondary .ui-button-icon-secondary {
+ padding-right: 5px;
+ width: 15px;
+ height: 15px;
+}
+
+.ui-menu {
+ background: linear-gradient(to bottom, #EEEEEE 0%, #CCCCCC 10px, #CCCCCC
+ 96%, #A5A5A5 100%) repeat scroll 0 0 transparent;
+ padding: 10px 10px 0;
+ width: 250px;
+}
+
+.ui-menu .ui-menu-item a {
+ background: linear-gradient(to bottom, #FFFFFF 0%, #E5E5E5 100%) repeat
+ scroll 0 0 transparent;
+ border: 1px solid #CCCCCC;
+ border-radius: 5px 5px 5px 5px;
+ box-shadow: -1px -1px 1px #CCCCCC, 1px 1px 1px #EEEEEE;
+ display: block;
+ font-size: 13px;
+ line-height: 38px;
+ margin-bottom: 10px;
+ text-align: center;
+ text-shadow: -1px -1px 1px #CCCCCC, 1px 1px 1px #FFFFFF;
+ width: 96%;
+}
+
+.ui-menu .ui-menu-item a.ui-state-focus {
+ background: linear-gradient(to bottom, #EEEEEE 0%, #D5D5D5 100%) repeat
+ scroll 0 0 transparent;
+ box-shadow: -1px -1px 1px #BBBBBB, 1px 1px 1px #DDDDDD;
+ margin: 0px 0px 10px 0px;
+}
+
+.ui-menu .ui-menu-item a.red:not([disabled]) {
+ background: linear-gradient(to bottom, #FF3019 0%, #CF0404 100%) repeat
+ scroll 0 0 transparent;
+ border: 1px solid #B10F14;
+ color: #FFFFFF;
+ text-shadow: -1px -1px 1px #9E0505, 1px 1px 1px #FC5D4C;
+}
+
+.ui-menu .ui-menu-item a.red:hover:not([disabled]) {
+ background: linear-gradient(to bottom, #EF2009 0%, #BF0404 100%) repeat
+ scroll 0 0 transparent;
+}
+
+.ui-menu .ui-state-disabled {
+ opacity: 1;
+}
+
+.ui-menu .ui-state-disabled a {
+ color: gray;
+}
+
+.ui-widget-overlay {
+ background: url("../images/theme-default/bg-mask.png") repeat scroll
+ 0 0 transparent;
+ opacity: 1;
+}
+
+.ui-dialog {
+ background: none;
+ background-color: #EEEEEE;
+ border: 2px solid #0F71B4;
+ border-radius: 8px;
+ padding: 0px;
+}
+
+.ui-dialog .ui-dialog-titlebar {
+ border: none;
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+ background: none;
+ padding: 13px 0px 13px 10px;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.15), 0 -1px 0 rgba(0,0,0,0.05) inset;
+}
+
+.ui-dialog .ui-dialog-title {
+ font-size: 18px;
+ color: #0066CC;
+}
+
+.ui-dialog .ui-dialog-titlebar-close {
+ margin: 4px 0 0;
+ background: none repeat scroll 0 0 #EEEEEE;
+ border: 2px solid #CCCCCC;
+ border-radius: 35px 35px 35px 35px;
+ color: #CCCCCC;
+ cursor: pointer;
+ height: 35px;
+ width: 35px;
+ position: absolute;
+ right: 7px;
+ text-align: center;
+ top: 5px;
+}
+
+.ui-dialog .ui-dialog-titlebar .ui-state-hover {
+ border: 2px solid #444444;
+ color: #444444;
+}
+
+.ui-dialog .ui-dialog-titlebar .ui-button-text {
+ font-size: 24px;
+ font-weight: bold;
+ padding: 0px;
+ text-indent: 0px;
+}
+
+.ui-dialog .ui-dialog-titlebar .ui-button-icon-primary {
+ display: none;
+}
+
+.ui-dialog .ui-dialog-buttonpane {
+ padding: 0px;
+ background-color: transparent;
+ border-width: 0;
+ box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.15);
+}
+
+.ui-dialog .ui-dialog-buttonpane button {
+ cursor: pointer;
+ margin: 0.5em 13px 0.5em 0;
+}
diff --git a/ui/css/opensans/opensans.css b/ui/css/opensans/opensans.css
index 6ab53b4..57a6533 100644
--- a/ui/css/opensans/opensans.css
+++ b/ui/css/opensans/opensans.css
@@ -22,7 +22,7 @@
/* BEGIN Light */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Light.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Light.ttf") format("truetype");
font-weight: 300;
font-style: normal; }
/* END Light */
@@ -30,7 +30,7 @@
/* BEGIN Light Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-LightItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-LightItalic.ttf") format("truetype");
font-weight: 300;
font-style: italic; }
/* END Light Italic */
@@ -38,7 +38,7 @@
/* BEGIN Regular */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Regular.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Regular.ttf") format("truetype");
font-weight: normal;
font-style: normal; }
/* END Regular */
@@ -46,7 +46,7 @@
/* BEGIN Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Italic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Italic.ttf") format("truetype");
font-weight: normal;
font-style: italic; }
/* END Italic */
@@ -54,7 +54,7 @@
/* BEGIN Semibold */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Semibold.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Semibold.ttf") format("truetype");
font-weight: 600;
font-style: normal; }
/* END Semibold */
@@ -62,7 +62,7 @@
/* BEGIN Semibold Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-SemiboldItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-SemiboldItalic.ttf") format("truetype");
font-weight: 600;
font-style: italic; }
/* END Semibold Italic */
@@ -70,7 +70,7 @@
/* BEGIN Bold */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-Bold.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-Bold.ttf") format("truetype");
font-weight: bold;
font-style: normal; }
/* END Bold */
@@ -78,7 +78,7 @@
/* BEGIN Bold Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-BoldItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-BoldItalic.ttf") format("truetype");
font-weight: bold;
font-style: italic; }
/* END Bold Italic */
@@ -86,7 +86,7 @@
/* BEGIN Extrabold */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-ExtraBold.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-ExtraBold.ttf") format("truetype");
font-weight: 800;
font-style: normal; }
/* END Extrabold */
@@ -94,7 +94,7 @@
/* BEGIN Extrabold Italic */
@font-face {
font-family: 'Open Sans';
- src: url("/fonts/OpenSans-ExtraBoldItalic.ttf") format("truetype");
+ src: local('Open Sans'), local('OpenSans'), url("/fonts/OpenSans-ExtraBoldItalic.ttf") format("truetype");
font-weight: 800;
font-style: italic; }
/* END Extrabold Italic */
diff --git a/ui/images/favicon.ico b/ui/images/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..cb3a3dc2f9c9ce0e5d3e14f0adab89c28c729ce0
GIT binary patch
literal 15086
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¥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
literal 0
HcmV?d00001
diff --git a/ui/images/logo.ico b/ui/images/logo.ico
deleted file mode 100644
index 446143f066a60f479b2cb8f8d04ab3c97ff60e56..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1214
zcma)*3rLeu6vyu=X_;nPV)$&PPF)r(wTQ|dTGOUtnOdf0mZ=cR#99xbub1{BqnD9^
z^Z>PV6h)fUny6#CN{3di2P{*h2ek@Oq0a4o*=I}2Iv?krbAR`oKi_vQA0faVCr83o
zF{!X2#Dx$Nz}$(sm^sgR<Jj30yCMGpMl1z837jm3H1$<DU4IV>Tbdw<FM-;Hi<#et
z=I}n~iB^qh8{XzCNyvT<I;$&znmT~?eFXZgAE@Om?1h(6Iq+2e1-ca!zOAO7n3*};
zXq6n?2kF<!f%cez;-Fgx4$e+xo{WR;oqhc_OW;#nF!Zm|JK}m8gi6aC+##`QA5PmJ
zfeZ(o(}%&&1P5#*1vVbnssk~XhN5bNz=T)>5^+BS=V54SJ|^z)5I7%kU;>-skiq*{
z5B^=eF<T)pK9+)bV;9UCK>t-HOi+bkR-wK1xpfXL;S<?ho1pQ5gYzxiHR~=e+XHS(
zYe7QMZb3IjWV72H-JpD~6z(tbgwn1o$D2s!YteWNJS!i9l%iW?+34Lvr*KL(6{_X|
zobEjAb{lD|4qsmYvGF;~r0Aunc#>=c)0W4s|D{#(q9~vaX{rGms=((Wn*~LeWqIu}
zkGvlzwaxjL25hey2bVweu<xK*t+@Oa_)UKTK^x4IwmKMOjm@oL`l)}_NGPy}tdb}w
zHa>H`ji2N7m}Xsj#j7-`#=Dv}`)h&)9th^&^dR%>WH_MB8KcIXVf8p&s1xD|_k)R-
zrk$Z0-|Gf}&4Au$KhU$k?3YR5by~D9M&-q$=ocNz4!IY&p7%OxuJf&+Ei-G(23hU;
zHTLhMtjFR9ExVbPQVLzBFlROcIZ|#jmX6fm_hsVa3XP<aKAeAt8dqp&oBW=V^+d>Q
zkcNnm%Ds?ggd^Rv2~9_o82cv;p6LSBD_g_s-n1uZ8#<EeLwTm~LE9J!Zdo@M&*jFU
zoM+Z%F5)(8$8y`Wz~%Pd;Nlx@aH{<lk}}CcRMRXZMD&%Uhz3Ze$jpg#uec1IlFMPW
MDQ4iZEk#_;cNAJoqyPW_
diff --git a/ui/images/theme-default/Makefile.am b/ui/images/theme-default/Makefile.am
index 336729c..bf594d7 100644
--- a/ui/images/theme-default/Makefile.am
+++ b/ui/images/theme-default/Makefile.am
@@ -17,4 +17,4 @@
imagedir = $(datadir)/wok/ui/images/theme-default
-dist_image_DATA = *.png *.gif
+dist_image_DATA = *.png *.gif *.svg
diff --git a/ui/libs/Makefile.am b/ui/libs/Makefile.am
index 49ad3bb..38af60b 100644
--- a/ui/libs/Makefile.am
+++ b/ui/libs/Makefile.am
@@ -15,8 +15,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SUBDIRS = themes
-
-jsdir = $(datadir)/wok/ui/libs
-
-dist_js_DATA = $(wildcard *.js) $(NULL)
+SUBDIRS = bootstrap jquery jquery-ui bootstrap-select es5-shim jquery-i18n
diff --git a/ui/libs/bootstrap-select/LICENSE b/ui/libs/bootstrap-select/LICENSE
new file mode 100644
index 0000000..4e7f552
--- /dev/null
+++ b/ui/libs/bootstrap-select/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2014 bootstrap-select
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/ui/libs/bootstrap-select/Makefile.am b/ui/libs/bootstrap-select/Makefile.am
new file mode 100644
index 0000000..df7964e
--- /dev/null
+++ b/ui/libs/bootstrap-select/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+bootstrapselectjsdir = $(datadir)/wok/ui/libs/bootstrap-select
+
+dist_bootstrapselectjs_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/bootstrap-select/bootstrap-select.min.js b/ui/libs/bootstrap-select/bootstrap-select.min.js
new file mode 100644
index 0000000..d770e9b
--- /dev/null
+++ b/ui/libs/bootstrap-select/bootstrap-select.min.js
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/)
+ *
+ * Copyright 2013-2014 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a){"use strict";function b(a,b){return a.toUpperCase().indexOf(b.toUpperCase())>-1}function c(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function d(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function e(b,c){var d=arguments,e=b,b=d[0],c=d[1];[].shift.apply(d),"undefined"==typeof b&&(b=e);var g,h=this.each(function(){var e=a(this);if(e.is("select")){var h=e.data("selectpicker"),i="object"==typeof b&&b;if(h){if(i)for(var j in i)i.hasOwnProperty(j)&&(h.options[j]=i[j])}else{var k=a.extend({},f.DEFAULTS,a.fn.selectpicker.defaults||{},e.data(),i);e.data("selectpicker",h=new f(this,k,c))}"string"==typeof b&&(g=h[b]instanceof Function?h[b].apply(h,d):h.options[b])}});return"undefined"!=typeof g?g:h}a.expr[":"].icontains=function(c,d,e){return b(a(c).text(),e[3])},a.expr[":"].aicontains=function(c,d,e){return b(a(c).data("normalizedText")||a(c).text(),e[3])};var f=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=f.prototype.val,this.render=f.prototype.render,this.refresh=f.prototype.refresh,this.setStyle=f.prototype.setStyle,this.selectAll=f.prototype.selectAll,this.deselectAll=f.prototype.deselectAll,this.destroy=f.prototype.remove,this.remove=f.prototype.remove,this.show=f.prototype.show,this.hide=f.prototype.hide,this.init()};f.VERSION="1.6.3",f.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results match",countSelectedText:function(a){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){var c=[];return c[0]=1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",c[1]=1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)",c},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", ",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,searchAccentInsensitive:!1},f.prototype={constructor:f,init:function(){var b=this,c=this.$element.attr("id");this.$element.hide(),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement),this.$menu=this.$newElement.find("> .dropdown-menu"),this.$button=this.$newElement.find("> button"),this.$searchbox=this.$newElement.find("input"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.liHeight(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile()},createDropdown:function(){var b=this.multiple?" show-tick":"",c=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.$element.parents().hasClass("form-group-lg")?" btn-lg":this.$element.parents().hasClass("form-group-sm")?" btn-sm":"",g=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>'+this.options.header+"</div>":"",h=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+d(this.options.liveSearchPlaceholder)+'"')+"></div>":"",i=this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-block"><button class="actions-btn bs-select-all btn btn-sm btn-default">'+this.options.selectAllText+'</button><button class="actions-btn bs-deselect-all btn btn-sm btn-default">'+this.options.deselectAllText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+c+'"><button type="button" class="btn dropdown-toggle form-control selectpicker'+f+'" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span> <span class="caret"></span></button><div class="dropdown-menu open">'+g+h+i+'<ul class="dropdown-menu inner selectpicker" role="menu"></ul></div></div>';return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul").append(b),a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menu.find("ul").append(a)},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var b=this,e=[],f=0,g=function(a,b,c){return"<li"+("undefined"!=typeof c?' class="'+c+'"':"")+("undefined"!=typeof b|null===b?' data-original-index="'+b+'"':"")+">"+a+"</li>"},h=function(a,e,f,g){var h=c(d(a));return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+("undefined"!=typeof g?'data-optgroup="'+g+'"':"")+' data-normalized-text="'+h+'">'+a+'<span class="'+b.options.iconBase+" "+b.options.tickIcon+' check-mark"></span></a>'};return this.$element.find("option").each(function(){var c=a(this),d=c.attr("class")||"",i=c.attr("style"),j=c.data("content")?c.data("content"):c.html(),k="undefined"!=typeof c.data("subtext")?'<small class="muted text-muted">'+c.data("subtext")+"</small>":"",l="undefined"!=typeof c.data("icon")?'<span class="'+b.options.iconBase+" "+c.data("icon")+'"></span> ':"",m=c.is(":disabled")||c.parent().is(":disabled"),n=c.index();if(""!==l&&m&&(l="<span>"+l+"</span>"),c.data("content")||(j=l+'<span class="text">'+j+k+"</span>"),!b.options.hideDisabled||!m)if(c.parent().is("optgroup")&&c.data("divider")!==!0){if(0===c.index()){f+=1;var o=c.parent().attr("label"),p="undefined"!=typeof c.parent().data("subtext")?'<small class="muted text-muted">'+c.parent().data("subtext")+"</small>":"",q=c.parent().data("icon")?'<span class="'+b.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";o=q+'<span class="text">'+o+p+"</span>",0!==n&&e.length>0&&e.push(g("",null,"divider")),e.push(g(o,null,"dropdown-header"))}e.push(g(h(j,"opt "+d,i,f),n))}else e.push(c.data("divider")===!0?g("",n,"divider"):c.data("hidden")===!0?g(h(j,d,i),n,"hidden is-hidden"):g(h(j,d,i),n))}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),a(e.join(""))},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c=this;b!==!1&&this.$element.find("option").each(function(b){c.setDisabled(b,a(this).is(":disabled")||a(this).parent().is(":disabled")),c.setSelected(b,a(this).is(":selected"))}),this.tabIndex();var d=this.options.hideDisabled?":not([disabled])":"",e=this.$element.find("option:selected"+d).map(function(){var b,d=a(this),e=d.data("icon")&&c.options.showIcon?'<i class="'+c.options.iconBase+" "+d.data("icon")+'"></i> ':"";return b=c.options.showSubtext&&d.attr("data-subtext")&&!c.multiple?' <small class="muted text-muted">'+d.data("subtext")+"</small>":"",d.data("content")&&c.options.showContent?d.data("content"):"undefined"!=typeof d.attr("title")?d.attr("title"):e+d.html()+b}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){d=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+d).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}this.options.title=this.$element.attr("title"),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$newElement.find(".filter-option").html(f)},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(){if(this.options.size!==!1){var a=this.$menu.parent().clone().find("> .dropdown-toggle").prop("autofocus",!1).end().appendTo("body"),b=a.addClass("open").find("> .dropdown-menu"),c=b.find("li").not(".divider").not(".dropdown-header").filter(":visible").children("a").outerHeight(),d=this.options.header?b.find(".popover-title").outerHeight():0,e=this.options.liveSearch?b.find(".bs-searchbox").outerHeight():0,f=this.options.actionsBox?b.find(".bs-actionsbox").outerHeight():0;a.remove(),this.$newElement.data("liHeight",c).data("headerHeight",d).data("searchHeight",e).data("actionsHeight",f)}},setSize:function(){this.findLis();var b,c,d,e=this,f=this.$menu,g=f.find(".inner"),h=this.$newElement.outerHeight(),i=this.$newElement.data("liHeight"),j=this.$newElement.data("headerHeight"),k=this.$newElement.data("searchHeight"),l=this.$newElement.data("actionsHeight"),m=this.$lis.filter(".divider").outerHeight(!0),n=parseInt(f.css("padding-top"))+parseInt(f.css("padding-bottom"))+parseInt(f.css("border-top-width"))+parseInt(f.css("border-bottom-width")),o=this.options.hideDisabled?", .disabled":"",p=a(window),q=n+parseInt(f.css("margin-top"))+parseInt(f.css("margin-bottom"))+2,r=function(){c=e.$newElement.offset().top-p.scrollTop(),d=p.height()-c-h};if(r(),this.options.header&&f.css("padding-top",0),"auto"==this.options.size){var s=function(){var a,h=e.$lis.not(".hidden");r(),b=d-q,e.options.dropupAuto&&e.$newElement.toggleClass("dropup",c>d&&b-q<f.height()),e.$newElement.hasClass("dropup")&&(b=c-q),a=h.length+h.filter(".dropdown-header").length>3?3*i+q-2:0,f.css({"max-height":b+"px",overflow:"hidden","min-height":a+j+k+l+"px"}),g.css({"max-height":b-j-k-l-n+"px","overflow-y":"auto","min-height":Math.max(a-n,0)+"px"})};s(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",s),a(window).off("resize.getSize").on("resize.getSize",s),a(window).off("scroll.getSize").on("scroll.getSize",s)}else if(this.options.size&&"auto"!=this.options.size&&f.find("li"+o).length>this.options.size){var t=this.$lis.not(".divider"+o).find(" > *").slice(0,this.options.size).last().parent().index(),u=this.$lis.slice(0,t+1).filter(".divider").length;b=i*this.options.size+u*m+n,e.options.dropupAuto&&this.$newElement.toggleClass("dropup",c>d&&b<f.height()),f.css({"max-height":b+j+k+l+"px",overflow:"hidden"}),g.css({"max-height":b-n+"px","overflow-y":"auto"})}},setWidth:function(){if("auto"==this.options.width){this.$menu.css("min-width","0");var a=this.$newElement.clone().appendTo("body"),b=a.find("> .dropdown-menu").css("width"),c=a.css("width","auto").find("> button").css("width");a.remove(),this.$newElement.css("width",Math.max(parseInt(b),parseInt(c))+"px")}else"fit"==this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){var b,c,d=this,e="<div />",f=a(e),g=function(a){f.addClass(a.attr("class").replace(/form-control/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,f.css({top:b.top+c,left:b.left,width:a[0].offsetWidth,position:"absolute"})};this.$newElement.on("click",function(){d.isDisabled()||(g(a(this)),f.appendTo(d.options.container),f.toggleClass("open",!a(this).hasClass("open")),f.append(d.$menu))}),a(window).resize(function(){g(d.$newElement)}),a(window).on("scroll",function(){g(d.$newElement)}),a("html").on("click",function(b){a(b.target).closest(d.$newElement).length<1&&f.removeClass("open")})},setSelected:function(a,b){this.findLis(),this.$lis.filter('[data-original-index="'+a+'"]').toggleClass("selected",b)},setDisabled:function(a,b){this.findLis(),b?this.$lis.filter('[data-original-index="'+a+'"]').addClass("disabled").find("a").attr("href","#").attr("tabindex",-1):this.$lis.filter('[data-original-index="'+a+'"]').removeClass("disabled").find("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element.is(":disabled")},checkDisabled:function(){var a=this;this.isDisabled()?this.$button.addClass("disabled").attr("tabindex",-1):(this.$button.hasClass("disabled")&&this.$button.removeClass("disabled"),-1==this.$button.attr("tabindex")&&(this.$element.data("tabindex")||this.$button.removeAttr("tabindex"))),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.is("[tabindex]")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex")))},clickListener:function(){var b=this;this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),this.$newElement.on("click",function(){b.setSize(),b.options.liveSearch||b.multiple||setTimeout(function(){b.$menu.find(".selected a").focus()},10)}),this.$menu.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected",!1),i.prop("selected",!0);var p=d.data("optgroup");b.$menu.find(".selected").has('a[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.change()}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(a){a.currentTarget==this&&(a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus())}),this.$menu.on("click","li.divider, li.dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.focus()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).is(".bs-select-all")?b.selectAll():b.deselectAll(),b.$element.change()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var b=this,e=a('<li class="no-results"></li>');this.$newElement.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){b.$menu.find(".active").removeClass("active"),b.$searchbox.val()&&(b.$searchbox.val(""),b.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),b.multiple||b.$menu.find(".selected").addClass("active"),setTimeout(function(){b.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){b.$searchbox.val()?(b.options.searchAccentInsensitive?b.$lis.not(".is-hidden").removeClass("hidden").find("a").not(":aicontains("+c(b.$searchbox.val())+")").parent().addClass("hidden"):b.$lis.not(".is-hidden").removeClass("hidden").find("a").not(":icontains("+b.$searchbox.val()+")").parent().addClass("hidden"),b.$menu.find("li").filter(":visible:not(.no-results)").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(b.options.noneResultsText+' "'+d(b.$searchbox.val())+'"').show(),b.$menu.find("li").last().after(e))):(b.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),b.$menu.find("li.active").removeClass("active"),b.$menu.find("li").filter(":visible:not(.divider)").eq(0).addClass("active").find("a").focus(),a(this).focus()})},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},selectAll:function(){this.findLis(),this.$lis.not(".divider").not(".disabled").not(".selected").filter(":visible").find("a").click()},deselectAll:function(){this.findLis(),this.$lis.not(".divider").not(".disabled").filter(".selected").filter(":visible").find("a").click()},keydown:function(b){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li a",n),l=o.$menu.parent().hasClass("open"),!l&&/([0-9]|[A-z])/.test(String.fromCharCode(b.keyCode))&&(o.options.container?o.$newElement.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(b.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(b.preventDefault(),o.$menu.parent().removeClass("open"),o.$button.focus()),d=a("[role=menu] li:not(.divider):not(.dropdown-header):visible",n),m.val()||/(38|40)/.test(b.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$newElement.find("li").filter(o.options.searchAccentInsensitive?":aicontains("+c(p[b.keyCode])+")":":icontains("+p[b.keyCode]+")"))),d.length){if(/(38|40)/.test(b.keyCode.toString(10)))e=d.index(d.filter(":focus")),g=d.parent(":not(.disabled):visible").first().index(),h=d.parent(":not(.disabled):visible").last().index(),f=d.eq(e).parent().nextAll(":not(.disabled):visible").eq(0).index(),i=d.eq(e).parent().prevAll(":not(.disabled):visible").eq(0).index(),j=d.eq(f).parent().prevAll(":not(.disabled):visible").eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).is(":not(.disabled)")&&a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.filter(":not(.disabled):visible").first().data("index"),h=d.filter(":not(.disabled):visible").last().data("index"),f=d.eq(e).nextAll(":not(.disabled):visible").eq(0).data("index"),i=d.eq(e).prevAll(":not(.disabled):visible").eq(0).data("index"),j=d.eq(f).prevAll(":not(.disabled):visible").eq(0).data("index")),k=m.data("prevIndex"),38==b.keyCode&&(o.options.liveSearch&&(e-=1),e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)),40==b.keyCode&&(o.options.liveSearch&&(e+=1),-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(b.preventDefault(),m.is(".dropdown-toggle")||(d.removeClass("active"),d.eq(e).addClass("active").find("a").focus(),m.focus())):d.eq(e).focus();else if(!m.is("input")){var q,r,s=[];d.each(function(){a(this).parent().is(":not(.disabled)")&&a.trim(a(this).text().toLowerCase()).substring(0,1)==p[b.keyCode]&&s.push(a(this).parent().index())}),q=a(document).data("keycount"),q++,a(document).data("keycount",q),r=a.trim(a(":focus").text().toLowerCase()).substring(0,1),r!=p[b.keyCode]?(q=1,a(document).data("keycount",q)):q>=s.length&&(a(document).data("keycount",0),q>s.length&&(q=1)),d.eq(s[q-1]).focus()}(/(13|32)/.test(b.keyCode.toString(10))||/(^9$)/.test(b.keyCode.toString(10))&&o.options.selectOnTab)&&l&&(/(32)/.test(b.keyCode.toString(10))||b.preventDefault(),o.options.liveSearch?/(32)/.test(b.keyCode.toString(10))||(o.$menu.find(".active a").click(),m.focus()):a(":focus").click(),a(document).data("keycount",0)),(/(^9$|27)/.test(b.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(b.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device").appendTo(this.$newElement),this.options.container&&this.$menu.hide()},refresh:function(){this.$lis=null,this.reloadLi(),this.render(),this.setWidth(),this.setStyle(),this.checkDisabled(),this.liHeight()},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()}};var g=a.fn.selectpicker;a.fn.selectpicker=e,a.fn.selectpicker.Constructor=f,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=g,this},a(document).data("keycount",0).on("keydown",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input",f.prototype.keydown).on("focusin.modal",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input",function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);e.call(b,b.data())})})}(jQuery);
+//# sourceMappingURL=bootstrap-select.js.map
\ No newline at end of file
diff --git a/ui/libs/bootstrap/LICENSE b/ui/libs/bootstrap/LICENSE
new file mode 100644
index 0000000..9a683e3
--- /dev/null
+++ b/ui/libs/bootstrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Twitter, Inc
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/ui/libs/bootstrap/Makefile.am b/ui/libs/bootstrap/Makefile.am
new file mode 100644
index 0000000..da746a1
--- /dev/null
+++ b/ui/libs/bootstrap/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+bootstrapjsdir = $(datadir)/wok/ui/libs/bootstrap
+
+dist_bootstrapjs_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/bootstrap/bootstrap.min.js b/ui/libs/bootstrap/bootstrap.min.js
new file mode 100644
index 0000000..133aeec
--- /dev/null
+++ b/ui/libs/bootstrap/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),
+d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/ui/libs/es5-shim/LICENSE b/ui/libs/es5-shim/LICENSE
new file mode 100644
index 0000000..3dbd7de
--- /dev/null
+++ b/ui/libs/es5-shim/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (C) 2009-2014 Kristopher Michael Kowal and contributors
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/ui/libs/es5-shim/Makefile.am b/ui/libs/es5-shim/Makefile.am
new file mode 100644
index 0000000..0d40e3d
--- /dev/null
+++ b/ui/libs/es5-shim/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+es5shimdir = $(datadir)/wok/ui/libs/es5-shim
+
+dist_es5shim_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/es5-shim/es5-shim.min.js b/ui/libs/es5-shim/es5-shim.min.js
new file mode 100644
index 0000000..f05f5c7
--- /dev/null
+++ b/ui/libs/es5-shim/es5-shim.min.js
@@ -0,0 +1,7 @@
+/*!
+ * https://github.com/es-shims/es5-shim
+ * @license es5-shim Copyright 2009-2015 by contributors, MIT License
+ * see https://github.com/es-shims/es5-shim/blob/v4.1.10/LICENSE
+ */
+(function(e,t){"use strict";if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){var e=Array;var t=e.prototype;var r=Object;var n=r.prototype;var a=Function.prototype;var i=String;var o=i.prototype;var l=Number;var u=l.prototype;var f=t.slice;var s=t.splice;var c=t.push;var v=t.unshift;var p=t.concat;var h=a.call;var g=Math.max;var y=Math.min;var d=n.toString;var w=typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol";var m;var b=Function.prototype.toString,T=function Me(e){try{b.call(e);return true}catch(t){return false}},x="[object Function]",O="[object GeneratorFunction]";m=function Fe(e){if(typeof e!=="function"){return false}if(w){return T(e)}var t=d.call(e);return t===x||t===O};var S;var j=RegExp.prototype.exec,E=function Re(e){try{j.call(e);return true}catch(t){return false}},I="[object RegExp]";S=function $e(e){if(typeof e!=="object"){return false}return w?E(e):d.call(e)===I};var D;var N=String.prototype.valueOf,k=function Ae(e){try{N.call(e);return true}catch(t){return false}},M="[object String]";D=function Ue(e){if(typeof e==="string"){return true}if(typeof e!=="object"){return false}return w?k(e):d.call(e)===M};var F=function(e){var t=r.defineProperty&&function(){try{var e={};r.defineProperty(e,"x",{enumerable:false,value:e});for(var t in e){return false}return e.x===e}catch(n){return false}}();var n;if(t){n=function(e,t,n,a){if(!a&&t in e){return}r.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:n})}}else{n=function(e,t,r,n){if(!n&&t in e){return}e[t]=r}}return function a(t,r,i){for(var o in r){if(e.call(r,o)){n(t,o,r[o],i)}}}}(n.hasOwnProperty);var R=function Ce(e){var t=typeof e;return e===null||t!=="object"&&t!=="function"};var $={ToInteger:function Pe(e){var t=+e;if(t!==t){t=0}else if(t!==0&&t!==1/0&&t!==-(1/0)){t=(t>0||-1)*Math.floor(Math.abs(t))}return t},ToPrimitive:function Ze(e){var t,r,n;if(R(e)){return e}r=e.valueOf;if(m(r)){t=r.call(e);if(R(t)){return t}}n=e.toString;if(m(n)){t=n.call(e);if(R(t)){return t}}throw new TypeError},ToObject:function(e){if(e==null){throw new TypeError("can't convert "+e+" to object")}return r(e)},ToUint32:function Je(e){return e>>>0}};var A=function ze(){};F(a,{bind:function Be(e){var t=this;if(!m(t)){throw new TypeError("Function.prototype.bind called on incompatible "+t)}var n=f.call(arguments,1);var a;var i=function(){if(this instanceof a){var i=t.apply(this,p.call(n,f.call(arguments)));if(r(i)===i){return i}return this}else{return t.apply(e,p.call(n,f.call(arguments)))}};var o=g(0,t.length-n.length);var l=[];for(var u=0;u<o;u++){c.call(l,"$"+u)}a=Function("binder","return function ("+l.join(",")+"){ return binder.apply(this, arguments); }")(i);if(t.prototype){A.prototype=t.prototype;a.prototype=new A;A.prototype=null}return a}});var U=h.bind(n.hasOwnProperty);var C=h.bind(n.toString);var P=h.bind(o.slice);var Z=h.bind(o.split);var J=e.isArray||function Ge(e){return C(e)==="[object Array]"};var z=[].unshift(0)!==1;F(t,{unshift:function(){v.apply(this,arguments);return this.length}},z);F(e,{isArray:J});var B=r("a");var G=B[0]!=="a"||!(0 in B);var H=function He(e){var t=true;var r=true;if(e){e.call("foo",function(e,r,n){if(typeof n!=="object"){t=false}});e.call([1],function(){"use strict";r=typeof this==="string"},"x")}return!!e&&t&&r};F(t,{forEach:function Le(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=-1;var a=r.length>>>0;var i;if(arguments.length>1){i=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.forEach callback must be a function")}while(++n<a){if(n in r){if(typeof i!=="undefined"){e.call(i,r[n],n,t)}else{e(r[n],n,t)}}}}},!H(t.forEach));F(t,{map:function Xe(t){var r=$.ToObject(this);var n=G&&D(this)?Z(this,""):r;var a=n.length>>>0;var i=e(a);var o;if(arguments.length>1){o=arguments[1]}if(!m(t)){throw new TypeError("Array.prototype.map callback must be a function")}for(var l=0;l<a;l++){if(l in n){if(typeof o!=="undefined"){i[l]=t.call(o,n[l],l,r)}else{i[l]=t(n[l],l,r)}}}return i}},!H(t.map));F(t,{filter:function Ye(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;var a=[];var i;var o;if(arguments.length>1){o=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.filter callback must be a function")}for(var l=0;l<n;l++){if(l in r){i=r[l];if(typeof o==="undefined"?e(i,l,t):e.call(o,i,l,t)){c.call(a,i)}}}return a}},!H(t.filter));F(t,{every:function qe(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;var a;if(arguments.length>1){a=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.every callback must be a function")}for(var i=0;i<n;i++){if(i in r&&!(typeof a==="undefined"?e(r[i],i,t):e.call(a,r[i],i,t))){return false}}return true}},!H(t.every));F(t,{some:function Ke(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;var a;if(arguments.length>1){a=arguments[1]}if(!m(e)){throw new TypeError("Array.prototype.some callback must be a function")}for(var i=0;i<n;i++){if(i in r&&(typeof a==="undefined"?e(r[i],i,t):e.call(a,r[i],i,t))){return true}}return false}},!H(t.some));var L=false;if(t.reduce){L=typeof t.reduce.call("es5",function(e,t,r,n){return n})==="object"}F(t,{reduce:function Qe(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;if(!m(e)){throw new TypeError("Array.prototype.reduce callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduce of empty array with no initial value")}var a=0;var i;if(arguments.length>=2){i=arguments[1]}else{do{if(a in r){i=r[a++];break}if(++a>=n){throw new TypeError("reduce of empty array with no initial value")}}while(true)}for(;a<n;a++){if(a in r){i=e(i,r[a],a,t)}}return i}},!L);var X=false;if(t.reduceRight){X=typeof t.reduceRight.call("es5",function(e,t,r,n){return n})==="object"}F(t,{reduceRight:function Ve(e){var t=$.ToObject(this);var r=G&&D(this)?Z(this,""):t;var n=r.length>>>0;if(!m(e)){throw new TypeError("Array.prototype.reduceRight callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduceRight of empty array with no initial value")}var a;var i=n-1;if(arguments.length>=2){a=arguments[1]}else{do{if(i in r){a=r[i--];break}if(--i<0){throw new TypeError("reduceRight of empty array with no initial value")}}while(true)}if(i<0){return a}do{if(i in r){a=e(a,r[i],i,t)}}while(i--);return a}},!X);var Y=t.indexOf&&[0,1].indexOf(1,2)!==-1;F(t,{indexOf:function We(e){var t=G&&D(this)?Z(this,""):$.ToObject(this);var r=t.length>>>0;if(r===0){return-1}var n=0;if(arguments.length>1){n=$.ToInteger(arguments[1])}n=n>=0?n:g(0,r+n);for(;n<r;n++){if(n in t&&t[n]===e){return n}}return-1}},Y);var q=t.lastIndexOf&&[0,1].lastIndexOf(0,-3)!==-1;F(t,{lastIndexOf:function _e(e){var t=G&&D(this)?Z(this,""):$.ToObject(this);var r=t.length>>>0;if(r===0){return-1}var n=r-1;if(arguments.length>1){n=y(n,$.ToInteger(arguments[1]))}n=n>=0?n:r-Math.abs(n);for(;n>=0;n--){if(n in t&&e===t[n]){return n}}return-1}},q);var K=function(){var e=[1,2];var t=e.splice();return e.length===2&&J(t)&&t.length===0}();F(t,{splice:function et(e,t){if(arguments.length===0){return[]}else{return s.apply(this,arguments)}}},!K);var Q=function(){var e={};t.splice.call(e,0,0,1);return e.length===1}();F(t,{splice:function tt(e,t){if(arguments.length===0){return[]}var r=arguments;this.length=g($.ToInteger(this.length),0);if(arguments.length>0&&typeof t!=="number"){r=f.call(arguments);if(r.length<2){c.call(r,this.length-e)}else{r[1]=$.ToInteger(t)}}return s.apply(this,r)}},!Q);var V=function(){var t=new e(1e5);t[8]="x";t.splice(1,1);return t.indexOf("x")===7}();var W=function(){var e=256;var t=[];t[e]="a";t.splice(e+1,0,"b");return t[e]==="a"}();F(t,{splice:function rt(e,t){var r=$.ToObject(this);var n=[];var a=$.ToUint32(r.length);var o=$.ToInteger(e);var l=o<0?g(a+o,0):y(o,a);var u=y(g($.ToInteger(t),0),a-l);var s=0;var c;while(s<u){c=i(l+s);if(U(r,c)){n[s]=r[c]}s+=1}var v=f.call(arguments,2);var p=v.length;var h;if(p<u){s=l;while(s<a-u){c=i(s+u);h=i(s+p);if(U(r,c)){r[h]=r[c]}else{delete r[h]}s+=1}s=a;while(s>a-u+p){delete r[s-1];s-=1}}else if(p>u){s=a-u;while(s>l){c=i(s+u-1);h=i(s+p-1);if(U(r,c)){r[h]=r[c]}else{delete r[h]}s-=1}}s=l;for(var d=0;d<v.length;++d){r[s]=v[d];s+=1}r.length=a-u+p;return n}},!V||!W);var _=!{toString:null}.propertyIsEnumerable("toString");var ee=function(){}.propertyIsEnumerable("prototype");var te=!U("x","0");var re=function(e){var t=e.constructor;return t&&t.prototype===e};var ne={$window:true,$console:true,$parent:true,$self:true,$frames:true,$frameElement:true,$webkitIndexedDB:true,$webkitStorageInfo:true};var ae=function(){if(typeof window==="undefined"){return false}for(var e in window){if(!ne["$"+e]&&U(window,e)&&window[e]!==null&&typeof window[e]==="object"){try{re(window[e])}catch(t){return true}}}return false}();var ie=function(e){if(typeof window==="undefined"||!ae){return re(e)}try{return re(e)}catch(t){return false}};var oe=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var le=oe.length;var ue=function nt(e){var t=C(e);var r=t==="[object Arguments]";if(!r){r=!J(e)&&e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&m(e.callee)}return r};F(r,{keys:function at(e){var t=m(e);var r=ue(e);var n=e!==null&&typeof e==="object";var a=n&&D(e);if(!n&&!t&&!r){throw new TypeError("Object.keys called on a non-object")}var o=[];var l=ee&&t;if(a&&te||r){for(var u=0;u<e.length;++u){c.call(o,i(u))}}if(!r){for(var f in e){if(!(l&&f==="prototype")&&U(e,f)){c.call(o,i(f))}}}if(_){var s=ie(e);for(var v=0;v<le;v++){var p=oe[v];if(!(s&&p==="constructor")&&U(e,p)){c.call(o,p)}}}return o}});var fe=r.keys&&function(){return r.keys(arguments).length===2}(1,2);var se=r.keys;F(r,{keys:function it(e){if(ue(e)){return se(f.call(e))}else{return se(e)}}},!fe);var ce=-621987552e5;var ve="-000001";var pe=Date.prototype.toISOString&&new Date(ce).toISOString().indexOf(ve)===-1;var he=Date.prototype.toISOString&&new Date(-1).toISOString()!=="1969-12-31T23:59:59.999Z";F(Date.prototype,{toISOString:function ot(){var e,t,r,n,a;if(!isFinite(this)){throw new RangeError("Date.prototype.toISOString called on non-finite value.")}n=this.getUTCFullYear();a=this.getUTCMonth();n+=Math.floor(a/12);a=(a%12+12)%12;e=[a+1,this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds()];n=(n<0?"-":n>9999?"+":"")+P("00000"+Math.abs(n),0<=n&&n<=9999?-4:-6);t=e.length;while(t--){r=e[t];if(r<10){e[t]="0"+r}}return n+"-"+f.call(e,0,2).join("-")+"T"+f.call(e,2).join(":")+"."+P("000"+this.getUTCMilliseconds(),-3)+"Z"}},pe||he);var ge=function(){try{return Date.prototype.toJSON&&new Date(NaN).toJSON()===null&&new Date(ce).toJSON().indexOf(ve)!==-1&&Date.prototype.toJSON.call({toISOString:function(){return true}})}catch(e){return false}}();if(!ge){Date.prototype.toJSON=function lt(e){var t=r(this);var n=$.ToPrimitive(t);if(typeof n==="number"&&!isFinite(n)){return null}var a=t.toISOString;if(!m(a)){throw new TypeError("toISOString property is not callable")}return a.call(t)}}var ye=Date.parse("+033658-09-27T01:46:40.000Z")===1e15;var de=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z"));var we=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(!Date.parse||we||de||!ye){Date=function(e){var t=function s(r,n,a,o,l,u,f){var s=arguments.length;var c;if(this instanceof e){c=s===1&&i(r)===r?new e(t.parse(r)):s>=7?new e(r,n,a,o,l,u,f):s>=6?new e(r,n,a,o,l,u):s>=5?new e(r,n,a,o,l):s>=4?new e(r,n,a,o):s>=3?new e(r,n,a):s>=2?new e(r,n):s>=1?new e(r):new e}else{c=e.apply(this,arguments)}F(c,{constructor:t},true);return c};var r=new RegExp("^"+"(\\d{4}|[+-]\\d{6})"+"(?:-(\\d{2})"+"(?:-(\\d{2})"+"(?:"+"T(\\d{2})"+":(\\d{2})"+"(?:"+":(\\d{2})"+"(?:(\\.\\d{1,}))?"+")?"+"("+"Z|"+"(?:"+"([-+])"+"(\\d{2})"+":(\\d{2})"+")"+")?)?)?)?"+"$");var n=[0,31,59,90,120,151,181,212,243,273,304,334,365];var a=function c(e,t){var r=t>1?1:0;return n[t]+Math.floor((e-1969+r)/4)-Math.floor((e-1901+r)/100)+Math.floor((e-1601+r)/400)+365*(e-1970)};var o=function v(t){return l(new e(1970,0,1,0,0,0,t))};for(var u in e){if(U(e,u)){t[u]=e[u]}}F(t,{now:e.now,UTC:e.UTC},true);t.prototype=e.prototype;F(t.prototype,{constructor:t},true);var f=function p(t){var n=r.exec(t);if(n){var i=l(n[1]),u=l(n[2]||1)-1,f=l(n[3]||1)-1,s=l(n[4]||0),c=l(n[5]||0),v=l(n[6]||0),p=Math.floor(l(n[7]||0)*1e3),h=Boolean(n[4]&&!n[8]),g=n[9]==="-"?1:-1,y=l(n[10]||0),d=l(n[11]||0),w;if(s<(c>0||v>0||p>0?24:25)&&c<60&&v<60&&p<1e3&&u>-1&&u<12&&y<24&&d<60&&f>-1&&f<a(i,u+1)-a(i,u)){w=((a(i,u)+f)*24+s+y*g)*60;w=((w+c+d*g)*60+v)*1e3+p;if(h){w=o(w)}if(-864e13<=w&&w<=864e13){return w}}return NaN}return e.parse.apply(this,arguments)};F(t,{parse:f});return t}(Date)}if(!Date.now){Date.now=function ut(){return(new Date).getTime()}}var me=u.toFixed&&(8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)!=="1"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128");var be={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function ft(e,t){var r=-1;var n=t;while(++r<be.size){n+=e*be.data[r];be.data[r]=n%be.base;n=Math.floor(n/be.base)}},divide:function st(e){var t=be.size,r=0;while(--t>=0){r+=be.data[t];be.data[t]=Math.floor(r/e);r=r%e*be.base}},numToString:function ct(){var e=be.size;var t="";while(--e>=0){if(t!==""||e===0||be.data[e]!==0){var r=i(be.data[e]);if(t===""){t=r}else{t+=P("0000000",0,7-r.length)+r}}}return t},pow:function vt(e,t,r){return t===0?r:t%2===1?vt(e,t-1,r*e):vt(e*e,t/2,r)},log:function pt(e){var t=0;var r=e;while(r>=4096){t+=12;r/=4096}while(r>=2){t+=1;r/=2}return t}};F(u,{toFixed:function ht(e){var t,r,n,a,o,u,f,s;t=l(e);t=t!==t?0:Math.floor(t);if(t<0||t>20){throw new RangeError("Number.toFixed called with invalid number of decimals")}r=l(this);if(r!==r){return"NaN"}if(r<=-1e21||r>=1e21){return i(r)}n="";if(r<0){n="-";r=-r}a="0";if(r>1e-21){o=be.log(r*be.pow(2,69,1))-69;u=o<0?r*be.pow(2,-o,1):r/be.pow(2,o,1);u*=4503599627370496;o=52-o;if(o>0){be.multiply(0,u);f=t;while(f>=7){be.multiply(1e7,0);f-=7}be.multiply(be.pow(10,f,1),0);f=o-1;while(f>=23){be.divide(1<<23);f-=23}be.divide(1<<f);be.multiply(1,1);be.divide(2);a=be.numToString()}else{be.multiply(0,u);be.multiply(1<<-o,0);a=be.numToString()+P("0.00000000000000000000",2,2+t)}}if(t>0){s=a.length;if(s<=t){a=n+P("0.0000000000000000000",0,t-s+2)+a}else{a=n+P(a,0,s-t)+"."+P(a,s-t)}}else{a=n+a}return a}},me);if("ab".split(/(?:ab)*/).length!==2||".".split(/(.?)(.?)/).length!==4||"tesst".split(/(s)*/)[1]==="t"||"test".split(/(?:)/,-1).length!==4||"".split(/.?/).length||".".split(/()()/).length>1){(function(){var e=typeof/()??/.exec("")[1]==="undefined";o.split=function(t,r){var n=this;if(typeof t==="undefined"&&r===0){return[]}if(!S(t)){return Z(this,t,r)}var a=[];var i=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),o=0,l,u,s,v;var p=new RegExp(t.source,i+"g");n+="";if(!e){l=new RegExp("^"+p.source+"$(?!\\s)",i)}var h=typeof r==="undefined"?-1>>>0:$.ToUint32(r);u=p.exec(n);while(u){s=u.index+u[0].length;if(s>o){c.call(a,P(n,o,u.index));if(!e&&u.length>1){u[0].replace(l,function(){for(var e=1;e<arguments.length-2;e++){if(typeof arguments[e]==="undefined"){u[e]=void 0}}})}if(u.length>1&&u.index<n.length){c.apply(a,f.call(u,1))}v=u[0].length;o=s;if(a.length>=h){break}}if(p.lastIndex===u.index){p.lastIndex++}u=p.exec(n)}if(o===n.length){if(v||!p.test("")){c.call(a,"")}}else{c.call(a,P(n,o))}return a.length>h?P(a,0,h):a}})()}else if("0".split(void 0,0).length){o.split=function gt(e,t){if(typeof e==="undefined"&&t===0){return[]}return Z(this,e,t)}}var Te=o.replace;var xe=function(){var e=[];"x".replace(/x(.)?/g,function(t,r){c.call(e,r)});return e.length===1&&typeof e[0]==="undefined"}();if(!xe){o.replace=function yt(e,t){var r=m(t);var n=S(e)&&/\)[*?]/.test(e.source);if(!r||!n){return Te.call(this,e,t)}else{var a=function(r){var n=arguments.length;var a=e.lastIndex;e.lastIndex=0;var i=e.exec(r)||[];e.lastIndex=a;c.call(i,arguments[n-2],arguments[n-1]);return t.apply(this,i)};return Te.call(this,e,a)}}}var Oe=o.substr;var Se="".substr&&"0b".substr(-1)!=="b";F(o,{substr:function dt(e,t){var r=e;if(e<0){r=g(this.length+e,0)}return Oe.call(this,r,t)}},Se);var je=" \n\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003"+"\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028"+"\u2029\ufeff";var Ee="\u200b";var Ie="["+je+"]";var De=new RegExp("^"+Ie+Ie+"*");var Ne=new RegExp(Ie+Ie+"*$");var ke=o.trim&&(je.trim()||!Ee.trim());F(o,{trim:function wt(){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}return i(this).replace(De,"").replace(Ne,"")}},ke);if(parseInt(je+"08")!==8||parseInt(je+"0x16")!==22){parseInt=function(e){var t=/^0[xX]/;return function r(n,a){var o=i(n).trim();var u=l(a)||(t.test(o)?16:10);return e(o,u)}}(parseInt)}});
+//# sourceMappingURL=es5-shim.map
diff --git a/ui/libs/jquery-1.10.0.min.js b/ui/libs/jquery-1.10.0.min.js
deleted file mode 100644
index 01c6881..0000000
--- a/ui/libs/jquery-1.10.0.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! jQuery v1.10.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.0.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.0",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),r.attributes=ct(function(e){return e.innerHTML="<a href='#'></a>",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="<input>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;
-if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})
-}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(n.unit=o,n.start=+a||+r||0,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);a.finish=function(){t.stop(!0)},(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/ui/libs/jquery-i18n/LICENSE b/ui/libs/jquery-i18n/LICENSE
new file mode 100644
index 0000000..978ee2a
--- /dev/null
+++ b/ui/libs/jquery-i18n/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010 Dave Perrett, http://recursive-design.com/
+
+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
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/ui/libs/jquery-i18n/Makefile.am b/ui/libs/jquery-i18n/Makefile.am
new file mode 100644
index 0000000..56872b0
--- /dev/null
+++ b/ui/libs/jquery-i18n/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+jqueryi18ndir = $(datadir)/wok/ui/libs/jquery-i18n
+
+dist_jqueryi18n_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/jquery-i18n/jquery.i18n.min.js b/ui/libs/jquery-i18n/jquery.i18n.min.js
new file mode 100644
index 0000000..fead704
--- /dev/null
+++ b/ui/libs/jquery-i18n/jquery.i18n.min.js
@@ -0,0 +1 @@
+!function(a){var b=Array.prototype.slice,c={dict:null,load:function(b){null!==this.dict?a.extend(this.dict,b):this.dict=b},_:function(a){return dict=this.dict,dict&&dict.hasOwnProperty(a)&&(a=dict[a]),args=b.call(arguments),args[0]=a,this.printf.apply(this,args)},printf:function(c,d){return arguments.length<2?c:(d=a.isArray(d)?d:b.call(arguments,1),c.replace(/([^%]|^)%(?:(\d+)\$)?s/g,function(a,b,c){return c?b+d[parseInt(c)-1]:b+d.shift()}).replace(/%%s/g,"%s"))}};a.fn._t=function(){return a(this).html(c._.apply(c,arguments))},a.i18n=c}(jQuery);
\ No newline at end of file
diff --git a/ui/libs/jquery-ui-i18n.min.js b/ui/libs/jquery-ui-i18n.min.js
deleted file mode 100644
index 3ba8a92..0000000
--- a/ui/libs/jquery-ui-i18n.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.11.2 - 2014-10-16
-* http://jqueryui.com
-* Includes: datepicker-af.js, datepicker-ar-DZ.js, datepicker-ar.js, datepicker-az.js, datepicker-be.js, datepicker-bg.js, datepicker-bs.js, datepicker-ca.js, datepicker-cs.js, datepicker-cy-GB.js, datepicker-da.js, datepicker-de.js, datepicker-el.js, datepicker-en-AU.js, datepicker-en-GB.js, datepicker-en-NZ.js, datepicker-eo.js, datepicker-es.js, datepicker-et.js, datepicker-eu.js, datepicker-fa.js, datepicker-fi.js, datepicker-fo.js, datepicker-fr-CA.js, datepicker-fr-CH.js, datepicker-fr.js, datepicker-gl.js, datepicker-he.js, datepicker-hi.js, datepicker-hr.js, datepicker-hu.js, datepicker-hy.js, datepicker-id.js, datepicker-is.js, datepicker-it-CH.js, datepicker-it.js, datepicker-ja.js, datepicker-ka.js, datepicker-kk.js, datepicker-km.js, datepicker-ko.js, datepicker-ky.js, datepicker-lb.js, datepicker-lt.js, datepicker-lv.js, datepicker-mk.js, datepicker-ml.js, datepicker-ms.js, datepicker-nb.js, datepicker-nl-BE.js, datepicker-nl.js, datepicker-nn.js, datepicker-no.js, datepicker-pl.js, datepicker-pt-BR.js, datepicker-pt.js, datepicker-rm.js, datepicker-ro.js, datepicker-ru.js, datepicker-sk.js, datepicker-sl.js, datepicker-sq.js, datepicker-sr-SR.js, datepicker-sr.js, datepicker-sv.js, datepicker-ta.js, datepicker-th.js, datepicker-tj.js, datepicker-tr.js, datepicker-uk.js, datepicker-vi.js, datepicker-zh-CN.js, datepicker-zh-HK.js, datepicker-zh-TW.js
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){var t=e.datepicker;t.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.af),t.regional.af,t.regional["ar-DZ"]={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["ar-DZ"]),t.regional["ar-DZ"],t.regional.ar={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ar),t.regional.ar,t.regional.az={closeText:"Bağla",prevText:"<Geri",nextText:"İrəli>",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.az),t.regional.az,t.regional.be={closeText:"Зачыніць",prevText:"←Папяр.",nextText:"Наст.→",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.be),t.regional.be,t.regional.bg={closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bg),t.regional.bg,t.regional.bs={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bs),t.regional.bs,t.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ca),t.regional.ca,t.regional.cs={closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.cs),t.regional.cs,t.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["cy-GB"]),t.regional["cy-GB"],t.regional.da={closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.da),t.regional.da,t.regional.de={closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.de),t.regional.de,t.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.el),t.regional.el,t.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-AU"]),t.regional["en-AU"],t.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-GB"]),t.regional["en-GB"],t.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-NZ"]),t.regional["en-NZ"],t.regional.eo={closeText:"Fermi",prevText:"<Anta",nextText:"Sekv>",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eo),t.regional.eo,t.regional.es={closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.es),t.regional.es,t.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.et),t.regional.et,t.regional.eu={closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eu),t.regional.eu,t.regional.fa={closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fa),t.regional.fa,t.regional.fi={closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fi),t.regional.fi,t.regional.fo={closeText:"Lat aftur",prevText:"<Fyrra",nextText:"Næsta>",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fo),t.regional.fo,t.regional["fr-CA"]={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CA"]),t.regional["fr-CA"],t.regional["fr-CH"]={closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CH"]),t.regional["fr-CH"],t.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fr),t.regional.fr,t.regional.gl={closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.gl),t.regional.gl,t.regional.he={closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.he),t.regional.he,t.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hi),t.regional.hi,t.regional.hr={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hr),t.regional.hr,t.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.hu),t.regional.hu,t.regional.hy={closeText:"Փակել",prevText:"<Նախ.",nextText:"Հաջ.>",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hy),t.regional.hy,t.regional.id={closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.id),t.regional.id,t.regional.is={closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.is),t.regional.is,t.regional["it-CH"]={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["it-CH"]),t.regional["it-CH"],t.regional.it={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.it),t.regional.it,t.regional.ja={closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional.ja),t.regional.ja,t.regional.ka={closeText:"დახურვა",prevText:"< წინა",nextText:"შემდეგი >",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ka),t.regional.ka,t.regional.kk={closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.kk),t.regional.kk,t.regional.km={closeText:"ធ្វើរួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃនេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.km),t.regional.km,t.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},t.setDefaults(t.regional.ko),t.regional.ko,t.regional.ky={closeText:"Жабуу",prevText:"<Мур",nextText:"Кий>",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ky),t.regional.ky,t.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lb),t.regional.lb,t.regional.lt={closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.lt),t.regional.lt,t.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lv),t.regional.lv,t.regional.mk={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.mk),t.regional.mk,t.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്ച്ച്","ഏപ്രില്","മേയ്","ജൂണ്","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്","ഒക്ടോബര്","നവംബര്","ഡിസംബര്"],monthNamesShort:["ജനു","ഫെബ്","മാര്","ഏപ്രി","മേയ്","ജൂണ്","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്","തിങ്കള്","ചൊവ്വ","ബുധന്","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ml),t.regional.ml,t.regional.ms={closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ms),t.regional.ms,t.regional.nb={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nb),t.regional.nb,t.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["nl-BE"]),t.regional["nl-BE"],t.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nl),t.regional.nl,t.regional.nn={closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nn),t.regional.nn,t.regional.no={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.no),t.regional.no,t.regional.pl={closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pl),t.regional.pl,t.regional["pt-BR"]={closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["pt-BR"]),t.regional["pt-BR"],t.regional.pt={closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pt),t.regional.pt,t.regional.rm={closeText:"Serrar",prevText:"<Suandant",nextText:"Precedent>",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.rm),t.regional.rm,t.regional.ro={closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ro),t.regional.ro,t.regional.ru={closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ru),t.regional.ru,t.regional.sk={closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sk),t.regional.sk,t.regional.sl={closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sl),t.regional.sl,t.regional.sq={closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sq),t.regional.sq,t.regional["sr-SR"]={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["sr-SR"]),t.regional["sr-SR"],t.regional.sr={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sr),t.regional.sr,t.regional.sv={closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sv),t.regional.sv,t.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ta),t.regional.ta,t.regional.th={closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.th),t.regional.th,t.regional.tj={closeText:"Идома",prevText:"<Қафо",nextText:"Пеш>",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tj),t.regional.tj,t.regional.tr={closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tr),t.regional.tr,t.regional.uk={closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.uk),t.regional.uk,t.regional.vi={closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.vi),t.regional.vi,t.regional["zh-CN"]={closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-CN"]),t.regional["zh-CN"],t.regional["zh-HK"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-HK"]),t.regional["zh-HK"],t.regional["zh-TW"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-TW"]),t.regional["zh-TW"]
-});
diff --git a/ui/libs/jquery-ui.min.js b/ui/libs/jquery-ui.min.js
deleted file mode 100644
index 17eab79..0000000
--- a/ui/libs/jquery-ui.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*! jQuery UI - v1.11.2 - 2014-10-16
-* http://jqueryui.com
-* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return n=!a&&o.length?e.widget.extend.apply(null,[n].concat(o)):n,a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))}),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=h&&l.down||l,d=function(){o._toggleComplete(i)};return"number"==typeof u&&(a=u),"string"==typeof u&&(n=u),n=n||u.easing||l.easing,a=a||u.duration||l.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?r+=i.now:"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,d):e.animate(this.showProps,a,n,d)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)
-}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.2"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0
-},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,z,H,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),z=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=z,H=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;z>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],j=H.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>H||$&&H>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(H.getTime()===G.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(j&&!v?" ":W?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.2",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
-},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=u-t.height,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.2",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
-if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.2",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
-f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.2",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.2",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this,i=this.element.attr("tabindex");this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:i||this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.attr("value"),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=(this.options.max-this._valueMin())%this.options.step;this.max=this.options.max-e},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
-return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td> </td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]
-}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),s._trigger("load",i,r)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.2",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&n._delay(function(){t&&(t.type=a),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){u.of=e,o.is(":hidden")||o.position(u)}var a,o,r,h,l,u=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(l=s.clone(),l.removeAttr("id").find("[id]").removeAttr("id")):l=s,e("<div>").html(l).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(u.of),clearInterval(h))},e.fx.interval)),this._trigger("open",t,{tooltip:o}),r={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}},i[0]!==this.element[0]&&(r.remove=function(){this._removeTooltip(o)}),t&&"mouseover"!==t.type||(r.mouseleave="close"),t&&"focusin"!==t.type||(r.focusout="close"),this._on(!0,i,r)}},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);a&&(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)))},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
\ No newline at end of file
diff --git a/ui/libs/jquery-ui/LICENSE b/ui/libs/jquery-ui/LICENSE
new file mode 100644
index 0000000..c36fa56
--- /dev/null
+++ b/ui/libs/jquery-ui/LICENSE
@@ -0,0 +1,44 @@
+Copyright 2007, 2014 jQuery Foundation and other contributors,
+https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+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 AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
\ No newline at end of file
diff --git a/ui/libs/jquery-ui/Makefile.am b/ui/libs/jquery-ui/Makefile.am
new file mode 100644
index 0000000..9d9f646
--- /dev/null
+++ b/ui/libs/jquery-ui/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+SUBDIRS = themes
+
+jqueryuidir = $(datadir)/wok/ui/libs/jquery-ui
+
+dist_jqueryui_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/jquery-ui/jquery-ui-i18n.min.js b/ui/libs/jquery-ui/jquery-ui-i18n.min.js
new file mode 100644
index 0000000..3ba8a92
--- /dev/null
+++ b/ui/libs/jquery-ui/jquery-ui-i18n.min.js
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.11.2 - 2014-10-16
+* http://jqueryui.com
+* Includes: datepicker-af.js, datepicker-ar-DZ.js, datepicker-ar.js, datepicker-az.js, datepicker-be.js, datepicker-bg.js, datepicker-bs.js, datepicker-ca.js, datepicker-cs.js, datepicker-cy-GB.js, datepicker-da.js, datepicker-de.js, datepicker-el.js, datepicker-en-AU.js, datepicker-en-GB.js, datepicker-en-NZ.js, datepicker-eo.js, datepicker-es.js, datepicker-et.js, datepicker-eu.js, datepicker-fa.js, datepicker-fi.js, datepicker-fo.js, datepicker-fr-CA.js, datepicker-fr-CH.js, datepicker-fr.js, datepicker-gl.js, datepicker-he.js, datepicker-hi.js, datepicker-hr.js, datepicker-hu.js, datepicker-hy.js, datepicker-id.js, datepicker-is.js, datepicker-it-CH.js, datepicker-it.js, datepicker-ja.js, datepicker-ka.js, datepicker-kk.js, datepicker-km.js, datepicker-ko.js, datepicker-ky.js, datepicker-lb.js, datepicker-lt.js, datepicker-lv.js, datepicker-mk.js, datepicker-ml.js, datepicker-ms.js, datepicker-nb.js, datepicker-nl-BE.js, datepicker-nl.js, datepicker-nn.js, datepicker-no.js, datepicker-pl.js, datepicker-pt-BR.js, datepicker-pt.js, datepicker-rm.js, datepicker-ro.js, datepicker-ru.js, datepicker-sk.js, datepicker-sl.js, datepicker-sq.js, datepicker-sr-SR.js, datepicker-sr.js, datepicker-sv.js, datepicker-ta.js, datepicker-th.js, datepicker-tj.js, datepicker-tr.js, datepicker-uk.js, datepicker-vi.js, datepicker-zh-CN.js, datepicker-zh-HK.js, datepicker-zh-TW.js
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){var t=e.datepicker;t.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.af),t.regional.af,t.regional["ar-DZ"]={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["ar-DZ"]),t.regional["ar-DZ"],t.regional.ar={closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ar),t.regional.ar,t.regional.az={closeText:"Bağla",prevText:"<Geri",nextText:"İrəli>",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.az),t.regional.az,t.regional.be={closeText:"Зачыніць",prevText:"←Папяр.",nextText:"Наст.→",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.be),t.regional.be,t.regional.bg={closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bg),t.regional.bg,t.regional.bs={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.bs),t.regional.bs,t.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ca),t.regional.ca,t.regional.cs={closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.cs),t.regional.cs,t.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["cy-GB"]),t.regional["cy-GB"],t.regional.da={closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.da),t.regional.da,t.regional.de={closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.de),t.regional.de,t.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.el),t.regional.el,t.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-AU"]),t.regional["en-AU"],t.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-GB"]),t.regional["en-GB"],t.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["en-NZ"]),t.regional["en-NZ"],t.regional.eo={closeText:"Fermi",prevText:"<Anta",nextText:"Sekv>",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eo),t.regional.eo,t.regional.es={closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.es),t.regional.es,t.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.et),t.regional.et,t.regional.eu={closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.eu),t.regional.eu,t.regional.fa={closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fa),t.regional.fa,t.regional.fi={closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fi),t.regional.fi,t.regional.fo={closeText:"Lat aftur",prevText:"<Fyrra",nextText:"Næsta>",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fo),t.regional.fo,t.regional["fr-CA"]={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CA"]),t.regional["fr-CA"],t.regional["fr-CH"]={closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["fr-CH"]),t.regional["fr-CH"],t.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.fr),t.regional.fr,t.regional.gl={closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.gl),t.regional.gl,t.regional.he={closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.he),t.regional.he,t.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hi),t.regional.hi,t.regional.hr={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hr),t.regional.hr,t.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.hu),t.regional.hu,t.regional.hy={closeText:"Փակել",prevText:"<Նախ.",nextText:"Հաջ.>",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.hy),t.regional.hy,t.regional.id={closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.id),t.regional.id,t.regional.is={closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.is),t.regional.is,t.regional["it-CH"]={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["it-CH"]),t.regional["it-CH"],t.regional.it={closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.it),t.regional.it,t.regional.ja={closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional.ja),t.regional.ja,t.regional.ka={closeText:"დახურვა",prevText:"< წინა",nextText:"შემდეგი >",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ka),t.regional.ka,t.regional.kk={closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.kk),t.regional.kk,t.regional.km={closeText:"ធ្វើរួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃនេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.km),t.regional.km,t.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},t.setDefaults(t.regional.ko),t.regional.ko,t.regional.ky={closeText:"Жабуу",prevText:"<Мур",nextText:"Кий>",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ky),t.regional.ky,t.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lb),t.regional.lb,t.regional.lt={closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},t.setDefaults(t.regional.lt),t.regional.lt,t.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.lv),t.regional.lv,t.regional.mk={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.mk),t.regional.mk,t.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്ച്ച്","ഏപ്രില്","മേയ്","ജൂണ്","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്","ഒക്ടോബര്","നവംബര്","ഡിസംബര്"],monthNamesShort:["ജനു","ഫെബ്","മാര്","ഏപ്രി","മേയ്","ജൂണ്","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്","തിങ്കള്","ചൊവ്വ","ബുധന്","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ml),t.regional.ml,t.regional.ms={closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ms),t.regional.ms,t.regional.nb={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nb),t.regional.nb,t.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["nl-BE"]),t.regional["nl-BE"],t.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nl),t.regional.nl,t.regional.nn={closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.nn),t.regional.nn,t.regional.no={closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.no),t.regional.no,t.regional.pl={closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pl),t.regional.pl,t.regional["pt-BR"]={closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["pt-BR"]),t.regional["pt-BR"],t.regional.pt={closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.pt),t.regional.pt,t.regional.rm={closeText:"Serrar",prevText:"<Suandant",nextText:"Precedent>",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.rm),t.regional.rm,t.regional.ro={closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ro),t.regional.ro,t.regional.ru={closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ru),t.regional.ru,t.regional.sk={closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sk),t.regional.sk,t.regional.sl={closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sl),t.regional.sl,t.regional.sq={closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sq),t.regional.sq,t.regional["sr-SR"]={closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional["sr-SR"]),t.regional["sr-SR"],t.regional.sr={closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sr),t.regional.sr,t.regional.sv={closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.sv),t.regional.sv,t.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.ta),t.regional.ta,t.regional.th={closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.th),t.regional.th,t.regional.tj={closeText:"Идома",prevText:"<Қафо",nextText:"Пеш>",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tj),t.regional.tj,t.regional.tr={closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.tr),t.regional.tr,t.regional.uk={closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.uk),t.regional.uk,t.regional.vi={closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},t.setDefaults(t.regional.vi),t.regional.vi,t.regional["zh-CN"]={closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-CN"]),t.regional["zh-CN"],t.regional["zh-HK"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-HK"]),t.regional["zh-HK"],t.regional["zh-TW"]={closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},t.setDefaults(t.regional["zh-TW"]),t.regional["zh-TW"]
+});
diff --git a/ui/libs/jquery-ui/jquery-ui.min.js b/ui/libs/jquery-ui/jquery-ui.min.js
new file mode 100644
index 0000000..5824d12
--- /dev/null
+++ b/ui/libs/jquery-ui/jquery-ui.min.js
@@ -0,0 +1,13 @@
+/*! jQuery UI - v1.11.4 - 2015-03-11
+* http://jqueryui.com
+* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
+* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);
+i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);
+return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?" ":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
+},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
+if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
+f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
+return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td> </td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;
+this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
\ No newline at end of file
diff --git a/ui/libs/jquery-ui/themes/Makefile.am b/ui/libs/jquery-ui/themes/Makefile.am
new file mode 100644
index 0000000..1ce56d9
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/Makefile.am
@@ -0,0 +1,18 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013
+#
+# 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.
+
+SUBDIRS = base
diff --git a/ui/libs/jquery-ui/themes/base/Makefile.am b/ui/libs/jquery-ui/themes/base/Makefile.am
new file mode 100644
index 0000000..8a5bbd2
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/base/Makefile.am
@@ -0,0 +1,22 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013
+#
+# 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.
+
+SUBDIRS = images
+
+basedir = $(datadir)/wok/ui/libs/jquery-ui/themes/base
+
+dist_base_DATA = $(wildcard *.css) $(NULL)
diff --git a/ui/libs/jquery-ui/themes/base/images/Makefile.am b/ui/libs/jquery-ui/themes/base/images/Makefile.am
new file mode 100644
index 0000000..38e6f18
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/base/images/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013
+#
+# 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.
+
+imagesdir = $(datadir)/wok/ui/libs/jquery-ui/themes/base/images
+
+dist_images_DATA = *.png
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e4af1db3ac79771f85b26e10e3ae8710059765e
GIT binary patch
literal 457
zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K&}
zc)B=-WZZju!;p)~P{8fsS+h8Y3A#s59Xebow0`qkb;0a|Q5!b@SnY5ug{8al<myW)
z?dxy*?2_|ef49!4Dt=!3@!FzomihVL%%gwZzq3<*73Z=b?gTSa=I;)nnX%K4*6S*T
zp1sFixN_EO2KVK!?y#f<%s!x!#d>D(tOTvC3~9l}1^gjX_wAqN5%Tok#}4nScjONW
zuC&^HuyAEwLCGrSGYiZbJ+E-ha5p^|lErvtS=s}+6<Ke#?6|V=@}gi&lT6E^VqV?I
zya?00ihoo6y^Jjd{qul+RV{IiC`m~yNwrEYN(E93Mh1o^x`qb2hGrp#hE_(FR>r2f
n1}0Vp2H&16zJa14H$NpatrE9}_MOrxKn)C@u6{1-oD!M<f0eCi
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100644
index 0000000000000000000000000000000000000000..efd1ff3e7bbb28391e02788cff94f93bdb085679
GIT binary patch
literal 351
zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp`;z
zr;B5V$MLsUPYX6E@VEx9@?|&6ay8;f`myuF-MNb1M(HzW_kEU|eed)0=e7D9W0*D9
zHOYiKOggP_TGyf1*jvZE!RmS=%X5deY=xtt6CQJU6iKG+<oz+X_<8q3u?5F`7o6f<
zaIRG0plfi6-mFE%7e(fFFMDxEe|8b$t>uffPdu6X1Lz9X64!{5l*E!$tK_0oAjM#0
zU}&OiXrOCo7Gh{<Wn^h(Y^rNuVr5|P?aAUBC>nC}Q!>*kacgMbDV+k;z~JfX=d#Wz
Gp$P!pes!Aw
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_flat_10_000000_40x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_flat_10_000000_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a5aa914b236c0b1552513ab4d5fdda1aa4eef51
GIT binary patch
literal 244
zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRl<n8Xlz<9SycnOfl
z@9E+gqH#VsL4tL015h7R1OsEKSz9?!O0~o_q9i4;B-JXpC>2OC7#SFv=o%X68k&U|
w8d@1yS{a+_8kkra7<_xO_y&rG-29Zxv`X9>+ILE)05vdpy85}Sb4q9e0Ooo;w*UYD
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..068406ca901c5d06855a86906b2e36d0d3f79980
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
z4^J1z5R22vKTKyPiu5Y2TAY7hVxPBR&H2P1b#orJiyiJ~<*`31QRkQXL-o*y)!h%x
znGe5@X}d2j`A@^}PiM-H$tGQHf`%LnpC-BAQ(ov705nsz#5JNMC9x#cD!C{XNHG{0
z7@FuB8t59Dg%}!I8ChBxo9Y^vSQ!|6d$RZjiiX_$l+3hB+#1?<N~ZudFnGH9xvX<a
GXaWF(5L_bw
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..979591a8a9e0232ca073fe0689418fe58a16da90
GIT binary patch
literal 387
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
zWR|CkV~EG`x99D-85t$mAKd@F*+VUM$~ukHXUpObgeREBN9LXpoBz~pv(Vg&OI9xy
zIa;#Q{_g4J0*9?_KQrG=jkHl_U}#H}IJVs}Qq5B$Xw{>WZ5atiOdlp3V!tRfU-re1
zQVTbiXtAl5B~#th+Y3@pGVD4#@1sD~x#iPsx14w%KK+u&{MbF!t_9wmR%~B57PbA0
zU&4FXpzZ{_)IXz8*O(oRKv$}kxJHzuB$lLFB^RXvDF!10Lla#?16@P25JN*NBTFk|
pQ(XfSD+7aXPZr-m(U6;;l9^VCTSNO!=@g&_22WQ%mvv4FO#o0qho}Gm
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1dc6be0aed5c308955956e5cb2c8dfcb1128ea3
GIT binary patch
literal 246
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadP-
z^mK6y(Kw%+ks#5!xIpAl1H;se6O5NlHf91PRZCnWN>UO_QmvAUQh^kMk%6I!uAzah
zp;?Hbp_P%Pm9eR=fr*uY!M7)iZ=h(%%}>cptHiCLeW!E^Py>UftDnm{r-UW|!TUb#
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..8dc23e251b0505078f3a0912ddf41db6a89bf72e
GIT binary patch
literal 5854
zcmcgwX&{?f+fLt^PN!PcQMB4(W;&_8lwzuu>4GW65E>O?4R7sgO(N3iLQzbuRYfbs
zSdt)(w2?$B#h|3tL=dB>C1OcPG!ecqGvD&#{rjCC&$-Y2JSRENeeU}@*Y%|R;$$Z;
zcU%qt0LWkc`HCw5uxCwX2Oj>H?20!@yD96w48G`i5ddh&KCtPxS2q4O;AdAy0040s
z0Jwb*01(Sux90$WI70wn!5089e+&Q|je1IUv5?*P%HP56%Jy#C?;#ok0F>9SUb*O&
z$mW&!{2t77?-0Fi(Rg&t?W-I&z0NV;=ZDkekK11zvT(cq;Wd`{*g}5edM?Q`>Cu%{
z*u6WxZwh}9E1pmaE>DXRR4K`wR#*r2Zzv{pQ;kiJX+Hm@WTMBg1)21t@yysr0{$~j
zIxCWtbj}KX8+%F+u|rWzwq&vMDIqdpr9VMKOg*wkwm<;D^f5N>!mb4{OU>N1-hAmh
zb!f+BxQF%Xiyh+{z;tP+2OPQm|Mke9K_^5o7B?aCmQ71(NI*8!e}q=r_*=SpL@xiA
zhO#PK&Kx`)9#^lQ7dTNoq1clT6;tY`_?`pC+)Qw1UHM~0OsQi<KR*a`9!_`@dOnT`
z`Hb*syJJ?M662#<;iZc&1;$+T3D2V>G7sDM8E|9~B25>0;C@Ogg)1+ihNnlEry6-k
zQNT=%PD5UuHOG|yVEnChvIvJqSsT0UhQnijDHv8DO=eMr4990UP3=&j7T2B5ExrY$
zHSdS}IO4+hexyNRc?I!V*K;#&Nq9k-;LFP%wRHl|I1m5uBWu+#V}oTlrtrN~u}3hx
zLN=eqx>O%OBbsOenYD=Xb5x($HOIL#+&BX@f$@o_8p}RG55P+k_3fC=cU#a?d?wBP
zqAU|-?cePddUQ_8rbg`U@aH$xM!UxUY}w<~T0cD6<UKt;LHtL_q&V8Lsd>N-kqOD-
zy<oqKkN7mTikSoFl?f>JH}m@k)V-NEz^<K-s-SMDygp?OS5CWlZaB}}C27UgH4>=8
z?s+zR<NBg*%)6zE?Bc2rIm>L0JE<VT-u*?LcIY!#{h6Ws!e)w)qpBuax6K19aEMN5
z&WxocmFtl)I~CHn2#oA7v7OjkF<eWbBw_?jdL!NWfu;uSc{%oH%Aw<LCupmi%UkY`
z?}Pki*+dvip}A9+&Nw?I3~1+dsH}YxUaZ{>JrJ#=%>YfY%~@0I7v&%e{E#iUz4v~3
zetC{!MtNX}SH+f~5wCSqQjq?K&;n-H`N*g^woU0kx|O~jcYO+*n+HZ@DG{kA7%+yH
zf7E8rvhmM-UBh-|+TywR6R<i@7bG)$lumA#{ft?>$`8uzhr-({%7?KduLlyWfD&_{
zxoigGRbzn;oJ3t;5>b#g)B;y><||tCzMUPoEuR8{?QX?sfJW60viz@l@>MVJ!_T^_
z?s#u!29?5l_wSg1y2H@?-2#0KC<VcS{4OlMa(=FgkY}L;i%cS@JJmhQs3`~%5uNaK
z;#Z2?)f?CAM&#;fI3*2NFy(lA1GDFnK9=nsl%@%+1sxz#O~Hhm!LF<b!n>G?3S86y
z=i&9dk$akT%sY)u3U#-5{RFRWQoISM5f7Qkig>mJN;WYrPf9(~r?xqBVzM?t`Mmt@
zx-yG2KI366%;l6Dq;Z~?<a~C+UOe%YGzzxpSE`9XBK0nqkKa*uf!k8jGga-5OTr`t
z{Z$qP78ei(HmM%+!1(4uURBP07TpcmmP@9Muq*xhh>cuqn}yDe34W4pS~;#MF3w@7
zz7a7e_<qRDB!WX`{tE`x)zOXtRm&~U>031DGoNU43gB{yao6iA7H)v87<a;Nr2Wxb
znZSI`S}T`Sa=#57RZEhrQ}LU{qdOoD0C;?t^mGU3WuW$Q>RV9R-8mkQDeRysNurVC
zmuCi4BzL=Wz5(SW)nR@QMyCgl_F10>SxE#nh5d&4m^_8_5(@j5SYeRk=ih8Z?|PrP
z^5SDT$Lk>o0)EyTf6hA`HvU1PGgLkcG)QRL7I*l;%kc97+H-Q;hUuQ>JTRQ5Jv7sH
z;j+MrC`#6Y(hljyEoD0RsOG`Lg9jiDK-r5|Ve`$(`RR?uTz9>uN@mVhbV%Cu?)szg
z&3CQQ(#763!vh^H)}nz*=@QX&sw`i~X(lNGAGM>*E|OHNUWDl|J6f#tDuzza4PVk|
zhC!u+A%vTWp<(M=b?tP=KgM-Xtd|th16XeL`j=iaF;xXU6!yTf4&$w30F_Z_(G6!z
zv`2eS`~~@Mz9J~&Ql$0B=`z!3hqg;Kg`(NPaf*wpitE<s6x#)<d}j5cDpPpHrN21T
zG69;egpLhs<Lh`ao|Q@!C0!>QmJ#kl;lnl8@M_EJo&pEaaIGu!1$3JS<>cFoE~a^l
zUMIntwu{oe8!!*c6LFI2;J2YS&`$8sAMpjT^1NtjvQEgfH~3@MfMYg!DdIcWK=DOO
zPL4E<6gey&P_vMVHI^)p(?X-g`(V0WSn9y@dvAMhhdV}&w9?-?g&EJd*HkPy*Pzl4
zMf*g?Hi5-)Qk)S29z;F9K>c`4TlHF|2NX;;(q;%kJmw*~WPVMkWg$dYRiw7EfcMgX
z^g^856PaZ>Vz8|UchjCm(GABg>YDtSX|r7M5ZXvyAU>~)golFbVy-R<^F3d$ENQVP
zy`8%{x{BN2=k?3ldRelKgG>8L@NS0>?4%yx$=m4Pc8w#x>bQF(v1Y5@(}nm}qecA3
zgqRc%hM*L2vSBP&rQt<b7M?p*sq_F}I663$-q8he?W;KhB#)>s5It*axFHd>ZVqrD
zG|~&MVjnw97`dc@@5zhgq<i-~iPXj5ac2>hFRrJtvRqGK<8*IieB|0c6vm<Ia?axd
zdqU4MYF8gXHC!<rCSJAWu?k$Py?mi2ViB0Y^=EYCl>&`hUrwkc35X6=WfTr}^w0&r
z5xZdbcns)=BMBYM4jvC$-JEV+4Mh|eKhVm?%>~s?5}z*A)?(+%ssiCbQ#3LO=)wx;
zCpB^HIy0CwMeh(LNiam-d-AN1>}Q9qGmg)qc+O*3eHF1n&JeXfm`W{0DmP8_6Q2E<
zIT%VPQNV%&mi2U*HJhIy<?h(o2RV)~;2N%=D~Tk_*b+}&+ZuebWtI(E5nkIWxiZXq
zvDqM)$vk&2YN}mrH^inna6ZZMEw-m)61$bQl8pYivOK)lxld}Kk$fy!u~&U7YP|eP
z63d!xeez7|Q3(=!?jv>F8!|hrCVU_vrv_zAXULgrHqSO!wRWzI4THFcWYFwe6T8ou
zCgc}R+#sFk*_eoGLTk!?1F=y*xMe3zqaSVkJ`^LwY-Q1pW^EoaF505fNrjq5+lPtF
z7Al4MYdoO%UA*W+SahzbCfRuW{?gIrZU{Omx4`;nDH~z<bg`6MO1s*PBsT}mwleP7
zwGui_6XGMoq~C6aCDtIL#*Ov>-e9jKtYk7vKl4YXr3zw+g0)=6ia*-9F>`A>A{EQa
z-|E>)bIVO;om0>cKO@{GB<Xp{OU#}&$N}p2zo%D6nU4*OTV6oFAI}|+83&D*OlD#=
zPQFfth<+A@ZN!SuW}B-48+YG&k7x3%hp5eQ!LKZz&Y!8f;45Pp4x|kxIC-1tj2)Go
z2)}o&u!r=*G*CU&&0FGu%ohF>4eN73xO}duIW?#-+e>w8%WtFkYXIQbE0&L^mAciT
z$P~;r5`jk};U6Chm({i;@{!l{=+HzW+5nO3pIAI~2|d5E8nG$`TWz;(dnDA!AUitZ
zKz1x61&NWDhEJN&3FB4G-2@CeH42$<+Ux5wx#iv^i(ArnQB-6Cw|Ck@lO6+c_Ca3V
z53nktOiVN+edpywQEr^`IVeimURt)^{7@g||M}7@MUGs@$$@^KIRkx-3!h9r9gtSc
zOikJwax`w*kv2HGEh}v;9@00mbdpzvUN#@GWL8+Gsc$7leJ=|~<&#+Yg#P>1RXd7&
zQV^F*FgTxd!fJy?YDRJ?n4>@Kr+*d8dbqIpYTFh)yo&wvjYO)JYOn@wEk=pQTKybK
z5UR)@RX(C7+vc5*jr)scwv#q6(^5EVDZbTRaMz)t2ca!8Y%-+fkS`q0hB!2kyYNQY
z1M5k-(!LJ;n?(!7Prk92C|ZMJ!Ut+D+4WIua02nCk!(Wc;I*{U0MCc64oAFsj4%{x
z3sR(h8j8u;;Zd4;^yK;1%LOG%w7I?d_jj{r!Jyb@hUohM_HD&`XE7ml`JMtDBaI%N
zfU^!&(TD11#X-yd=$oHCHeR6#Xn&jaI>vw};n{c?`&?jIb6X2#lbYH>h(Pc1l{a@{
z#&(U<fD;Kjg?M|vp+a}P_49<=J0pPAqZRbu54^ERI>|9Q#8s6oY<#}{phQ}0hdX$X
zIc1uzc0W;%T9}}R|ChF8syWV5JIy=0^+e=_8G)_#YKvFx#?nt|)>vY=3xik_x^Aqc
zj(Rry5Z7!qjs1<+-iR5Xj=wa~6rxYsVD$#mD~PAl4?#^9dg}(`V77&Ugd`J!od~Di
zl@vw-Ys2}&sHM7ofeJYj7n{-Yc{al*v9eXB=49=|!T)Aqg8HX}d)9ZoWj}vXPTt<7
zY=Cn?>NtMQ!5#mbN@E4^y}zlRFLotbXV?4X<5U>qFHG{K7p1~jvu=N}y`Ge8&|i`I
zNvtN*Itmyc;&CU<(HBcPiTV$zji>=0OT|@Pr?ij@${?4ro*W#+7DeN89=^Qpiq~C!
z0CiVxv;Q6odmcAzAB4yVL!h$kn9Mh1aUo+##n@~nAG$pQ&3|tK8M*}vE9Ug&=cBKs
zArR~AQ;0G(dmFf5ZoNv4GsnN)W`Si_PkQh1v~aE!kLlCaowF_1Jn56Wi+gs==^r9W
z`9~Fg@*9cy`<+whwSUWuzfUy0l(}=JjhUw8{wWY6u-XChTZ8MAGsPNhiDQEd?vM_R
zcAkdqFY~l|h@QP`wNHSU2ivbbL}%Q0rE|SkV=b-s=LOchFrunw*;PxFbo=zP#%a(c
zf)$3!4BrkNxpqUi@Zk={9u$U9)^!QWO@JX{c|!H>`ibTE3}XZ72tGM@{F`0bdVB9b
zeET-sBL(%hhAr-q2_^NauHC&1Go@D>;R{ae((>E!@9B;Ika780ajg+uvqn&_mZk1)
zycHYwsyL*mb(FKDjJ7Z4ha>^x%$hJF#~TFqbjX5>ZirUboZO4BPw)y+&wwKX<C+Uc
zg}di_gsCmqmVi&l0SQ*heH&zy&8o%q(@mAZW6kOd0rRQ*Uih!pcprdF-U@{;3?XjK
z6SOPf>6EyuU~S=*z8~^?^7f+ci*Nx5yqkk1fm8KUr_~kaa0V&J)pNecb+8xteMeW~
zDL(r>WLsHnE!b{4n6yzM*k1Y5n7I|Y@k^YF)BTcD8rUrSJL_yo)@XLxsBQue8r^+t
zRPd_MsKAnpO;dD9BQ+fYve_!J6aJ`0Ev50WZjQZh;aTmAS<knl&}CTd?2xrWg=rXm
zZEo#&MrU^z++E8>>-9jsbLNF6AKIb0^`hfIgAnhcA32mb)~Ib60a`{i2^tlBa>%w3
zHT`h6E5=du_Cg_5)n#ok?gMrR5sy^<x7}-nxUxSgi4m(6f{El6Qsi9yj;>&pzT2}g
zl^q&hHpPgV5^`7qwl1e~5vf1N$y#2}&u@tBZbHqFjS9;B(#jC(pyc5vcjJ4I>w|Xh
zxe)*F44B04*P#Ywq53-SaPn>26mycDvs&4oCB-wuK!`eWM$I8jYv!)&WD_dV1QGMd
ztbm8c##t$NSE%St>M*DI>tnUWjn`ki#JcYXe(pNacHW<~ktwLM7P$r;-_03c;CsAO
zGHeA2QfZ>kLoC`=>TJy#37um#BdhJoq%xe545bH->E3V{;&+9q&7aP8Wio~sdDYo}
zup1T0ZL^H+&DkX<PFbo9kG(QEYxdqE#nGZ{&b%tFiY+VufcfZ|5$AC=jHK*n<kd5=
z_>Ug0ecIwYw<kHxtjo(<T@OqVdhwFHCZf)8EuA&W(txB=%&%tVkRlR8t@71?3AOJt
zz?~M|@n@7QL$NmzLDcnMath;PdemzRT4!`$=bW-UgO7yAv@GS40yQysp^yzpuqs%l
z*_TSX1f(C*hnu~YA7JKikz<8YXv>Kp@3n{zbK(`jn+^LUvo;ougc|D>nwrQ4SwNG5
zaVwje!f>DY;^UUEk?Y?YET{KsPbh`+9*z<NgF$KF1`G-OLBbyCQ?9Rd%Dz;T-IUT*
zQ;y$HW+1ZGZq&^MNUA-$YtNw8wU#T!);&*<R;|)v-5r7&u(zqL+*P)H0seO}xe9*|
zL8H9>pj-29-||9W?Gyels~~(iU(@q7JN*#cc`|R7;}K$swHM~5gS(UQ6Fe1#QpqHK
z^DhB-TRy1NBCqRooQG>Dza2ZnBbVcBE^M2DRA(NL<E^+)5{E!pI-zzMF81HEpRz~4
zj5NEL>A9Z7ZQ#r@E8BiQ2_K7i2T9|<>Y7~)DLqij@YUB?J7u@mncOCw-4g%0EuNQO
zk205dXi2`Va>JhmcKkY{=3c-zRDOi|wor8VrG@j$K#d6pX4B@}*_q!?kD?)Fcm`rH
zJ>@JAqkDD%oHr7T%po0O4d-3{Vst(XB5a?-l5;M9H6?^^v2;eb#r<Y8EmR}jyt?0r
zhm_sj`m;gri=S7!P;@V2i48xTf+skzXR*gP^h)I((D6?_k30$Qvpmtmb5_&tjg|#D
z+RNX(L^$z;s}B%*-LguH&tQ~FruLO4R2|t(>+63|<}&7UpkL_Iro*F`?8ouFJc468
zvpaktddS@7`MMd~eo@~k&7~3l@;wMoVTL%Z)aTd5MO=N2Aoki+S7bATy38WmnjU9E
zVQWJs?MQXztHR{=!G-^zK!CwmtzgO^TcD*rjFOw?Is5aSv^;0z3KH%(c0M%ZC1m)R
zi#ERSk>An4GKJUOGB(7dz55h}@=Y>}^KP(MDh~c`$hP4V&qUoaqAdMP9C-E0svT4R
z^bFQ2T@7r%2hy1b!>0iAD?9#O>t=Pi8xt{`orALBQ5F+}?Xe3(?tEJ}+;cNqYEQ`T
z#B`k}teQ_fh&D*1E&uv$<iL`8KDk$#D}QHp~c>LW_O*G+yc60DkFfqU<vsFK4z*
zCOyX^8c<6I6vAL#yB~W1x_+D%<c1yCx;esZH>__yZtporwD9Zj4e*gUfU!0nv4MWE
zF!O+0Fj)sMGCX@u|E!_@SyQ*OXU&byn;V<x8=f;aG!#x_SpR22cx2$sAozctkox*W
R;LcxOwQ;(FyX1T4zX0?Pvm^ij
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9b25ef80d30a7a6f6fa40e7c77dcd78aba85ea5
GIT binary patch
literal 317
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&7i
z2u~Ns5Q)o25AEf3aA0V-*e_{PA|fT+A^2utsBza39wB9crJ?W6{k5E{TTy8vDu0%P
zeWCi2JKE*V_dn|99lm;lH99HHr%CRj;q?Qe3)MmzZ6?YZxp&C#57L`*<)qw^(?B~^
zOI#yLQW8s2t&)pUffR$0fuV`6p@FWUS%{&bm64^Dv8k?siIsuDw<n8lplHa=PsvQH
W#I2!yr*sNX1B0ilpUXO@geCxOC}8*i
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/ui/libs/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a479d12cc304f7c5259a9db8a4827c13d693543
GIT binary patch
literal 367
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
zw0XKXhG?9BI>C_ZP=J7od~g)E*+$=Uk7Um%7IiGy@^6Xv0k022VsdT*YtE+W*g57e
zNcdV|y;(=+TXOLhh6nuxi$!<LpWI+~sl7BX;r{we)de%z8fQzeUJ2IxP`8TZ+%}%q
zD~iInZrJ+2-@EkY5rqQj+c}F5{IrS{VLJCY>OnXE{r{KzAG1DtYTsG7sYVLuBGnSt
zh?11Vl2ohYqEsNoU}RuuqHAcNYiJf?XlP|*X=QAxYhYq!VDRn9;u|O$a`RI%(<*Um
UXx}NF0@T3Z>FVdQ&MBb@02WezsQ>@~
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_222222_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed5adeabaf07b8784f55c2487e1cc70ee648c7fb
GIT binary patch
literal 7006
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
Gzx@w(&o~JH
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_228ef1_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_228ef1_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e787bb98f072e1080b4557a20a86cd79b814040
GIT binary patch
literal 4599
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
G^#1@bXoG10
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_ef8c08_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_ef8c08_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dcbe012df24899416caee1a55d1bdf6c22fd837
GIT binary patch
literal 4599
zcmeHL_cxqfw0_?iy_ZC<kxUR}^cIZXi54Q5(OZ;H??#D|q6Hy*GATMCqK`5}myqb9
z6N1sAOBh%3{c`XBaG!P7+54Qeo^#fE_Fnsxq&tRM)D&zK002<yXseq50C?#FyJXPI
zeo{yG^wJQys2HdK!21-+GdtqTF^_|`i2(qF!T<mr2LQh=r_gHv5C8{&4HN*#X9EDU
zPhOMp?aRgJ@93Lp>^vd+|MtHX5Gy5-y;RN0-^9=qu+$2_CZ4_6G7#jPSDjQ^U}YHk
z1L5@0^s#1IhJ&2}#?>>|uPp-Cyj-!e{yjR`W`1^|aeR8Xb8K|N{+kbhdN9ZBL{^ZA
zqbuZVQSY-ala;%lQxmJOJ!Q*}`!B--fcAP?>Odkfr#1l4dg!RDm<4~^vY~XCuA?XE
z(=J`lPG@h_%a!$Nf%!>`_SxD@1bB`XdMwMAVBg|HFD??O7AO-GZg-j#y0X7~(5Hn4
zwwJ+XDB@n?CFpsg9j6T@s|j#ll292@u#G_OjBw)0qO*_2pcoL-4sXjwiMT=3Rdf-=
zH}doc2BspM%9#4)h-LkNLL9QT-VDi-V@(CeBe4|u{(~5v#`A({@tbq{?8F~XbLyed
zjSqt>;q`zKG`=2C5GYSlf=o`~^gB)E#o8Bp&{8K2qgY@|_2WEoU2^U=nTGmbJYjjh
zP3|>Ct7}<9G8$sE#wv-WU$|KgnGXkY>Cy{mb(0FfCqP!Tv&_e?ICBK~uKM%R1KwEP
z@yM{pihWtEnVo)3Wcr}04h}T}&cr<Y?EKW#^XVzNQ|R-=n>tVM?)7}8<CnAxijHLt
z2$qR+5jy(+@Luu2?=1G6Th-ZIwAK&=En1|SFw-*KQxB~oA=ZUn(7)r-A<6H$&1vm+
zMA1xL_4XIOK68ODvEV~THc7KQPtt<+0~V*1G)7!zgXZ~d>v%da971-+7H4$qD0a2n
z@0r{!2?gOV123f#CgPeowI_w*;9hdG-me$gnu?h>m$MYr7mR2#v_(jXM71#xx^em0
zlId1T>%G&(X~+Mx=`_%|@GMcBebQOYK5O&#GcC1<IdSREIJ#DFw`c!>=h!fiA+ozP
z%4Yj-|0azguBmy5z3-9#gm;p638b~UJ=B<986s-5H*O`3y=e=9gnfKC_9>hy_*745
zL@|1ulrPV-V{sL@uW*y8v%^kLa*%6^&O;KH@9vbHVK`JjiT>@c33!0s`8kGI%WNPF
zn)lqN!jTD%C9ir{v41u62QkV9?VpBXt~%c9%!w7-oaMmnTT<y~6O+}ca`T|6Vy<UW
z>%C&-uxeXjJAJlQ;X~J8xXV=q<cG}cgVT{puxo!{KiV*Zl?^iMeN&w!A&s|;dmQUE
zrLaMJMwUz{cR`JhTZ!Ie8~L<wWvV|pYOzcKy~QLG(c|tpyzd{38>@E&3aj9+jYN4-
zq8~)T?H|~I>qE!T$yJF@hwkIHNS`lxl<!7l3=xc8O=Q|ai*WCzoB2!Ybz^QkB@07T
z>~DGA*Q7qgq7AMzM@*Wq{Y&?A``&v71h%vLqk>{_Ngol@zd1w4_lJ{E_@ivPZX<Lm
z-Qv03;9AvM#%(c%L|e67wCX-B;q;A1BK{rnPvANaHAB0+9hvH(;REKQ>;$P_DQ*I|
zrcd^vNH-rTIuny(i!1hKk9i;9s}VmRnMggnLagQ-{#?}wly9pNiI#x$411!rME%2B
zM&}a;sUVnZ?TIcWiH8O#Ya+|6c{vq<Gy(9$)Y4wYU&swRY1xEhW5Vs_Do6{)a4;c`
zZ%O*6Xhs$Cu|u_K@Kgq+6>-U67Pa^rv8Y*?S_gMBFZYVk7De=m=tHpW)(0pwFWHMZ
zX$~5pt*MPb`hQja6OtuoUeid`x=6x(#-#gdwO)ekGP%Een;Ca!P({9()`HHGa{K%L
z=zRwo8#E{oE}OdlSjalQ;P;x~xhW~wZfmTc_Q8VSNoUfe;n(`Rk)F9Wo>FbTuFK5%
z)_rV1=*Wf+%`@`vjBmggVn+YU3iD!`Po7eBDptl<+=x|sKk)!!K)?FUrf$wy;NC&2
zI$l@J0epA3T`Fs{Km^-q4I_nv11rN9MDaMHL;%E+L}SdfNU!sf!``}MbWWmU1|TSk
zH8peV6cEkkT62QAeU4z<-44UHiIFvg9g9qJ?PT?Vy6EAH2z|7h3D2R7CzX=+7^Qiz
zMY|jLTQ?wk8y|u$uerzq%#~i)mpvLG?icad;o64i@rp)=dmHukPgGt<tVjJO{Puz{
z_#(J;($9$=!hM2+*SMf4q&UxE4^f7)Fu1~#NEVD4jNHY@`Iu41XsL7hLvErKU-OcI
z+)JlPr%QF=qSi!TC>Gx^6n88yJA8rl3-L_9G+fEuh7@eV78+C|c={GwZnr_@A~neZ
zctaNIS19ocuZZ-?K$IoU8o$Gf5#C;A===^721g;)=M0~3*ozm71yX3f{Iq{0k}7lf
z!;o@;D6R=Gtn9|U{yf8wnsZp&WgZDM^KtMn(KS)u-O9=JgXgpcKrLk9Yr;N<XTS}N
zBZe+lElXI}fA^3jp%Bk7NYhf787Na4^*6nHf9}3gRwUkOmPUKx`BVx&&T6fAZW!~8
zw+FI240(ji<==0FVLb*^&ys73cIPG>YXT57ebdt8$^(*6i4~3f@1|EadtpOCR$7C)
z8igs!r8Ym~!H{amJvVX1T<gXdkAbm6S1JAsiRX34M`r&h^h_Lx;T&GK`DW1668dGl
z-yoY5^5mQ$k)p`329=!VLDqina_Zqp)iag6N6Jel($7`BdOI>`VWir3w~#{C)N$XY
zDp$G}QoH)PMNGEj?@BOv`gf5RJCo9ZMqIZe0x!T9(*18ETpAQ@Aq1kRtjabNaVFl#
zkt4i!GC19IzCP2#MX7e;xQhO(EIhX5;dcx};0xAVPG<0sA1#EUB~Z`?#J(lC_KQ3K
zqZnT%w&4W|9PGiKPDpYRvCxxAwIj59s{8VNllh{|1Gj0Mcy`ZwXt5Xq&kS4Wi=|ag
z7sV24i;~H;U*!e3e~-es>>V1_ICQKn7lbGD^0#cZF>uR~xxU7Zy3)Ppj<!qQgXcU_
z<Fma^<QQl7Itt6zaUJM;8RZ)kc#K4j?nRo;Y=`c3G>66nL|b()E%#X6t(zYVvLdG=
za!<J<IP)wW0c+$QqaF_eYrC`?n&LLL-^#WLB@%9<jouTM)}Q;H<VKy=+&~;%jQS~=
z`VW#A`=w_Z>@g~%4Z|3xj;P^EAu5MO^(w}m8^e7ok8oSB6}c_RNqqkyHufjmrRL`U
zTh%GEmy+C8`rE|@_N^~M`tDPjuYq$|?gKX!id(0x9rde>h<B^McgHM{QPfDx>ZZWC
zUa#`@Ou|j01;W3ue>dx03)x?s#@{U@{kHJ*mx0`;!VzW?C_$8&(vEka-?)Z6J^Jcl
zH*M{Y!>1i>wYQpH^h2108r(*nPG%@N+K^Vtr}%S9ux_q(wF|0{TJ($Awo?vxO(AvA
zzO`Rib&vNZBmo0l{k&onVYa?W(G={0RBqmZJQ3!*W2pIxnzp34P|#${!^K^Rgnn1Q
zVr-GZ;!yxIDB1jdBmJOSkN2@vX7#wT)V`V<9=o+J>NHH%SO({17yq<B5O600G+Pi@
zmWvifDfRpw+y5YO)z%&ImH;t`Htu$-LNO;L)o*z}0M?N<?aovuRDm}ZoN{0BKiOZz
z8R62-_O;I?`}%Q(K8ZqT^~$0AEoFt+XLUH{(tr=2=@G&UzfHWHSKQBQV@^vuUxhTm
zsD^22XlSS)8@KL9aOj4MMD@leWcpFbDwuKtv@xQEBU2=#D&i#J$P`cts(aBvrnOUi
z#I-SE5#|%aa)+4nm0e{{v)jS%ljUCtEQx+p+0HI5E<W+BnEG~ud19`zq<gbmY)uub
zeu{QCv=FDy+(~dJu7nv+nlIBRH~JeK4uJkuI9TT~nE=GpG#{m~E90uQzHrzT)HZ96
zX`eRhC`P4cBk|Yzjo)O!a$XD%yr5>EJx6aXuZ@-QT^BjJVzIuTCH4(f=O=!dIj@-u
zgM$w6+@o~+AMu_t?g(qZx~3!LbMf!xx?CxiZGnKDu@3x3@|(F@Y9YHMqmz`b9Qxep
zkUF7L<dLYWjdd}w@tSGQ6*5;NmpF~u=c6znzaNSrEvC{7FhYh7w5iXOU1?1aEP6-k
zVWdlY<r_bQT_*D^aBtlDU#Br@9W)1MMiyab=2d5x%-k(_ez<3Ex8XhAgw<xYY^&ef
zsz|eI)POu%4Q2L%Pz<kthNgM(hxPQSY%o(V$(JmPH7W>_ffZj_Ba2&`F!amVgXc}`
zvG(4SEP-@F)R<7$!qLS{*uvF*vlB|(dP@)5?v0fEn&Q}!X<kyEIt%<{J%X9e9>?ob
za`l~+&s^dUOD%a4RLSJo_I?EkUb)2WUhwIN^fbJ1>d~KDePW`XCaCnY8kAV-EkBG?
z=ic1BbKcHps{|tW;bi<HCV8*23pPIYVpLZ(^DS~_7ClwMf5hBSYgCoy0b#^2(A;Wz
zb#G7m(3K<>$QvZbv|oEk1(#W-Q3d9x^vU^)ls7c9xFu#*<)JW?^H+iL_q<+v7o_DH
zI5blg69~PJt8xIk#(U7wJCN{Jhk>AIdK5Mi@%Nzk9DgBKjZZ#kgG3TIwq`SI`}?SW
z<y#+e2%K4Cez5K>6|8`dx@BI?M}0Bp;=H@7tb;~ipIyBr(G5gYo9#^Oz*49M@+f}#
z@f!Xd881^~{rX~P!d(MK%6K~BH6IW4Q^uyZXWZP7Vl4^F9s9j%ba1tw8520YBS*&H
z#wI-F-HN1T&}In0q#cjxMP20UKG#Y=Ph+@ah3*t+U2?a!WW_$C2a#s32F-77%YW(*
zTYzkZq_wYIp(&z)yqo38hUVqxE!nlbNdCer@Zdz*I+^<PVY3pm#a_wjU+L#CL!@zz
zO-ZF?GqtU)zGMfd=v4jsuK}6Z@d*nW+bGwcp`1BhZ#M;lDk>{Eh$560o{C`7hBCc_
zZ3o8geiJ`8zXi>FC~^MOFlxCRiI%b1TD!g;Q-@sm!5I$NfHl6RiNzMNLqk6|eE5}(
zTuu)e8ihG4^QV;CT~kh0o+IO?xOfN0t&z|J{YtgFEysD1EHa5J%=)}hk*bI)#n-0+
zy)K!ATs~BEYwVyZdh5eu)%IV)OiLfo62|Lo(%_;9rZuAMaZ*APSsd9xpn%Gr={<3u
z@m1OwC2kb!=nIuQwD$g~5J4=dIi5!cUld!OGq<~(ZqDtx!V};6^swb=VCF}bZ)xjz
z?SMZ{<`!NzD3k9``M-AUb}?sy-ZL%Qy$k5aJ*n%!8BvC4IcArUXH8j=L#DLyI#G%~
zS<LF^8_%MmWCGPG8-6<A4B9CFWX>fXu=S1oB#OcE@Zwv)O7UKByMEGE$5eRGAu5l}
zhocyo5Qi-$zjB%GczKH=X&~QfWlWK=Y5_;JoX~2LLc+--i(g1i_B9XCoKRL4g`{lQ
z`*qwxDSOaX=YRmLF3KFBDwJ!Gf}nkNdNJQK?&QaX5lpiQMwf5!8~z%W{*HG3PVx@E
zPL~D{hl@!Hi@}A(q|L;{<i#ZA#pHzHlJamkcLX2m{}4RA9o?Km{v*JpgvI|7BxU3!
z#Qq~ZJ?Fo;B(VP3!PMK?KgiD42~ctLws+#u@w9VsGI6qV4Ed+e>GC%Q0CY4A)!(V2
GV*UpY-FO86
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_ffd27a_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_ffd27a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd39c1b25bbb7734571820d7890a0401c2b70d53
GIT binary patch
literal 4599
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
Hp`-r?FR{ND
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png b/ui/libs/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..39e64723fe6a862f00d5e2578110ce781288070e
GIT binary patch
literal 6468
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
literal 0
HcmV?d00001
diff --git a/ui/libs/jquery-ui/themes/base/jquery-ui.min.css b/ui/libs/jquery-ui/themes/base/jquery-ui.min.css
new file mode 100644
index 0000000..91f16a3
--- /dev/null
+++ b/ui/libs/jquery-ui/themes/base/jquery-ui.min.css
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.11.2 - 2014-10-16
+* http://jqueryui.com
+* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdan…
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file
diff --git a/ui/libs/jquery/LICENSE b/ui/libs/jquery/LICENSE
new file mode 100644
index 0000000..788a7c5
--- /dev/null
+++ b/ui/libs/jquery/LICENSE
@@ -0,0 +1,21 @@
+Copyright 2015 jQuery Foundation and other contributors
+http://jquery.com/
+
+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 AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/ui/libs/jquery/Makefile.am b/ui/libs/jquery/Makefile.am
new file mode 100644
index 0000000..1aef505
--- /dev/null
+++ b/ui/libs/jquery/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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.
+
+jquerydir = $(datadir)/wok/ui/libs/jquery
+
+dist_jquery_DATA = $(wildcard *.js) $(NULL)
diff --git a/ui/libs/jquery/jquery.min.js b/ui/libs/jquery/jquery.min.js
new file mode 100644
index 0000000..f364443
--- /dev/null
+++ b/ui/libs/jquery/jquery.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",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(".#.+[+~]")}),ja(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))&&ja(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 la(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?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.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},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,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(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===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]||ga.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]&&ga.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(ca,da).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=ga.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()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(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:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).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:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(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 ta(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 ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(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 wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(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=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(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=[sa(ta(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 wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(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=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.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(ca,da),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(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(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}),ga}(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.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;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=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",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 aa(){return!0}function ba(){return!1}function ca(){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<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(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,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(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 xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(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 Ba(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?(xa(b).text=a.text,ya(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)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(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=da(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(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.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(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.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=wa(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=wa(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(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(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(ua(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(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(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(ua(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&&na.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(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.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(qa,"")));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 Ca,Da={};function Ea(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 Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return 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="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;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),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){
+return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
+//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/ui/libs/themes/Makefile.am b/ui/libs/themes/Makefile.am
deleted file mode 100644
index 1ce56d9..0000000
--- a/ui/libs/themes/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Kimchi
-#
-# Copyright IBM, Corp. 2013
-#
-# 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.
-
-SUBDIRS = base
diff --git a/ui/libs/themes/base/Makefile.am b/ui/libs/themes/base/Makefile.am
deleted file mode 100644
index 1bbaa50..0000000
--- a/ui/libs/themes/base/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Kimchi
-#
-# Copyright IBM, Corp. 2013
-#
-# 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.
-
-SUBDIRS = images
-
-basedir = $(datadir)/wok/ui/libs/themes/base
-
-dist_base_DATA = $(wildcard *.css) $(NULL)
diff --git a/ui/libs/themes/base/images/Makefile.am b/ui/libs/themes/base/images/Makefile.am
deleted file mode 100644
index dd619c8..0000000
--- a/ui/libs/themes/base/images/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Kimchi
-#
-# Copyright IBM, Corp. 2013
-#
-# 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.
-
-imagesdir = $(datadir)/wok/ui/libs/themes/base/images
-
-dist_images_DATA = *.png
diff --git a/ui/libs/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/ui/libs/themes/base/images/ui-bg_diagonals-thick_18_b81900_40x40.png
deleted file mode 100644
index 7e4af1db3ac79771f85b26e10e3ae8710059765e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 457
zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K&}
zc)B=-WZZju!;p)~P{8fsS+h8Y3A#s59Xebow0`qkb;0a|Q5!b@SnY5ug{8al<myW)
z?dxy*?2_|ef49!4Dt=!3@!FzomihVL%%gwZzq3<*73Z=b?gTSa=I;)nnX%K4*6S*T
zp1sFixN_EO2KVK!?y#f<%s!x!#d>D(tOTvC3~9l}1^gjX_wAqN5%Tok#}4nScjONW
zuC&^HuyAEwLCGrSGYiZbJ+E-ha5p^|lErvtS=s}+6<Ke#?6|V=@}gi&lT6E^VqV?I
zya?00ihoo6y^Jjd{qul+RV{IiC`m~yNwrEYN(E93Mh1o^x`qb2hGrp#hE_(FR>r2f
n1}0Vp2H&16zJa14H$NpatrE9}_MOrxKn)C@u6{1-oD!M<f0eCi
diff --git a/ui/libs/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png b/ui/libs/themes/base/images/ui-bg_diagonals-thick_20_666666_40x40.png
deleted file mode 100644
index efd1ff3e7bbb28391e02788cff94f93bdb085679..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 351
zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp`;z
zr;B5V$MLsUPYX6E@VEx9@?|&6ay8;f`myuF-MNb1M(HzW_kEU|eed)0=e7D9W0*D9
zHOYiKOggP_TGyf1*jvZE!RmS=%X5deY=xtt6CQJU6iKG+<oz+X_<8q3u?5F`7o6f<
zaIRG0plfi6-mFE%7e(fFFMDxEe|8b$t>uffPdu6X1Lz9X64!{5l*E!$tK_0oAjM#0
zU}&OiXrOCo7Gh{<Wn^h(Y^rNuVr5|P?aAUBC>nC}Q!>*kacgMbDV+k;z~JfX=d#Wz
Gp$P!pes!Aw
diff --git a/ui/libs/themes/base/images/ui-bg_flat_10_000000_40x100.png b/ui/libs/themes/base/images/ui-bg_flat_10_000000_40x100.png
deleted file mode 100644
index 0a5aa914b236c0b1552513ab4d5fdda1aa4eef51..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 244
zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRl<n8Xlz<9SycnOfl
z@9E+gqH#VsL4tL015h7R1OsEKSz9?!O0~o_q9i4;B-JXpC>2OC7#SFv=o%X68k&U|
w8d@1yS{a+_8kkra7<_xO_y&rG-29Zxv`X9>+ILE)05vdpy85}Sb4q9e0Ooo;w*UYD
diff --git a/ui/libs/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png b/ui/libs/themes/base/images/ui-bg_glass_100_f6f6f6_1x400.png
deleted file mode 100644
index 068406ca901c5d06855a86906b2e36d0d3f79980..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
z4^J1z5R22vKTKyPiu5Y2TAY7hVxPBR&H2P1b#orJiyiJ~<*`31QRkQXL-o*y)!h%x
znGe5@X}d2j`A@^}PiM-H$tGQHf`%LnpC-BAQ(ov705nsz#5JNMC9x#cD!C{XNHG{0
z7@FuB8t59Dg%}!I8ChBxo9Y^vSQ!|6d$RZjiiX_$l+3hB+#1?<N~ZudFnGH9xvX<a
GXaWF(5L_bw
diff --git a/ui/libs/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png b/ui/libs/themes/base/images/ui-bg_glass_100_fdf5ce_1x400.png
deleted file mode 100644
index 979591a8a9e0232ca073fe0689418fe58a16da90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 387
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
zWR|CkV~EG`x99D-85t$mAKd@F*+VUM$~ukHXUpObgeREBN9LXpoBz~pv(Vg&OI9xy
zIa;#Q{_g4J0*9?_KQrG=jkHl_U}#H}IJVs}Qq5B$Xw{>WZ5atiOdlp3V!tRfU-re1
zQVTbiXtAl5B~#th+Y3@pGVD4#@1sD~x#iPsx14w%KK+u&{MbF!t_9wmR%~B57PbA0
zU&4FXpzZ{_)IXz8*O(oRKv$}kxJHzuB$lLFB^RXvDF!10Lla#?16@P25JN*NBTFk|
pQ(XfSD+7aXPZr-m(U6;;l9^VCTSNO!=@g&_22WQ%mvv4FO#o0qho}Gm
diff --git a/ui/libs/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/ui/libs/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644
index b1dc6be0aed5c308955956e5cb2c8dfcb1128ea3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 246
zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadP-
z^mK6y(Kw%+ks#5!xIpAl1H;se6O5NlHf91PRZCnWN>UO_QmvAUQh^kMk%6I!uAzah
zp;?Hbp_P%Pm9eR=fr*uY!M7)iZ=h(%%}>cptHiCLeW!E^Py>UftDnm{r-UW|!TUb#
diff --git a/ui/libs/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/ui/libs/themes/base/images/ui-bg_gloss-wave_35_f6a828_500x100.png
deleted file mode 100644
index 8dc23e251b0505078f3a0912ddf41db6a89bf72e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5854
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
R;LcxOwQ;(FyX1T4zX0?Pvm^ij
diff --git a/ui/libs/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/ui/libs/themes/base/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
deleted file mode 100644
index f9b25ef80d30a7a6f6fa40e7c77dcd78aba85ea5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 317
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&7i
z2u~Ns5Q)o25AEf3aA0V-*e_{PA|fT+A^2utsBza39wB9crJ?W6{k5E{TTy8vDu0%P
zeWCi2JKE*V_dn|99lm;lH99HHr%CRj;q?Qe3)MmzZ6?YZxp&C#57L`*<)qw^(?B~^
zOI#yLQW8s2t&)pUffR$0fuV`6p@FWUS%{&bm64^Dv8k?siIsuDw<n8lplHa=PsvQH
W#I2!yr*sNX1B0ilpUXO@geCxOC}8*i
diff --git a/ui/libs/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/ui/libs/themes/base/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
deleted file mode 100644
index 6a479d12cc304f7c5259a9db8a4827c13d693543..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 367
zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
zw0XKXhG?9BI>C_ZP=J7od~g)E*+$=Uk7Um%7IiGy@^6Xv0k022VsdT*YtE+W*g57e
zNcdV|y;(=+TXOLhh6nuxi$!<LpWI+~sl7BX;r{we)de%z8fQzeUJ2IxP`8TZ+%}%q
zD~iInZrJ+2-@EkY5rqQj+c}F5{IrS{VLJCY>OnXE{r{KzAG1DtYTsG7sYVLuBGnSt
zh?11Vl2ohYqEsNoU}RuuqHAcNYiJf?XlP|*X=QAxYhYq!VDRn9;u|O$a`RI%(<*Um
UXx}NF0@T3Z>FVdQ&MBb@02WezsQ>@~
diff --git a/ui/libs/themes/base/images/ui-icons_222222_256x240.png b/ui/libs/themes/base/images/ui-icons_222222_256x240.png
deleted file mode 100644
index ed5adeabaf07b8784f55c2487e1cc70ee648c7fb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 7006
zcmZ`;bzD?kw>~p;*GP8?!q6ez-AE`PE!`*$gS3D&41$0ljg)kbAe|Bt(kb0i16<zk
z{qDWrcjKS4&pPM#{Pte!tiASgo)xXFsf343i46b%o{F-(E&zZYZh<3A)Q77=wukh?
zfNCqFAp-!_@i<5ev<I8sN?BI}0Q^`102T%S*AI_izX9Mi4*=|#1Ar(T0La|3nsvk<
zUVtstl;i=%;C;)V06_UnMPBBa&)oh;=L8mg-`-$6W(WhP9VR_z3ri{{YsA2TbU}bh
zYKp=Eyi{Y-qkp0Lt$aWJ56m7uv9(tb1h}2^(K0WY1zXU1@*G~)sHI5jH|B#$d$<U_
z4fDg`^5&$g6#-H1w+W1CUXo|K+oy927b9)_fp>Z>7mGn7PXn*T?<I?F#7BKK-LPmi
zde}oNV7=xmSYvKJ;3zwiaau2ypTyaKZ|!q%+6VcNmn7y#7h0KB9wRK~WTM#2EChFy
z{+NltCO(h)y?WJx)HTu~;7`3!-2Qwtaha*i=erF!xG+grn=X+}np+fMDyXV_!g^uh
zJK2u|0u3VgKp~&jMW;o)Fvopi>%_@7(vgIpH~X15*osr6ng+eL8a|4ZKlh$aa-ME{
zpK$&#&)B0v|1rq`d0XL<F%#7`{|N!q4Yi8tQCy0*<NP6;Eqz`Dui{>uFIK0Uw+j!y
z7QP61-d`W|%Jh>sXb2NyQNTHkgJeh?mE|8Rk9zQ@Eq{1iQMZyN8^DXq!EzE22T|f{
z!6Ldya#xN}?f%QWL4lm&H{UtN^4$S0v>+iX^<TdU%q2rjC0-*zdz(ka2UPEvH;|xt
zPV-IH$tQN{n=OvBLg&9!%{T&f)RuS_ff^}k)LSQ?qycN!i9zQkQzS^ejz4E1dnuL&
zDt0wbNO%i+wxqx*b`IVV_;WMSO^5KhZ<^B3${E{n*4|X#1?$Jku!ind-JrnxY<7c_
zo?L92qo6N|yuJmYo8AjX2xACS2Qe1^+p7QDiT4xerXio?L=eyKu00D1c7tEE?FHJ0
z$^4|R{h8a$-k0qO7(($u4CKzY&|^?1c2Z5TAHMM|(-cOJ?%sOwhhO{HCc3G8{_heH
zZ>~bR(0-p{;Nz`(V14>Fv!>gDpeK<U{K%9zV~hw0e+3Rtn>TNX4!_=t1f~b4eRpT5
z*ni7l&{1+F*6Y-2;&lpm=ca6qR*0&3_;2qLQm${-d@bW&Lce-}uKkCB$E(rbsl;UF
z`97_;p3Aa!vx*FK!@wCd!S!3Wz73DrH)9%69^<J}ke1OREfzX#Gt+F;0G)e-F*|Z_
zLiqgAn|Hr9Wbp>h02fo+wxW4Nb^5j;4T=@Uu7S&PLLtXcSFJDbY*Rub+0KpJ3-9OY
z)syve{t&!KHtDXv^Im}ZuUz=285JX!Y+e!?DnaWbwK5KdlKybGa&pW!9o5CA040U%
zKvx#a1f>tPzi=84FT6lN9E861)TwQ~-%IJwxucv*HKymBB-ZA}7vx^?s<vx*)a$1N
zGJWpyiQ(+r+Yz+zbS`|OZeO?Q>yxT;>GQNgH5{+*0t@KMq_bMpYaICnar-^Nu~aL9
z6_?5;V`;y-ZfOH&?Sx;XX|@A8U$k(;lZMf)K7JETm`GuP`J<q+oHS1%=EI;{4VC-T
zIZJ836ajxK_#-<uScWtuIK>~Qk23dNKVx6&C#VEOQe&&~ZTX^p4uiVw(j&EGA`==J
zgx4K&(KQ9az=O2qTWx!j(O}XYP>4=QXRe;^T9LI)tYNdxJ$&$|KsV$gtni5u6g9yJ
zYWkK+eaBR@q0POF#U>IE_AVWxWb72j{@K6(vvp_JjVg4vr8Z-rq`f5WmO>hfj*dRQ
z{&nwXJdD5gnHHMxzsB1K{8#wfdgzB|A8DUqRDH9q^k_PJqv7w}q0{ju#HPl-ufp^X
z2G2KZUhfPRb<Q^})THno9dGwkUtb?{(>n*lDriT^8HgbhbHH$rcHc1DX^1<ny#A(P
zSDqiv`KEq8M9B26cx2B0g*c_C%0i`=Ms5)L*i#z#zW(f(cDFr4v*(_R-ZeQoLq&ai
z?suIjU;T$@I?<{^E^zujRPEu<cQY_QP83dT<_f9jUaX*%?fk50OtA8@hFuXs$+QbP
ziRk3e|GLj?E?obUh9=a6An$<TyO#dD#rf`1{;0Ozgkm#laN2}wiRe*rX#9NJq><1y
zN~6)u{tClTUjS$l`e?Io6rCZ^E0NhoTla&O&eW$uZf#=}IcJOmOU@|?)IXgwJDYVz
z=Q0x;48&E0UUn(FU{`!nUIEk77vDxv-`T;hB|ww}|6au2uP{kFHkR8^(I|i$XKOTA
zGsjd))qdo)uvS`zz7ORQcuWReWXbYE*u`CYsVI;06_!!fNOqymfm-q9!EoD>;jat*
zrVDvxpQYiNDW%f~3a0mVAM(oja{|gppGhp;G&&1*d`l#f#=U?teU03eEyO^rzBWwR
z;`83uneON;w%B*_cyoTG5dYSa-DQP|GV(j=a((kc*!OA0qPsk9&1$mhTOpcMmTs@^
zBcejn5vuT3H6vJgA>&yEt_wbqUr`NXh!>P%hjOlyEedtX+!!$}L&_z-WPJ@V{W0Y>
zX-FOGXTlB}_msE9G*H?g+np$@I>D39Xn>VRzn1i^=gLq&`SENH4Qx-3<zZ_mfdapc
z{(eM6%l`cq?3C@m+A!EG_PqSFO-rjH`ukpD&b6HDRC1w6!dtn|N@hGxVv*MezHz((
z^+3E}_`j42s%SuOTfOU<*+56w{_#>mo9L8`JnX7*#UP{7WZa5Wtpkr?6mt=5lPc1!
zejTWo;a^HB0bTK}*yM?9`mmJ>f!F*D^5$Il@-*_L%OKXpqq`wn<vPePN|<=3Ct@~s
zi`cf(`gHp^a6Xq^G?Q7hPqS-)vFQvGM?77Rf%63P$=w!vyQrxy%%uEN>6?~WHYBZW
z$C1C7A^#wz8(gKmlgJsTcyz_mW#SNN{|h3fnpoGmPdUNf5e9ey;!tL@{zp)fb#i0D
zVSmCD2quL}2c3b*YC|LAg)y_VH5R#=O*e}r!vq+uFylwX(iFv4#jvGrN|!AjCMWd8
z&LWB*gv%m;YjI=eW9E!;{4AC$$SW{}omN_iD5bdFSe<a~>GET#O|^&}*LW#!2R$dg
z^_S~ULjZ+667~L@uy*Wa17&ue;V<E|435%)axSaUXE*u-qE4Fu;1PkzlTkcAPXc(~
z6qPo{JKX^tPMv$(OY1u~A(ELoh+7Jsn*Dc<EUI58vf)x%VP?E3Qauf^Tfs>~)~)eu
zEMRL$g4jLgm(C)SmJ2FJ(S9ipVK=7a0VErY%wx$$oj>``*qC{zBZpreyHOLZY|`xe
zE=VMNx|V$eG$x)q;|B`^SH-i{*@MR<*G->aa$1t)#CHTLGqgqF^WdnDTSN+=Lbyuw
z(=+DsnP+qZLUun}C0-MFpdabLe8#vfa1y4>S`nV*Hb~uTXZfUAKcJD>0GVvkd5V1n
z8RaJs?@uWt;8{y=;=MJH&-@}j<iZ-Fhn2Ce9xB%_(7=&eD|n$5xj$pBb}WMi>Y2sZ
zTQ^5i3--!07rWplT?G~jjxHQ;MajO}1u+&VLA2W<G_XAMxvQFvN*oyB%*~_S46mMi
zP4MT2PvN2vy>jq6j&v;4zVX_Ngo6|GI--GzrbCY+rm}l?NhV~H#R2iK1fq6Turii9
ziGkyWQ|Lz!{W=*u@g;~!6%y}-ZD{M?7rN_tZ_Qcg`n1Z3H=Gs=4fUKLSqcF;+MGY!
z;&{FGn&_?UZ5yXVr}@z0Ln4+2!!eh637wdYVM=I!m-T<1s#VoT@*~+RsEGhqWcaLK
z<6i4_1bcx(ps4L&+S17uR(MCAZCA)!By6?S*YWB=vJce$%05TaBIpzDBE@}1H3E#&
zACGi2kAY4gVmpO{Q!je>wd0Q;E%r5zXWf9sLPA>;pJ4aAa0|ZBaJsR)ws(n+S1ed4
zuezX758h8XX_;Hgr)ZyT?@JZ{Rnfy+K%#pVDNr8OhRb%%7^qu<qX<G%yCTOYdKfWi
z;$*iF?!#xF*xMwf1yjCF6x1k`?t`icxcxG*sLei#X^rPTk)*YVEDR}ZO!e(y$$VMA
zQR;W9pT7U=J|^apXzP?OQ!qx0ZJUso=Uce}KKZ(qXOaf;y>7O^JtL1n4I0Vzx5@eJ
zbh?DtBa9|R_dDO7=j)*6=njQN>MZr55gt=^ZM7hk^f?b79PXL{o%fz_Iu1Q`-mX_J
z%NvqIDD8-FB<%DOM0T7fq%V*zX`jM0H;I<D9`(~Cc|Ooeb-Q@Xp&8A?!8OM0wFvmg
zWtp=AEw@`$5oQ}Udqz>{tLP{+Wr1eQvz6%^MiY>+wC32Vw_+mHjeA3W7<0W6hkVlU
zE%;~`i8IZv&OwJlY+Hh*a3}xZM&?X~d%$x-h*{R)VHF#f)C)$jBJmhX!{gCbiHjR5
z?DRAO6k{08I`RuK*hFPjohWc|j_lEVXADwU%RQ^eDD`vnby3_FKHi_B9|GcWr5Ju`
z!lx2Jafip5vvS(+guIhyZrC6_IqE?iQo?;-Z2_X$8LE|CmR~NlZW`URt2DA@t#bZ%
zop>LDG1U)V)@jXQwlswh^d3<2iODfkigymUWQH&cmvoSWWd#*kQH^v4q=t&%>-du2
z_K{pUkJhb-S>%(oO??aRR`bmw3@k8>c>7+Dr$-MhC|rT9j%Un{HoVwi#wmBC{o2}+
z-*L?wZ;~5esHF|C9|E$8ALtp^FH*ElgnQ<u5;4LQ&wtV7^J5n;0td@$;(dY$(BkOF
z0NDg6PY)9^rP^}QGNE|Sw4D>5n0UNEjocr7ms`iMx#TowWplnVv*6A;t9b3OXPT!X
zAv358`sI3OknGD&d{%AV`@ob*8#M%We(rPWdwxkesSC5Nt*Z>iZu}l2&dt|?7+RC?
z?4!q__$fY@o=O7pDv-0g2m0E8_HQ&+ARb7ZH9FUvP|;|j^L)I;x$)!EFWSWjaS-b`
zdhs2lu7sqtX)Wf&#tWs|mw0AzOZOMbkW0ruRXMi-VexLlbm<<7UrybSyPV7Am)xB%
zC6)TP=4Jb~W}a*aM^--e<A>Z*ST}KnQ*X<p^!B|(VS{gw$AhQc{T%+J;8gF|;N711
znVH9`h^q6H!JkEs1f=X!TVxiJ_J{4A&qs>uUH&|~QOVXH3a8!3jOABhgDPd=H)M7t
z&)!swCpcyM>xYl-k?NwB<PXI%uG{w6L6savMuxt9J?1<n(%jOwUl`;u$Axcr^uTzd
z0i{`VC$*{IXF8o%$3=d=JEurSDbUE~eaeZe2g+KjWZic9AzNka7Ps89ui1J-pUbfI
z8^*8+wpt&r(?au>H<}Ll?%+8nN4g&LQmEqC)D~1qSF+n`o=dttDaNxZ1yOrWR!xV#
zPVxHL#b)*W4L<4B`1gZaz$Mn9jxqtSCT6YG`QSt|Q<Ie7D}kl_>rsH;$u^9rKuIQs
z1|gnkVHojr-dj3dMd)j4Oq0kd1@Sbx;?7b<ECfQ@uFwAmUTP=D)_!B5Gb`mhx^T;J
z?v0icxoUFrHERg1^C|O2uo#Uwf$`YvnUH(UnV?PM<J$o8OB9879jJ^{JtBz<TJp+@
zPp<xCfP*lRS$eZW&f=srBZp*197Vkv4FhS|P&0D9#;4*LBMA-TW!XCIB;LXFH{H=Y
zhU{){r3P-B({J!>4T(6h<B0HR*-{zY6vK5|M0(7)sR^3Q{LuTTV&YFq#zz5vhCiJ~
zeJ_Nmz^qR{8eXxUme(l!=zbOQbBba5R7s!xZD-E&QqeA_^42|n+UV>25OYtV0Z>NQ
zFY0{Mft!Y|P^XxC>+>#7C0|sZ*xxF0J=kWOj#=H?s@~=HYOpv@k;og7$m#C;%xVpH
zPG9s!>T|rhRK3{&gL<%kGQ`(PyXRPCpJ}<O1FdzayV|vUVA0jHMzk{+OvZt<&y#*Z
z5;k-!V!Hkk(P|Ut<0X89!@kLKT1y_!^^B9fLu(erL=%#yb^xj&)LGlxs1Hct@y1O8
zUe*3Cq`6mff*K7^jV|oWmF?0=n6(bj)ewula#}44ZyiL6jaHXC7bMV|a#v}+ll^lu
z^d0Iufz<mHpJ8~(9R*=8OhCD2UnBGJbfXo!e6l<to|gi3BfaRUb#RYrP=O4}DZpBd
zvp&9e1V1qJeBXM20QArQO&w-LtI*3!i2$*WpKpaOaGO_Y+d?i0FI`Qr19ApGdzmF|
z_R_7kg;umG1+M$US{flRwWhL!o$P0~v$zZXDQyV%P7%v`?0b?6`ZsE8N3)Fij%s)B
zr@38364<11$Za6Alb1p^FQ<OstOh$|(F7k<PnPDp&A`GNkI8DUoY<XC64pvuBFa~V
z?b<6Ht>qA=^UC!CdoC`-l#0p5qLvT(NVjp<PGWiTBQ_VZu*VstvjN8M(0UqUFdEY`
z1y~x<yc$ebnq?JXc1Svw7v?OI7*S*{4iPAOlVPk;geCWIMiUP<gN7HkZ#LxFNqu3C
z6mnnMTPzJL#hO%%JELnc98p0@47nun_X{(xUfXx;T%y&$uQ<Fy3?av!Nt$LwL5AW8
zYy$GntG4K5WNGZnsB9vjz_~OBK-mx0N+B;4-FN{A$vgVQ#8C0q?M_Ku(k}ZPY;S&7
z^u><ygYCJvZqNc>^R=FwmcD<(IeHmlY2^cty7g4|zR%li@$rgvp$u0_Tl)UdX-m_E
z@B3UkLM2bDZY05pvLLZ1$NPv3d)pSraqMf-nMCMfmeV0}UxxG_VI!HRGTwggcyL@Q
z7J|#p2&OjV6I~kS`T<o=pDpN{u!wg@3SE)RoZw>!F@sEa1`i8e?;<ao-Fsu>Vta@Y
zR&t%jC{+JjcVZM(%#`kR;5D-CBcZpRvIOreq!EU8@{3!gc*nM5)0DAwHHXfiI9bG}
zqB>Zw+uN)CuA(%i6fIYU5N~@+Gf2^=e9p@aviD6o#IE2m$!WPZZT;{Q?OpX-CTgqa
zPg%<1S*fwFWZ!vS>#U(kM+zC|c~Yr9upbrLD~jJIF^0KIU*y;xh3fn&pt4rf)&R5*
zMJ$*A<`LRFoyRwIluroMutdSXPh)J(WV`+Bi;V)BG(QDliuYuFD^rTM8Y<Yy85Gn;
zm;`t|@uc>AEQ4WuSNAPKI}kMkNW>oawVo8fWss5lXC6*({$Brux?Sq;H=EG|%skz+
zQJ+0~T7B*9lv^t3@j=biQfi-;bj&X;4%V5hM>#eMc8RaZW&YscWa;5EnK(#<^xH3R
znx-FZE=P2Yq6+;_K|uiw|GDVrByEjqcT5Ou9W!W@-}a6C(T|(7GG%0tj&Y$3I@4`d
zWzpj6Wmr_0w#aL=OOVixLJcyH+n}XnCXrE^>CtOVO{nw`{KQA?5k`75Yl+E9C4>L$
z1(FM0b+2JwE;I_@YHsbkLKup4qDrlbcT+ABiVU>Pk8&6bP{9?qpCvjdt-9@GiuALx
zXTRyw7yqW;1lx7EBC+QTN(~6>I+lVQH%maGoIr-)CA4J+pnb5VQCIhfIi0^J5aH4s
z@JtO5grY!Em%*Ak<qENH2Tc&{2*-B~$vA7l>7YvXfeye&k25$qxW!$e8Y3$A0F;!{
zJ2OC3Z{NjG<`1|B9@`c`TRS`m@RDp{`t_e<3dzXz(A}eB5vQ@95{7&)-vJmi>`3S}
z)w%J(CmC6oT_w!$657%2TkMV7*9zK%Nel#5bjEG))Ey@-2_0yyipVT&9SXf0EsMlk
zq<c_HwFdu7HT#S1Q-GXqK$EGXCvng2@VeWBZ__SruF<(Fqt>|)^>osvO<Y4J9UHgp
z?J|Q;)+VPx^IdgG>wF^{KQ8@EuV|1Z%)vOeMajee2@A2q>|?y&O4n%9IOdAa3wXNl
z;?46+DW3I)R5Q*`bXU&Pu4Nrh@3AZ_K0rHEvMa-{OV#qoISgoU=SWqBjBi^|_hj2d
z8(prTSNj`fofa*d1lrs@IBH0I&w{>_P+)Je-pu1nZ(dQ$z-|MJ{;-bfaq#wfe`97`
z?+*G;!Gt!X^z#p8;JuAZEbWfKw`V?rzBOyEpYO5>mus&T){kBs+@D~6k$6jSweeeD
zwXZUuJW0x{&yhb_!Y*Nd<BbcOUa;2KE`vGf5}1mFJ?z8wAP=mmW;eYn7m27Zk>ekO
zxf^hH4rK@kB~a)7ptvP-gREk^mrhQQnlqnPe<x;5vi3e!Vkg_BQ&q|#Wft<C`lC|8
zUC!B|q1|y^&O$`AoS+?o8VOlCc|7pT9;LqSN=`1w_^O-uI&taEZT)rT30bINYATBC
zR%QE6Qq(5MpfR=q!aUgYF>q&qZlj@K_%YpTs3Ys)#W~)KmncM_Wjc{iy+#p9zbJ(}
zb!9`tyNj&B?UE<Iy?uC!vg;E5{+PIjgyU{Lj^_WDbh;iVbC6j?P&A(pmUmoMzTU6m
zdu`g(J0?R5-YGe#stfb;cF}G@B>*XaXCOZCE=6DBY#EG9@ayVUlCVe4x3rWHEFQ2T
z+It?$6eS|jGfZAFb+}Lfs6{SZNu^H?p&YLJeSVX8XQ4v~?3)r6GzeeuAGmM@1xjb!
zf+I{1bU^=)9R8CVG#4aWOh$;M9h}W&{Vt)TeY#~hi4f?_XOsu;y}QSwtZxz1y+6q<
zYa*g2HjlP8U81*WX=%Im$DF36|IBs!BvSiYk4d*OJ0kk}mS0+n-Vc?ldMN2+5gWGA
z+2H|yqncVAoUYTpmjm)cO9TpO%?(RGteZV09#U3X_qp3Qxhfr3IKPp}#UPwU|4DF0
z%QqbB@fH1QI2X=Z8Kh6sdVK>-)8<O<-FT<y1sf-i<U=C1x#-QG-m%FQ1l{9~p+w0^
zXWGok%{E227nvc?iXT+f+!dpa2YD)c`5xp4|BhVJJbe4mZDR3KF!Hjt@UjuL^00Xr
z06rdG0WMx1E?%K$yu6~k0;0T6xp)Lbd3fjonI2kI{{nD!wYGod`!|3`kc;mh00Ci9
ze%`+Uakr1}9{?18&7kM{%FElr!v>JCcD1yjS8=wmwb8Y)u=aKDxB08-1*j-!%2&vm
Gzx@w(&o~JH
diff --git a/ui/libs/themes/base/images/ui-icons_228ef1_256x240.png b/ui/libs/themes/base/images/ui-icons_228ef1_256x240.png
deleted file mode 100644
index 1e787bb98f072e1080b4557a20a86cd79b814040..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4599
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
G^#1@bXoG10
diff --git a/ui/libs/themes/base/images/ui-icons_ef8c08_256x240.png b/ui/libs/themes/base/images/ui-icons_ef8c08_256x240.png
deleted file mode 100644
index 5dcbe012df24899416caee1a55d1bdf6c22fd837..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4599
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
GV*UpY-FO86
diff --git a/ui/libs/themes/base/images/ui-icons_ffd27a_256x240.png b/ui/libs/themes/base/images/ui-icons_ffd27a_256x240.png
deleted file mode 100644
index dd39c1b25bbb7734571820d7890a0401c2b70d53..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4599
zcmeHL_cxqfw0_?iy_ZC<kxUR}^dK00^k^Z18NEgMbfSzBB}EHD_+(OaLPQ^Bh%O<~
zMJEKKMVBzH<oo5`|KUFCth4tyYdz<z_3XX&DT%iYwP~q1r~m+<)j?{Q004O50y`AY
zi+(~!_vFHmxTqSa0>JxZ>Qg(?i!q-A(!>A&LSX=ai3NaP7gLy300@8sz&aWL6tVz-
z)hD;n_}0Z@jJNg8G|z`Z|G)ij1(fV>=v=5~<!@qW3Rr4~U6IUMXzmYk&aFx;$+t2L
z{ef_LX!=+yHQm9^0PE_R<JTIFZ(1r}Ui%)EWHUE2-!L{c)G<0TZvV}PNIQ`2c6?Kq
zg{w2<Yhll`FB26zpHmVlaowd$kNYmd1Az8=+8RItDK`=T=sk2aRLz3FZQ4*fOw}@y
z^&(5wveGyk^m1-`HN*U5#d~dS#sfS@3Otq+ig9lVq37rEH1pK)inlsU3S2o~-tX1M
z09#976BKbb;R1|&QI1mv6IDdGFIlLZIM_<0bVfMwWHQ)CVbM&8DTlYEBP6^a`ZA^v
z;u~@D0}E3XO<_*?a>%x}PbCRiU2B45%Co0{V-Yy2JpTbKU&C4cl;rhUeNNI3=vj@>
zsD_8Z74SO12pU%hC<>J&DnlkF@%kO63KDG#-58nU`VkzksrGS>v^FVci$YW5FP^YH
z-=g%Iq}R2qCL0McT4k5UG0tBvgUp2iISgs}^ty@p;1eJ-%31DXXRJAba!2EN$v%G!
z|5(I>$4b4K>=_+?jTHKznhqX43{FQs{OtVH)${2IrbFcO_?uc!@XpmdmZO*S^Gc4T
z4hXjKGcg9n|L|UE-|sZ$om=JUY?SsO1S4Lk7C+rQ)m;azBqP;@o-@AV(ILz0yv1$p
zc1YDkTlw}Ep)O-yAR+%ldlp%f0$<`h@;;l>aw;=Eqh9OmmUSEh7zUv@<%l&pa+J7S
z=J!nghLob{m;RSB@#C>g+{g)$Sh$z`jQ8sWj>aO^jipQ_jd>&bbfg$Li8vAqVHi`G
zDV}Pfw%$Eim~#A2n+^lbbI)R>nI|1poHI6WKhx8SnUj`mk6~(rce?lPdyWnP>0&#J
zBOJE>_HED^;v1U=IeQ=Zk9#M27eiXA+Cq&PRUqO<yJJ?exa+nM$b*j$M?Zzp1fS@M
z3@b&gkqhK{wlAyz_Y|+QbhO*)Ne}Q$GI&Vi^W2@X(hUdeCNRJKwEz#$J1^T1XPE^&
zfaX5;DR*Rn<0vcNmG4~+{XvSh!T6`5Su2lrJF;UWHfFf+dzLi%S)>%TYP@_Hn&_(;
zw0f`DxvW~3IZmE!misW&8}9H_0(l|Rd*D=rGVID9*pJjt<8B6-^}MOdl#(S_#y*bm
znp9k;Kcz?_mbswE#;nAza}0l)zcksG6uD5Uh}mS33-5OK9NO~_#*fxH0tJ=u*GA&}
zXz>r?;MNaZ|JA`G=){WDrvvvfTa?e2T<Ukja)t<IuSN=_$O7EE@p|6kTJ5MCU-A4P
z4d+|F_thy6aTtS3P2m$J9RD)>+`9Xo34!bA`lzT>RNPC#@^ALw(Y>KWG~qCdq00!9
z!mw~=H?Uf{ntn@yDZy4f2cxz}Pds_!kwAEd`V+X01Fg_bZ%39oXjs4b2q#hISF)QB
zzVVZND9X)8hQY+7$l{W{*<=3uget_(M<y~4FOjM{hdozw0u@>-#iFDj-9w%jZE^nx
z%_DOO12hoqm9_+z;)DYOv^9xk=A68$P^u7kY-(vQ=P%-ho3L!ebFkoda};HTqq$fR
zM>nMXleHoX1UR8cIs%PBNqKA%m`N-7Mj~<srryq*#Lv5Iv`H1UEdCH|z3~AG%}w%R
zO`L^>BejqSl>b+iKOtFk<~NN{tBoMuV@|xMUgIUqDVOuhw~2XY8eQm{VJ++|Ex)(-
zkKT8np<a^;;j*FokHt;L7lK~neAlIg+iZ>XQ$JV`JsC_IHT_zCH!!l+#8Ioy)pnXW
z-?)bh2pwM6p?gO8o%szIP0H+FQEpyD_sLVHR@KV*k{hX7&nG@W0_fAY-q^(*1Kizj
z(IDumJAm&Fwn}c=%#*;jTON?Z!T#l;bCNhbNdf@k$fB@j+T>UHDPeEju{y_5(ftrK
z)vCI=bux(IaIHSZ-a11t?`%E5wMtObKR6Pb;@QsZ1$8k)=i&MoHxs@CIZqm8<S4ay
zutl32_**w1Yl{$qDXTuu1k9CR*q1&UChZgR+2+}T=<$n3g?StG^o>_sMXW{sCjRz<
zF!>^Qbkfd99>RTsgI9T=Xp|)1K{rXdiYU0ump~DW9f;V$%KMnnMr&(u`$Mi{lwR{w
zfV_(*i6@J-VdB;#U#J$|Fcq~gEjfIF^@;FJy)<0T*@EP6z~<}K!ufg^ns2p2<s-Bx
z0{BDb>z1hrimyoYDL}L(-kPw@j}_foV(Rz~69q>gRcB0}uh~l$Nd!`9z5KLyD3&63
z@WYULo+P#rFs$gpzy3VUl#+c=(`g<7GzoC=u`o2!-r3B~@q=f#1VAlr!dFFo4o-n<
zSVt^Fj(Vo3uK&&fTYLe5X@IV|AR|z&B=T>1_x#*>rJ_W--6V_gBnYS$e4No<_FOj>
z7;6jUbQtsqna#V`0K<9otDPoQ7w*iCJ5~oE=z6DQ$5i^Ip;F75dEZShZS=qfgRHa%
zbTtc-RZ47r#(^PKkh^Y@N;%dI(H{My2d*-L=~B;Yj}FcLQS2Vym%ux`ZuL#4t0DHu
zdA~t5D(1>NLn6dc59(F3n+DkXyvt~ZCe%(<b04WJ9?L#g^Xh3&r-zXv?`)z(tZ8Gv
zO;#*-&8Kwsc8Qs6D%_D`@$~PcEOI7i0F8KVg$JI4FJ$}PhP%`&*+PgUk(m{(XwnRV
zkt0`F&qQ#V>0Dighl_H}_)#U}*PHN|=7-<0Oo1=hbGTW-13`=knx05S9}x4F=-MZC
zAB<#vnb1lQ%6G5_yE`CBiKHS=Ce#lx?kVm|_e|yrGxpu4@RC{G@1aE!2m&i?zBh(m
zB~2VhtSL;QM83)maQ_~OciBBKs&;5!UCIxO?-6X?Xl3G+r*M6Z8*ycL&l_czv<uIE
zq%L54mBcaD?sX(ip#3V)`!douDDVh{8rh97o!$!FZEp&V4v4bqT3qV3x>Gwh5M)Kk
zK;oW!TX_0e8Uoh9J4!ni1lDvS>l<U&x8B}t6-gl8!Wg|LF0MWIJ<f?dslJ9dJRk8>
zHuWDMGxkf%FxX{Q!5BVZo;;+5D~G5a6xOL4d#(@lE<eI=zE<M3q$KnGht$}gVuzMj
z@NZS8&RR@#TkdO<=-;zG59z%}ZN3W5;&}JnRH<&9w6xc)FeBcr{N5S0Kt<A`uqzuv
zXL>y<ThsB^jpm8}!v5W;b1mR}aT0f@fc)G1(_aSip9+Rq$)H4WR%$!`{yyVs%CxA<
z2VL|vKMtO@x7OTfe9;GC5vg|@emaq^<Y+@)p^)s)EycdE+Sw+oN^a37VcSOC?=^|i
z!T8pEVb?v{9hU|S@O5)ak;Iw0MkQ0Q6H>8p8}dX{;I^UGD_Z*Eq5@%)O%E4$WirMc
z{qoTTDvL(}te|w$_w}^>Dn0(kRvA@eDl&WOZUo%snz+*tO+zW1pHuSFUVp&tbkJ;G
zXh}Xw6s_F-dvx!E)MZ<D$Xg=BAj-JQtrE?em{_;zeIHmu*|a&+9Mc3|n|I22CHQ1-
z0dIs)J>5f|N%!{Q3w#npFd7wud7CPVG0$r8tR(>-J~JXj=YN}cIWN1P)kL3^bi4{_
zgwYJq)6vn<K-O>E3+K`e6N~JLi_h?*xv6N%4bVr67Yt95k*i9Qg`tu`8K~}gJB9Xk
z(IL<Ju*CzPXtvv=+^_5^vYXuYe;+UXif2pkqsel1adGj9W5?FD8O)LLlqTMt;o)d3
zU-472yQYmedFD=rKXxTfd(wTGLc1|u<8lD>FT=rFkBN97y1MBwnNtN{rTvA=F2AM;
zIf^`K(ou>`%R&*Z^cla&gk`@N>VHAYIdg{DTv{D16}T#Pc*$aIFH_<hy4FwfB6D7|
z76b?F6L?1$_C69k<=he0fOU0y^5>%8OSL&NY+FJB+oSD-^`tkmHMAmjiAKlCo!N{z
zQz5k?C#XYlR~zdhVEr}AtSe-;T0UV4y(d6rKzT0|OI}2y7hr@6?QhkXF1^$eFI@PJ
z+`~wh{?a!=2&Y`eY2fad^}kM|v^p3r(2OG7&djUUE{U~E`0QZU-frD{su71|wQQ~1
z-7HVFYtV!|S_x(Kf=~@DgNCNLaR+sbDI73UFX@+T3)QL!vi@b?n?@ElHei^SG5gOO
zIb-a-so4S<L};<0t_33t8L;`weP+kh__gM4jNKa<g;k}|Mbq5GTn#q(@me@5gFT+#
zr}*+aE1%hfAC}q*Wa#3F)2+R7GJ;C6+uh)kVc98o!Q`VqxB7$xJuOiAXB8;5*i&{8
ztHHamar>-Iz*ZSV2*N1@hfQ){W#zAb?!l_9XysXCPcL|?hW&`Xrrw|?%Ll?pVW7Fy
z)XMHI^1ziW2FM+t#I{{|NduQ#qEiEAY4j-t3su&&GI^z@R}`QywDVV?viJO6yXWL(
zns^LLB?}0>hp%)1I>)*(QQMHP7Ki?zC`L3c0`d2t_#AgGUqwjTZ-qn<xi)9gZTos@
zf8|*pa0#7SV}G#kF6J+TkGkYu%|(7O=i$DyqoRXB;GSK+A=L$hSD9^(Z^M#lg>tEW
z`tck793CrGXaD+QaNJ!JM$UXP>@^n$^;5y6wWVKQmtik{kTd#w#c2O>A1gL+YFnN{
zu$4n}(z^vk&xB+Oz@{FJ>P4RC=|0y^J4<D{ZH4I&YFTu*wq(aWV+2uVt_DqSZYg}~
zdoT~#3`uQUy+l_?2YENcmj%tu%U!f<eUbEqU+Dg^iggn0$-^dPR*T)@lfTl>Vh71%
z9UBu%N~ddDT6`(?PcSL^bzcKAaAV^ZbheSMKSQ~*z20sJ2bEV;aFK*7&p#EzrVeI!
z2ix|K-uWhZW_|;j@lfjQsbS<&844q3v$=Y8ExHyp|ARXWumP)mO%sYNVg?6)uKNh8
z7`dDrFg1vBSL98qw7Di9FF!}cPV(>%j9H_g`}!5?cbboKrP<^XmRa@rBO}xhl}fKq
z0(x9Bh&cl2sFs)kHO%IR$7*fAL|GO;V5E%KT4linF>FhC>Ep!sMv7R9{XikrUDLag
zK4UBN(aOAN_K_E=x9RQuQy{`Pa&rQo4xuonEPHlmDb1YMb(t@&<>^85)4+_6Y~NDX
z2*`jxPR1rdHz-5kPx-%c<yH}Qyxucy`rUKr$6cALz$r<(co}wwnQv7^iA%1e;wnk9
zK1KA(=WEX*Bjo}$sOx_^;0;=-|76Yu?sN2x{v?UU@$nN{zRK{Q^SXXQYGBJf7!Val
z=0lOpEQo_<lV3S3x4pc@QFM@RHFBn?81;a|8g6J6Spo6*k;N|*H|MGcXih9GjYLt`
z@BTV!roOq~TI+xStj<dvpsLiXko=%MPDTmeQ{JS<1>r0+@kSSK@N52>mi~@*{!R)G
zzD^egkc3M}i%P&nC1lMcBorj16(r<E;nE6lIB&QB`u`9-y&c`0L;fScWke<a5~Sr6
zq$K_$JUtUUzaX&x*}>G?*+0n6*9lN{^tN~6)A6)(aWZkTa}4>X*XiOn1^{$44K?1W
Hp`-r?FR{ND
diff --git a/ui/libs/themes/base/images/ui-icons_ffffff_256x240.png b/ui/libs/themes/base/images/ui-icons_ffffff_256x240.png
deleted file mode 100644
index 39e64723fe6a862f00d5e2578110ce781288070e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6468
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
diff --git a/ui/libs/themes/base/jquery-ui.min.css b/ui/libs/themes/base/jquery-ui.min.css
deleted file mode 100644
index 91f16a3..0000000
--- a/ui/libs/themes/base/jquery-ui.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.11.2 - 2014-10-16
-* http://jqueryui.com
-* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdan…
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file
diff --git a/ui/pages/error.html.tmpl b/ui/pages/error.html.tmpl
index eea1179..c767ffb 100644
--- a/ui/pages/error.html.tmpl
+++ b/ui/pages/error.html.tmpl
@@ -27,7 +27,9 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
<title>Wok</title>
+ <link rel="shortcut icon" href="images/favicon.ico">
<link rel="stylesheet" href="$href("css/theme-default.min.css")">
</head>
diff --git a/ui/pages/login.html.tmpl b/ui/pages/login.html.tmpl
index 12ca69f..91465b6 100644
--- a/ui/pages/login.html.tmpl
+++ b/ui/pages/login.html.tmpl
@@ -30,11 +30,13 @@
<title>Kimchi</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
-<link rel="shortcut icon" href="images/logo.ico">
+<link rel="shortcut icon" href="images/favicon.ico">
+<link rel="stylesheet" href="$href('libs/jquery-ui/theme/base/jquery-ui.min.css')">
+<link rel="stylesheet" href="$href('css/jquery-ui.custom.css')">
<link rel="stylesheet" href="$href('css/theme-default.min.css')">
-<script src="$href('libs/jquery-1.10.0.min.js')"></script>
-<script src="$href('libs/jquery-ui.min.js')"></script>
-<script src="$href('libs/jquery-ui-i18n.min.js')"></script>
+<script src="$href('libs/jquery/jquery.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui-i18n.min.js')"></script>
<script src="$href('js/wok.min.js')"></script>
<style type="text/css">
.topbar select {
diff --git a/ui/pages/wok-ui.html.tmpl b/ui/pages/wok-ui.html.tmpl
index 2dc4d7a..66b2e99 100644
--- a/ui/pages/wok-ui.html.tmpl
+++ b/ui/pages/wok-ui.html.tmpl
@@ -29,14 +29,13 @@
<title>Kimchi</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
-<link rel="shortcut icon" href="images/logo.ico">
-<link rel="stylesheet" href="$href('libs/themes/base/jquery-ui.min.css')">
+<link rel="shortcut icon" href="images/favicon.ico">
+<link rel="stylesheet" href="$href('libs/jquery-ui/theme/base/jquery-ui.min.css')">
+<link rel="stylesheet" href="$href('css/jquery-ui.custom.css')">
<link rel="stylesheet" href="$href('css/theme-default.min.css')">
-<link rel="stylesheet" href="$href('css/fontawesome/fontawesome.css')">
-<link rel="stylesheet" href="$href('css/opensans/opensans.css')">
-<script src="$href('libs/jquery-1.10.0.min.js')"></script>
-<script src="$href('libs/jquery-ui.min.js')"></script>
-<script src="$href('libs/jquery-ui-i18n.min.js')"></script>
+<script src="$href('libs/jquery/jquery.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui.min.js')"></script>
+<script src="$href('libs/jquery-ui/jquery-ui-i18n.min.js')"></script>
<script src="$href('js/wok.min.js')"></script>
<!-- This is used for detecting if the UI needs to be built -->
--
1.9.3
1
0
From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
The Tasks collection and Task resource are basic structures from the AsyncTasks
feature and will be used by all plugins inside the Wok framework.
This patch-set moves the Tasks model and control from Kimchi to Wok, update all
model and UI files from Kimchi to use the new structure and update the tests
from Kimchi.
Paulo Vital (3):
Move Tasks to Wok.
Update Kimchi to use Tasks from Wok.
Update Kimchi tests to use Tasks from Wok.
docs/API.md | 30 +++++++++++
plugins/kimchi/control/tasks.py | 37 --------------
plugins/kimchi/docs/API.md | 31 ------------
plugins/kimchi/model/debugreports.py | 2 +-
plugins/kimchi/model/host.py | 2 +-
plugins/kimchi/model/storagevolumes.py | 2 +-
plugins/kimchi/model/tasks.py | 64 ------------------------
plugins/kimchi/model/vms.py | 2 +-
plugins/kimchi/model/vmsnapshots.py | 2 +-
plugins/kimchi/tests/test_host.py | 4 +-
plugins/kimchi/tests/test_mock_storagepool.py | 2 +-
plugins/kimchi/tests/test_model_storagevolume.py | 8 +--
plugins/kimchi/tests/test_rest.py | 22 ++++----
plugins/kimchi/tests/test_server.py | 8 +--
plugins/kimchi/ui/js/src/kimchi.api.js | 4 +-
src/wok/control/tasks.py | 37 ++++++++++++++
src/wok/model/tasks.py | 64 ++++++++++++++++++++++++
17 files changed, 160 insertions(+), 161 deletions(-)
delete mode 100644 plugins/kimchi/control/tasks.py
delete mode 100644 plugins/kimchi/model/tasks.py
create mode 100644 src/wok/control/tasks.py
create mode 100644 src/wok/model/tasks.py
--
2.4.3
2
4