From d32dd9c0df66e8896953de4334a97461042e851c Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 17 Jul 2013 11:19:19 -0500
Subject: i2c-tools:   added package

closes #926
---
 abs/extra/i2c-tools/PKGBUILD | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 abs/extra/i2c-tools/PKGBUILD

diff --git a/abs/extra/i2c-tools/PKGBUILD b/abs/extra/i2c-tools/PKGBUILD
new file mode 100644
index 0000000..448c745
--- /dev/null
+++ b/abs/extra/i2c-tools/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 92028 2013-05-30 23:36:57Z seblu $
+# Maintainer: Timothy Redaelli <timothy.redaelli@gmail.com>
+# Contributor: DonVla <donvla@users.sourceforge.net>
+
+pkgname=i2c-tools
+pkgver=3.1.0
+pkgrel=5
+pkgdesc="Heterogeneous set of I2C tools for Linux that used to be part of lm-sensors"
+arch=('i686' 'x86_64')
+url="http://www.lm-sensors.org/wiki/I2CTools"
+license=('GPL')
+depends=('python2')
+optdepends=('read-edid: for decode-edid script')
+source=(http://dl.lm-sensors.org/${pkgname}/releases/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f15019e559e378c6e9d5d6299a00df21')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make
+  make -C eepromer CFLAGS="$CFLAGS -I../include"
+  cd py-smbus
+  CPPFLAGS="$CPPFLAGS -I../include" python2 setup.py build
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make prefix="${pkgdir}/usr" sbindir="$pkgdir/usr/bin" install
+  install -Dm755 eepromer/eeprog eepromer/eeprom eepromer/eepromer "${pkgdir}/usr/bin"
+  cd py-smbus
+  python2 setup.py install --prefix "${pkgdir}/usr"
+  rm -rf "${pkgdir}/usr/include"
+}
+
+# vim:set ts=2 sw=2 et:
-- 
cgit v0.12


From da25f596344b30020862f0d32e5ae2d78efabfc5 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 22 Oct 2013 19:26:24 -0500
Subject: LinHES-config:  autocard.py increase default timeout for discovering
 infinitv to 15 seconds Added some extra try/except to autocard to avoid
 abnormal aborting.

---
 abs/core/LinHES-config/PKGBUILD             |  6 ++--
 abs/core/LinHES-config/autocard.py          | 44 ++++++++++++++++-------------
 abs/core/LinHES-config/discover_infinitv.py |  2 +-
 3 files changed, 29 insertions(+), 23 deletions(-)
 mode change 100644 => 100755 abs/core/LinHES-config/autocard.py

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index d4983bb..b748d65 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.0
-pkgrel=11
+pkgrel=12
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -152,7 +152,7 @@ md5sums=('c832059cd635359d39a2ac3166ff463c'
          'ab2aa42c2947148c2b1cac0ade6d1d55'
          'd429b59d3cfb37b0624c6a4a71a7c2c0'
          'f6a935c35123fdc7c259c01cbc794a64'
-         '5e865cc04fe5de8a39d9c1e377fc4ebe'
+         'b3ce302473883ca118d4a58f1b1306e2'
          'd3490e93f313bbbcbc6c3693c56b9c17'
          'e959df98947eb0d2ea64ff616b61aab5'
          '2506860a416e1988934225d80d501c2c'
@@ -181,4 +181,4 @@ md5sums=('c832059cd635359d39a2ac3166ff463c'
          'c9279fa095af624ee3d9bc75d3328360'
          '02cf69074d2bbacef05fa3e451af9af3'
          '85d15efc55074a94c58d44542ea1dd13'
-         'e410d108ed4778dd898dc68fad4e8828')
+         '062d191eb9717a40c7bbc2d6c194db4a')
diff --git a/abs/core/LinHES-config/autocard.py b/abs/core/LinHES-config/autocard.py
old mode 100644
new mode 100755
index c461714..19563a4
--- a/abs/core/LinHES-config/autocard.py
+++ b/abs/core/LinHES-config/autocard.py
@@ -766,20 +766,21 @@ def gather_ceton(tuner_list):
         command="/usr/MythVantage/bin/discover_infinitv.py %s" %iface
         results=os.popen(command,'r')
         lines=results.readlines()
-        #try:
-        if lines[0].strip().split()[0] == "no":
-            print "Ceton not detected"
-        else:
-            for line in lines:
-                #Found InfiniTV. Location URL: http://192.168.200.1/description.xml
-                #cetondevice = line.strip().split()[0]
-                cetonip = line.strip().split("/")[2]
-
-                tuners = [0,1,2,3]
-                for t in tuners:
-                    tuner_list.append(infinitv_tuner(t,cetonip))
-        #except:
-        #    print "Error finding Ceton InfinitTV"
+        try:
+            print lines
+            if lines[0].strip().split()[0].lower() == "no":
+                print "Ceton not detected on %s" %iface
+            else:
+                for line in lines:
+                    #Found InfiniTV. Location URL: http://192.168.200.1/description.xml
+                    #cetondevice = line.strip().split()[0]
+                    cetonip = line.strip().split("/")[2]
+
+                    tuners = [0,1,2,3]
+                    for t in tuners:
+                        tuner_list.append(infinitv_tuner(t,cetonip))
+        except:
+            print "Error finding Ceton InfinitTV on %s" %iface
 
     return tuner_list
 
@@ -816,11 +817,16 @@ def find_ceton_network_list():
     for i in netinterfaces:
         if i.startswith("ctn") or i.startswith("usb"):
             #configure and start ctn network
-            config_ctn_network(i)
-
-            #read ip
-            ctnip.append(netifaces.ifaddresses(i)
-                        [netifaces.AF_INET][0]['addr'])
+            try:
+                config_ctn_network(i)
+
+                #read ip
+                ctnip.append(netifaces.ifaddresses(i)
+                            [netifaces.AF_INET][0]['addr'])
+            except:
+                print "    * Error scanning network interface %s" %i
+                print "    * Please check that the interface is ready and configured"
+                
     return ctnip
 
 #--end of linhes specific
diff --git a/abs/core/LinHES-config/discover_infinitv.py b/abs/core/LinHES-config/discover_infinitv.py
index 5c39c59..421ba84 100755
--- a/abs/core/LinHES-config/discover_infinitv.py
+++ b/abs/core/LinHES-config/discover_infinitv.py
@@ -74,7 +74,7 @@ if __name__ == "__main__":
     try:
         timeout = float(sys.argv[2])
     except:
-        timeout=5
+        timeout=15
     L = find_the_infiniTV(interface_ip=interface_ip)
     thread.start_new_thread(L.listen, ())
     time.sleep(timeout)
-- 
cgit v0.12


From 918df9d5e5067a5a2feef1ee5de5f41c32291526 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 22 Oct 2013 19:30:00 -0500
Subject: LinHES-config:  autocard.py increase default timeout for discovering
 infinitv to 12 seconds Added some extra try/except to autocard to avoid
 abnormal aborting.

---
 abs/core/LinHES-config/PKGBUILD             | 2 +-
 abs/core/LinHES-config/discover_infinitv.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index b748d65..4e8126c 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -181,4 +181,4 @@ md5sums=('c832059cd635359d39a2ac3166ff463c'
          'c9279fa095af624ee3d9bc75d3328360'
          '02cf69074d2bbacef05fa3e451af9af3'
          '85d15efc55074a94c58d44542ea1dd13'
-         '062d191eb9717a40c7bbc2d6c194db4a')
+         'fc46639bf528057338881047ed1498b6')
diff --git a/abs/core/LinHES-config/discover_infinitv.py b/abs/core/LinHES-config/discover_infinitv.py
index 421ba84..c9c2ea6 100755
--- a/abs/core/LinHES-config/discover_infinitv.py
+++ b/abs/core/LinHES-config/discover_infinitv.py
@@ -74,7 +74,7 @@ if __name__ == "__main__":
     try:
         timeout = float(sys.argv[2])
     except:
-        timeout=15
+        timeout=12
     L = find_the_infiniTV(interface_ip=interface_ip)
     thread.start_new_thread(L.listen, ())
     time.sleep(timeout)
-- 
cgit v0.12


From 66749c2b24e28a61cab66eacb227c5ffec354f45 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 22 Oct 2013 19:34:07 -0500
Subject: discover_infintv:  meant to use 15 instead of 12 seconds for the
 timeout.

---
 abs/core/LinHES-config/PKGBUILD             | 2 +-
 abs/core/LinHES-config/discover_infinitv.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 4e8126c..447458e 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -181,4 +181,4 @@ md5sums=('c832059cd635359d39a2ac3166ff463c'
          'c9279fa095af624ee3d9bc75d3328360'
          '02cf69074d2bbacef05fa3e451af9af3'
          '85d15efc55074a94c58d44542ea1dd13'
-         'fc46639bf528057338881047ed1498b6')
+         '7acbd2064db905e76372a0618b24a6d9')
diff --git a/abs/core/LinHES-config/discover_infinitv.py b/abs/core/LinHES-config/discover_infinitv.py
index c9c2ea6..421ba84 100755
--- a/abs/core/LinHES-config/discover_infinitv.py
+++ b/abs/core/LinHES-config/discover_infinitv.py
@@ -74,7 +74,7 @@ if __name__ == "__main__":
     try:
         timeout = float(sys.argv[2])
     except:
-        timeout=12
+        timeout=15
     L = find_the_infiniTV(interface_ip=interface_ip)
     thread.start_new_thread(L.listen, ())
     time.sleep(timeout)
-- 
cgit v0.12


From f9d04926bcbcb516204e648e4b2d5350042c8b7c Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 28 Oct 2013 19:51:22 -0500
Subject: LinHES-config:  add balance as a install dep. This is needed for the
 ceton proxy

---
 abs/core/LinHES-config/PKGBUILD | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 447458e..7a22626 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,12 +1,12 @@
 pkgname=LinHES-config
 pkgver=8.0
-pkgrel=12
+pkgrel=13
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
 	 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted'
 	 'python-pexpect' 'python-netifaces' 'xcursor-vanilla-dmz-aa'
-	 'python-iplib' 'mythinstall>=2-10' 'sudo' 'setserial' 'udevil')
+	 'python-iplib' 'mythinstall>=2-10' 'sudo' 'setserial' 'udevil' 'balance')
 arch=('i686' 'x86_64')
 
 source=(mv_install.py 09_mythvantge_runit_grub
@@ -19,7 +19,7 @@ source=(mv_install.py 09_mythvantge_runit_grub
 	install_db_chroot.sh
 	restore_default_settings.sh
 	myth_settings_wrapper.sh
-        xconfig.sh
+    xconfig.sh
 	timezip.py
 	soundconfig.sh
 	LinHES-release
-- 
cgit v0.12


From 47df7f529d55ec2b1fea504e450a44b2a1dc37b0 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 28 Oct 2013 21:43:01 -0500
Subject: ceton_infinitv:  remove part of udev rule that assigns an ipaddress
 to the interface.   It's a network interface and should be handled by the
 network subsystem (etcnet)  not a udev rule.

---
 abs/core/ceton_infinitv/98-ctn91xx.rules | 2 +-
 abs/core/ceton_infinitv/PKGBUILD         | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/ceton_infinitv/98-ctn91xx.rules b/abs/core/ceton_infinitv/98-ctn91xx.rules
index dc91d36..c690c4b 100755
--- a/abs/core/ceton_infinitv/98-ctn91xx.rules
+++ b/abs/core/ceton_infinitv/98-ctn91xx.rules
@@ -1 +1 @@
-KERNEL=="ctn91xx_*", MODE="0666",OWNER="root",GROUP="root" SYMLINK+="ceton/%k", RUN+="/usr/LH/bin/ifctn.sh"
+KERNEL=="ctn91xx_*", MODE="0666",OWNER="root",GROUP="root" SYMLINK+="ceton/%k"
diff --git a/abs/core/ceton_infinitv/PKGBUILD b/abs/core/ceton_infinitv/PKGBUILD
index 758a344..bc37ba9 100755
--- a/abs/core/ceton_infinitv/PKGBUILD
+++ b/abs/core/ceton_infinitv/PKGBUILD
@@ -3,7 +3,7 @@
 pkgname=ceton_infinitv
 _kernver=3.6.7-1-ARCH
 pkgver=2012_1116_1219
-pkgrel=2
+pkgrel=3
 usb_pkgver=0.1.0
 pkgdesc="Drivers for Ceton InfiniTV4 - pci/usb "
 arch=('i686' 'x86_64')
@@ -41,7 +41,7 @@ package() {
   install -m755 ${srcdir}/reset_network.py ${pkgdir}/usr/bin/infinitv_reset_network.py
 }
 md5sums=('7c56167bfa89d228bf170962bc42ac01'
-         '104092cdb5bfc54ddc53f768bff7937d'
+         '554f2c1bcc5d7169659f0ad3d8a513a5'
          'b5db78e2b9cccd65d6ea4c88dd028ace'
          '9f95a08bdd8c2a9e8d62e7daf52a90f6'
          '3fc4c4981d2dab54b297f17564b7729f'
-- 
cgit v0.12


From 6bd77fa3031bdd4f6a73dc7b23e984d6428e25a0 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 29 Oct 2013 14:27:32 -0500
Subject: supplemental-web: replaces local-website

---
 abs/core/supplemental-web/PKGBUILD                 |  3 ++-
 abs/core/supplemental-web/contents/alt_index.html  | 16 ----------------
 abs/core/supplemental-web/contents/index.html      | 16 ++++++++++++++++
 abs/core/supplemental-web/supplemental-web.install |  2 --
 4 files changed, 18 insertions(+), 19 deletions(-)
 delete mode 100644 abs/core/supplemental-web/contents/alt_index.html
 create mode 100644 abs/core/supplemental-web/contents/index.html

diff --git a/abs/core/supplemental-web/PKGBUILD b/abs/core/supplemental-web/PKGBUILD
index 3fddaf6..4aa51e2 100644
--- a/abs/core/supplemental-web/PKGBUILD
+++ b/abs/core/supplemental-web/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=supplemental-web
 pkgname=('supplemental-web' 'supplemental-web-slave')
 pkgver=8.0
-pkgrel=9
+pkgrel=10
 arch=('i686' 'x86_64')
 
 backup=('extra.cfg.txt')
@@ -11,6 +11,7 @@ package_supplemental-web() {
     pkgdesc="supplemental-web package for master backend"
     depends=('wol' 'etherwake' 'lighttpd'  'php' 'fcgi' 'python2' 'xymonserver' 'certmaster' 'func' 'python_aosd' 'LinHES-system>=2-50' 'shellinabox')
     install=supplemental-web.install
+    replaces='local-website'
 
     MVDIR=$pkgdir/usr/MythVantage
     install -m755 -D lighttpd-supplement.conf $pkgdir/etc/gen_light_conf.d/lighttpd-supplement.conf
diff --git a/abs/core/supplemental-web/contents/alt_index.html b/abs/core/supplemental-web/contents/alt_index.html
deleted file mode 100644
index 1168c4a..0000000
--- a/abs/core/supplemental-web/contents/alt_index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html>
-	<head>
-        <link rel="shortcut icon" href="/favicon.ico">
-        <title>LinHES: The Linux Home Entertainment System</title>
-	</head>
-	<frameset cols="205, 100%" frameborder="no" border="0" bordercolor="#000000">
-	<frame src="header.html" scrolling=no  name="menuframe" />
-		      <frame src="home.shtml" name="content" />
-		      <noframes>
-			      <body>
-				      There is no frame support on your browser.
-			      </body>
-		      </noframes>
-	      </frameset>
-      </html>
diff --git a/abs/core/supplemental-web/contents/index.html b/abs/core/supplemental-web/contents/index.html
new file mode 100644
index 0000000..1168c4a
--- /dev/null
+++ b/abs/core/supplemental-web/contents/index.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html>
+	<head>
+        <link rel="shortcut icon" href="/favicon.ico">
+        <title>LinHES: The Linux Home Entertainment System</title>
+	</head>
+	<frameset cols="205, 100%" frameborder="no" border="0" bordercolor="#000000">
+	<frame src="header.html" scrolling=no  name="menuframe" />
+		      <frame src="home.shtml" name="content" />
+		      <noframes>
+			      <body>
+				      There is no frame support on your browser.
+			      </body>
+		      </noframes>
+	      </frameset>
+      </html>
diff --git a/abs/core/supplemental-web/supplemental-web.install b/abs/core/supplemental-web/supplemental-web.install
index 55101ba..6e67c67 100644
--- a/abs/core/supplemental-web/supplemental-web.install
+++ b/abs/core/supplemental-web/supplemental-web.install
@@ -14,7 +14,6 @@ post_install() {
  echo "==> Forcing a re-read of lighttpd's configuration file."
  echo ""
  /sbin/sv hup /service/lighttpd
- /usr/LH/bin/switch_web.sh supplemental
 }
 
 # arg 1:  the new package version
@@ -43,7 +42,6 @@ post_remove() {
  echo "==> Forcing a re-read of lighttpd's configuration file."
  echo ""
  /sbin/sv hup /service/lighttpd
- /usr/LH/bin/switch_web.sh local
 }
 
 op=$1
-- 
cgit v0.12


From f51fa2f8156f99937da9f6e9f5b63950198919f6 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 29 Oct 2013 16:44:48 -0500
Subject: supplemental-web: change backup and license

---
 abs/core/supplemental-web/PKGBUILD | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/supplemental-web/PKGBUILD b/abs/core/supplemental-web/PKGBUILD
index 4aa51e2..090b6ec 100644
--- a/abs/core/supplemental-web/PKGBUILD
+++ b/abs/core/supplemental-web/PKGBUILD
@@ -1,10 +1,10 @@
 pkgbase=supplemental-web
 pkgname=('supplemental-web' 'supplemental-web-slave')
 pkgver=8.0
-pkgrel=10
+pkgrel=11
 arch=('i686' 'x86_64')
-
-backup=('extra.cfg.txt')
+license=('GPL')
+backup=('data/srv/httpd/cgi/extra.cfg.txt')
 source=(lighttpd-supplement.conf extra.cfg.txt wakeonlan.sh slaveserve.py supplemental_slave.rules supplemental_web.rules )
 
 package_supplemental-web() {
-- 
cgit v0.12


From 0b5ac212468b7ab376d3e08cef4b79d839891959 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 29 Oct 2013 16:52:44 -0500
Subject: LinHES-system: remove switch_web.sh. supplemental-web is default

---
 abs/core/LinHES-system/PKGBUILD      |  5 ++---
 abs/core/LinHES-system/switch_web.sh | 29 -----------------------------
 2 files changed, 2 insertions(+), 32 deletions(-)
 delete mode 100644 abs/core/LinHES-system/switch_web.sh

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 71c7ae1..c8d791e 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=29
+pkgrel=30
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -18,7 +18,7 @@ binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh
  lh_system_backup lh_system_backup_job lh_system_restore_job
  lh_system_host_update lh_system_all_host_update
  add_storage.py diskspace.sh cacheclean lh_backend_control.sh
- switch_web.sh create_media_dirs.sh msg_client.py msg_daemon.py
+ create_media_dirs.sh msg_client.py msg_daemon.py
  gen_is_xml.py gen_lib_xml.py gen_light_include.py gen_game_xml.py
  misc_recent_recordings.pl misc_status_config.py misc_status_info.sh
  misc_upcoming_recordings.pl misc_which_recorder.pl
@@ -98,7 +98,6 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
          '8f474e019d5fcb775497aca355d61b0b'
-         '4a3cd8f9b33b2b86fdba47a8f1fa2859'
          '16f079dab35dde6efd55bf6cf4e2fb2f'
          '3e60b17892e5b8214d47dcfddf5215a4'
          '57ec994cc3964a10c00580e89ebcae35'
diff --git a/abs/core/LinHES-system/switch_web.sh b/abs/core/LinHES-system/switch_web.sh
deleted file mode 100644
index bf57764..0000000
--- a/abs/core/LinHES-system/switch_web.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-#This script is used to switch the default homepage between supplementalweb and
-#the standard local webpage
-. /etc/systemconfig
-DATADIR=/data/srv/httpd/htdocs
-
-function rmindex {
-    if [ -L $DATADIR/index.html ]
-    then
-        rm -f $DATADIR/index.html
-    fi
-}
-
-if [ $SystemType = Master_backend -o  $SystemType = Standalone ]
-then
-    if [ x$1 = xsupplemental ]
-    then
-        rmindex
-        ln -s $DATADIR/alt_index.html $DATADIR/index.html
-   else
-       rmindex
-       ln -s $DATADIR/index.htm $DATADIR/index.html
-   fi
-else
-	echo "This service is only available for StandAlone or Master_backend LinHES systems"
-
-fi
-
-
-- 
cgit v0.12


From 1ac8c7303657d8a15ab356f392c5fa23d7303441 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 30 Oct 2013 14:42:45 -0500
Subject: mesa: remove glu files that conflict with glu pkg

---
 abs/core/mesa/PKGBUILD | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/abs/core/mesa/PKGBUILD b/abs/core/mesa/PKGBUILD
index 7dd7dd2..7e54fe4 100644
--- a/abs/core/mesa/PKGBUILD
+++ b/abs/core/mesa/PKGBUILD
@@ -15,7 +15,7 @@ if [ "${_git}" = "true" ]; then
   else
     pkgver=8.0.4
 fi
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 makedepends=('glproto>=1.4.15' 'libdrm>=2.4.30' 'libxxf86vm>=1.1.1' 'libxdamage>=1.1.3' 'expat>=2.0.1' 'libx11>=1.4.99.1' 'libxt>=1.1.1' 
              'gcc-libs>=4.6.1' 'dri2proto>=2.6' 'python2' 'libxml2' 'imake' 'llvm' 'udev>=183')
@@ -28,7 +28,7 @@ if [ "${_git}" = "true" ]; then
 	#source=(${source[@]} 'ftp://ftp.archlinux.org/other/mesa/mesa-1ae00c5960af83bea9545a18a1754bad83d5cbd0.tar.bz2')
 	source=(${source[@]} "MesaLib-git${_gitdate}.zip"::"http://cgit.freedesktop.org/mesa/mesa/snapshot/mesa-ef9f16f6322a89fb699fbe3da868b10f9acaef98.tar.bz2")
   else
-	source=(${source[@]} "ftp://ftp.freedesktop.org/pub/mesa/${pkgver}/MesaLib-${pkgver}.tar.bz2"
+	source=(${source[@]} "ftp://ftp.freedesktop.org/pub/mesa/older-versions/8.x/${pkgver}/MesaLib-${pkgver}.tar.bz2"
 	#source=(${source[@]} "ftp://ftp.freedesktop.org/pub/mesa/8.0/MesaLib-8.0-rc2.tar.bz2"
 	#source=(${source[@]} "MesaLib-git${_gitdate}.zip"::"http://cgit.freedesktop.org/mesa/mesa/snapshot/mesa-4464ee1a9aa3745109cee23531e3fb2323234d07.tar.bz2"
 )
@@ -223,6 +223,13 @@ package_mesa() {
   rm -f "${pkgdir}/usr/include/GL/glut.h"
   rm -rf ${pkgdir}/usr/include/{GLES,GLES2,EGL,KHR}
 
+  #remove glu files
+  rm -f "${pkgdir}/usr/include/GL/glu.h"
+  rm -f "${pkgdir}/usr/include/GL/glu_mangle.h"
+  rm -f "${pkgdir}/usr/lib/libGLU.so"
+  rm -f "${pkgdir}/usr/lib/libGLU.so.1"
+  rm -f "${pkgdir}/usr/lib/pkgconfig/glu.pc"
+
   install -m755 -d "${pkgdir}/usr/share/licenses/mesa"
   install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa/"
 }
-- 
cgit v0.12


From eac54d053f7fdbde04d6a821bc964e78f50d143a Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 1 Nov 2013 17:24:22 -0500
Subject: mythtv stable-0.27 git_src: initial commit. refs #933

---
 .gitignore                                         |  2 ++
 .../mythtv/stable-0.27/git_src/checkout_mythtv.sh  | 40 ++++++++++++++++++++++
 .../mythtv/stable-0.27/git_src/checkout_mythweb.sh | 39 +++++++++++++++++++++
 abs/core/mythtv/stable-0.27/git_src/git_hash       |  1 +
 abs/core/mythtv/stable-0.27/git_src/git_hash_web   |  1 +
 5 files changed, 83 insertions(+)
 create mode 100755 abs/core/mythtv/stable-0.27/git_src/checkout_mythtv.sh
 create mode 100755 abs/core/mythtv/stable-0.27/git_src/checkout_mythweb.sh
 create mode 100644 abs/core/mythtv/stable-0.27/git_src/git_hash
 create mode 100644 abs/core/mythtv/stable-0.27/git_src/git_hash_web

diff --git a/.gitignore b/.gitignore
index b81fc83..a3f7dd8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,5 @@ srclinks.*
 */git_src/mythtv
 abs/core/mythtv/stable-0.25/git_src/mythtv
 abs/core/mythtv/stable-0.25/git_src/mythweb
+abs/core/mythtv/stable-0.27/git_src/mythtv
+abs/core/mythtv/stable-0.27/git_src/mythweb
diff --git a/abs/core/mythtv/stable-0.27/git_src/checkout_mythtv.sh b/abs/core/mythtv/stable-0.27/git_src/checkout_mythtv.sh
new file mode 100755
index 0000000..f0fc6bd
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/git_src/checkout_mythtv.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+#Quick script used to checkout the MythTV source
+#This source should be used build all mythplugins & main program
+
+_gitroot="https://github.com/MythTV/mythtv.git"
+_gitname="mythtv"
+_gitbranch="fixes/0.27"
+
+startdir=`pwd`
+
+#Set this to True, to update mythtv to the latest.
+#If not true then it will use the hash stored in git_hash
+_current="True"
+
+_checkoutHASH=`cat git_hash`
+
+if [ -d $_gitname ]
+then
+    cd $_gitname 
+    git checkout $_gitbranch
+    git pull
+    echo "The local files are updated."
+else
+    git clone -b $_gitbranch $_gitroot
+fi
+
+if [ -d $_gitname ]
+then
+    cd $_gitname 
+    if [ $_current == True ]
+    then
+        git rev-parse HEAD > $startdir/git_hash
+    else
+        git checkout $_checkoutHASH
+    fi
+    pwd
+    ls
+    sh ./version.sh `pwd`
+fi
+echo "GIT checkout done or server timeout"
diff --git a/abs/core/mythtv/stable-0.27/git_src/checkout_mythweb.sh b/abs/core/mythtv/stable-0.27/git_src/checkout_mythweb.sh
new file mode 100755
index 0000000..bec4829
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/git_src/checkout_mythweb.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+#Quick script used to checkout the Mythweb source
+#This source should be used build all mythplugins & main program
+
+_gitroot="https://github.com/MythTV/mythweb.git"
+_gitname="mythweb"
+_gitbranch="fixes/0.27"
+
+startdir=`pwd`
+
+#Set this to True, to update mythtv to the latest.
+#If not true then it will use the hash stored in git_hash
+_current="True"
+
+_checkoutHASH=`cat git_hash_web`
+
+if [ -d $_gitname ]
+then
+    cd $_gitname 
+    git checkout $_gitbranch
+    git pull
+    echo "The local files are updated."
+else
+    git clone -b $_gitbranch $_gitroot
+fi
+
+if [ -d $_gitname ]
+then
+    cd $_gitname 
+    if [ $_current == True ]
+    then
+        git rev-parse HEAD > $startdir/git_hash_web
+    else
+        git checkout $_checkoutHASH
+    fi
+    pwd
+    ls
+fi
+echo "GIT checkout done or server timeout"
diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
new file mode 100644
index 0000000..cfcfa4d
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -0,0 +1 @@
+d7c8faa567fb1f301eceb16adeb8463e7738488c
diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash_web b/abs/core/mythtv/stable-0.27/git_src/git_hash_web
new file mode 100644
index 0000000..fbb64a1
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash_web
@@ -0,0 +1 @@
+6d10afe73e1fb5f21688d4b6d6919cab618e6e88
-- 
cgit v0.12


From 570a8e42684f542d6deceffd59c4eca234ffabc7 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 2 Nov 2013 17:51:08 -0500
Subject: mythtv stable-0.27 mythtv: initial commit. refs #933

changed the name of pretty to recordings
---
 ...tect-metadata-loads-from-multiple-threads.patch |   52 +
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD        |  118 ++
 abs/core/mythtv/stable-0.27/mythtv/__changelog     |    2 +
 .../stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml  |   98 +
 .../stable-0.27/mythtv/menu-xml/dvd_backup.xml     |   39 +
 .../mythtv/stable-0.27/mythtv/menu-xml/game.xml    |   12 +
 .../stable-0.27/mythtv/menu-xml/info_menu.xml      |   76 +
 abs/core/mythtv/stable-0.27/mythtv/menu-xml/is.xml |    3 +
 .../stable-0.27/mythtv/menu-xml/library.xml.patch  |   26 +
 .../mythtv/stable-0.27/mythtv/menu-xml/linhes.xml  |   60 +
 .../stable-0.27/mythtv/menu-xml/mainmenu.xml.patch |   37 +
 .../stable-0.27/mythtv/menu-xml/mythbackup.xml     |   20 +
 .../stable-0.27/mythtv/menu-xml/mythrestore.xml    |   21 +
 .../mythtv/menu-xml/optical_menu.xml.patch         |   23 +
 .../mythtv/menu-xml/original/create_patch.sh       |    5 +
 .../stable-0.27/mythtv/menu-xml/siriusmenu.xml     |  419 +++++
 .../mythtv/stable-0.27/mythtv/menu-xml/update.xml  |    9 +
 .../mythtv/stable-0.27/mythtv/menu-xml/update2.xml |   20 +
 .../mythtv/stable-0.27/mythtv/menu-xml/xmmenu.xml  |  574 ++++++
 .../mythtv/stable-0.27/mythtv/myth_settings.patch  | 1980 ++++++++++++++++++++
 abs/core/mythtv/stable-0.27/mythtv/mythtv.install  |   24 +
 abs/core/mythtv/stable-0.27/mythtv/recordings      |    5 +
 22 files changed, 3623 insertions(+)
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/__changelog
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/dvd_backup.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/game.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/info_menu.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/is.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/library.xml.patch
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/mainmenu.xml.patch
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/optical_menu.xml.patch
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/original/create_patch.sh
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/siriusmenu.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/menu-xml/xmmenu.xml
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/mythtv.install
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/recordings

diff --git a/abs/core/mythtv/stable-0.27/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch b/abs/core/mythtv/stable-0.27/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch
new file mode 100644
index 0000000..d8f4a0c
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch
@@ -0,0 +1,52 @@
+From b20171597097f8b933065ef3291c63194d310fbf Mon Sep 17 00:00:00 2001
+From: George Nassas <george@nassas.com>
+Date: Sun, 10 Jun 2012 13:36:42 -0400
+Subject: [PATCH] protect metadata loads from multiple threads
+
+---
+ mythtv/libs/libmythmetadata/dbaccess.cpp |    9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/mythtv/libs/libmythmetadata/dbaccess.cpp b/mythtv/libs/libmythmetadata/dbaccess.cpp
+index 67cd904..46adb7a 100644
+--- a/mythtv/libs/libmythmetadata/dbaccess.cpp
++++ b/mythtv/libs/libmythmetadata/dbaccess.cpp
+@@ -47,8 +47,11 @@ class SingleValueImp
+ 
+     virtual ~SingleValueImp() {}
+ 
++    mutable QMutex mutex;
++
+     void load_data()
+     {
++        QMutexLocker locker(&mutex);
+         if (!m_ready)
+         {
+             fill_from_db();
+@@ -271,8 +274,11 @@ class MultiValueImp
+                 .arg(m_value_name).arg(m_table_name).arg(m_id_name);
+     }
+ 
++    mutable QMutex mutex;
++
+     void load_data()
+     {
++        QMutexLocker locker(&mutex);
+         if (!m_ready)
+         {
+             fill_from_db();
+@@ -730,8 +736,11 @@ class FileAssociationsImp
+         }
+     }
+ 
++    mutable QMutex mutex;
++
+     void load_data()
+     {
++        QMutexLocker locker(&mutex);
+         if (!m_ready)
+         {
+             fill_from_db();
+-- 
+1.7.2.5
+
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
new file mode 100644
index 0000000..a00c869
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -0,0 +1,118 @@
+pkgname=mythtv
+pkgver=0.27
+pkgrel=1
+commit_hash=`cat ../git_src/git_hash`
+pkgdesc="A Homebrew PVR project $commit_hash"
+arch=('i686' 'x86_64')
+url="http://www.mythtv.org/"
+license=('GPL')
+depends=('avahi' 'fftw' 'glew' 'lame' 'libass' 'libavc1394' 'libcdio'
+         'libcec' 'libiec61883' 'libva' 'libvpx' 'libxinerama' 'libxml2'
+         'lirc-utils' 'mysql-clients' 'mysql-python' 'openssl'
+         'perl-dbd-mysql' 'perl-io-socket-inet6' 'perl-libwww'
+         'perl-net-upnp' 'python2-lxml' 'qtwebkit' 'taglib' 'urlgrabber'
+         'x264' 'xmltv'
+         #'qt'
+         #'ffmpeg'
+         #'fribidi'
+         #'perl-soap-lite'
+         #'perl-date-manip'
+         #'perl-xml-sax'
+         #'perl-math-round'
+         #'perl-time-hires'
+         #'wget'
+         #'libxrandr'
+         #'faad2'
+         #'libvdpau'
+         #'libcrystalhd-git'
+         #'python-pycurl'
+         #'lsdvd'
+         #'dvdbackup'
+         )
+makedepends=('mesa' 'libgl' 'yasm' 'git' 'rsync')
+replaces=()
+groups=('pvr')
+backup=()
+install='mythtv.install'
+
+patches=(#'myth_settings.patch' 
+         '0001-protect-metadata-loads-from-multiple-threads.patch')
+    #http://code.mythtv.org/trac/ticket/10825   thread safety in video metadata load
+ 
+optdepends=()
+replaces=('mythvideo' 'myththemes')
+conflicts=('mythvideo' 'myththemes')
+source=(`echo ${patches[@]:0}` 'recordings')
+
+build() {
+    if [ -e ${srcdir}/mythtv ]
+    then
+        msg "Removing old mythtv src"
+        rm -rf ${srcdir}/mythtv
+    fi
+
+    cd ${startdir}
+    msg "Copying in mythtv git_src"
+    cp -rp ../git_src/mythtv/mythtv $srcdir
+    cd ${srcdir}/$pkgname
+    echo "#!/bin/bash" > version.sh
+
+    msg "--------------------------applying patches------------------------------"
+    for i in `echo ${patches[@]:0} `
+    do
+        echo applying $i
+        echo "-----------------------------"
+        patch -Np2  -i ${startdir}/src/$i  || return 1
+    done
+    msg "--------------------------done applying patches-------------------------"
+
+    msg "Configuring mythtv"
+    ARCH=${CARCH/_/-}
+    ./configure --prefix=/usr \
+                --cpu=${ARCH} \
+                --disable-altivec \
+                --disable-audio-jack \
+                --disable-audio-pulse \
+                --disable-ccache \
+                --disable-distcc \
+                --dvb-path=/usr/include \
+                --enable-libfftw3 \
+                --enable-libmp3lame \
+                --enable-libvpx \
+                --enable-libx264 \
+                --enable-vaapi \
+                --python=python2 \
+                --with-bindings=perl,python || return 1
+    msg "Compiling mythtv"
+    make all || return 1
+}
+
+package() {
+    cd "${srcdir}/${pkgname}"
+    # basic install
+    make INSTALL_ROOT="${pkgdir}" install
+    # install contrib files
+    rsync -arp --exclude .svn --delete-excluded contrib ${pkgdir}/usr/share/mythtv/ || return 1
+    # install database structure
+    rsync -arp --exclude .svn --delete-excluded database ${pkgdir}/usr/share/mythtv/ || return 1
+    # install docs
+    rsync -arp --exclude .svn --delete-excluded docs ${pkgdir}/usr/share/mythtv/ || return 1
+
+    # patch the xml LinHES style
+    cp -r ${startdir}/menu-xml/*.xml ${pkgdir}/usr/share/mythtv/themes/defaultmenu/
+    cd ${pkgdir}/usr/share/mythtv
+    patch -p0 < ${startdir}/menu-xml/mainmenu.xml.patch || return 1
+    patch -p0 < ${startdir}/menu-xml/optical_menu.xml.patch || return 1
+    patch -p0 < ${startdir}/menu-xml/library.xml.patch || return 1
+
+    # make mythtv log dir for old scripts that use it
+    mkdir -p ${pkgdir}/var/log/mythtv
+    chown 1000.1000 ${pkgdir}/var/log/mythtv
+
+    #install recordings (was pretty)
+    mkdir -p ${pkgdir}/etc/cron.hourly/
+    install -m0755 ${srcdir}/recordings ${pkgdir}/etc/cron.hourly/
+}
+
+md5sums=('67f7316c750fba17fa578d10840b9dbd'
+         '65a08d8949431ecdeb51a686dc6f9c21')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/__changelog b/abs/core/mythtv/stable-0.27/mythtv/__changelog
new file mode 100644
index 0000000..91a959c
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/__changelog
@@ -0,0 +1,2 @@
+update to 0.27-fixes
+
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
new file mode 100644
index 0000000..b1fa6b5
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -0,0 +1,98 @@
+<mythmenu name="HOST_SETTINGS">
+    <button>
+        <type>MV_ACCESS_SETUP_MENU</type>
+        <text>Access Control</text>
+        <action>EXEC  mythinstall -s accesscontrol </action>
+    </button>
+
+    <button>
+        <type>MV_SOFTWARE_MENU</type>
+        <text>Add/Remove software</text>
+        <action>EXEC  mythinstall -s  plugins,software </action>
+    </button>
+
+    <button>
+        <type>MV_ADVANCED_SETUP_MENU</type>
+        <text>Advanced</text>
+        <action>EXEC  mythinstall -s advanced</action>
+    </button>
+
+    <button>
+        <type>MV_AUDIO_SETUP_MENU</type>
+        <text>Audio Settings</text>
+        <action>EXEC  mythinstall -s sound </action>
+    </button>
+
+    <button>
+        <type>MV_ADVANCED_X_SETUP_MENU</type>
+        <text>Display</text>
+        <action>EXEC  mythinstall -s advancedX</action>
+    </button>
+
+    <button>
+        <type>MV_NETWORK_SETUP_MENU</type>
+        <text>Dynamic DNS</text>
+        <action>EXEC  mythinstall -s ddns </action>
+    </button>
+
+   <button>
+       <type>MV_FILESHARES_MENU</type>
+       <text>File Shares</text>
+       <action>EXEC  mythinstall -s fileshare</action>
+   </button>
+
+   <button>
+       <type>MV_MISC_SETUP_MENU</type>
+       <text>Miscellanous</text>
+       <action>EXEC  mythinstall -s misc </action>
+   </button>
+
+   <button>
+       <type>MV_NETWORK_SETUP_MENU</type>
+       <text>Network</text>
+       <action>EXEC  mythinstall -s network </action>
+   </button>
+
+   <button>
+       <type>MV_IR_SETUP_MENU</type>
+       <text>Remotes</text>
+       <action>EXEC  mythinstall -s ir </action>
+   </button>
+
+   <button>
+       <type>MV_SCREENSAVER_SETUP_MENU</type>
+       <text>Screensaver</text>
+       <action>EXEC  mythinstall -s screensaver </action>
+   </button>
+
+   <button>
+       <type>MV_SHUTDOWN_SETUP_MENU</type>
+       <text>Shutdown Settings</text>
+       <action>EXEC  mythinstall -s sleep </action>
+   </button>
+
+   <button>
+       <type>MV_SYSTEM_SETUP_MENU</type>
+       <text>System Type</text>
+       <action>EXEC  mythinstall -s hostype </action>
+   </button>
+
+   <button>
+       <type>MV_USER_SETUP_MENU</type>
+       <text>User Accounts</text>
+       <action>EXEC  mythinstall -s user </action>
+   </button>
+
+   <button>
+       <type>MV_VNC_SETUP_MENU</type>
+       <text>VNC Service</text>
+       <action>EXEC  mythinstall -s vnc </action>
+   </button>
+
+   <button>
+       <type>MV_WEBACCESS_SETUP_MENU</type>
+       <text>Web Security</text>
+       <action>EXEC  mythinstall -s webuser </action>
+   </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/dvd_backup.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/dvd_backup.xml
new file mode 100644
index 0000000..2647d81
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/dvd_backup.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mythmenu name="OPTICAL_DISK">
+
+    <button>
+        <type>DVD_RIP</type>
+        <text>Mirror DVD</text>
+        <description>Creates a mirror of your DVD</description>
+	<action>EXEC /usr/LH/bin/ripD_eject.sh m &amp;</action>
+    </button>
+
+    <button>
+        <type>DVD_RIP</type>
+        <text>ISO of DVD</text>
+        <description>Creates an ISO of your DVD</description>
+	<action>EXEC /usr/LH/bin/ripD_eject.sh i &amp;</action>
+    </button>
+
+    <button>
+        <type>DVD_RIP</type>
+        <text>High Quality</text>
+        <description>Creates a high quality MPEG4 of your DVD</description>
+	<action>EXEC /usr/LH/bin/ripD_eject.sh h &amp;</action>
+    </button>
+
+    <button>
+        <type>DVD_RIP</type>
+        <text>Normal Quality</text>
+        <description>Creates a normal quality MPEG4 of your DVD</description>
+	<action>EXEC /usr/LH/bin/ripD_eject.sh n &amp;</action>
+    </button>
+
+    <button>
+        <type>DVD_RIP</type>
+        <text>Low Quality</text>
+        <description>Creates a low quality MPEG4 of your DVD</description>
+	<action>EXEC /usr/LH/bin/ripD_eject.sh l &amp;</action>
+    </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/game.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/game.xml
new file mode 100644
index 0000000..293a9e6
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/game.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mythmenu name="GAME">
+
+    <button>
+        <type>GAME</type>
+        <text>MythGame</text>
+        <description>Play video games</description>
+        <action>PLUGIN mythgame</action>
+        <depends>mythgame</depends>
+    </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/info_menu.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/info_menu.xml
new file mode 100644
index 0000000..017f90b
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/info_menu.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<mythmenu name="INFO">
+
+    <button>
+        <type>NEWS</type>
+        <text>News Feeds</text>
+        <description>Keep up with the news</description>
+        <action>PLUGIN mythnews</action>
+        <depends>mythnews</depends>
+    </button>
+
+    <button>
+        <type>MYTHTWITTER_TIMELINE</type>
+        <text>Twitter</text>
+        <description>Send and receive tweets</description>
+        <action>JUMP MythTwitter_Timeline</action>
+        <depends>mythtwitter</depends>
+    </button>
+
+    <button>
+        <type>WEATHER</type>
+        <text>Weather</text>
+        <action>PLUGIN mythweather</action>
+        <description>Local weather forecast</description>
+        <depends>mythweather</depends>
+    </button>
+
+    <button>
+       <type>WEATHER</type>
+        <text>Weather Station</text>
+        <action>PLUGIN mythwstation</action>
+        <depends>mythwstation</depends>
+    </button>
+
+    <button>
+        <type>WEBPAGE</type>
+        <text>Web</text>
+        <description>Browse the web</description>
+        <action>PLUGIN mythbrowser</action>
+        <depends>mythbrowser</depends>
+    </button>
+
+    <button>
+        <type>RECIPE</type>
+        <text>Recipes</text>
+        <description>Start cooking!</description>
+        <action>PLUGIN mythRecipe</action>
+        <depends>mythrecipe</depends>
+    </button>
+
+    <button>
+        <type>TV_STATUS</type>
+        <text>System Status</text>
+        <description>See what your system is doing</description>
+        <action>TV_STATUS</action>
+    </button>
+
+    <button>
+        <type>ZONEMINDER</type>
+        <text>ZoneMinder</text>
+        <description>Home surveillance</description>
+        <action>PLUGIN mythzoneminder</action>
+        <depends>mythzoneminder</depends>
+ </button>
+
+<!-- 
+ <button>
+        <type>SMOLT</type>
+        <text>Hardware profile</text>
+        <description>Tell us what hardware you have so we can support it</description>
+        <action>PLUGIN mythsmolt</action>
+        <depends>mythsmolt</depends>
+ </button>
+ -->
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/is.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/is.xml
new file mode 100644
index 0000000..88b7e6b
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/is.xml
@@ -0,0 +1,3 @@
+<mythmenu name="Internet Steams">
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/library.xml.patch b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/library.xml.patch
new file mode 100644
index 0000000..8f80928
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/library.xml.patch
@@ -0,0 +1,26 @@
+--- themes/defaultmenu/library.xml.orig	2012-06-10 08:02:54.000000000 +0000
++++ themes/defaultmenu/library.xml	2012-06-10 08:03:38.000000000 +0000
+@@ -40,6 +40,13 @@
+     </button>
+ 
+     <button>
++        <type>STREAM</type>
++        <text>Online Content</text>
++        <description>Play content from online sources</description>
++        <action>MENU gen_is.xml</action>
++    </button>
++
++    <button>
+         <type>IMAGES</type>
+         <text>Image Gallery</text>
+         <description>Look at Pictures</description>
+@@ -51,8 +58,7 @@
+         <type>GAME</type>
+         <text>Play Games</text>
+         <description>Play video games</description>
+-        <action>PLUGIN mythgame</action>
+-        <depends>mythgame</depends>
++        <action>MENU game.xml</action>
+     </button>
+ 
+ </mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml
new file mode 100644
index 0000000..342766d
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml
@@ -0,0 +1,60 @@
+<mythmenu name="LinHES">
+
+    <button>
+        <type>SETUP_GENERAL</type>
+        <text>MythTV Configuration</text>
+        <text lang="IT">Impostazioni</text>
+        <text lang="ES">Configuración</text>
+        <text lang="DE">Zubehör / Konfiguration</text>
+        <text lang="DA">Tilbehør/Indstillinger</text>
+        <text lang="IS">Uppsetning</text>
+        <text lang="NL">Configuratie</text>
+        <text lang="PT">Utensílios</text>
+        <text lang="SV">Verktyg / Inställningar</text>
+        <text lang="JA">設�~Z</text>
+        <text lang="FI">Oheis/Asetukset</text>
+        <text lang="ZH_TW">工�~E�/設�~Z</text>
+        <text lang="SL">Nastavitve</text>
+        <text lang="ET">Utiliidid / sätted</text>
+        <text lang="RU">У�~Bили�~B�~K / �~]а�~A�~B�~@ойки</text>
+        <text lang="AR">تضب�~Jطات</text>
+        <text lang="PL">Narz�~Ydzia / ustawienia</text>
+        <text lang="HE">ע�~Vר�~Y�~] / �~T�~R�~Sר�~Uת</text>
+        <text lang="HU">Eszközök / Beállítások</text>
+        <alttext lang="DE">Verschiedenes</alttext>
+        <alttext lang="SV">Inställningar</alttext>
+        <alttext lang="ET">Sätted</alttext>
+        <alttext lang="RU">�~]а�~A�~B�~@ойки</alttext>
+        <alttext lang="AR">تضب�~Jطات</alttext>
+        <description>Configure MythTV and plugins</description>
+        <description lang="DE">MythTV und Plugins konfigurieren</description>
+        <action>MENU util_menu.xml</action>
+    </button>
+
+   <button>
+     <type>LINHES_SETUP</type>
+     <text>LinHES Configuration</text>
+     <description>Configure LinHES</description>
+     <action>MENU HOST_SETTINGS.xml</action>
+   </button>
+
+   <button>
+     <type>BACKUP</type>
+     <text>Backup LinHES</text>
+     <action>MENU mythbackup.xml</action>
+   </button>
+
+   <button>
+     <type>RESTORE</type>
+     <text>Restore LinHES</text>
+     <action>MENU mythrestore.xml</action>
+   </button>
+
+<!--#Check for updates-->
+   <button>
+     <type>UPGRADE</type>
+     <text>Update LinHES</text>
+     <action>MENU update.xml</action>
+   </button>
+<!--#Check for updates-->
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mainmenu.xml.patch b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mainmenu.xml.patch
new file mode 100644
index 0000000..73a8940
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mainmenu.xml.patch
@@ -0,0 +1,37 @@
+--- themes/defaultmenu/mainmenu.xml.orig	2012-07-29 21:39:46.000000000 +0000
++++ themes/defaultmenu/mainmenu.xml	2012-07-29 21:41:50.000000000 +0000
+@@ -1,5 +1,11 @@
+ <?xml version="1.0" encoding="UTF-8" ?>
+ <mythmenu name="MAIN">
++    <button>
++        <type>TV_WATCH_TV</type>
++        <text>Watch TV</text>
++        <description>Watch live television</description>
++        <action>TV_WATCH_LIVE</action>
++    </button>
+ 
+     <button>
+         <type>MENU_MEDIA_LIBRARY</type>
+@@ -30,18 +36,11 @@
+     </button>
+ 
+     <button>
+-        <type>TV_WATCH_TV</type>
+-        <text>Watch TV</text>
+-        <description>Watch live television</description>
+-        <action>TV_WATCH_LIVE</action>
+-    </button>
+-
+-    <button>
+         <type>MENU_UTILITIES_SETUP</type>
+-        <text>Setup</text>
+-        <description>Configure MythTV and plugins</description>
+-        <action>MENU main_settings.xml</action>
+-        <password>SetupPinCode</password>
++        <text>Service Menu</text>
++        <description>Configure your system</description>
++	<action>MENU linhes.xml</action>
++	<password>SetupPinCode</password>
+     </button>
+ 
+ </mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml
new file mode 100644
index 0000000..7890d88
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+   <button>
+     <type>BACKUP</type>
+     <text>Do you wish to backup?</text>
+     <description></description>
+     <action>NONE</action>
+   </button>
+
+   <button>
+     <type>BACKUP</type>
+     <text>Yes</text>
+     <action>EXEC sudo /usr/LH/bin/lh_system_backup &amp;</action>
+   </button>
+
+   <button>
+     <type>BACKUP</type>
+     <text>No</text>
+     <action>UPMENU</action>
+   </button>
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml
new file mode 100644
index 0000000..161f13f
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml
@@ -0,0 +1,21 @@
+<mythmenu name="LinHES">
+
+   <button>
+     <type>RESTORE</type>
+     <text>Do you wish to restore?</text>
+     <description>This will restore from most recent backup.</description>
+     <action>NONE</action>
+   </button>
+
+   <button>
+     <type>RESTORE</type>
+     <text>Yes</text>
+     <action>EXEC sudo /usr/LH/bin/lh_system_restore &amp;</action>
+   </button>
+
+   <button>
+     <type>BACKUP</type>
+     <text>No</text>
+     <action>UPMENU</action>
+   </button>
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/optical_menu.xml.patch b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/optical_menu.xml.patch
new file mode 100644
index 0000000..b836e85
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/optical_menu.xml.patch
@@ -0,0 +1,23 @@
+--- themes/defaultmenu/optical_menu.xml.orig	2012-05-02 18:41:38.000000000 +0000
++++ themes/defaultmenu/optical_menu.xml	2012-07-30 05:33:03.000000000 +0000
+@@ -17,6 +17,20 @@
+     </button>
+ 
+     <button>
++        <type>DVD_RIP</type>
++        <text>Backup DVD</text>
++       <description>Backup your DVDs</description>
++        <action>MENU dvd_backup.xml</action>
++    </button>
++
++    <button>
++        <type>DVD_RIP</type>
++        <text>Import Files from DVD</text>
++       <description>Import all files from a data DVD</description>
++        <action>EXEC /usr/LH/bin/importfiles.sh &amp;</action>
++    </button>
++
++    <button>
+         <type>MUSIC_RIP</type>
+         <text>Import CD</text>
+         <description>Import music from an audio CD</description>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/original/create_patch.sh b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/original/create_patch.sh
new file mode 100644
index 0000000..34d8b8c
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/original/create_patch.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+for i in *.xml
+do
+	diff -u $i.orig $i > ../$i.patch
+done
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/siriusmenu.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/siriusmenu.xml
new file mode 100644
index 0000000..e317b36
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/siriusmenu.xml
@@ -0,0 +1,419 @@
+<mythmenu name="SIRIUS">
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Hits 1</text>
+      <action>EXEC /usr/bin/cliSipie siriushits1</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>StarLite</text>
+      <action>EXEC /usr/bin/cliSipie starlite</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Love</text>
+      <action>EXEC /usr/bin/cliSipie siriuslove</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Movin EZ</text>
+      <action>EXEC /usr/bin/cliSipie movineasy</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Gold</text>
+      <action>EXEC /usr/bin/cliSipie siriusgold</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>'60s Vibrations</text>
+      <action>EXEC /usr/bin/cliSipie 60svibrations</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Totally '70s</text>
+      <action>EXEC /usr/bin/cliSipie totally70s</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Big '80s</text>
+      <action>EXEC /usr/bin/cliSipie big80s</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>ThePulse</text>
+      <action>EXEC /usr/bin/cliSipie thepulse</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Bridge</text>
+      <action>EXEC /usr/bin/cliSipie thebridge</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>BBC Radio 1</text>
+      <action>EXEC /usr/bin/cliSipie bbcradio1</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Super Shuffle</text>
+      <action>EXEC /usr/bin/cliSipie supershuffle</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Elvis Radio</text>
+      <action>EXEC /usr/bin/cliSipie elvisradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Classic Vinyl</text>
+      <action>EXEC /usr/bin/cliSipie classicvinyl</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Classic Rewind</text>
+      <action>EXEC /usr/bin/cliSipie classicrewind</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>TheVault</text>
+      <action>EXEC /usr/bin/cliSipie thevault</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Jam_ON</text>
+      <action>EXEC /usr/bin/cliSipie jamon</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Spectrum</text>
+      <action>EXEC /usr/bin/cliSipie thespectrum</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>BuzzSaw</text>
+      <action>EXEC /usr/bin/cliSipie buzzsaw</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Octane</text>
+      <action>EXEC /usr/bin/cliSipie octane</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Alt Nation</text>
+      <action>EXEC /usr/bin/cliSipie altnation</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>1st Wave</text>
+      <action>EXEC /usr/bin/cliSipie firstwave</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hair Nation</text>
+      <action>EXEC /usr/bin/cliSipie hairnation</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>'90s Alternative</text>
+      <action>EXEC /usr/bin/cliSipie 90salternative</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Garage</text>
+      <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Left of Center</text>
+      <action>EXEC /usr/bin/cliSipie leftofcenter</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hard Attack</text>
+      <action>EXEC /usr/bin/cliSipie hardattack</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Faction</text>
+      <action>EXEC /usr/bin/cliSipie faction</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Punk</text>
+      <action>EXEC /usr/bin/cliSipie punk</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>The Coffee House</text>
+      <action>EXEC /usr/bin/cliSipie coffeehouse</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Margaritaville</text>
+      <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Disorder</text>
+      <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Reggae</text>
+      <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Area 33</text>
+      <action>EXEC /usr/bin/cliSipie area33</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Boombox</text>
+      <action>EXEC /usr/bin/cliSipie boombox</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Chill</text>
+      <action>EXEC /usr/bin/cliSipie chill</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>The Beat</text>
+      <action>EXEC /usr/bin/cliSipie thebeat</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Strobe</text>
+      <action>EXEC /usr/bin/cliSipie thestrobe</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hip-Hop Nation</text>
+      <action>EXEC /usr/bin/cliSipie hiphopnation</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>BackSpin</text>
+      <action>EXEC /usr/bin/cliSipie backspin</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Shade 45</text>
+      <action>EXEC /usr/bin/cliSipie shade45</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hot Jamz</text>
+      <action>EXEC /usr/bin/cliSipie hotjamz</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Heart  &amp; Soul</text>
+      <action>EXEC /usr/bin/cliSipie heartandsoul</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>SoulTown</text>
+      <action>EXEC /usr/bin/cliSipie soultown</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>New Country</text>
+      <action>EXEC /usr/bin/cliSipie newcountry</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Prime Country</text>
+      <action>EXEC /usr/bin/cliSipie primecountry</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Roadhouse</text>
+      <action>EXEC /usr/bin/cliSipie theroadhouse</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Outlaw Country</text>
+      <action>EXEC /usr/bin/cliSipie outlawcountry</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Bluegrass</text>
+      <action>EXEC /usr/bin/cliSipie bluegrass</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Spirit</text>
+      <action>EXEC /usr/bin/cliSipie spirit</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Praise</text>
+      <action>EXEC /usr/bin/cliSipie praise</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Planet Jazz</text>
+      <action>EXEC /usr/bin/cliSipie planetjazz</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>JazzCafe</text>
+      <action>EXEC /usr/bin/cliSipie jazzcafe</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>PureJazz</text>
+      <action>EXEC /usr/bin/cliSipie purejazz</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Spa 73</text>
+      <action>EXEC /usr/bin/cliSipie spa73</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Blues</text>
+      <action>EXEC /usr/bin/cliSipie siriusblues</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Siriusly Sinatra</text>
+      <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Broadway's Best</text>
+      <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Symphony Hall</text>
+      <action>EXEC /usr/bin/cliSipie symphonyhall</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Met Opera Radio</text>
+      <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Pops</text>
+      <action>EXEC /usr/bin/cliSipie siriuspops</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Universo Latino</text>
+      <action>EXEC /usr/bin/cliSipie universolatino</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Rumbon</text>
+      <action>EXEC /usr/bin/cliSipie rumbon</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Martha Stewart</text>
+      <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Stars</text>
+      <action>EXEC /usr/bin/cliSipie siriusstars</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>OutQ Gay Radio</text>
+      <action>EXEC /usr/bin/cliSipie siriusoutq</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Patriot</text>
+      <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Left</text>
+      <action>EXEC /usr/bin/cliSipie siriusleft</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>CNN</text>
+      <action>EXEC /usr/bin/cliSipie cnn</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>wrn</text>
+      <action>EXEC /usr/bin/cliSipie wrn</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Blue Collar Comedy</text>
+      <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Raw Dog Comedy</text>
+      <action>EXEC /usr/bin/cliSipie rawdog</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Laugh Break Comedy</text>
+      <action>EXEC /usr/bin/cliSipie laughbreak</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>thefoxxhole</text>
+      <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>lime</text>
+      <action>EXEC /usr/bin/cliSipie lime</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Kids Stuff</text>
+      <action>EXEC /usr/bin/cliSipie kidsstuff</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Catholic Channel</text>
+      <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>EWTN</text>
+      <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>christiantalk</text>
+      <action>EXEC /usr/bin/cliSipie christiantalk</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius NFL Radio</text>
+      <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Maxim Radio</text>
+      <action>EXEC /usr/bin/cliSipie maximradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Cosmo Radio</text>
+      <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
+   </button>
+   <button>
+     <type>TV_DELETE</type>
+     <text>Stop Listening</text>
+     <action>EXEC /usr/bin/sipie_kill</action>
+  </button>
+
+</mythmenu>
+
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml
new file mode 100644
index 0000000..d2ac3fe
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml
@@ -0,0 +1,9 @@
+<mythmenu name="LinHES">
+
+   <button>
+     <type>UPGRADE</type>
+     <text>Check for Updates</text>
+     <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
+   </button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml
new file mode 100644
index 0000000..64388cb
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+   <button>
+     <type>UPGRADE</type>
+     <text>Install Updates</text>
+     <action>EXEC sudo /usr/LH/bin/linhes_update2.sh install</action>
+   </button>
+
+   <button>
+     <type>UPGRADE</type>
+     <text>Cancel Updates</text>
+     <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
+   </button>
+
+   <button>
+     <type>UPGRADE</type>
+     <text>View Updates</text>
+     <action>MENU update3.xml</action>
+   </button>
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/xmmenu.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/xmmenu.xml
new file mode 100644
index 0000000..6b26d11
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/xmmenu.xml
@@ -0,0 +1,574 @@
+<!-- Current as of April 25, 2007 -->
+<mythmenu name="XM">
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '40s</text>
+		<action>EXEC /usr/bin/xamp kill 4</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '50s</text>
+		<action>EXEC /usr/bin/xamp kill 5</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '60s</text>
+		<action>EXEC /usr/bin/xamp kill 6</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '70s</text>
+		<action>EXEC /usr/bin/xamp kill 7</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '80s</text>
+		<action>EXEC /usr/bin/xamp kill 8</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '90s</text>
+		<action>EXEC /usr/bin/xamp kill 9</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>America</text>
+		<action>EXEC /usr/bin/xamp kill 10</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>X Country</text>
+		<action>EXEC /usr/bin/xamp kill 12</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Willie's Place</text>
+		<action>EXEC /usr/bin/xamp kill 13</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Bluegrass Junction</text>
+		<action>EXEC /usr/bin/xamp kill 14</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Village</text>
+		<action>EXEC /usr/bin/xamp kill 15</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Highway 16</text>
+		<action>EXEC /usr/bin/xamp kill 16</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>US Country</text>
+		<action>EXEC /usr/bin/xamp kill 17</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>20 on 20</text>
+		<action>EXEC /usr/bin/xamp kill 20</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Heart</text>
+		<action>EXEC /usr/bin/xamp kill 23</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Blend</text>
+		<action>EXEC /usr/bin/xamp kill 25</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Flight 26</text>
+		<action>EXEC /usr/bin/xamp kill 26</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Cinemagic</text>
+		<action>EXEC /usr/bin/xamp kill 27</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>On Broadway</text>
+		<action>EXEC /usr/bin/xamp kill 28</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>U-Pop</text>
+		<action>EXEC /usr/bin/xamp kill 29</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Hitlist</text>
+		<action>EXEC /usr/bin/xamp kill 30</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Torch</text>
+		<action>EXEC /usr/bin/xamp kill 31</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Message</text>
+		<action>EXEC /usr/bin/xamp kill 32</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Spirit</text>
+		<action>EXEC /usr/bin/xamp kill 33</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>enLighten</text>
+		<action>EXEC /usr/bin/xamp kill 34</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Deep Tracks</text>
+		<action>EXEC /usr/bin/xamp kill 40</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Boneyard</text>
+		<action>EXEC /usr/bin/xamp kill 41</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Liquid Metal</text>
+		<action>EXEC /usr/bin/xamp kill 42</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XMU</text>
+		<action>EXEC /usr/bin/xamp kill 43</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fred</text>
+		<action>EXEC /usr/bin/xamp kill 44</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Cafe</text>
+		<action>EXEC /usr/bin/xamp kill 45</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Top Tracks</text>
+		<action>EXEC /usr/bin/xamp kill 46</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Ethel</text>
+		<action>EXEC /usr/bin/xamp kill 47</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Squizz</text>
+		<action>EXEC /usr/bin/xamp kill 48</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Big Tracks</text>
+		<action>EXEC /usr/bin/xamp kill 49</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Loft</text>
+		<action>EXEC /usr/bin/xamp kill 50</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Music Lab</text>
+		<action>EXEC /usr/bin/xamp kill 51</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Verge</text>
+		<action>EXEC /usr/bin/xamp kill 52</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fungus</text>
+		<action>EXEC /usr/bin/xamp kill 53</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Lucy</text>
+		<action>EXEC /usr/bin/xamp kill 54</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Soul Street</text>
+		<action>EXEC /usr/bin/xamp kill 60</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Flow</text>
+		<action>EXEC /usr/bin/xamp kill 61</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Suite 62</text>
+		<action>EXEC /usr/bin/xamp kill 62</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Groove</text>
+		<action>EXEC /usr/bin/xamp kill 64</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Rhyme</text>
+		<action>EXEC /usr/bin/xamp kill 65</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>RAW</text>
+		<action>EXEC /usr/bin/xamp kill 66</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The City</text>
+		<action>EXEC /usr/bin/xamp kill 67</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Heat</text>
+		<action>EXEC /usr/bin/xamp kill 68</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Real Jazz</text>
+		<action>EXEC /usr/bin/xamp kill 70</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Watercolors</text>
+		<action>EXEC /usr/bin/xamp kill 71</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Beyond Jazz</text>
+		<action>EXEC /usr/bin/xamp kill 72</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>High Standards</text>
+		<action>EXEC /usr/bin/xamp kill 73</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Bluesville</text>
+		<action>EXEC /usr/bin/xamp kill 74</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Hear Music</text>
+		<action>EXEC /usr/bin/xamp kill 75</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fine Tuning</text>
+		<action>EXEC /usr/bin/xamp kill 76</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Audio Visions</text>
+		<action>EXEC /usr/bin/xamp kill 77</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Escape</text>
+		<action>EXEC /usr/bin/xamp kill 78</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>On The Rocks</text>
+		<action>EXEC /usr/bin/xamp kill 79</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Move</text>
+		<action>EXEC /usr/bin/xamp kill 80</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>BPM</text>
+		<action>EXEC /usr/bin/xamp kill 81</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The System</text>
+		<action>EXEC /usr/bin/xamp kill 82</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Chrome</text>
+		<action>EXEC /usr/bin/xamp kill 83</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM-Chill</text>
+		<action>EXEC /usr/bin/xamp kill 84</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fuego</text>
+		<action>EXEC /usr/bin/xamp kill 90</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Viva</text>
+		<action>EXEC /usr/bin/xamp kill 91</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Aguila</text>
+		<action>EXEC /usr/bin/xamp kill 92</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Caliente</text>
+		<action>EXEC /usr/bin/xamp kill 94</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Luna</text>
+		<action>EXEC /usr/bin/xamp kill 95</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Air Musique</text>
+		<action>EXEC /usr/bin/xamp kill 100</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Joint</text>
+		<action>EXEC /usr/bin/xamp kill 101</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Sur La Route</text>
+		<action>EXEC /usr/bin/xamp kill 102</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>World Zone</text>
+		<action>EXEC /usr/bin/xamp kill 103</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Ngoma</text>
+		<action>EXEC /usr/bin/xamp kill 104</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Classics</text>
+		<action>EXEC /usr/bin/xamp kill 110</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Vox</text>
+		<action>EXEC /usr/bin/xamp kill 112</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Pops</text>
+		<action>EXEC /usr/bin/xamp kill 113</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Kids</text>
+		<action>EXEC /usr/bin/xamp kill 116</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Bob Edwards Show</text>
+		<action>EXEC /usr/bin/xamp kill 133</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Comedy</text>
+		<action>EXEC /usr/bin/xamp kill 150</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Laugh USA</text>
+		<action>EXEC /usr/bin/xamp kill 151</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Special X</text>
+		<action>EXEC /usr/bin/xamp kill 154</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Agenda</text>
+		<action>EXEC /usr/bin/xamp kill 134</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Oprah and Friends</text>
+		<action>EXEC /usr/bin/xamp kill 156</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Virus</text>
+		<action>EXEC /usr/bin/xamp kill 202</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>1 Hit Wonders</text>
+		<action>EXEC /usr/bin/xamp kill 300</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Metalcore</text>
+		<action>EXEC /usr/bin/xamp kill 301</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Indie First</text>
+		<action>EXEC /usr/bin/xamp kill 302</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Late Night Mix</text>
+		<action>EXEC /usr/bin/xamp kill 303</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Sessions@AOL</text>
+		<action>EXEC /usr/bin/xamp kill 304</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Shuffle</text>
+		<action>EXEC /usr/bin/xamp kill 305</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Rock First</text>
+		<action>EXEC /usr/bin/xamp kill 306</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Country First</text>
+		<action>EXEC /usr/bin/xamp kill 307</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Hip Hop First</text>
+		<action>EXEC /usr/bin/xamp kill 308</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Pop First</text>
+		<action>EXEC /usr/bin/xamp kill 309</action>
+	</button>
+
+	<button>
+		<type>TV_DELETE</type>
+		<text>Stop Listening</text>
+		<action>EXEC /usr/bin/xamp kill</action>
+	</button>
+
+</mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch b/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch
new file mode 100644
index 0000000..dd1de24
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch
@@ -0,0 +1,1980 @@
+commit 9b4205fa320c06afde8c6d866b854cb12d3ec99c
+Author: root <root@localhost.localdomain>
+Date:   Fri Sep 28 14:25:06 2012 -0500
+
+    new patch
+    
+    Signed-off-by: root <root@localhost.localdomain>
+
+diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
+index 84cb01a..6e3c54a 100644
+--- a/mythtv/libs/libmythbase/mythcorecontext.cpp
++++ b/mythtv/libs/libmythbase/mythcorecontext.cpp
+@@ -1260,6 +1260,90 @@ void MythCoreContext::ResetLanguage(void)
+     d->language.clear();
+ }
+ 
++//JM ADDED
++void MythCoreContext::savesettings_togroup (QString src_hostname,
++                                            QString saved_settingsgroupname )
++{
++    return d->m_database->savesettings_togroup(src_hostname,
++                                               saved_settingsgroupname);
++}
++
++void MythCoreContext::deletesettings(QString delete_hostname,
++                                     QString saved_settingsgroupname)
++{
++    return d->m_database->deletesettings(delete_hostname,
++                                         saved_settingsgroupname);
++}
++
++QMap<QString,QStringList> MythCoreContext::list_settingsgroupname()
++{
++    return d->m_database->list_settingsgroupname();
++}
++
++QMap<QString,QStringList> MythCoreContext::diff_settingsgroupname(
++    QString diff_hostname1,
++    QString diff_hostname2,
++    QStringList table_list)
++{
++    return d->m_database->diff_settingsgroupname(diff_hostname1,
++                                                 diff_hostname2,
++                                                 table_list);
++}
++
++void MythCoreContext::clonesettings(QString src_hostname,
++                                    QString saved_settingsgroupname,
++                                    QStringList table_list,
++                                    bool is_full_clone,
++                                    QString dest_hostname)
++{
++    return d->m_database->clonesettings(src_hostname,
++                                        saved_settingsgroupname,
++                                        table_list,
++                                        is_full_clone,
++                                        dest_hostname);
++}
++
++void MythCoreContext::restoresettings(QString dest_hostname,
++                                      QString saved_settingsgroupname,
++                                      QStringList table_list )
++{
++    return d->m_database->restoresettings( dest_hostname,
++                                           saved_settingsgroupname,
++                                           table_list);
++}
++
++void MythCoreContext::change_hostname(QString old_hostname,
++                                      QString new_hostname)
++{
++    return d->m_database->change_hostname(old_hostname, new_hostname) ;
++}
++
++bool MythCoreContext::settings_check(QString src_hostname,
++                                     QString saved_settingsgroupname)
++{
++    return d->m_database->settings_check(src_hostname,saved_settingsgroupname);
++}
++
++void MythCoreContext::import_settings(QMap<QString,QString> vp_map,
++                                      QString table)
++{
++    return d->m_database->import_settings(vp_map, table);
++}
++
++
++QMap<QString, QMap<QString,QString> > MythCoreContext::export_settings(
++    QString src_hostname,
++    QString saved_settingsgroupname,
++    QStringList table_list, bool skip_host )
++{
++    return d->m_database->export_settings(src_hostname,
++                                          saved_settingsgroupname,
++                                          table_list , skip_host );
++}
++
++//END JM ADDED
++
++
+ void MythCoreContext::InitLocale(void )
+ {
+     if (!d->m_locale)
+diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
+index 0917313..3f6d5f8 100644
+--- a/mythtv/libs/libmythbase/mythcorecontext.h
++++ b/mythtv/libs/libmythbase/mythcorecontext.h
+@@ -168,6 +168,40 @@ class MBASE_PUBLIC MythCoreContext : public MythObservable, public MythSocketCBs
+     QString GetLanguageAndVariant(void);
+     void ResetLanguage(void);
+ 
++    //JM ADDED
++    void savesettings_togroup(QString src_hostname,
++                              QString saved_settingsgroupname );
++
++    void deletesettings(QString delete_hostname,
++                        QString saved_settingsgroupname);
++
++    QMap<QString,QStringList> list_settingsgroupname();
++    QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
++                                                     QString diff_hostname2,
++                                                     QStringList table_list);
++
++    void clonesettings(QString src_hostname,
++                       QString saved_settingsgroupname,
++                       QStringList table_list,
++                       bool is_full_clone=TRUE,
++                       QString dest_hostname="");
++
++    void restoresettings (QString dest_hostname,
++                          QString saved_settingsgroupname,
++                          QStringList table_list);
++
++    void change_hostname (QString old_hostname, QString new_hostname);
++
++    bool settings_check (QString src_hostname ,QString saved_settingsgroupname);
++    void import_settings(QMap<QString,QString> vp_map, QString table);
++
++    QMap<QString,QMap <QString,QString> > export_settings(
++                                             QString src_hostname,
++                                             QString saved_settingsgroupname,
++                                             QStringList table_list,
++                                             bool skip_host = FALSE );
++    //END JM ADDED
++
+   private:
+     MythCoreContextPrivate *d;
+ 
+diff --git a/mythtv/libs/libmythbase/mythdb.cpp b/mythtv/libs/libmythbase/mythdb.cpp
+index ea30783..e4c1781 100644
+--- a/mythtv/libs/libmythbase/mythdb.cpp
++++ b/mythtv/libs/libmythbase/mythdb.cpp
+@@ -774,7 +774,7 @@ void MythDB::OverrideSettingForSession(
+     QString mk = key.toLower(), mk2 = d->m_localhostname + ' ' + mk, mv = value;
+     if ("dbschemaver" == mk)
+     {
+-        LOG(VB_GENERAL, LOG_ERR, 
++        LOG(VB_GENERAL, LOG_ERR,
+             QString("ERROR: Refusing to allow override for '%1'.").arg(key));
+         return;
+     }
+@@ -1055,6 +1055,1015 @@ void MythDB::WriteDelayedSettings(void)
+     }
+ }
+ 
++//JM ADDED
++void MythDB::savesettings_togroup(QString src_hostname,
++                                  QString saved_settingsgroupname )
++{
++    LOG(VB_GENERAL, LOG_ERR, QString("Using hostname of : %1")
++                                    .arg(src_hostname));
++    LOG(VB_GENERAL, LOG_ERR, QString("Saving to group: %1")
++                                    .arg(saved_settingsgroupname));
++    if ( settings_check( src_hostname , "current" ) )
++    {
++        QStringList table_list;
++        QString hostname_clause;
++        table_list.append("settings");
++        table_list.append("keybindings");
++        table_list.append("jumppoints");
++        if ( src_hostname == "GLOBAL" )
++            hostname_clause = "hostname IS NULL";
++        else
++            hostname_clause ="hostname = :HOSTNAME";
++
++        foreach (QString table, table_list)
++        {
++            QString dest_tablename = table +"_" + saved_settingsgroupname ;
++            create_new_table(dest_tablename,table);
++
++            QString query_string;
++            // Remove old saved values
++            MSqlQuery query(MSqlQuery::InitCon());
++            query_string = QString("DELETE FROM %1 WHERE %2")
++                                   .arg(dest_tablename)
++                                   .arg(hostname_clause);
++
++            //query_string = QString("DELETE FROM %1 WHERE "
++            //                       "hostname = :HOSTNAME").arg(dest_tablename);
++
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME" ,src_hostname);
++            query.exec();
++
++            //insert all new settings
++            query_string = QString("REPLACE INTO %1 "
++                                   "SELECT  * from %2 where %3")
++                                   .arg(dest_tablename)
++                                   .arg(table)
++                                   .arg(hostname_clause);
++//             query_string = QString("REPLACE INTO %1 "
++//                               "SELECT  * from %2 where  hostname = :HOSTNAME)")
++//                               .arg(dest_tablename)
++//                               .arg(table);
++
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME",src_hostname);
++            query.exec();
++        }
++    }
++    else
++        LOG(VB_GENERAL| VB_STDIO|VB_FLUSH, LOG_ERR,
++            QString("Couldn't find settings for: %1 \n").arg(src_hostname));
++    return;
++
++};
++
++void MythDB::deletesettings(QString delete_hostname,
++                            QString saved_settingsgroupname)
++{
++    LOG(VB_GENERAL, LOG_ERR, QString("Using hostname of : %1")
++                                    .arg(delete_hostname));
++    LOG(VB_GENERAL, LOG_ERR, QString("Deleting: %1")
++                                    .arg(saved_settingsgroupname));
++    int tempItem;
++    QString src_tablename;
++    QStringList table_list;
++
++    table_list.append("settings");
++    table_list.append("keybindings");
++    table_list.append("jumppoints");
++    QString hostname_clause;
++    if ( delete_hostname == "GLOBAL" )
++        hostname_clause = "hostname IS NULL";
++    else
++        hostname_clause ="hostname = :HOSTNAME";
++
++    foreach (QString table, table_list)
++    {
++        src_tablename = find_group_table_name(table, saved_settingsgroupname);
++        MSqlQuery query(MSqlQuery::InitCon());
++        // Remove old saved values
++        if ( does_table_exist(src_tablename))
++        {
++            QString query_string = QString("DELETE from %1 "
++                                           "WHERE %2")
++                                           .arg(src_tablename)
++                                           .arg(hostname_clause);
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME" ,delete_hostname);
++            query.exec();
++
++            //check if ok to delete table
++            query_string = QString("SELECT count(*) from %1")
++                                   .arg(src_tablename);
++            query.prepare(query_string);
++            if (query.exec() && query.isActive() && query.size() > 0)
++            {
++                query.next();
++                tempItem = query.value(0).toInt();
++                if (  tempItem == 0 )
++                    drop_temp_table(src_tablename);
++            }
++        }
++        else
++            LOG(VB_GENERAL, LOG_ERR,
++                QString("Couldn't find table: %1").arg(src_tablename));
++    }
++    return;
++}; // end delete settings
++
++
++QMap<QString,QStringList> MythDB::list_settingsgroupname()
++{
++    //Returns a QMAP of  "settings_groups: hostname"
++    MSqlQuery query(MSqlQuery::InitCon());
++    MSqlQuery subquery(MSqlQuery::InitCon());
++    QString tempItem;
++    QString temp_hostnameItem;
++    QStringList hostname_list;
++    QMap<QString,QStringList> return_list;
++    QString full_table_name;
++    query.prepare( "show tables like \"settings%\" " );
++    if (query.exec() && query.isActive() && query.size() > 0)
++    {
++        while (query.next())
++        {
++            full_table_name = query.value(0).toString();
++            tempItem=query.value(0).toString().remove(QRegExp("settings_"));
++            if ( tempItem != "distro_default" )
++            {
++                //loop over tables looking for hostnames
++                QString query_string = QString("SELECT DISTINCT "
++                                               "hostname from %1")
++                                               .arg(full_table_name);
++                subquery.prepare(query_string);
++
++                if (subquery.exec() && subquery.isActive()
++                    && subquery.size() > 0)
++                {
++                    while (subquery.next())
++                    {
++                        temp_hostnameItem = subquery.value(0).toString();
++                        hostname_list.append(temp_hostnameItem);
++                    }
++                }
++                //Special case of naming for the settings table;
++                //This only affects output.
++                if ( tempItem  == "settings" )
++                    return_list["current"] = hostname_list;
++                else
++                    return_list[tempItem] = hostname_list;
++
++                //reset hostname_list for the next group
++                hostname_list = QStringList();
++            }
++        }
++    }
++    return return_list;
++}; // end list_settingsgroupname
++
++QMap<QString,QStringList> MythDB::diff_settingsgroupname(
++            QString diff_hostname1 ,
++            QString diff_hostname2,
++            QStringList table_list  )
++{
++   // Returns a QMAP of tablename : diff results
++    LOG(VB_GENERAL, LOG_ERR, QString("Comparing settings for:"));
++    LOG(VB_GENERAL, LOG_ERR, QString("host 1: %1").arg(diff_hostname1));
++    LOG(VB_GENERAL, LOG_ERR, QString("host 2: %1").arg(diff_hostname2));
++
++    QString qstr;
++    QString tempItem;
++    QString tempString;
++
++    QStringList diff_list;
++    QStringList settings_list;
++    QStringList keybinding_list;
++
++    QMap<QString,QStringList> return_list;
++    if ( table_list.isEmpty() )
++    {
++        table_list.append("settings");
++        table_list.append("keybindings");
++    }
++
++    MSqlQuery query(MSqlQuery::InitCon());
++    foreach (QString table, table_list)
++    {
++        if ( table == "settings")
++        {
++
++            qstr= "SELECT  distinct settings.value, :DIFF_HOSTNAME1 AS `hostname`, settings_a.data, :DIFF_HOSTNAME2 AS `hostname`"
++                  " , settings_b.data FROM settings LEFT JOIN settings AS settings_a ON settings_a.value = settings.value AND settings_a.hostname = :DIFF_HOSTNAME1"
++                  " LEFT JOIN settings AS settings_b ON settings_b.value = settings.value AND settings_b.hostname = :DIFF_HOSTNAME2"
++                  " WHERE settings_a.data != settings_b.data OR "
++                  " (settings_a.data IS NULL AND settings_b.data IS NOT NULL) OR (settings_a.data IS NOT NULL AND settings_b.data IS NULL);";
++
++            query.prepare(qstr);
++            query.bindValue(":DIFF_HOSTNAME1" , diff_hostname1);
++            query.bindValue(":DIFF_HOSTNAME2" , diff_hostname2);
++
++            if (query.exec() && query.isActive() && query.size() > 0)
++            {
++                while (query.next())
++                {
++                    tempString="";
++                    //value
++                    tempItem = query.value(0).toString();
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //hostname_1
++                    tempItem = query.value(1).toString();
++                    if (tempItem.isEmpty())
++                        tempItem=diff_hostname1;
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //data
++                    tempItem = query.value(2).toString();
++                    if (tempItem.isEmpty())
++                        tempItem="NULL";
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //hostname_2
++                    tempItem = query.value(3).toString();
++                    if (tempItem.isEmpty())
++                        tempItem=diff_hostname2;
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //data
++                    tempItem = query.value(4).toString();
++                    if (tempItem.isEmpty())
++                        tempItem="NULL";
++                    tempString.append(tempItem);
++
++                    settings_list.append(tempString);
++                }
++                return_list["Settings"] = settings_list;
++            }
++        }
++        else if ( table == "keybindings")
++        {
++
++            qstr="SELECT distinct  keybindings.context, keybindings.action, :DIFF_HOSTNAME1 AS `hostname`, keybindings_a.keylist, :DIFF_HOSTNAME2 AS `hostname`, keybindings_b.keylist FROM keybindings "
++                 " LEFT JOIN keybindings AS keybindings_a ON keybindings_a.context = keybindings.context AND keybindings_a.action = keybindings.action "
++                 " AND keybindings_a.hostname = :DIFF_HOSTNAME1 "
++                 " LEFT JOIN keybindings AS keybindings_b ON keybindings_b.context = keybindings.context "
++                 " AND keybindings_b.action = keybindings.action AND keybindings_b.hostname = :DIFF_HOSTNAME2 "
++                 " WHERE keybindings_a.keylist != keybindings_b.keylist OR "
++                 " (keybindings_a.keylist IS NULL AND keybindings_b.keylist IS NOT NULL) OR (keybindings_a.keylist IS NOT NULL AND keybindings_b.keylist IS NULL);";
++            query.prepare(qstr);
++            query.bindValue(":DIFF_HOSTNAME1" , diff_hostname1);
++            query.bindValue(":DIFF_HOSTNAME2" , diff_hostname2);
++
++            if (query.exec() && query.isActive() && query.size() > 0)
++            {
++                while (query.next())
++                {
++                    tempString="";
++                    //context
++                    tempItem = query.value(0).toString();
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //action
++                    tempItem = query.value(1).toString();
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //hostname
++                    tempItem = query.value(2).toString();
++                    if (tempItem.isEmpty())
++                        tempItem=diff_hostname1;
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //keylist
++                    tempItem = query.value(3).toString();
++                    if (tempItem.isEmpty())
++                        tempItem="NULL";
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //hostname
++                    tempItem = query.value(4).toString();
++                    if (tempItem.isEmpty())
++                        tempItem=diff_hostname2;
++                    tempString.append(tempItem);
++                    tempString.append("|");
++
++                    //keylist
++                    tempItem = query.value(5).toString();
++                    if (tempItem.isEmpty())
++                       tempItem="NULL";
++                    tempString.append(tempItem);
++                    keybinding_list.append(tempString);
++                }
++                return_list["Keybindings"] = keybinding_list;
++            }
++        }
++
++    }
++    return return_list;
++}; //end diff_settingsgroupname
++
++void MythDB::clonesettings(QString src_hostname,
++                           QString saved_settingsgroupname,
++                           QStringList table_list,
++                           bool is_full_clone, QString dest_hostname)
++{
++    LOG(VB_GENERAL, LOG_ERR, QString("Using src hostname of : %1")
++                                     .arg(src_hostname));
++    LOG(VB_GENERAL, LOG_ERR, QString("Using dest hostname of : %1")
++                                     .arg(dest_hostname));
++    LOG(VB_GENERAL, LOG_ERR, QString("Cloning setting group: %1")
++                                     .arg(saved_settingsgroupname));
++    LOG(VB_GENERAL, LOG_ERR, QString("Full Copy : %1")
++                                     .arg(is_full_clone));
++
++    MSqlQuery query(MSqlQuery::InitCon());
++    QStringList::Iterator it;
++    QString current_table;
++    QString dest_tablename;
++    QString temptable;
++
++    if ( table_list.isEmpty() )
++    {
++        table_list.append("settings");
++        table_list.append("keybindings");
++        table_list.append("jumppoints");
++    }
++
++    for ( it = table_list.begin(); it != table_list.end(); ++it )
++    {
++        current_table = *it ;
++        dest_tablename = find_group_table_name(current_table,
++                                               saved_settingsgroupname);
++
++        if ( does_table_exist(dest_tablename))
++        {
++            // create temp table for merging settings
++            temptable="temp_table_" + dest_tablename;
++            create_temp_table(temptable, current_table );
++
++            // copy in stored settings
++            QString query_string = QString("REPLACE INTO %1 "
++                             "(SELECT  * from %2 where  hostname = :HOSTNAME)")
++                             .arg(temptable)
++                             .arg(dest_tablename);
++
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME",src_hostname );
++            query.exec();
++
++            // update hostname for dest_hostname
++            query_string = QString("UPDATE   %1 set hostname = :HOSTNAME")
++                                   .arg(temptable);
++
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME" , dest_hostname );
++            query.exec();
++
++            //if not full clone remove HOST% settings from temp table;
++            if ( current_table == "settings" && !is_full_clone)
++            {
++                query_string = QString("DELETE FROM %1 WHERE "
++                                 "hostname=:HOSTNAME and value like 'HOST%' " )
++                                 .arg(temptable);
++
++                query.prepare(query_string);
++                query.bindValue( ":HOSTNAME" ,   dest_hostname  );
++                query.exec();
++            }
++
++            //remove current settings from dest table,
++            //if not full clone, then leave HOST%
++            //Need to remove because the old table allows for duplicates
++
++            if ( current_table == "settings" && !is_full_clone)
++                query_string = QString ("DELETE FROM %1 WHERE "
++                                        "hostname = :HOSTNAME "
++                                        "and value not like 'HOST%'")
++                                        .arg(dest_tablename);
++
++            else
++                query_string = QString ("DELETE FROM %1 WHERE "
++                                        "hostname = :HOSTNAME ")
++                                        .arg(dest_tablename);
++
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME",dest_hostname);
++            query.exec();
++
++            // copy new settings from temp to current
++            query_string = QString("REPLACE INTO %1 "
++                                   "(SELECT  * from %2)")
++                                   .arg(dest_tablename)
++                                   .arg(temptable);
++
++            query.prepare(query_string);
++            query.exec();
++
++            // drop temptable
++            drop_temp_table(temptable);
++        }
++        else
++            LOG(VB_GENERAL, LOG_NOTICE, QString("Couldn't find table: %1")
++                                                .arg(dest_tablename));
++    }
++}; //end clonesettings
++
++void MythDB::restoresettings (QString dest_hostname,
++                              QString saved_settingsgroupname,
++                              QStringList table_list )
++{
++    LOG(VB_GENERAL, LOG_NOTICE, QString("Restoring Settings:"));
++    LOG(VB_GENERAL, LOG_NOTICE, QString("    src: %1")
++                                        .arg(saved_settingsgroupname));
++    LOG(VB_GENERAL, LOG_NOTICE, QString("    dest:%1")
++                                        .arg(dest_hostname));
++
++    QString hostname_clause;
++    if ( dest_hostname == "GLOBAL" )
++        hostname_clause = "hostname IS NULL";
++    else
++        hostname_clause ="hostname = :HOSTNAME";
++
++    bool table_check;
++    if ( saved_settingsgroupname == "distro_default" )
++        table_check =  settings_check ( "distro_default" , saved_settingsgroupname );
++    else
++        table_check = settings_check ( dest_hostname , saved_settingsgroupname );
++
++
++    if ( table_check == TRUE )
++    {
++        MSqlQuery query(MSqlQuery::InitCon());
++        QStringList::Iterator it;
++        QString current_table;
++        if ( table_list.isEmpty() )
++        {
++            table_list.append("settings");
++            table_list.append("keybindings");
++            table_list.append("jumppoints");
++        }
++
++        for ( it = table_list.begin(); it != table_list.end(); ++it )
++        {
++            current_table = *it ;
++            //find tablenames to use
++            QString src_tablename = find_group_table_name(current_table,
++                                         saved_settingsgroupname);
++
++            QString temptable="temp_table_" + src_tablename;
++            if ( ! does_table_exist(src_tablename))
++            {
++                LOG(VB_GENERAL, LOG_NOTICE, QString("table does not exist: %1")
++                        .arg(src_tablename));
++                continue;
++            }
++            // create temp table for merging settings
++            create_temp_table(temptable, current_table );
++
++            //could copy in current settings here to account for new stuff
++
++
++
++            // copy in stored settings
++            QString query_string;
++            if ( saved_settingsgroupname == "distro_default" )
++            {  //special case for restoring default settings
++                query_string = QString("REPLACE INTO %1 "
++                    "(SELECT  * from %2 WHERE %3)")
++                    .arg(temptable)
++                    .arg(src_tablename)
++                    .arg(hostname_clause);
++
++                query.prepare(query_string);
++                query.bindValue(":HOSTNAME", "distro_default" );
++                query.exec();
++
++                // update hostname in temp table from distro_default
++                query_string = QString("UPDATE  %1 set hostname = :HOSTNAME")
++                                       .arg(temptable);
++
++                query.prepare(query_string);
++                query.bindValue(":HOSTNAME" , dest_hostname );
++                query.exec();
++
++            }
++            else
++            {   //normal use case
++                query_string = QString("REPLACE INTO %1 "
++                                "(SELECT  * from %2 WHERE %3)")
++                                .arg(temptable)
++                                .arg(src_tablename)
++                                .arg(hostname_clause);
++
++                query.prepare(query_string);
++                query.bindValue(":HOSTNAME",dest_hostname );
++                query.exec();
++            }
++
++            //Remove current settings.
++            //Need to remove because the old table allows for duplicates
++            query_string = QString("DELETE FROM %1 WHERE "
++                                   "%2")
++                                   .arg(current_table)
++                                   .arg(hostname_clause);
++
++            query.prepare(query_string);
++            query.bindValue(":HOSTNAME",dest_hostname);
++            query.exec();
++
++            // copy new settings from temp to current
++            query_string = QString("REPLACE INTO %1 "
++                                   "(SELECT  * from %2)")
++                                   .arg(current_table)
++                                   .arg(temptable);
++
++            query.prepare(query_string);
++            query.exec();
++            // drop temptable
++            drop_temp_table(temptable);
++        }
++    }
++}; //end restore settings
++
++void MythDB::change_hostname (QString old_hostname, QString new_hostname)
++{
++    LOG(VB_GENERAL, LOG_NOTICE, QString("Changing hostname from %1 -> %2")
++                                        .arg(old_hostname)
++                                        .arg(new_hostname));
++
++    MSqlQuery query(MSqlQuery::InitCon());
++    MSqlQuery sub_query(MSqlQuery::InitCon());
++    query.prepare( "SHOW TABLES" );
++
++    if (query.exec() && query.isActive() && query.size() > 0)
++    {
++        while (query.next())
++        {
++            QString table_name = query.value(0).toString();
++            LOG(VB_GENERAL, LOG_NOTICE, QString("Scanning  %1")
++                                                .arg(table_name));
++
++            // LOOP OVER TABLES, CHECK IF IT HAS A HOSTNAME FIELD
++            QString query_string=QString("SHOW COLUMNS from %1 "
++                                         "where field='hostname'")
++                                         .arg(table_name);
++            sub_query.prepare(query_string);
++
++            if (sub_query.exec() && sub_query.size() > 0)
++            {  //update hostname
++               LOG(VB_GENERAL, LOG_NOTICE, QString("  Updating hostname in: %1")
++                                                   .arg(table_name));
++               query_string = QString("UPDATE %1 SET hostname = :NEW_HOSTNAME "
++                               "WHERE hostname = :OLD_HOSTNAME")
++                               .arg(table_name);
++               sub_query.prepare(query_string);
++               sub_query.bindValue(":NEW_HOSTNAME" , new_hostname);
++               sub_query.bindValue(":OLD_HOSTNAME" , old_hostname);
++               sub_query.exec();
++            }
++        }
++    }
++
++
++
++
++
++
++}
++
++bool MythDB::settings_check(QString src_hostname,
++                            QString saved_settingsgroupname)
++{
++    int tempItem;
++    bool returncode = FALSE ;
++    QString table="settings";
++
++    QString tablename = find_group_table_name(table, saved_settingsgroupname);
++    QString hostname_clause;
++    if ( src_hostname == "GLOBAL" )
++        hostname_clause = "hostname IS NULL";
++    else
++        hostname_clause ="hostname = :HOSTNAME";
++
++    if (does_table_exist (tablename))
++    {
++        MSqlQuery query(MSqlQuery::InitCon());
++        QString query_string = QString("SELECT COUNT(data) from %1 "
++                                       "WHERE %2")
++                                       .arg(tablename)
++                                       .arg(hostname_clause);
++
++        query.prepare(query_string);
++        query.bindValue(":HOSTNAME" , src_hostname );
++
++        if (query.exec() && query.isActive() && query.size() > 0 )
++        {
++            while (query.next())
++            {
++                 tempItem = query.value(0).toInt();
++                 if (  tempItem >= 1 )
++                     returncode = TRUE;
++                 else
++                 {
++                     LOG(VB_GENERAL, LOG_NOTICE,
++                         QString("Group %1 does not contain"
++                                 " valid settings")
++                                 .arg(saved_settingsgroupname));
++                 }
++             }
++        }
++    }
++    else
++       LOG(VB_GENERAL, LOG_NOTICE, QString("Couldn't find table: %1")
++                                           .arg(tablename));
++    return returncode;
++}; // end settings_check
++
++void MythDB::import_settings(QMap<QString,QString> vp_map,
++                             QString table)
++{
++    MSqlQuery query(MSqlQuery::InitCon());
++
++    //IMPORT SETTINGS TABLE
++    if (table.startsWith("settings"))
++    {
++         if ( table != "settings" )
++             create_new_table(table,"settings");
++         QString hostname = vp_map.value("hostname");
++         QString value = vp_map.value("value");
++         QString data = vp_map.value("data");
++
++         QString hostname_clause;
++         QVariant import_hostname = QVariant(QVariant::String);
++
++         if ( hostname.isEmpty())
++             hostname_clause = "hostname IS NULL";
++         else
++         {
++             hostname_clause ="hostname = :HOSTNAME";
++             import_hostname = hostname;
++         }
++
++         QString query_string=QString("SELECT  value, data, hostname "
++                              "FROM %1 "
++                              "WHERE %2 AND value = :VALUE "
++                              "ORDER BY value")
++                              .arg(table)
++                              .arg(hostname_clause);
++
++         query.prepare(query_string);
++         query.bindValue(":HOSTNAME", hostname);
++         query.bindValue(":VALUE", value);
++
++         // if already exisiting records then update, otherwise insert
++         if (query.exec() && query.isActive())
++         {
++            MSqlQuery sub_query(MSqlQuery::InitCon());
++            if ( query.size() > 0 )
++            {
++                query_string = QString("UPDATE  "
++                    "%1 "
++                    "set data = :DATA "
++                    "WHERE %2 AND "
++                    "value = :VALUE ")
++                    .arg(table)
++                    .arg(hostname_clause);
++
++                sub_query.prepare(query_string);
++                sub_query.bindValue(":HOSTNAME", import_hostname);
++                sub_query.bindValue(":VALUE", value);
++                sub_query.bindValue(":DATA", data);
++                sub_query.exec();
++            }
++            else
++            {
++                 query_string = QString("INSERT INTO   "
++                    " %1 "
++                    "(value,data,hostname) "
++                    "VALUES ( :VALUE , :DATA , :HOSTNAME)").arg(table);
++
++                sub_query.prepare(query_string);
++                sub_query.bindValue(":HOSTNAME", import_hostname);
++                sub_query.bindValue(":VALUE", value);
++                sub_query.bindValue(":DATA", data);
++                sub_query.exec();
++            }
++        }
++    }
++    //KEYBINDINGS TABLE
++    else if (table.startsWith("keybindings"))
++    {
++       if ( table !=  "keybindings" )
++           create_new_table(table,"keybindings");
++       QString hostname = vp_map.value("hostname");
++       QString context = vp_map.value("context");
++       QString action = vp_map.value("action");
++       QString description = vp_map.value("description");
++       QString keylist = vp_map.value("keylist");
++
++       QString query_string=QString("SELECT  context,action,hostname "
++           "FROM %1 "
++           "WHERE hostname = :HOSTNAME AND "
++           "context = :CONTEXT "
++           "AND action = :ACTION ").arg(table);
++       query.prepare(query_string);
++       query.bindValue(":HOSTNAME", hostname);
++       query.bindValue(":CONTEXT", context);
++       query.bindValue(":ACTION", action);
++
++       if (query.exec() && query.isActive())
++       {
++           MSqlQuery sub_query(MSqlQuery::InitCon());
++           if ( query.size() > 0 )
++           {
++               query_string = QString("UPDATE  "
++               " %1 "
++               "set keylist = :KEYLIST "
++               "WHERE hostname = :HOSTNAME AND "
++               "context = :CONTEXT "
++               "AND action = :ACTION ").arg(table);
++
++               sub_query.prepare(query_string);
++               sub_query.bindValue(":HOSTNAME", hostname);
++               sub_query.bindValue(":KEYLIST", keylist);
++               sub_query.bindValue(":CONTEXT", context);
++               sub_query.bindValue(":ACTION", action);
++               sub_query.exec();
++           }
++           else
++           {
++               query_string = QString("INSERT INTO "
++               " %1 "
++               " (context , action , description , keylist , hostname) "
++               " VALUES( "
++               " :CONTEXT ,"
++               " :ACTION , "
++               " :DESCRIPTION , "
++               " :KEYLIST , "
++               " :HOSTNAME)").arg(table) ;
++
++               sub_query.prepare(query_string);
++               sub_query.bindValue(":HOSTNAME", hostname);
++               sub_query.bindValue(":KEYLIST", keylist);
++               sub_query.bindValue(":CONTEXT", context);
++               sub_query.bindValue(":ACTION", action);
++               sub_query.bindValue(":DESCRIPTION", description);
++               sub_query.exec();
++           }
++       }
++   }
++   //JUMP POINTS
++   else if (table.startsWith("jumppoints"))
++   {
++       if ( table != "jumppoints" )
++           create_new_table(table,"jumppoints");
++       QString hostname = vp_map.value("hostname");
++       QString description = vp_map.value("description");
++       QString destination = vp_map.value("destination");
++       QString keylist = vp_map.value("keylist");
++
++       QString query_string=QString("SELECT  destination, keylist  "
++        "FROM %1 "
++        "WHERE hostname = :HOSTNAME AND "
++        "destination = :DESTINATION "
++        "AND keylist = :KEYLIST ").arg(table);
++       query.prepare(query_string);
++       query.bindValue(":HOSTNAME", hostname);
++       query.bindValue(":DESTINATION", destination);
++       query.bindValue(":KEYLIST", keylist);
++
++       if (query.exec() && query.isActive())
++       {
++           MSqlQuery sub_query(MSqlQuery::InitCon());
++           if ( query.size() > 0 )
++           {
++               query_string = QString("UPDATE  "
++               " %1 "
++               "set keylist = :KEYLIST "
++               "WHERE hostname = :HOSTNAME AND "
++               "destination = :DESTINATION ").arg(table);
++
++               sub_query.prepare(query_string);
++               sub_query.bindValue(":HOSTNAME", hostname);
++               sub_query.bindValue(":KEYLIST", keylist);
++               sub_query.bindValue(":DESTINATION", destination);
++               sub_query.exec();
++           }
++           else
++           {
++               query_string = QString("INSERT INTO "
++               " %1 "
++               " (description , destination,  keylist , hostname) "
++               " VALUES( "
++               " :DESCRIPTION ,"
++               " :DESTINATION , "
++               " :KEYLIST , "
++               " :HOSTNAME)").arg(table) ;
++
++               sub_query.prepare(query_string);
++               sub_query.bindValue(":HOSTNAME", hostname);
++               sub_query.bindValue(":KEYLIST", keylist);
++               sub_query.bindValue(":DESTINATION", destination);
++               sub_query.bindValue(":DESCRIPTION", description);
++               sub_query.exec();
++           }
++       }
++   }
++}; //end import_settings
++
++QMap<QString, QMap<QString,QString> >
++            MythDB::export_settings(QString src_hostname,
++                                    QString saved_settingsgroupname,
++                                    QStringList table_list, bool skip_host )
++{
++    QMap<QString, QMap<QString,QString> >  result_set;
++    QStringList::Iterator it;
++    QString current_table;
++    int record_count = 0;
++
++    if ( table_list.isEmpty() )
++    {
++        table_list.append("settings");
++        table_list.append("keybindings");
++        table_list.append("jumppoints");
++    }
++
++    MSqlQuery query(MSqlQuery::InitCon());
++    QString query_string;
++
++    //loop over tablelist
++    for ( it = table_list.begin(); it != table_list.end(); ++it )
++    {
++        current_table = *it ;
++        QString sub_sql;
++        QStringList fields;
++        QString field_query;
++
++        QString table_name = find_group_table_name(current_table,
++                                                   saved_settingsgroupname);
++
++        QString hostname_clause;
++        if ( src_hostname == "GLOBAL" )
++            hostname_clause = "hostname IS NULL";
++        else
++            hostname_clause ="hostname = :HOSTNAME";
++
++        // find field names
++        query_string = QString("SHOW COLUMNS from %1").arg(table_name);
++        query.prepare(query_string);
++
++        //build up field name vars
++        if (query.exec() && query.isActive() && query.size() > 0)
++        {
++            while (query.next())
++            {
++                if (! field_query.isEmpty())
++                    field_query +=',';
++                QString tempItem = query.value(0).toString();
++                fields.append(tempItem);
++                field_query += tempItem;
++            }
++        }
++        // when working with settings table skip HOST if skip_host is true
++        if ( current_table == "settings" && skip_host == TRUE )
++        {
++            QString skip_host_clause;
++            skip_host_clause = " VALUE not like 'HOST%' AND DATA not like 'HardwareProfile%UUID'" ;
++            query_string = QString("SELECT %1 FROM %2 WHERE %3 AND %4")
++            .arg(field_query)
++            .arg(table_name)
++            .arg(hostname_clause)
++            .arg(skip_host_clause);
++
++        }
++        else
++        {
++            query_string = QString("SELECT %1 FROM %2 WHERE %3")
++                                .arg(field_query)
++                                .arg(table_name)
++                                .arg(hostname_clause);
++        }
++        query.prepare(query_string);
++        query.bindValue(":HOSTNAME" , src_hostname);
++
++        //looping over each record in the table query
++        if (query.exec() && query.isActive() && query.size() > 0)
++        {
++            while (query.next())
++            {
++                //construct qmap of elements
++                //add table name
++                QMap<QString,QString> value_pair;
++                value_pair["table"]=table_name;
++
++                for ( int i=0 ; i < fields.size();i++ )
++                {
++                    QString tempvalue = fields[i];
++                    QString tempItem = query.value(i).toString();
++                    value_pair[tempvalue]=tempItem;
++                }
++                result_set[QString(record_count)] = value_pair;
++                record_count++;
++            }
++        }
++
++    } // end table loop
++    return result_set;
++}; //end export_settings
++
++
++void MythDB::create_new_table (QString create_table_name,QString like_name)
++{
++    if ( ! does_table_exist(create_table_name))
++    {
++        MSqlQuery query(MSqlQuery::InitCon());
++        QString query_string = QString("CREATE TABLE %1 like %2")
++                                       .arg(create_table_name)
++                                       .arg(like_name);
++
++        query.prepare(query_string);
++        query.exec();
++    }
++    else
++        LOG(VB_GENERAL, LOG_NOTICE, QString("Table is already present,"
++                                            "will not create it: %1")
++                                            .arg(create_table_name));
++};
++
++
++void MythDB::drop_temp_table (QString table_name)
++{
++    MSqlQuery query(MSqlQuery::InitCon());
++    if (table_name == "settings" | table_name == "keybindings" | table_name == "jumppoints")
++        return;
++    QString query_string = QString("DROP TABLE %1").arg(table_name);
++    query.prepare(query_string);
++    query.exec();
++    return;
++}
++
++void MythDB::create_temp_table (QString create_table_name,QString like_name)
++{
++    MSqlQuery query(MSqlQuery::InitCon());
++    create_new_table(create_table_name,like_name);
++    QString query_string;
++    if ( like_name == "settings")
++    {
++         query_string = QString ("ALTER TABLE %1 ADD UNIQUE( value)")
++                                 .arg(create_table_name);
++         query.prepare(query_string);
++         query.exec();
++    }
++
++    query_string = QString("TRUNCATE %1").arg(create_table_name);
++    query.prepare(query_string);
++    query.exec();
++ return;
++}
++
++bool MythDB::does_table_exist(QString table_name)
++{
++    bool table_exist = FALSE;
++    QString full_table_name;
++    MSqlQuery query(MSqlQuery::InitCon());
++
++    query.prepare( "SHOW TABLES" );
++    if (query.exec() && query.isActive() && query.size() > 0)
++    {
++        while (query.next())
++        {
++            full_table_name = query.value(0).toString();
++            if (table_name == full_table_name)
++            {
++                table_exist = TRUE;
++                break;
++            }
++        }
++    }
++    return table_exist;
++};
++
++
++QString MythDB::find_group_table_name(QString current_table,
++                                      QString saved_settingsgroupname)
++{
++    QString table_name;
++    if ( saved_settingsgroupname.toLower() == "current" )
++        table_name =  current_table ;
++    else
++        table_name =  current_table + "_" + saved_settingsgroupname ;
++
++   return table_name;
++};
++//END JM ADDED
++
+ /**
+  *  \brief Set a flag indicating we have successfully connected to the database
+  */
+diff --git a/mythtv/libs/libmythbase/mythdb.h b/mythtv/libs/libmythbase/mythdb.h
+index 79abe56..fd6044e 100644
+--- a/mythtv/libs/libmythbase/mythdb.h
++++ b/mythtv/libs/libmythbase/mythdb.h
+@@ -75,6 +75,49 @@ class MBASE_PUBLIC MythDB
+ 
+     void WriteDelayedSettings(void);
+ 
++    //JM ADDED
++    void savesettings_togroup(QString src_hostname,
++                              QString saved_settingsgroupname );
++    void deletesettings(QString delete_hostname,
++                        QString saved_settingsgroupname);
++
++    QMap<QString,QStringList> list_settingsgroupname();
++
++    QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
++                                                     QString diff_hostname2,
++                                                     QStringList table_list);
++
++    void clonesettings(QString src_hostname,
++                       QString saved_settingsgroupname,
++                       QStringList table_list,
++                       bool is_full_clone=TRUE,
++                       QString dest_hostname="");
++
++    void restoresettings (QString dest_hostname,
++                          QString saved_settingsgroupname,
++                          QStringList table_list);
++
++    void change_hostname (QString old_hostname, QString new_hostname);
++    bool settings_check (QString src_hostname, QString saved_settingsgroupname);
++    void import_settings(QMap<QString,QString> vp_map, QString table);
++
++
++    QMap<QString,QMap <QString,QString> > export_settings(
++                         QString src_hostname,
++                         QString saved_settingsgroupname,
++                         QStringList table_list,
++                         bool skip_host = FALSE);
++
++    void create_new_table (QString create_table_name,QString like_name);
++    void drop_temp_table (QString table_name);
++    void create_temp_table (QString create_table_name,QString like_name);
++    bool does_table_exist(QString table_name);
++    QString find_group_table_name(QString current_table,
++                                  QString saved_settingsgroupname);
++    //END JM ADDED
++
++
++
+     void SetHaveDBConnection(bool connected);
+     void SetHaveSchema(bool schema);
+     bool HaveSchema(void) const;
+diff --git a/mythtv/programs/mythutil/commandlineparser.cpp b/mythtv/programs/mythutil/commandlineparser.cpp
+index f4a6035..fdeeb8e 100644
+--- a/mythtv/programs/mythutil/commandlineparser.cpp
++++ b/mythtv/programs/mythutil/commandlineparser.cpp
+@@ -118,6 +118,37 @@ void MythUtilCommandLineParser::LoadArguments(void)
+         << add("--print-template", "printtemplate", false,
+                 "Print the template to be sent to the frontend", "")
+                 ->SetGroup("Messaging")
++
++        //settingsutil.cpp
++        << add("--save-settings", "savesettings", false,
++                "Save current settings", "")
++                ->SetGroup("Settings")
++        << add("--delete-settings", "deletesettings", false,
++                "Delete current settings", "")
++                ->SetGroup("Settings")
++        << add("--restore-settings", "restoresettings", false,
++                "Restore settings from previous backup", "")
++                ->SetGroup("Settings")
++        << add("--list-groups", "listgroups", false,
++                "List hosts and groups of settings", "")
++                ->SetGroup("Settings")
++        << add("--copy-settings", "copysettings", false,
++                "Copy or Clone settings from one host to another", "")
++                ->SetGroup("Settings")
++        << add("--diff-settings", "diffsettings", false,
++                "Show settings that are different between two hosts", "")
++                ->SetGroup("Settings")
++        << add("--change-hostname", "changehostname", false,
++                 "Change the hostname", "")
++                ->SetGroup("Settings")
++        << add("--import-settings", "importsettings", false,
++               "import settings", "")
++                ->SetRequiredChild("infile")
++
++        << add("--export-settings", "exportsettings", false,
++               "export settings", "")
++               ->SetRequiredChild("outfile")
++
+         );
+ 
+     // mpegutils.cpp
+@@ -140,6 +171,59 @@ void MythUtilCommandLineParser::LoadArguments(void)
+     add("--bcastaddr", "bcastaddr", "127.0.0.1", "(optional) IP address to send to", "")
+         ->SetChildOf("message");
+ 
++    //settingsutils.cpp
++    add("--groupname", "groupname", "", "Group of settings name", "")
++        ->SetRequiredChildOf("savesettings")
++        ->SetRequiredChildOf("restoresettings")
++        ->SetRequiredChildOf("deletesettings")
++        ->SetChildOf("copysettings");
++
++    add("--hostname", "hostname", "", "System name to save/restore settings", "")
++        ->SetChildOf("savesettings")
++        ->SetChildOf("restoresettings")
++        ->SetChildOf("copysettings")
++        ->SetChildOf("deletesettings")
++        ->SetChildOf("exportsettings")
++        ->SetChildOf("importsettings");
++
++    add("--host_1", "host_1", "", "First host in compare list", "")
++        ->SetRequiredChildOf("diffsettings");
++
++    add("--host_2", "host_2", "", "Second host in compare list", "")
++        ->SetRequiredChildOf("diffsettings");
++
++
++    add("--tablelist", "table_list", "", "List of tables to operate on "
++        "[keybindings,settings]", "")
++        ->SetChildOf("diffsettings")
++        ->SetChildOf("restoresettings")
++        ->SetChildOf("copysettings")
++        ->SetChildOf("exportsettings");
++
++    add("--clone", "fullclone", false, "Enable copy of all settings, "
++        "including those that are unique to each system.", "")
++        ->SetChildOf("copysettings");
++
++
++    add("--old-host", "oldhost", "", "Hostname to change", "")
++        ->SetRequiredChildOf("changehostname");
++
++    add("--new-host", "newhost", "", "New hostname", "")
++        ->SetRequiredChildOf("changehostname")
++        ->SetRequiredChildOf("copysettings");
++
++    add("--format", "format", false, "Format output of differences", "")
++        ->SetChildOf("diffsettings");
++    add("--distro-default", "distro-default", false, "Export settings for"
++        "import into the default table", "")
++        ->SetChildOf("exportsettings");
++    add("--generic", "generic", false, "export settings without saving "
++        "the hostname", "")
++        ->SetChildOf("exportsettings");
++
++
++
++
+     // Generic Options used by more than one utility
+     addRecording();
+     addInFile(true);
+diff --git a/mythtv/programs/mythutil/main.cpp b/mythtv/programs/mythutil/main.cpp
+index 418ea01..bd4a1f4 100644
+--- a/mythtv/programs/mythutil/main.cpp
++++ b/mythtv/programs/mythutil/main.cpp
+@@ -21,6 +21,7 @@
+ #include "jobutils.h"
+ #include "markuputils.h"
+ #include "messageutils.h"
++#include "settingsutils.h"
+ #include "signalhandling.h"
+ 
+ 
+@@ -105,6 +106,7 @@
+     registerJobUtils(utilMap);
+     registerMarkupUtils(utilMap);
+     registerMessageUtils(utilMap);
++    registerSettingsUtils(utilMap);
+ 
+     bool cmdFound = false;
+     int cmdResult = GENERIC_EXIT_OK;
+diff --git a/mythtv/programs/mythutil/mythutil.pro b/mythtv/programs/mythutil/mythutil.pro
+index 066e618..87d7952 100644
+--- a/mythtv/programs/mythutil/mythutil.pro
++++ b/mythtv/programs/mythutil/mythutil.pro
+@@ -10,7 +10,7 @@ TARGET = mythutil
+ target.path = $${PREFIX}/bin
+ INSTALLS = target
+ 
+-LIBS += $$EXTRA_LIBS 
++LIBS += $$EXTRA_LIBS
+ INCLUDEPATH += ../../libs/libmythbase
+ 
+ QMAKE_CLEAN += $(TARGET)
+@@ -19,8 +19,10 @@ QMAKE_CLEAN += $(TARGET)
+ HEADERS += mythutil.h commandlineparser.h
+ HEADERS += backendutils.h fileutils.h jobutils.h markuputils.h
+ HEADERS += messageutils.h mpegutils.h
++HEADERS += settingsutils.h
++
+ SOURCES += main.cpp mythutil.cpp commandlineparser.cpp
+ SOURCES += backendutils.cpp fileutils.cpp jobutils.cpp markuputils.cpp
+ SOURCES += messageutils.cpp mpegutils.cpp
+-
++SOURCES += settingsutils.cpp
+ mingw: LIBS += -lwinmm -lws2_32
+diff --git a/mythtv/programs/mythutil/settingsutils.cpp b/mythtv/programs/mythutil/settingsutils.cpp
+new file mode 100644
+index 0000000..8fc7b0e
+--- /dev/null
++++ b/mythtv/programs/mythutil/settingsutils.cpp
+@@ -0,0 +1,586 @@
++// C++ includes
++#include <iostream>
++
++//QT includes
++#include <qdom.h>
++#include <QFile>
++#include <QDomElement>
++
++// libmyth* includes
++#include "compat.h"
++#include "exitcodes.h"
++#include "mythlogging.h"
++#include "mythcontext.h"
++
++
++#include "settingsutils.h"
++
++
++static int SaveSettings(const MythUtilCommandLineParser &cmdline)
++{
++    QString src_hostname;
++    QString groupname;
++
++    if (cmdline.toBool("groupname"))
++        groupname = cmdline.toString("groupname");
++
++    if (cmdline.toBool("hostname"))
++        src_hostname = cmdline.toString("hostname");
++    else
++        src_hostname = gCoreContext->GetHostName();
++
++    gCoreContext->savesettings_togroup(src_hostname,groupname);
++    return GENERIC_EXIT_OK;
++}
++
++static int DeleteSettings(const MythUtilCommandLineParser &cmdline)
++{
++
++    QString delete_hostname;
++    QString groupname;
++
++    if (cmdline.toBool("groupname"))
++        groupname = cmdline.toString("groupname");
++
++    if (cmdline.toBool("hostname"))
++        delete_hostname = cmdline.toString("hostname");
++    else
++        delete_hostname = gCoreContext->GetHostName();
++
++
++    gCoreContext->deletesettings(delete_hostname,groupname);
++
++    return GENERIC_EXIT_OK;
++}
++
++
++static int RestoreSettings(const MythUtilCommandLineParser &cmdline)
++{
++    QString dest_hostname;
++    QString groupname;
++    QString tablestring;
++    QStringList table_list;
++
++    if (cmdline.toBool("groupname"))
++        groupname = cmdline.toString("groupname");
++
++
++    if (cmdline.toBool("hostname"))
++        dest_hostname = cmdline.toString("hostname");
++    else
++        dest_hostname = gCoreContext->GetHostName();
++
++    if (cmdline.toBool("table_list"))
++    {
++        tablestring = QString(cmdline.toString("table_list"));
++        table_list = tablestring.split(",", QString::SkipEmptyParts);
++    }
++
++    gCoreContext->restoresettings(dest_hostname,
++                                  groupname,
++                                  table_list);
++
++    return GENERIC_EXIT_OK;
++}
++
++
++static int CopySettings(const MythUtilCommandLineParser &cmdline)
++{
++    QString src_hostname;
++    QString groupname;
++    QString tablestring;
++    QStringList table_list;
++    bool is_full_clone;
++    QString dest_hostname;
++
++    if (cmdline.toBool("groupname"))
++        groupname = cmdline.toString("groupname");
++    else
++        groupname = "Current";
++
++    if (cmdline.toBool("hostname"))
++        src_hostname = cmdline.toString("hostname");
++    else
++        src_hostname = gCoreContext->GetHostName();
++
++    if (cmdline.toBool("newhost"))
++        dest_hostname = cmdline.toString("newhost");
++
++    if (cmdline.toBool("table_list"))
++    {
++        tablestring = QString(cmdline.toString("table_list"));
++        table_list = tablestring.split(",", QString::SkipEmptyParts);
++    }
++
++    if (cmdline.toBool("fullclone"))
++        is_full_clone = TRUE;
++    else
++        is_full_clone = FALSE;
++
++    gCoreContext->clonesettings(src_hostname,
++                                groupname,
++                                table_list,
++                                is_full_clone,
++                                dest_hostname);
++
++    return GENERIC_EXIT_OK;
++}
++
++void print_out_diff_formated(QMap<QString, QStringList> resultset)
++{
++    QString settings_header;
++    QString keybindings_header;
++    QString tempString;
++    QString tempItem;
++    QString dashline_settings;
++    QString dashline_key;
++    QStringList tempList;
++
++    QString host_1;
++    QString host_2;
++    QString data_1;
++    QString data_2;
++    QString value;
++    QString context;
++    QString action;
++
++    int value_width = 35;
++    int data_width = 40;
++
++    int context_width = 22;
++    int action_width = 22;
++    int key_width = 35;
++
++    dashline_key = (tempString.fill('-', 133));
++    dashline_settings = (tempString.fill('-', 130));
++
++    QMap<QString, QStringList>::iterator i;
++
++
++    for (i = resultset.begin(); i != resultset.end(); ++i)
++    {
++        cout << endl<<i.key().toLocal8Bit().constData() << ": \t" << endl;;
++        //construct the headers
++        if (i.key() == "Settings")
++        {
++            //settings header
++            tempList = (i.value().at(0)).split("|", QString::SkipEmptyParts);
++            host_1 = tempList.at(1);
++            host_2 = tempList.at(3);
++            tempString="|";
++            tempItem = "Value";
++            tempString.append(tempItem.leftJustified(value_width));
++            tempString.append("|");
++            tempItem = host_1;                //hostname 1
++            tempString.append(tempItem.leftJustified(data_width));
++            tempString.append("|");
++            tempItem = host_2;    //hostname 2
++            tempString.append(tempItem.leftJustified(data_width));
++            tempString.append("|");
++            settings_header = tempString;
++
++            cout << settings_header.toLocal8Bit().constData() << endl;;
++            cout << dashline_settings.toLocal8Bit().constData() << endl;
++        }
++
++         if (i.key() == "Keybindings")
++         {
++             //keybindings_header
++             tempList = (i.value().at(0)).split("|", QString::SkipEmptyParts);
++             host_1 = tempList.at(2);
++             host_2 = tempList.at(4);
++             tempString="|";
++             tempItem = "Context";
++             tempString.append(tempItem.leftJustified(context_width));
++             tempString.append("|");
++             tempItem = "Action";
++             tempString.append(tempItem.leftJustified(action_width));
++             tempString.append("|");
++             tempItem = host_1;
++             tempString.append(tempItem.leftJustified(key_width));
++             tempString.append("|");
++             tempItem = host_2;
++             tempString.append(tempItem.leftJustified(key_width));
++             tempString.append("|");
++             keybindings_header = tempString;
++
++             cout << keybindings_header.toLocal8Bit().constData() << endl;;
++             cout << dashline_key.toLocal8Bit().constData() << endl;
++
++         }
++         // format each line
++         for (int y = 0; y < i.value().size(); ++y)
++         {
++             if (i.key() == "Settings")
++             {
++                 tempList = (i.value().at(y)).split("|",
++                                                    QString::SkipEmptyParts);
++                 data_1 = tempList.at(2);
++                 data_2 = tempList.at(4);
++                 value  = tempList.at(0);
++                 tempString="|";
++                 tempItem = value;
++                 tempString.append(tempItem.leftJustified(value_width));
++                 tempString.append("|");
++                 tempItem = data_1;
++                 tempString.append(tempItem.leftJustified(data_width));
++                 tempString.append("|");
++                 tempItem = data_2;
++                 tempString.append(tempItem.leftJustified(data_width));
++                 tempString.append("|");
++             }
++             if (i.key() == "Keybindings")
++             {
++                 tempList = (i.value().at(y)).split("|",
++                                                    QString::SkipEmptyParts);
++                 data_1 = tempList.at(3);
++                 data_2 = tempList.at(5);
++                 context  = tempList.at(0);
++                 action = tempList.at(1);
++
++                 tempString="|";
++                 tempItem = context;
++                 tempString.append(tempItem.leftJustified(context_width));
++                 tempString.append("|");
++                 tempItem = action;
++                 tempString.append(tempItem.leftJustified(action_width));
++                 tempString.append("|");
++                 tempItem = data_1;
++                 tempString.append(tempItem.leftJustified(key_width));
++                 tempString.append("|");
++                 tempItem = data_2;
++                 tempString.append(tempItem.leftJustified(key_width));
++                 tempString.append("|");
++             }
++
++             cout << tempString.toLocal8Bit().constData()<<endl;
++         }
++    }
++};
++
++static int DiffSettings(const MythUtilCommandLineParser &cmdline)
++{
++    QMap<QString, QStringList> resultset;
++    QString diff_hostname1;
++    QString diff_hostname2;
++    QStringList table_list;
++    bool format_results = FALSE;
++    QMap<QString, QStringList>::iterator i;
++
++    if (cmdline.toBool("host_1"))
++        diff_hostname1 = cmdline.toString("host_1");
++    if (cmdline.toBool("host_2"))
++        diff_hostname2 = cmdline.toString("host_2");
++
++    if (cmdline.toBool("table_list"))
++    {
++        QString tablestring = QString(cmdline.toString("table_list"));
++        table_list = tablestring.split(",", QString::SkipEmptyParts);
++    }
++
++    if (cmdline.toBool("format"))
++        format_results = TRUE;
++
++    resultset = gCoreContext->diff_settingsgroupname(diff_hostname1,
++                                                     diff_hostname2,
++                                                     table_list);
++    if  (resultset.isEmpty())
++        cout << "No differences found" << endl;
++    else
++    {
++        if (format_results)
++            print_out_diff_formated(resultset);
++        else
++        {
++            for (i = resultset.begin(); i != resultset.end(); ++i)
++            {
++                cout << i.key().toLocal8Bit().constData() << " : \t" << endl;;
++                for (int y = 0; y < i.value().size(); ++y)
++                    cout << i.value().at(y).toLocal8Bit().constData()<<endl;
++                cout << endl;
++            }
++        }
++    }
++    return GENERIC_EXIT_OK;
++};// DiffSettings
++
++static int ListGroups(const MythUtilCommandLineParser &cmdline)
++{
++    QMap<QString, QStringList> resultset;
++    resultset = gCoreContext->list_settingsgroupname();
++    QMap<QString, QStringList>::iterator i;
++    cout <<  endl;
++    for (i = resultset.begin(); i != resultset.end(); ++i)
++    {
++        cout << i.key().toLocal8Bit().constData() << " : \t";
++        for (int y = 0; y < i.value().size(); ++y)
++            cout << i.value().at(y).toLocal8Bit().constData()<<" " ;
++        cout << endl;
++    }
++    return GENERIC_EXIT_OK;
++};
++
++static int ImportSettings(const MythUtilCommandLineParser &cmdline)
++{
++
++    if (cmdline.toString("infile").isEmpty())
++    {
++        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing --infile option\n");
++        return GENERIC_EXIT_INVALID_CMDLINE;
++    }
++    QString import_hostname;
++    bool change_name = FALSE;
++    if (cmdline.toBool("hostname"))
++    {
++        change_name = TRUE;
++        import_hostname = cmdline.toString("hostname");
++    }
++    QString import_filename = cmdline.toString("infile");
++    QFile myFile(import_filename);
++
++    QDomDocument doc( "exported_xml" );
++    doc.setContent( &myFile );
++
++    QDomElement docElement = doc.documentElement();
++    QDomElement record_element;
++
++    if ( docElement.nodeName() != "exported_xml" )
++    {
++       cout << "not a valid exported xml file" << endl;
++       return 1;
++    }
++
++    QString out_string = "Importing records, please be patient";
++    cout << out_string.toLocal8Bit().constData()  << endl;
++    //Gives list of records in the file + count
++    QDomNodeList nodeList = docElement.childNodes();
++    int total_records = nodeList.count();
++    out_string = QString("\nFound %1 records \n").arg(total_records);
++    cout << out_string.toLocal8Bit().constData()  << endl;
++    LOG(VB_STDIO|VB_FLUSH, LOG_ERR, out_string);
++
++    for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling())
++    {
++        QString table_name=QString();
++        QMap<QString,QString> value_pair_map ;
++
++        //find table name for this record
++        QDomNode tablenode=n.namedItem("table");
++        record_element = tablenode.toElement();
++        table_name = record_element.text();
++
++        //loop over childern of n and convert to element
++        for(QDomNode subn = n.firstChild();
++            !subn.isNull();
++            subn = subn.nextSibling())
++        {
++            record_element = subn.toElement();
++            if ( record_element.nodeName() == "table" )
++                    continue;
++            if ( change_name && record_element.nodeName() == "hostname" )
++                value_pair_map[record_element.nodeName()] = import_hostname;
++            else
++                value_pair_map[record_element.nodeName()] = record_element.text();
++        }
++        if (import_filename.endsWith("syssettings.xml"))
++        {
++            if  ( value_pair_map["value"] == "BackendServerIP")
++            {
++                out_string = "sysettings, ignoring backendserver ip record";
++                cout << out_string.toLocal8Bit().constData()  << endl;
++            }
++            else
++                gCoreContext->import_settings(value_pair_map,table_name);
++        }
++        else
++            //perform insert
++            gCoreContext->import_settings(value_pair_map,table_name);
++    }
++    return GENERIC_EXIT_OK;
++}; //end ImportSettings
++
++
++static int ExportSettings(const MythUtilCommandLineParser &cmdline)
++{
++    QMap<QString, QMap<QString,QString> > records;
++    QString src_hostname;
++    QString groupname;
++    QStringList table_list;
++    QString tablestring;
++    bool distro_default =  FALSE;
++    bool generic = FALSE;
++    bool skip_host = FALSE;
++
++
++
++    QDomDocument doc("mythutils_exported_settings");
++
++    if (cmdline.toBool("groupname"))
++        groupname = cmdline.toString("groupname");
++    else
++        groupname = "current";
++
++    if (cmdline.toBool("hostname"))
++        src_hostname = cmdline.toString("hostname");
++    else
++        src_hostname = gCoreContext->GetHostName();
++
++    if (cmdline.toBool("distro-default"))
++    {
++        distro_default = TRUE;
++        skip_host = TRUE;
++    }
++    if (cmdline.toBool("generic"))
++    {
++        generic = TRUE;
++        //skip_host = TRUE;
++    }
++    if (cmdline.toBool("table_list"))
++    {
++        tablestring = QString(cmdline.toString("table_list"));
++        table_list = tablestring.split(",", QString::SkipEmptyParts);
++    }
++    else
++        table_list << "settings" <<"keybindings" <<"jumppoints" ;
++
++    if (cmdline.toString("outfile").isEmpty())
++    {
++        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing --outfile option\n");
++        return GENERIC_EXIT_INVALID_CMDLINE;
++    }
++
++    QString export_filename = cmdline.toString("outfile");
++
++    records = gCoreContext->export_settings(src_hostname,groupname,
++                                            table_list, skip_host);
++
++    QDomElement exported_xml = doc.createElement("exported_xml");
++    doc.appendChild(exported_xml);
++
++    QMap<QString,int> record_count;
++    QMap<QString,QMap<QString,QString>  >::iterator i;
++    for (i = records.begin(); i != records.end(); ++i )
++    {
++            QDomElement record = doc.createElement("record");
++            exported_xml.appendChild(record);
++
++            //loop over all values in the record
++            QMap<QString,QString> value_pair = i.value();
++            QMap<QString, QString>::iterator y;
++            //because we don't know the name of the key, we loop over it
++            for (y = value_pair.begin(); y != value_pair.end(); ++y)
++           {
++                //add key/pair to xml document
++                QDomElement tag = doc.createElement(y.key());
++                record.appendChild(tag);
++                QDomText  t;
++                if ( distro_default == TRUE )
++                {   // If exporting distro_default then change hostname + table
++                    if ( y.key() == "hostname" )
++                    {   //check for global values here, empty value means global
++                        if ( y.value().isEmpty() )
++                            t = doc.createTextNode(y.value());
++                        else
++                            t = doc.createTextNode("distro_default");
++                    }
++                    else if ( y.key() == "table")
++                        t = doc.createTextNode(y.value()+"_distro_default");
++                    else
++                        t = doc.createTextNode(y.value());
++                }
++
++                else if ( generic == TRUE )
++                {   // If exporting generic then change hostname
++                    if ( y.key() == "hostname" )
++                    {   //check for global values here, empty value means global
++                        if ( y.value().isEmpty() )
++                            t = doc.createTextNode(y.value());
++                        else
++                            t = doc.createTextNode("REPLACE_ME");
++                    }
++                    else
++                       t = doc.createTextNode(y.value());
++               }
++               else
++                   t = doc.createTextNode(y.value());
++
++               tag.appendChild(t);
++                //create record counts
++                if ( y.key() == "table" )
++                {
++                    if ( record_count.contains( y.value()) )
++                    {
++                        int record_num = record_count[y.value()];
++                        record_count[y.value()] = ++record_num;
++                    }
++                    else
++                        record_count[y.value()] = 1;
++                }
++           }
++     }
++     QFile file( export_filename );
++
++     if( !file.open(QIODevice::WriteOnly) )
++            return -1;
++
++     QTextStream ts( &file );
++     ts << doc.toString();
++     file.close();
++     QMap<QString, int >::iterator rc_it;
++     for ( rc_it = record_count.begin(); rc_it != record_count.end(); ++rc_it)
++     {
++            QString table = rc_it.key();
++            int rc_count = rc_it.value();
++            QString out_string = QString ("Exported table %1: %2 records")
++                                                            .arg(table)
++                                                            .arg(rc_count);
++            cout << out_string.toLocal8Bit().constData()  << endl;
++     }
++    return GENERIC_EXIT_OK;
++}; // end export_settings
++
++
++static int ChangeHostname(const MythUtilCommandLineParser &cmdline)
++{
++
++    QString old_hostname;
++    QString new_hostname;
++
++
++    if (cmdline.toBool("oldhost"))
++        old_hostname = cmdline.toString("oldhost");
++
++    if (cmdline.toBool("newhost"))
++        new_hostname = cmdline.toString("newhost");
++
++    if (old_hostname.isEmpty())
++    {
++        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing or empty --old-host option\n");
++        return GENERIC_EXIT_INVALID_CMDLINE;
++    }
++
++    if (new_hostname.isEmpty())
++    {
++        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing or empty --new-host option\n");
++        return GENERIC_EXIT_INVALID_CMDLINE;
++    }
++
++    gCoreContext->change_hostname(old_hostname, new_hostname);
++
++    return GENERIC_EXIT_OK;
++}; //end ChangeHostname
++
++void registerSettingsUtils(UtilMap &utilMap)
++{
++    utilMap["savesettings"]             = &SaveSettings;
++    utilMap["deletesettings"]           = &DeleteSettings;
++    utilMap["restoresettings"]          = &RestoreSettings;
++    utilMap["copysettings"]             = &CopySettings;
++    utilMap["diffsettings"]             = &DiffSettings;
++    utilMap["listgroups"]               = &ListGroups;
++    utilMap["importsettings"]           = &ImportSettings;
++    utilMap["exportsettings"]           = &ExportSettings;
++    utilMap["changehostname"]           = &ChangeHostname;
++}
++
++/* vim: set expandtab tabstop=4 shiftwidth=4: */
+\ No newline at end of file
+diff --git a/mythtv/programs/mythutil/settingsutils.h b/mythtv/programs/mythutil/settingsutils.h
+new file mode 100644
+index 0000000..413496c
+--- /dev/null
++++ b/mythtv/programs/mythutil/settingsutils.h
+@@ -0,0 +1,3 @@
++#include "mythutil.h"
++
++void registerSettingsUtils(UtilMap &utilMap);
diff --git a/abs/core/mythtv/stable-0.27/mythtv/mythtv.install b/abs/core/mythtv/stable-0.27/mythtv/mythtv.install
new file mode 100644
index 0000000..8e900ed
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/mythtv.install
@@ -0,0 +1,24 @@
+# arg 1:  the new package version
+post_install() {
+        gen_is_xml.py
+        gen_lib_xml.py
+}
+
+pre_upgrade() {
+        /bin/true
+}
+
+post_upgrade() {
+        post_install
+}
+
+
+# arg 1:  the old package version
+post_remove() {
+        /bin/true
+
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core/mythtv/stable-0.27/mythtv/recordings b/abs/core/mythtv/stable-0.27/mythtv/recordings
new file mode 100644
index 0000000..7fdde51
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/recordings
@@ -0,0 +1,5 @@
+#!/bin/bash
+if [ -f /usr/share/mythtv/contrib/user_jobs/mythlink.pl ]
+then
+    su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythlink.pl --link /data/storage/disk0/media/recordings"
+fi
-- 
cgit v0.12


From 0ee10561176bb5a98daeef6ffcd1d3b49e65aadb Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 4 Nov 2013 13:37:41 -0600
Subject: mythtv stable-0.27 mythplugins: initial commit. refs #933

---
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD   | 115 +++++++++++++++++++++
 .../mythtv/stable-0.27/mythplugins/__changelog     |   1 +
 .../mythplugins/mythplugins-mythzoneminder.install |  11 ++
 3 files changed, 127 insertions(+)
 create mode 100644 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
 create mode 100644 abs/core/mythtv/stable-0.27/mythplugins/__changelog
 create mode 100644 abs/core/mythtv/stable-0.27/mythplugins/mythplugins-mythzoneminder.install

diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
new file mode 100644
index 0000000..a29f66c
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -0,0 +1,115 @@
+pkgbase=mythplugins
+pkgname=('mytharchive'
+         'mythbrowser'
+         'mythgallery'
+         'mythgame'
+         'mythmusic'
+         'mythnetvision'
+         'mythnews'
+         'mythweather'
+         'mythzoneminder')
+pkgver=0.27
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.mythtv.org"
+license=('GPL')
+makedepends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' 'flac' 'libexif'
+             'libvorbis' 'mesa' 'libgl' 'mplayer' "mythtv>=${pkgver}"
+             'perl-datetime-format-iso8601' 'perl-date-manip' 'perl-image-size'
+             'perl-json' 'perl-libwww' 'perl-soap-lite' 'perl-xml-sax'
+             'perl-xml-simple' 'perl-xml-xpath' 'python-oauth' 'python-imaging'
+             'python-pycurl' 'zlib')
+source=()
+
+build() {
+    if [ -e ${srcdir}/mythplugins ]
+    then
+        msg "Removing old mythplugins src"
+        rm -rf ${srcdir}/mythplugins
+    fi
+
+    cd ${startdir}
+    msg "Copying in mythplugins git_src"
+    cp -rp ../git_src/mythtv/mythplugins $srcdir
+    cd ${srcdir}/${pkgbase}
+
+    msg "Configuring mythplugins"
+    ./configure --prefix=/usr \
+                --enable-all \
+                --python=/usr/bin/python2
+
+    msg "Compiling mythplugins"
+    qmake mythplugins.pro || return 1
+    make || return 1
+}
+
+package_mytharchive() {
+    pkgdesc="Create DVDs or archive recorded shows in MythTV"
+    depends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' "mythtv>=${pkgver}"
+             'python-imaging')
+    cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythbrowser() {
+    pkgdesc="Mini web browser for MythTV"
+    depends=("mythtv>=${pkgver}")
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythbrowser"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythgallery() {
+    pkgdesc="Image gallery plugin for MythTV"
+    depends=('libexif' "mythtv>=${pkgver}")
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythgallery"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythgame() {
+    pkgdesc="Game emulator plugin for MythTV"
+    depends=("mythtv>=${pkgver}" 'zlib')
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythgame"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythmusic() {
+    pkgdesc="Music playing plugin for MythTV"
+    depends=('cdparanoia' 'fftw' 'flac' 'libcdaudio' 'libcdio' 
+             'libvisual-plugins' 'libvorbis' "mythtv>=${pkgver}" 'taglib')
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythmusic"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythnetvision() {
+    pkgdesc="MythNetvision plugin for MythTV"
+    depends=("mythtv>=${pkgver}" 'python-pycurl' 'python-oauth' 
+             'python2-lxml' 'python2')
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythnetvision"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythnews() {
+    pkgdesc="News checking plugin for MythTV"
+    depends=("mythtv>=${pkgver}")
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythnews"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythweather() {
+    pkgdesc="Weather checking plugin for MythTV"
+    depends=("mythtv>=${pkgver}" 'perl-date-manip' 'perl-json' 'perl-soap-lite'
+             'perl-xml-sax' 'perl-xml-simple' 'perl-xml-xpath' 'perl-image-size'
+             'perl-datetime-format-iso8601')
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythweather"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythzoneminder() {
+    pkgdesc="View CCTV footage from zoneminder in MythTV"
+    depends=("mythtv>=${pkgver}")
+#    install=mythplugins-mythzoneminder.install
+    cd "${srcdir}/${_gitname}/${pkgbase}/mythzoneminder"
+    make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+md5sums=('19446f65722769926bafad220bbc6551')
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/__changelog b/abs/core/mythtv/stable-0.27/mythplugins/__changelog
new file mode 100644
index 0000000..48cdce8
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythplugins/__changelog
@@ -0,0 +1 @@
+placeholder
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/mythplugins-mythzoneminder.install b/abs/core/mythtv/stable-0.27/mythplugins/mythplugins-mythzoneminder.install
new file mode 100644
index 0000000..a4e0c0d
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythplugins/mythplugins-mythzoneminder.install
@@ -0,0 +1,11 @@
+post_install() {
+    . /etc/systemconfig
+    if [ $SystemType = Master_backend -o  $SystemType = Standalone ]
+    then
+        echo "This looks a zoneminder server install"
+        echo "Installing zoneminder"
+        #for reference the pacman statement below will not work because of a db lock.
+        pacman -S zoneminder
+    fi
+
+}
-- 
cgit v0.12


From 1ba192c81b182943e580b2ad2b029b98210c6209 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 4 Nov 2013 14:55:48 -0600
Subject: mythtv stable-0.27 mythweb: initial commit. refs #933

---
 abs/core/mythtv/stable-0.27/mythweb/PKGBUILD       | 58 ++++++++++++++++++++++
 .../mythtv/stable-0.27/mythweb/mythweb.include     |  8 +++
 .../mythtv/stable-0.27/mythweb/mythweb.install     | 18 +++++++
 .../stable-0.27/mythweb/mythweb_gen_light.conf     |  1 +
 4 files changed, 85 insertions(+)
 create mode 100644 abs/core/mythtv/stable-0.27/mythweb/PKGBUILD
 create mode 100644 abs/core/mythtv/stable-0.27/mythweb/mythweb.include
 create mode 100644 abs/core/mythtv/stable-0.27/mythweb/mythweb.install
 create mode 100644 abs/core/mythtv/stable-0.27/mythweb/mythweb_gen_light.conf

diff --git a/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD b/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD
new file mode 100644
index 0000000..d9c36d7
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD
@@ -0,0 +1,58 @@
+pkgname=mythweb
+pkgver=0.27
+pkgrel=1
+commit_hash=`cat ../git_src/git_hash_web`
+pkgdesc="Web interface for MythTV's backend, $commit_hash"
+arch=('i686' 'x86_64')
+url="http://www.mythtv.org"
+license=('GPL')
+depends=('lighttpd' "mythtv>=${pkgver}" 'php' 'supplemental-web')
+groups=('mythtv-extras')
+install=mythweb.install
+
+patches=()
+source=(`echo ${patches[@]:0}` 
+        'mythweb.include'
+        'mythweb_gen_light.conf')
+
+build() {
+    if [ -e ${srcdir}/mythweb ]
+    then
+        msg "Removing old mythweb src"
+        rm -rf ${srcdir}/mythweb
+    fi
+
+    cd ${startdir}
+    msg "Copying in mythweb git_src"
+    cp -rp ../git_src/mythweb $srcdir
+    cd ${srcdir}/$pkgname
+
+    msg "--------------------------applying patches------------------------------"
+	for i in `echo ${patches[@]:0} `
+	do
+		echo applying $i
+		echo "-----------------------------"
+		patch -Np0  -i ${srcdir}/$i  || return 1
+	done
+    msg "--------------------------done applying patches-------------------------"
+
+	[ "$CARCH" = "i686"   ] && ARCH="i686"
+	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+}
+
+package() {
+    DOCROOT=/data/srv/httpd/mythweb
+	mkdir -p $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
+        rsync -arp --exclude .git --delete-excluded  $srcdir/mythweb/* $pkgdir/$DOCROOT
+	rm $pkgdir/$DOCROOT/README
+	chown -R http:http $pkgdir/$DOCROOT
+	chmod g+rw $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
+
+    #install conf files for lighttpd
+    mkdir -p $pkgdir/etc/lighttpd
+    install -D -m 644 $srcdir/mythweb.include $pkgdir/etc/lighttpd/
+    #gen_light_conf
+    install -D -m0744 ${srcdir}/mythweb_gen_light.conf ${pkgdir}/etc/gen_light_conf.d/mythweb.conf
+}
+md5sums=('7645a6399434cbba35639713ac5d88e0'
+         'df190116b3aba35720fb6631885f973f')
diff --git a/abs/core/mythtv/stable-0.27/mythweb/mythweb.include b/abs/core/mythtv/stable-0.27/mythweb/mythweb.include
new file mode 100644
index 0000000..18e9be1
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythweb/mythweb.include
@@ -0,0 +1,8 @@
+alias.url += ( "/mythweb" => "/data/srv/httpd/mythweb/")
+
+url.rewrite-once = (
+"^/{1,2}mythweb/(css|data|images|js|themes|skins|[a-z_]+\.(php|pl)).*" => "$0",
+"^/{1,2}mythweb/(pl(/.*)?)$" => "/mythweb/mythweb.pl/$1",
+"^/{1,2}mythweb/(.+)$"       => "/mythweb/mythweb.php/$1",
+"^/{1,2}mythweb/(.*)$"       => "/mythweb/mythweb.php"
+)
\ No newline at end of file
diff --git a/abs/core/mythtv/stable-0.27/mythweb/mythweb.install b/abs/core/mythtv/stable-0.27/mythweb/mythweb.install
new file mode 100644
index 0000000..0073499
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythweb/mythweb.install
@@ -0,0 +1,18 @@
+post_install() {
+ gen_light_include.py
+  /sbin/sv hup /service/lighttpd
+}
+post_upgrade() {
+  post_install
+
+}
+
+post_remove() {
+ gen_light_include.py
+ echo
+ echo "==> Forcing a re-read of lighttpd's configuration file."
+ echo ""
+  /sbin/sv hup /service/lighttpd
+#--
+
+}
diff --git a/abs/core/mythtv/stable-0.27/mythweb/mythweb_gen_light.conf b/abs/core/mythtv/stable-0.27/mythweb/mythweb_gen_light.conf
new file mode 100644
index 0000000..ddf0d2f
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythweb/mythweb_gen_light.conf
@@ -0,0 +1 @@
+include "/etc/lighttpd/mythweb.include"
-- 
cgit v0.12


From 01740e9b44790cc449ce7a2f414bc9ba062f2d83 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 5 Nov 2013 17:42:22 -0600
Subject: LinHES-system: add_storage.py: add fstype to conf file on install and
 if it is missing add it. closes #934

other cosmetic changes and clarifications
---
 abs/core/LinHES-system/PKGBUILD       |   4 +-
 abs/core/LinHES-system/add_storage.py | 187 ++++++++++++++++++++++------------
 2 files changed, 125 insertions(+), 66 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index c8d791e..a28ecfa 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=30
+pkgrel=31
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -94,7 +94,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
-         'a8e486f5d23913242b6edb862bf44c0e'
+         '2cc4a31e086f2370439156b027dec7cd'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
          '8f474e019d5fcb775497aca355d61b0b'
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
index 1f166b1..72056f8 100644
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -1,8 +1,9 @@
 #!/usr/bin/python2
-#Program used to auto_add new storage to mythtv storage groups
-#If it's a new disk it will erase the entire disk and reformat
+#add_storage.py used to auto add new storage to MythTV storage groups
+#If it's a new disk it will erase the entire disk and reformat.
 #
-#Drives that are mount, in fstab, size < 5000 bytes, optical or have already been seen will not be presented as an option.
+#Disks that are mounted, in fstab, size < 5000 bytes, optical or 
+#have already been seen will not be presented as an option.
 #
 
 
@@ -290,8 +291,10 @@ class disk_device:
         return
 
     def mkdirs(self,FS_LIST):
-        print "    Creating Directory stucture"
+        print "    Creating directory structure:"
+        print "       %s" %self.new_mount_point
         for y in FS_LIST:
+            print "          %s" %y 
             new_dir="%s/%s" %(self.new_mount_point,y)
             try:
                 os.stat(new_dir)
@@ -319,7 +322,7 @@ class disk_device:
                 with DB as c:
                     try:
                         c.execute("""insert into storagegroup (groupname,hostname,dirname) values (%s,%s,%s)""",(gn,hn,dn))
-                        print "        Adding  location: %s  to storagegroup %s" %(dn,gn)
+                        print "        Adding location: %s to storagegroup %s" %(dn,gn)
                     except:
                         print "        *Error inserting %s into storage groups" %dn
 
@@ -339,10 +342,11 @@ class disk_device:
         return
 
     def write_config(self):
-        print "    Writing out storage.d conf file"
+        print "    Writing /etc/storage.d conf file"
         self.config.add_section('storage')
         self.config.set('storage','uuid',self.uuid)
         self.config.set('storage','mountpoint',self.new_mount_point)
+        self.config.set('storage','fstype',self.new_fstype)
         self.config.set('storage','shareable','True')
         self.config.set('storage','mmount',self.mmount)
         self.config.set('storage','disk_num',self.disk_num)
@@ -352,24 +356,25 @@ class disk_device:
                                 self.serial_number.replace(' ',''))
 
         configfile="/etc/storage.d/%s" %filename
-        print "     %s" %configfile
+        print "       %s" %configfile
         with open(configfile, 'wb') as configfile:
             self.config.write(configfile)
         return
 
     def symlink_disk(self):
-        print "    Creating symlink for disk number"
+        print "    Creating symlink for disk%s" %self.disk_num 
         disk_ln="%s/disk%s" %(self.top_mount_dir,self.disk_num)
         cmd = "ln -s %s %s" %(self.new_mount_point,disk_ln)
-        print cmd
         runcmd(cmd)
 
     def symlink(self):
         pass
-        print "    Creating symlink"
-        cmd = "ln -s %s/media /myth " %(self.new_mount_point)
-        runcmd(cmd)
-
+        print "    Creating symlink for /myth"
+        if not os.path.exists("/myth"):
+            cmd = "ln -s %s/media /myth " %(self.new_mount_point)
+            runcmd(cmd)
+        else:
+            print "       Skipping symlink, /myth already exists"
 
 
 #end of class
@@ -442,16 +447,15 @@ def prompt_to_add(current_drive,destruction = True):
     loop = True
     if destruction :
         prompt = '''
-        Adding the drive will remove all contents on the drive.
+        Adding the disk will remove all contents on the disk.
 
-        Do you wish enable this drive for MythTV storage(Y/N)?:
-        '''
+        Do you wish enable this disk for MythTV storage(Y/N)?:'''
     else:
         prompt = '''
         ** Preserving existing data  **
          will not format or partition
 
-        Do you wish enable this drive for MythTV storage(Y/N)?:
+        Do you wish enable this disk for MythTV storage(Y/N)?:
         '''
     while loop:
         str1 = raw_input(prompt)
@@ -470,7 +474,7 @@ def prompt_to_continue():
     loop = True
     #while loop:
     print "\n\n\n\n"
-    str1 = raw_input("\n    Ready to add additional storage!\n    Press Y to continue, anything else to abort:")
+    str1 = raw_input("\n    Ready to add additional storage!\n    Press Y to add disk(s), anything else to abort:")
 
         #if str1 in ['Y','N','y','n']:
         #    loop = False
@@ -487,15 +491,15 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
     #check for backend storage groups
     if dir_be_sg != True:
         loop = True
-        print "*" * 40
+        print "*" * 60
         prompt_string='''
-    Backend Storage Groups are used for things like
-    TV Recordings and database backups.
+    Backend Storage Groups are used for
+    database backups, TV recordings and streaming.
 
     The content on these storage groups will
     only be available while the system is online.
 
-    Do you wish enable this system for Backend Storage Groups(Y/N)?:'''
+    Do you wish enable Backend Storage Groups(Y/N)?:'''
 
         while loop:
             str1 = raw_input(prompt_string)
@@ -514,13 +518,15 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
     #now for frontend storage groups
     if dir_fe_sg != True:
         loop = True
+        print ""
         print "+" * 20
         prompt_string='''
-    Frontend Storage Groups are used for videos.
+    Frontend Storage Groups are used for artwork and videos.
+
     The content on these storage groups will
     only be available while the system is online.
 
-    Do you wish enable this system for Frontend Storage Groups(Y/N)?:'''
+    Do you wish enable Frontend Storage Groups(Y/N)?:'''
         while loop:
             str1 = raw_input(prompt_string)
             if str1 in ['Y','N','y','n']:
@@ -535,11 +541,14 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
             dir_fe_sg = False
             print "    ** Will NOT add Frontend Storage Groups!"
 
+    print ""
+    print "*" * 60
+
     return dir_be_sg,dir_fe_sg
 
 def remove_pickle():
     try:
-        print "* Resetting list of known drives."
+        print "* Resetting list of known disks."
         os.remove(pickle_file)
     except:
         pass
@@ -565,6 +574,8 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
     process_list=[]
     no_process_list=[]
 
+    print "-" * 60
+    print "  Scan for Disks"
 
     for i in system_drive_list:
         #print i.mount_path
@@ -575,8 +586,16 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
         #print "--"
 
         if search_for_match(i,known_drive_list) or i.in_use :
+            if search_for_match(i,known_drive_list) :
+                dstatus = "    Ignoring - Disk has been previously skipped:"
+            if i.in_use :
+                dstatus = "    Ignoring - Disk is mounted:"
+            if search_for_match(i,known_drive_list) and i.in_use :
+                dstatus = "    Ignoring - Disk has been previously skipped and is mounted:"
+
             print "\n"
-            print "    Storage is already in use or previously skipped:%s" %i.model
+            print dstatus
+            print "        model: %s" %i.model
             print "        location: %s" %i.block_path
             print "        size: %s" %i.device_size
             continue
@@ -584,10 +603,11 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
         else:
             if not scan_only:
                 print "\n"
-                print "-------------------------------------------------------------"
-                print "    Found new hard drive: %s" %i.model
-                print "    location: %s" %i.block_path
-                print "    size: %s " %i.device_size
+                print "    --------------------------------------------------------"
+                print "    Found new disk:"
+                print "        model: %s" %i.model
+                print "        location: %s" %i.block_path
+                print "        size: %s " %i.device_size
 
                 if prompt_to_add(i,destruction) :
                     print "\n    Disk will be added to the storage pool!"
@@ -596,15 +616,22 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
                     no_process_list.append(i)
             else:
                 process_list.append(i)
-    print "    End of scan"
-    print "---------------------------------------"
+    print "\n"
+    print "  End of Scan"
+    print "-" * 60
 
     if scan_only:
         if len(process_list) > 0:
+            print "    Unknown or unmounted disks:"
             f = open('/tmp/scan_report', 'w')
             for i in process_list:
-                f.write("drive: %s , location: %s ,size: %s \n" %(i.model,i.block_path,i.device_size))
-                print "drive: %s , location: %s ,size: %s \n" %(i.model,i.block_path,i.device_size)
+                f.write("disk: %s , location: %s ,size: %s \n" %(i.model,i.block_path,i.device_size))
+                print "\n"
+                print "    ---------------------------------------------------------"
+                print "    Found new disk:"
+                print "        model: %s" %i.model
+                print "        location: %s" %i.block_path
+                print "        size: %s " %i.device_size
             f.close()
         sys.exit(0)
 
@@ -619,7 +646,7 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
             system_drive_list.remove(y)
         write_known_drive_list(system_drive_list)
     else:
-        print "\nDid not find any new storage to add.\n"
+        print "\nDid not find any new disks to add.\n"
         write_known_drive_list(system_drive_list)
             #BE = MythBE(db=DB)
 
@@ -630,14 +657,14 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
 
 
     if len(process_list) > 0:
-        print "    Will add %s disks to systems" %len(process_list)
+        print "\n  Will add %s disk(s) to your system." %len(process_list)
 
         dir_be_sg , dir_fe_sg = prompt_sg(dir_be_sg,dir_fe_sg)
         if prompt_to_continue() == True:
             write_known_drive_list(system_drive_list)
             disk_num = last_disk_num()
             for i in process_list:
-                print "    Drive: %s" %(i.get_name())
+                print "    Disk: %s" %(i.get_name())
                 disk_num = disk_num + 1
                 if destruction == True:
                     i.partition_disk()
@@ -713,7 +740,7 @@ def myth_main(no_mount,install_call,dir_fe_sg):
         host=gethostname()
 
 
-    print "    Drive: %s" %(i.get_name())
+    print "    Disk: %s" %(i.get_name())
     i.set_mmount(True)
     i.set_partition("7")
     i.set_disk_num(0)
@@ -736,7 +763,7 @@ class reconstruct_path:
         self.conf_file = conf_file
         parser = SafeConfigParser()
         parser.read(self.conf_file)
-
+        self.config = ConfigParser.RawConfigParser()
 
         self.uuid = parser.get('storage', 'uuid')
         self.mount_point = parser.get('storage', 'mountpoint')
@@ -745,9 +772,22 @@ class reconstruct_path:
         self.bind = self.myth_mount
         self.disk_num = parser.get('storage', 'disk_num')
         self.top_mount_dir = os.path.dirname(self.mount_point)
+        try:
+            self.fstype = parser.get('storage', 'fstype')
+        except:
+            self.fstype = self.get_fstype()
+
+    def get_fstype(self):
+        cmd = "fsck -N UUID=%s" %self.uuid
+        tmpfstype = runcmd(cmd)
+        tmpfstype = tmpfstype[1].split('/sbin/fsck.')
+        tmpfstype = tmpfstype[1].split(' ')
+        self.fstype = tmpfstype[0]
+        self.write_config()
+        return self.fstype
 
     def get_conf(self):
-       return self.conf_file
+        return self.conf_file
 
     def get_uuid(self):
         return self.uuid
@@ -809,15 +849,15 @@ class reconstruct_path:
         f.close()
 
     def symlink(self):
-        print "    Creating symlink"
+        print "    Creating symlink for /myth"
         if not os.path.exists("/myth"):
             cmd = "ln -s %s/media /myth " %(self.mount_point)
             runcmd(cmd)
         else:
-            print "    Skipping symlink, path already present"
+            print "       Skipping symlink, /myth already exists"
 
     def symlink_disk(self):
-        print "    Creating symlink for disk number"
+        print "    Creating symlink for disk%s" %self.disk_num 
         disk_ln="%s/disk%s" %(self.top_mount_dir,self.disk_num)
         cmd = "ln -s %s %s" %(self.mount_point,disk_ln)
         runcmd(cmd)
@@ -825,14 +865,14 @@ class reconstruct_path:
 
     def add_fstab(self):
         #new_fstab_list=['UUID=', 'mount_point', 'auto', 'defaults', '0', '1']
-        new_fstab_list=['UUID=', 'mount_point', self.new_fstype, 'defaults', '0', '1']
+        new_fstab_list=['UUID=', 'mount_point', self.fstype, 'defaults', '0', '1']
         fstab=self.read_fstab()
 
         if self.bind == "True":
             self.symlink()
 
         if self.check_in_fstab(fstab,self.uuid) == True:
-            print "    Found storage in fstab, will not add it"
+            print "    Found disk in fstab, will not add it"
         else:
             print "    Adding storage to fstab"
             if self.bind == "True" :
@@ -861,8 +901,23 @@ class reconstruct_path:
             runcmd(cmd)
         return
 
+    def write_config(self):
+        print "    Writing /etc/storage.d conf file"
+        self.config.add_section('storage')
+        self.config.set('storage','uuid',self.uuid)
+        self.config.set('storage','mountpoint',self.mount_point)
+        self.config.set('storage','fstype',self.fstype)
+        self.config.set('storage','shareable','True')
+        self.config.set('storage','mmount',self.myth_mount)
+        self.config.set('storage','disk_num',self.disk_num)
+
+        print "       %s" %self.conf_file
+        with open(self.conf_file, 'wb') as self.conf_file:
+            self.config.write(self.conf_file)
+        return
+
 def reconstruct_mounts(no_mount):
-    print "Recreating devices based on contents of /etc/storage.d"
+    print "Recreating disks based on contents of /etc/storage.d"
     for conf_file in glob.glob('%s/*.conf' %storage_dir):
         print "\n"
         cf = reconstruct_path(conf_file)
@@ -883,26 +938,34 @@ def reconstruct_mounts(no_mount):
 
 
 def usage():
-    help='''\n
-    Add storage is designed to find and setup new disks for mythtv usage.
-    It's a powerfull tool that could destroy data if not used correctly, so please be careful.
+    help='''
+    add_storage.py finds and sets up disks for MythTV usage.
+    It's a powerful tool that could destroy data if not used correctly,
+        so please be careful.
+
+    The file system type for disks added by add_storage.py is 
+        automatically set to the type you selected at install.
+
     Normal operations include (in this order):
         Partition the disk
         Format the disk
         Add disk to /etc/fstab
         Mount the disk
-        Create the directory
+        Create the directories
         Write out the config file to /etc/storage.d
-        Add new locations to mythtv storage groups
-
-    options:
-
-    --no_mount :  Do not mount the disk, only add it to /etc/fstab and create the dir.
-    --no_destruction:  Will not partition or format the disk.  This can be used to import disks from other systems.
-    --new_init :  Erase the list of new disks and rescan.
-    --report :  will scan the disks and print out if it found new storage.
-    --add_fe_sg :  Will only create the storage group dir for videos..excludes tv
-    --add_be_sg :  Will only create the storage group dir for TV, backups, streaming
+        Add new locations to MythTV storage groups
+
+    Options:
+    --no_mount:         Do not mount the disk, only add it to /etc/fstab
+                        and create the directory.
+    --no_destruction:   Will not partition or format the disk.
+                        This can be used to import disks from other systems.
+    --new_init:         Erase the list of new disks and rescan.
+    --report:           Scan disks and print new found disks.
+    --add_fe_sg:        Create the storage group directories for artwork
+                        and video. Excludes backup, tv and streaming.
+    --add_be_sg:        Create the storage group directories for backup,
+                        tv and streaming.
     '''
     print help
     sys.exit(0)
@@ -961,7 +1024,3 @@ if __name__ == "__main__":
         reconstruct_mounts(no_mount)
     else:
         main(scan_only,destruction,no_mount, install_call, dir_fe_sg, dir_be_sg)
-
-
-
-
-- 
cgit v0.12


From 3a211737ab8653b0a1fe4855ac62e2a98789ff22 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 6 Nov 2013 14:16:48 -0600
Subject: mythdb-initial: rename video_stuff to artwork. ref #935

---
 abs/core/mythdb-initial/PKGBUILD   |   17 +-
 abs/core/mythdb-initial/custom.sql |   22 +-
 abs/core/mythdb-initial/mc.sql.24  | 2996 ------------------------------------
 3 files changed, 20 insertions(+), 3015 deletions(-)
 delete mode 100644 abs/core/mythdb-initial/mc.sql.24

diff --git a/abs/core/mythdb-initial/PKGBUILD b/abs/core/mythdb-initial/PKGBUILD
index 28fe94e..6efcea7 100755
--- a/abs/core/mythdb-initial/PKGBUILD
+++ b/abs/core/mythdb-initial/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythdb-initial
 pkgver=8
-pkgrel=1
+pkgrel=2
 pkgdesc="setup the initial mythtv database for linhes"
 url=""
 license=""
@@ -12,13 +12,14 @@ backup=()
 install=mythdb.install
 source=(mc.sql permissions.sql custom.sql )
 arch=('i686' 'x86_64')
-build() {
-  cd $startdir/src
-  mkdir -p $startdir/pkg/data/database
-  cp mc.sql  $startdir/pkg/data/database/mc.sql.initial
-  cp permissions.sql  $startdir/pkg/data/database/permissions.sql
-  cp custom.sql  $startdir/pkg/data/database/custom.sql
+package() {
+  cd $srcdir
+  mkdir -p $pkgdir/data/database
+  cp $srcdir/mc.sql  $pkgdir/data/database/mc.sql.initial
+  cp $srcdir/permissions.sql  $pkgdir/data/database/permissions.sql
+  cp $srcdir/custom.sql  $pkgdir/data/database/custom.sql
 }
+
 md5sums=('9dcf8c574e69fde6b1b2fa1eed95ded4'
          'ad0e57ac5e7c3677808a670e16634bba'
-         '0942cc7b228cb1049f12950f3e228e8b')
+         '6c7fd1877f45b604be14d58d068f6d08')
diff --git a/abs/core/mythdb-initial/custom.sql b/abs/core/mythdb-initial/custom.sql
index 72a94f4..cb18965 100644
--- a/abs/core/mythdb-initial/custom.sql
+++ b/abs/core/mythdb-initial/custom.sql
@@ -75,13 +75,13 @@ INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
 -- MythVideo old local dir..replaced by storage groups
 /*
 INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
- ('ScreenShotPath'              ,'/myth/video_stuff/screenshots'  , 'apheleia'),
+ ('ScreenShotPath'              ,'/myth/artwork/screenshots'  , 'apheleia'),
  ('VideoStartupDir'             ,'/myth/video'                    , 'apheleia'),
- ('mythvideo.TrailersDir'       ,'/myth/video_stuff/trailers'     , 'apheleia'),
- ('VideoArtworkDir'             ,'/myth/video_stuff/coverart'     , 'apheleia'),
- ('mythvideo.screenshotDir'     ,'/myth/video_stuff/screenshots'  , 'apheleia'),
- ('mythvideo.bannerDir'         ,'/myth/video_stuff/banners'      , 'apheleia'),
- ('mythvideo.fanartDir'         ,'/myth/video_stuff/fanart'       , 'apheleia');
+ ('mythvideo.TrailersDir'       ,'/myth/artwork/trailers'     , 'apheleia'),
+ ('VideoArtworkDir'             ,'/myth/artwork/coverart'     , 'apheleia'),
+ ('mythvideo.screenshotDir'     ,'/myth/artwork/screenshots'  , 'apheleia'),
+ ('mythvideo.bannerDir'         ,'/myth/artwork/banners'      , 'apheleia'),
+ ('mythvideo.fanartDir'         ,'/myth/artwork/fanart'       , 'apheleia');
 */
 
 
@@ -89,12 +89,12 @@ INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
 INSERT INTO `storagegroup` (`groupname`, `hostname`, `dirname`) VALUES
 --  ('Default'     ,'apheleia'    ,'/myth/tv/'),
 --  ('LiveTV'      ,'apheleia'    ,'/myth/tv/live/'),
---  ('Screenshots' ,'apheleia'    ,'/myth/video_stuff/screenshots/'),
+--  ('Screenshots' ,'apheleia'    ,'/myth/artwork/screenshots/'),
 --  ('Videos'      ,'apheleia'    ,'/myth/video/'),
---  ('Coverart'    ,'apheleia'    ,'/myth/video_stuff/coverart/'),
---  ('Banners'     ,'apheleia'    ,'/myth/video_stuff/banners/'),
---  ('Fanart'      ,'apheleia'    ,'/myth/video_stuff/fanart/'),
---  ('Trailers'    ,'apheleia'    ,'/myth/video_stuff/trailers/'),
+--  ('Coverart'    ,'apheleia'    ,'/myth/artwork/coverart/'),
+--  ('Banners'     ,'apheleia'    ,'/myth/artwork/banners/'),
+--  ('Fanart'      ,'apheleia'    ,'/myth/artwork/fanart/'),
+--  ('Trailers'    ,'apheleia'    ,'/myth/artwork/trailers/'),
 --  ('Streaming'   ,'apheleia'    ,'/myth/streaming'),
  ('DB Backups'  ,'apheleia'    ,'/data/storage/disk0/backup/mythtv_backups');
 
diff --git a/abs/core/mythdb-initial/mc.sql.24 b/abs/core/mythdb-initial/mc.sql.24
deleted file mode 100644
index 54bf0ec..0000000
--- a/abs/core/mythdb-initial/mc.sql.24
+++ /dev/null
@@ -1,2996 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.52, for pc-linux-gnu (i686)
---
--- Host: localhost    Database: mythconverg
--- ------------------------------------------------------
--- Server version	5.1.52
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `archiveitems`
---
-
-DROP TABLE IF EXISTS `archiveitems`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `archiveitems` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `type` set('Recording','Video','File') CHARACTER SET latin1 DEFAULT NULL,
-  `title` varchar(128) DEFAULT NULL,
-  `subtitle` varchar(128) DEFAULT NULL,
-  `description` text,
-  `startdate` varchar(30) DEFAULT NULL,
-  `starttime` varchar(30) DEFAULT NULL,
-  `size` bigint(20) unsigned NOT NULL,
-  `filename` text NOT NULL,
-  `hascutlist` tinyint(1) NOT NULL DEFAULT '0',
-  `cutlist` text,
-  `duration` int(10) unsigned NOT NULL DEFAULT '0',
-  `cutduration` int(10) unsigned NOT NULL DEFAULT '0',
-  `videowidth` int(10) unsigned NOT NULL DEFAULT '0',
-  `videoheight` int(10) unsigned NOT NULL DEFAULT '0',
-  `filecodec` varchar(50) NOT NULL DEFAULT '',
-  `videocodec` varchar(50) NOT NULL DEFAULT '',
-  `encoderprofile` varchar(50) NOT NULL DEFAULT 'NONE',
-  PRIMARY KEY (`intid`),
-  KEY `title` (`title`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `archiveitems`
---
-
-LOCK TABLES `archiveitems` WRITE;
-/*!40000 ALTER TABLE `archiveitems` DISABLE KEYS */;
-/*!40000 ALTER TABLE `archiveitems` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `callsignnetworkmap`
---
-
-DROP TABLE IF EXISTS `callsignnetworkmap`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `callsignnetworkmap` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `callsign` varchar(20) NOT NULL DEFAULT '',
-  `network` varchar(20) NOT NULL DEFAULT '',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `callsign` (`callsign`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `callsignnetworkmap`
---
-
-LOCK TABLES `callsignnetworkmap` WRITE;
-/*!40000 ALTER TABLE `callsignnetworkmap` DISABLE KEYS */;
-/*!40000 ALTER TABLE `callsignnetworkmap` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `capturecard`
---
-
-DROP TABLE IF EXISTS `capturecard`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `capturecard` (
-  `cardid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `videodevice` varchar(128) DEFAULT NULL,
-  `audiodevice` varchar(128) DEFAULT NULL,
-  `vbidevice` varchar(128) DEFAULT NULL,
-  `cardtype` varchar(32) DEFAULT 'V4L',
-  `defaultinput` varchar(32) DEFAULT 'Television',
-  `audioratelimit` int(11) DEFAULT NULL,
-  `hostname` varchar(64) DEFAULT NULL,
-  `dvb_swfilter` int(11) DEFAULT '0',
-  `dvb_sat_type` int(11) NOT NULL DEFAULT '0',
-  `dvb_wait_for_seqstart` int(11) NOT NULL DEFAULT '1',
-  `skipbtaudio` tinyint(1) DEFAULT '0',
-  `dvb_on_demand` tinyint(4) NOT NULL DEFAULT '0',
-  `dvb_diseqc_type` smallint(6) DEFAULT NULL,
-  `firewire_speed` int(10) unsigned NOT NULL DEFAULT '0',
-  `firewire_model` varchar(32) DEFAULT NULL,
-  `firewire_connection` int(10) unsigned NOT NULL DEFAULT '0',
-  `signal_timeout` int(11) NOT NULL DEFAULT '1000',
-  `channel_timeout` int(11) NOT NULL DEFAULT '3000',
-  `dvb_tuning_delay` int(10) unsigned NOT NULL DEFAULT '0',
-  `contrast` int(11) NOT NULL DEFAULT '0',
-  `brightness` int(11) NOT NULL DEFAULT '0',
-  `colour` int(11) NOT NULL DEFAULT '0',
-  `hue` int(11) NOT NULL DEFAULT '0',
-  `diseqcid` int(10) unsigned DEFAULT NULL,
-  `dvb_eitscan` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`cardid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `capturecard`
---
-
-LOCK TABLES `capturecard` WRITE;
-/*!40000 ALTER TABLE `capturecard` DISABLE KEYS */;
-/*!40000 ALTER TABLE `capturecard` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `cardinput`
---
-
-DROP TABLE IF EXISTS `cardinput`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cardinput` (
-  `cardinputid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `cardid` int(10) unsigned NOT NULL DEFAULT '0',
-  `sourceid` int(10) unsigned NOT NULL DEFAULT '0',
-  `inputname` varchar(32) NOT NULL DEFAULT '',
-  `externalcommand` varchar(128) DEFAULT NULL,
-  `tunechan` varchar(10) DEFAULT NULL,
-  `startchan` varchar(10) DEFAULT NULL,
-  `displayname` varchar(64) NOT NULL DEFAULT '',
-  `dishnet_eit` tinyint(1) NOT NULL DEFAULT '0',
-  `recpriority` int(11) NOT NULL DEFAULT '0',
-  `quicktune` tinyint(4) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`cardinputid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `cardinput`
---
-
-LOCK TABLES `cardinput` WRITE;
-/*!40000 ALTER TABLE `cardinput` DISABLE KEYS */;
-/*!40000 ALTER TABLE `cardinput` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `channel`
---
-
-DROP TABLE IF EXISTS `channel`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `channel` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `channum` varchar(10) NOT NULL DEFAULT '',
-  `freqid` varchar(10) DEFAULT NULL,
-  `sourceid` int(10) unsigned DEFAULT NULL,
-  `callsign` varchar(20) NOT NULL DEFAULT '',
-  `name` varchar(64) NOT NULL DEFAULT '',
-  `icon` varchar(255) NOT NULL DEFAULT 'none',
-  `finetune` int(11) DEFAULT NULL,
-  `videofilters` varchar(255) NOT NULL DEFAULT '',
-  `xmltvid` varchar(64) NOT NULL DEFAULT '',
-  `recpriority` int(10) NOT NULL DEFAULT '0',
-  `contrast` int(11) DEFAULT '32768',
-  `brightness` int(11) DEFAULT '32768',
-  `colour` int(11) DEFAULT '32768',
-  `hue` int(11) DEFAULT '32768',
-  `tvformat` varchar(10) NOT NULL DEFAULT 'Default',
-  `visible` tinyint(1) NOT NULL DEFAULT '1',
-  `outputfilters` varchar(255) NOT NULL DEFAULT '',
-  `useonairguide` tinyint(1) DEFAULT '0',
-  `mplexid` smallint(6) DEFAULT NULL,
-  `serviceid` mediumint(8) unsigned DEFAULT NULL,
-  `tmoffset` int(11) NOT NULL DEFAULT '0',
-  `atsc_major_chan` int(10) unsigned NOT NULL DEFAULT '0',
-  `atsc_minor_chan` int(10) unsigned NOT NULL DEFAULT '0',
-  `last_record` datetime NOT NULL,
-  `default_authority` varchar(32) NOT NULL DEFAULT '',
-  `commmethod` int(11) NOT NULL DEFAULT '-1',
-  PRIMARY KEY (`chanid`),
-  KEY `channel_src` (`channum`,`sourceid`),
-  KEY `sourceid` (`sourceid`,`xmltvid`,`chanid`),
-  KEY `visible` (`visible`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `channel`
---
-
-LOCK TABLES `channel` WRITE;
-/*!40000 ALTER TABLE `channel` DISABLE KEYS */;
-/*!40000 ALTER TABLE `channel` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `channelgroup`
---
-
-DROP TABLE IF EXISTS `channelgroup`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `channelgroup` (
-  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `chanid` int(11) unsigned NOT NULL DEFAULT '0',
-  `grpid` int(11) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `channelgroup`
---
-
-LOCK TABLES `channelgroup` WRITE;
-/*!40000 ALTER TABLE `channelgroup` DISABLE KEYS */;
-/*!40000 ALTER TABLE `channelgroup` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `channelgroupnames`
---
-
-DROP TABLE IF EXISTS `channelgroupnames`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `channelgroupnames` (
-  `grpid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(64) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`grpid`)
-) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `channelgroupnames`
---
-
-LOCK TABLES `channelgroupnames` WRITE;
-/*!40000 ALTER TABLE `channelgroupnames` DISABLE KEYS */;
-INSERT INTO `channelgroupnames` (`grpid`, `name`) VALUES (1,'Favorites');
-/*!40000 ALTER TABLE `channelgroupnames` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `channelscan`
---
-
-DROP TABLE IF EXISTS `channelscan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `channelscan` (
-  `scanid` int(3) unsigned NOT NULL AUTO_INCREMENT,
-  `cardid` int(3) unsigned NOT NULL,
-  `sourceid` int(3) unsigned NOT NULL,
-  `processed` tinyint(1) unsigned NOT NULL,
-  `scandate` datetime NOT NULL,
-  PRIMARY KEY (`scanid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `channelscan`
---
-
-LOCK TABLES `channelscan` WRITE;
-/*!40000 ALTER TABLE `channelscan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `channelscan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `channelscan_channel`
---
-
-DROP TABLE IF EXISTS `channelscan_channel`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `channelscan_channel` (
-  `transportid` int(6) unsigned NOT NULL,
-  `scanid` int(3) unsigned NOT NULL,
-  `mplex_id` smallint(6) NOT NULL,
-  `source_id` int(3) unsigned NOT NULL,
-  `channel_id` int(3) unsigned NOT NULL DEFAULT '0',
-  `callsign` varchar(20) NOT NULL DEFAULT '',
-  `service_name` varchar(64) NOT NULL DEFAULT '',
-  `chan_num` varchar(10) NOT NULL DEFAULT '',
-  `service_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `atsc_major_channel` int(4) unsigned NOT NULL DEFAULT '0',
-  `atsc_minor_channel` int(4) unsigned NOT NULL DEFAULT '0',
-  `use_on_air_guide` tinyint(1) NOT NULL DEFAULT '0',
-  `hidden` tinyint(1) NOT NULL DEFAULT '0',
-  `hidden_in_guide` tinyint(1) NOT NULL DEFAULT '0',
-  `freqid` varchar(10) NOT NULL DEFAULT '',
-  `icon` varchar(255) NOT NULL DEFAULT '',
-  `tvformat` varchar(10) NOT NULL DEFAULT 'Default',
-  `xmltvid` varchar(64) NOT NULL DEFAULT '',
-  `pat_tsid` int(5) unsigned NOT NULL DEFAULT '0',
-  `vct_tsid` int(5) unsigned NOT NULL DEFAULT '0',
-  `vct_chan_tsid` int(5) unsigned NOT NULL DEFAULT '0',
-  `sdt_tsid` int(5) unsigned NOT NULL DEFAULT '0',
-  `orig_netid` int(5) unsigned NOT NULL DEFAULT '0',
-  `netid` int(5) unsigned NOT NULL DEFAULT '0',
-  `si_standard` varchar(10) NOT NULL,
-  `in_channels_conf` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `in_pat` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `in_pmt` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `in_vct` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `in_nit` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `in_sdt` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `is_encrypted` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `is_data_service` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `is_audio_service` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `is_opencable` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `could_be_opencable` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `decryption_status` smallint(2) unsigned NOT NULL DEFAULT '0',
-  `default_authority` varchar(32) NOT NULL DEFAULT ''
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `channelscan_channel`
---
-
-LOCK TABLES `channelscan_channel` WRITE;
-/*!40000 ALTER TABLE `channelscan_channel` DISABLE KEYS */;
-/*!40000 ALTER TABLE `channelscan_channel` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `channelscan_dtv_multiplex`
---
-
-DROP TABLE IF EXISTS `channelscan_dtv_multiplex`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `channelscan_dtv_multiplex` (
-  `transportid` int(6) unsigned NOT NULL AUTO_INCREMENT,
-  `scanid` int(3) unsigned NOT NULL,
-  `mplexid` smallint(6) unsigned NOT NULL,
-  `frequency` bigint(12) unsigned NOT NULL,
-  `inversion` char(1) NOT NULL DEFAULT 'a',
-  `symbolrate` bigint(12) unsigned NOT NULL DEFAULT '0',
-  `fec` varchar(10) NOT NULL DEFAULT 'auto',
-  `polarity` char(1) NOT NULL DEFAULT '',
-  `hp_code_rate` varchar(10) NOT NULL DEFAULT 'auto',
-  `mod_sys` varchar(10) DEFAULT NULL,
-  `rolloff` varchar(4) DEFAULT NULL,
-  `lp_code_rate` varchar(10) NOT NULL DEFAULT 'auto',
-  `modulation` varchar(10) NOT NULL DEFAULT 'auto',
-  `transmission_mode` char(1) NOT NULL DEFAULT 'a',
-  `guard_interval` varchar(10) NOT NULL DEFAULT 'auto',
-  `hierarchy` varchar(10) NOT NULL DEFAULT 'auto',
-  `bandwidth` char(1) NOT NULL DEFAULT 'a',
-  `sistandard` varchar(10) NOT NULL,
-  `tuner_type` smallint(2) unsigned NOT NULL,
-  `default_authority` varchar(32) NOT NULL DEFAULT '',
-  PRIMARY KEY (`transportid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `channelscan_dtv_multiplex`
---
-
-LOCK TABLES `channelscan_dtv_multiplex` WRITE;
-/*!40000 ALTER TABLE `channelscan_dtv_multiplex` DISABLE KEYS */;
-/*!40000 ALTER TABLE `channelscan_dtv_multiplex` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `codecparams`
---
-
-DROP TABLE IF EXISTS `codecparams`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `codecparams` (
-  `profile` int(10) unsigned NOT NULL DEFAULT '0',
-  `name` varchar(128) NOT NULL DEFAULT '',
-  `value` varchar(128) DEFAULT NULL,
-  PRIMARY KEY (`profile`,`name`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `codecparams`
---
-
-LOCK TABLES `codecparams` WRITE;
-/*!40000 ALTER TABLE `codecparams` DISABLE KEYS */;
-/*!40000 ALTER TABLE `codecparams` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `credits`
---
-
-DROP TABLE IF EXISTS `credits`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `credits` (
-  `person` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `role` set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') CHARACTER SET latin1 NOT NULL DEFAULT '',
-  UNIQUE KEY `chanid` (`chanid`,`starttime`,`person`,`role`),
-  KEY `person` (`person`,`role`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `credits`
---
-
-LOCK TABLES `credits` WRITE;
-/*!40000 ALTER TABLE `credits` DISABLE KEYS */;
-/*!40000 ALTER TABLE `credits` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `customexample`
---
-
-DROP TABLE IF EXISTS `customexample`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `customexample` (
-  `rulename` varchar(64) NOT NULL,
-  `fromclause` varchar(10000) NOT NULL DEFAULT '',
-  `whereclause` varchar(10000) NOT NULL DEFAULT '',
-  `search` tinyint(4) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`rulename`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `customexample`
---
-
-LOCK TABLES `customexample` WRITE;
-/*!40000 ALTER TABLE `customexample` DISABLE KEYS */;
-INSERT INTO `customexample` (`rulename`, `fromclause`, `whereclause`, `search`) VALUES ('New Flix','','program.category_type = \'movie\' AND program.airdate >= \n     YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) \nAND program.stars > 0.5 ',1);
-/*!40000 ALTER TABLE `customexample` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `diseqc_config`
---
-
-DROP TABLE IF EXISTS `diseqc_config`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `diseqc_config` (
-  `cardinputid` int(10) unsigned NOT NULL,
-  `diseqcid` int(10) unsigned NOT NULL,
-  `value` varchar(16) NOT NULL DEFAULT '',
-  KEY `id` (`cardinputid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `diseqc_config`
---
-
-LOCK TABLES `diseqc_config` WRITE;
-/*!40000 ALTER TABLE `diseqc_config` DISABLE KEYS */;
-/*!40000 ALTER TABLE `diseqc_config` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `diseqc_tree`
---
-
-DROP TABLE IF EXISTS `diseqc_tree`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `diseqc_tree` (
-  `diseqcid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `parentid` int(10) unsigned DEFAULT NULL,
-  `ordinal` tinyint(3) unsigned NOT NULL,
-  `type` varchar(16) NOT NULL DEFAULT '',
-  `subtype` varchar(16) NOT NULL DEFAULT '',
-  `description` varchar(32) NOT NULL DEFAULT '',
-  `switch_ports` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rotor_hi_speed` float NOT NULL DEFAULT '0',
-  `rotor_lo_speed` float NOT NULL DEFAULT '0',
-  `rotor_positions` varchar(255) NOT NULL DEFAULT '',
-  `lnb_lof_switch` int(10) NOT NULL DEFAULT '0',
-  `lnb_lof_hi` int(10) NOT NULL DEFAULT '0',
-  `lnb_lof_lo` int(10) NOT NULL DEFAULT '0',
-  `cmd_repeat` int(11) NOT NULL DEFAULT '1',
-  `lnb_pol_inv` tinyint(4) NOT NULL DEFAULT '0',
-  `address` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`diseqcid`),
-  KEY `parentid` (`parentid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `diseqc_tree`
---
-
-LOCK TABLES `diseqc_tree` WRITE;
-/*!40000 ALTER TABLE `diseqc_tree` DISABLE KEYS */;
-/*!40000 ALTER TABLE `diseqc_tree` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `displayprofilegroups`
---
-
-DROP TABLE IF EXISTS `displayprofilegroups`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `displayprofilegroups` (
-  `name` varchar(128) NOT NULL,
-  `hostname` varchar(64) NOT NULL,
-  `profilegroupid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  PRIMARY KEY (`name`,`hostname`),
-  UNIQUE KEY `profilegroupid` (`profilegroupid`)
-) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `displayprofilegroups`
---
-
-LOCK TABLES `displayprofilegroups` WRITE;
-/*!40000 ALTER TABLE `displayprofilegroups` DISABLE KEYS */;
-INSERT INTO `displayprofilegroups` (`name`, `hostname`, `profilegroupid`) VALUES ('CPU++','larch5',1),('CPU+','larch5',2),('CPU--','larch5',3),('High Quality','larch5',4),('Normal','larch5',5),('Slim','larch5',6),('VDPAU High Quality','larch5',7),('VDPAU Normal','larch5',8),('VDPAU Slim','larch5',9);
-/*!40000 ALTER TABLE `displayprofilegroups` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `displayprofiles`
---
-
-DROP TABLE IF EXISTS `displayprofiles`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `displayprofiles` (
-  `profilegroupid` int(10) unsigned NOT NULL,
-  `profileid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `value` varchar(128) NOT NULL,
-  `data` varchar(255) NOT NULL DEFAULT '',
-  KEY `profilegroupid` (`profilegroupid`),
-  KEY `profileid` (`profileid`,`value`),
-  KEY `profileid_2` (`profileid`)
-) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `displayprofiles`
---
-
-LOCK TABLES `displayprofiles` WRITE;
-/*!40000 ALTER TABLE `displayprofiles` DISABLE KEYS */;
-INSERT INTO `displayprofiles` (`profilegroupid`, `profileid`, `value`, `data`) VALUES (1,1,'pref_priority','1'),(1,1,'pref_cmp0','> 0 0'),(1,1,'pref_decoder','ffmpeg'),(1,1,'pref_max_cpus','1'),(1,1,'pref_videorenderer','xv-blit'),(1,1,'pref_osdrenderer','softblend'),(1,1,'pref_osdfade','1'),(1,1,'pref_deint0','bobdeint'),(1,1,'pref_deint1','linearblend'),(1,1,'pref_filters',''),(1,2,'pref_priority','2'),(1,2,'pref_cmp0','> 0 0'),(1,2,'pref_decoder','ffmpeg'),(1,2,'pref_max_cpus','1'),(1,2,'pref_videorenderer','quartz-blit'),(1,2,'pref_osdrenderer','softblend'),(1,2,'pref_osdfade','1'),(1,2,'pref_deint0','linearblend'),(1,2,'pref_deint1','linearblend'),(1,2,'pref_filters',''),(2,3,'pref_priority','1'),(2,3,'pref_cmp0','<= 720 576'),(2,3,'pref_cmp1','> 0 0'),(2,3,'pref_decoder','ffmpeg'),(2,3,'pref_max_cpus','1'),(2,3,'pref_videorenderer','xv-blit'),(2,3,'pref_osdrenderer','softblend'),(2,3,'pref_osdfade','1'),(2,3,'pref_deint0','bobdeint'),(2,3,'pref_deint1','linearblend'),(2,3,'pref_filters',''),(2,4,'pref_priority','2'),(2,4,'pref_cmp0','<= 1280 720'),(2,4,'pref_cmp1','> 720 576'),(2,4,'pref_decoder','xvmc'),(2,4,'pref_max_cpus','1'),(2,4,'pref_videorenderer','xvmc-blit'),(2,4,'pref_osdrenderer','opengl'),(2,4,'pref_osdfade','1'),(2,4,'pref_deint0','bobdeint'),(2,4,'pref_deint1','onefield'),(2,4,'pref_filters',''),(2,5,'pref_priority','3'),(2,5,'pref_cmp0','<= 1280 720'),(2,5,'pref_cmp1','> 720 576'),(2,5,'pref_decoder','libmpeg2'),(2,5,'pref_max_cpus','1'),(2,5,'pref_videorenderer','xv-blit'),(2,5,'pref_osdrenderer','softblend'),(2,5,'pref_osdfade','1'),(2,5,'pref_deint0','bobdeint'),(2,5,'pref_deint1','onefield'),(2,5,'pref_filters',''),(2,6,'pref_priority','4'),(2,6,'pref_cmp0','> 0 0'),(2,6,'pref_decoder','xvmc'),(2,6,'pref_max_cpus','1'),(2,6,'pref_videorenderer','xvmc-blit'),(2,6,'pref_osdrenderer','ia44blend'),(2,6,'pref_osdfade','0'),(2,6,'pref_deint0','bobdeint'),(2,6,'pref_deint1','onefield'),(2,6,'pref_filters',''),(2,7,'pref_priority','5'),(2,7,'pref_cmp0','> 0 0'),(2,7,'pref_decoder','libmpeg2'),(2,7,'pref_max_cpus','1'),(2,7,'pref_videorenderer','xv-blit'),(2,7,'pref_osdrenderer','chromakey'),(2,7,'pref_osdfade','0'),(2,7,'pref_deint0','bobdeint'),(2,7,'pref_deint1','onefield'),(2,7,'pref_filters',''),(3,8,'pref_priority','1'),(3,8,'pref_cmp0','<= 720 576'),(3,8,'pref_cmp1','> 0 0'),(3,8,'pref_decoder','ivtv'),(3,8,'pref_max_cpus','1'),(3,8,'pref_videorenderer','ivtv'),(3,8,'pref_osdrenderer','ivtv'),(3,8,'pref_osdfade','1'),(3,8,'pref_deint0','none'),(3,8,'pref_deint1','none'),(3,8,'pref_filters',''),(3,9,'pref_priority','2'),(3,9,'pref_cmp0','<= 720 576'),(3,9,'pref_cmp1','> 0 0'),(3,9,'pref_decoder','xvmc'),(3,9,'pref_max_cpus','1'),(3,9,'pref_videorenderer','xvmc-blit'),(3,9,'pref_osdrenderer','ia44blend'),(3,9,'pref_osdfade','0'),(3,9,'pref_deint0','bobdeint'),(3,9,'pref_deint1','onefield'),(3,9,'pref_filters',''),(3,10,'pref_priority','3'),(3,10,'pref_cmp0','<= 1280 720'),(3,10,'pref_cmp1','> 720 576'),(3,10,'pref_decoder','xvmc'),(3,10,'pref_max_cpus','1'),(3,10,'pref_videorenderer','xvmc-blit'),(3,10,'pref_osdrenderer','ia44blend'),(3,10,'pref_osdfade','0'),(3,10,'pref_deint0','bobdeint'),(3,10,'pref_deint1','onefield'),(3,10,'pref_filters',''),(3,11,'pref_priority','4'),(3,11,'pref_cmp0','> 0 0'),(3,11,'pref_decoder','xvmc'),(3,11,'pref_max_cpus','1'),(3,11,'pref_videorenderer','xvmc-blit'),(3,11,'pref_osdrenderer','ia44blend'),(3,11,'pref_osdfade','0'),(3,11,'pref_deint0','bobdeint'),(3,11,'pref_deint1','onefield'),(3,11,'pref_filters',''),(3,12,'pref_priority','5'),(3,12,'pref_cmp0','> 0 0'),(3,12,'pref_decoder','libmpeg2'),(3,12,'pref_max_cpus','1'),(3,12,'pref_videorenderer','xv-blit'),(3,12,'pref_osdrenderer','chromakey'),(3,12,'pref_osdfade','0'),(3,12,'pref_deint0','none'),(3,12,'pref_deint1','none'),(3,12,'pref_filters',''),(4,13,'pref_priority','1'),(4,13,'pref_cmp0','>= 1920 1080'),(4,13,'pref_decoder','ffmpeg'),(4,13,'pref_max_cpus','2'),(4,13,'pref_videorenderer','xv-blit'),(4,13,'pref_osdrenderer','softblend'),(4,13,'pref_osdfade','1'),(4,13,'pref_deint0','linearblend'),(4,13,'pref_deint1','linearblend'),(4,13,'pref_filters',''),(4,14,'pref_priority','2'),(4,14,'pref_cmp0','> 0 0'),(4,14,'pref_decoder','ffmpeg'),(4,14,'pref_max_cpus','1'),(4,14,'pref_videorenderer','xv-blit'),(4,14,'pref_osdrenderer','softblend'),(4,14,'pref_osdfade','1'),(4,14,'pref_deint0','yadifdoubleprocessdeint'),(4,14,'pref_deint1','yadifdeint'),(4,14,'pref_filters',''),(4,15,'pref_priority','3'),(4,15,'pref_cmp0','>= 1920 1080'),(4,15,'pref_decoder','ffmpeg'),(4,15,'pref_max_cpus','2'),(4,15,'pref_videorenderer','quartz-blit'),(4,15,'pref_osdrenderer','softblend'),(4,15,'pref_osdfade','1'),(4,15,'pref_deint0','linearblend'),(4,15,'pref_deint1','linearblend'),(4,15,'pref_filters',''),(4,16,'pref_priority','4'),(4,16,'pref_cmp0','> 0 0'),(4,16,'pref_decoder','ffmpeg'),(4,16,'pref_max_cpus','1'),(4,16,'pref_videorenderer','quartz-blit'),(4,16,'pref_osdrenderer','softblend'),(4,16,'pref_osdfade','1'),(4,16,'pref_deint0','yadifdoubleprocessdeint'),(4,16,'pref_deint1','yadifdeint'),(4,16,'pref_filters',''),(5,17,'pref_priority','1'),(5,17,'pref_cmp0','>= 1280 720'),(5,17,'pref_decoder','ffmpeg'),(5,17,'pref_max_cpus','1'),(5,17,'pref_videorenderer','xv-blit'),(5,17,'pref_osdrenderer','softblend'),(5,17,'pref_osdfade','0'),(5,17,'pref_deint0','linearblend'),(5,17,'pref_deint1','linearblend'),(5,17,'pref_filters',''),(5,18,'pref_priority','2'),(5,18,'pref_cmp0','> 0 0'),(5,18,'pref_decoder','ffmpeg'),(5,18,'pref_max_cpus','1'),(5,18,'pref_videorenderer','xv-blit'),(5,18,'pref_osdrenderer','softblend'),(5,18,'pref_osdfade','1'),(5,18,'pref_deint0','greedyhdoubleprocessdeint'),(5,18,'pref_deint1','kerneldeint'),(5,18,'pref_filters',''),(5,19,'pref_priority','3'),(5,19,'pref_cmp0','>= 1280 720'),(5,19,'pref_decoder','ffmpeg'),(5,19,'pref_max_cpus','1'),(5,19,'pref_videorenderer','quartz-blit'),(5,19,'pref_osdrenderer','softblend'),(5,19,'pref_osdfade','0'),(5,19,'pref_deint0','linearblend'),(5,19,'pref_deint1','linearblend'),(5,19,'pref_filters',''),(5,20,'pref_priority','4'),(5,20,'pref_cmp0','> 0 0'),(5,20,'pref_decoder','ffmpeg'),(5,20,'pref_max_cpus','1'),(5,20,'pref_videorenderer','quartz-blit'),(5,20,'pref_osdrenderer','softblend'),(5,20,'pref_osdfade','1'),(5,20,'pref_deint0','greedyhdoubleprocessdeint'),(5,20,'pref_deint1','kerneldeint'),(5,20,'pref_filters',''),(6,21,'pref_priority','1'),(6,21,'pref_cmp0','>= 1280 720'),(6,21,'pref_decoder','ffmpeg'),(6,21,'pref_max_cpus','1'),(6,21,'pref_videorenderer','xv-blit'),(6,21,'pref_osdrenderer','softblend'),(6,21,'pref_osdfade','0'),(6,21,'pref_deint0','onefield'),(6,21,'pref_deint1','onefield'),(6,21,'pref_filters',''),(6,22,'pref_priority','2'),(6,22,'pref_cmp0','> 0 0'),(6,22,'pref_decoder','ffmpeg'),(6,22,'pref_max_cpus','1'),(6,22,'pref_videorenderer','xv-blit'),(6,22,'pref_osdrenderer','softblend'),(6,22,'pref_osdfade','1'),(6,22,'pref_deint0','linearblend'),(6,22,'pref_deint1','linearblend'),(6,22,'pref_filters',''),(6,23,'pref_priority','3'),(6,23,'pref_cmp0','>= 1280 720'),(6,23,'pref_decoder','ffmpeg'),(6,23,'pref_max_cpus','1'),(6,23,'pref_videorenderer','quartz-blit'),(6,23,'pref_osdrenderer','softblend'),(6,23,'pref_osdfade','0'),(6,23,'pref_deint0','onefield'),(6,23,'pref_deint1','onefield'),(6,23,'pref_filters',''),(6,24,'pref_priority','4'),(6,24,'pref_cmp0','> 0 0'),(6,24,'pref_decoder','ffmpeg'),(6,24,'pref_max_cpus','1'),(6,24,'pref_videorenderer','quartz-blit'),(6,24,'pref_osdrenderer','softblend'),(6,24,'pref_osdfade','1'),(6,24,'pref_deint0','linearblend'),(6,24,'pref_deint1','linearblend'),(6,24,'pref_filters',''),(7,25,'pref_priority','1'),(7,25,'pref_cmp0','> 0 0'),(7,25,'pref_decoder','vdpau'),(7,25,'pref_max_cpus','1'),(7,25,'pref_videorenderer','vdpau'),(7,25,'pref_osdrenderer','vdpau'),(7,25,'pref_osdfade','1'),(7,25,'pref_deint0','vdpauadvanceddoublerate'),(7,25,'pref_deint1','vdpauadvanced'),(7,25,'pref_filters',''),(8,26,'pref_priority','1'),(8,26,'pref_cmp0','>= 0 720'),(8,26,'pref_decoder','vdpau'),(8,26,'pref_max_cpus','1'),(8,26,'pref_videorenderer','vdpau'),(8,26,'pref_osdrenderer','vdpau'),(8,26,'pref_osdfade','1'),(8,26,'pref_deint0','vdpaubasicdoublerate'),(8,26,'pref_deint1','vdpaubasic'),(8,26,'pref_filters',''),(8,27,'pref_priority','2'),(8,27,'pref_cmp0','> 0 0'),(8,27,'pref_decoder','vdpau'),(8,27,'pref_max_cpus','1'),(8,27,'pref_videorenderer','vdpau'),(8,27,'pref_osdrenderer','vdpau'),(8,27,'pref_osdfade','1'),(8,27,'pref_deint0','vdpauadvanceddoublerate'),(8,27,'pref_deint1','vdpauadvanced'),(8,27,'pref_filters',''),(9,28,'pref_priority','1'),(9,28,'pref_cmp0','> 0 0'),(9,28,'pref_decoder','vdpau'),(9,28,'pref_max_cpus','1'),(9,28,'pref_videorenderer','vdpau'),(9,28,'pref_osdrenderer','vdpau'),(9,28,'pref_osdfade','0'),(9,28,'pref_deint0','vdpaubobdeint'),(9,28,'pref_deint1','vdpauonefield'),(9,28,'pref_filters','vdpauskipchroma');
-/*!40000 ALTER TABLE `displayprofiles` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `dtv_multiplex`
---
-
-DROP TABLE IF EXISTS `dtv_multiplex`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `dtv_multiplex` (
-  `mplexid` smallint(6) NOT NULL AUTO_INCREMENT,
-  `sourceid` smallint(6) DEFAULT NULL,
-  `transportid` int(11) DEFAULT NULL,
-  `networkid` int(11) DEFAULT NULL,
-  `frequency` int(11) DEFAULT NULL,
-  `inversion` char(1) DEFAULT 'a',
-  `symbolrate` int(11) DEFAULT NULL,
-  `fec` varchar(10) DEFAULT 'auto',
-  `polarity` char(1) DEFAULT NULL,
-  `modulation` varchar(10) DEFAULT 'auto',
-  `bandwidth` char(1) DEFAULT 'a',
-  `lp_code_rate` varchar(10) DEFAULT 'auto',
-  `transmission_mode` char(1) DEFAULT 'a',
-  `guard_interval` varchar(10) DEFAULT 'auto',
-  `visible` smallint(1) NOT NULL DEFAULT '0',
-  `constellation` varchar(10) DEFAULT 'auto',
-  `hierarchy` varchar(10) DEFAULT 'auto',
-  `hp_code_rate` varchar(10) DEFAULT 'auto',
-  `mod_sys` varchar(10) DEFAULT NULL,
-  `rolloff` varchar(4) DEFAULT NULL,
-  `sistandard` varchar(10) DEFAULT 'dvb',
-  `serviceversion` smallint(6) DEFAULT '33',
-  `updatetimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `default_authority` varchar(32) NOT NULL DEFAULT '',
-  PRIMARY KEY (`mplexid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `dtv_multiplex`
---
-
-LOCK TABLES `dtv_multiplex` WRITE;
-/*!40000 ALTER TABLE `dtv_multiplex` DISABLE KEYS */;
-/*!40000 ALTER TABLE `dtv_multiplex` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `dtv_privatetypes`
---
-
-DROP TABLE IF EXISTS `dtv_privatetypes`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `dtv_privatetypes` (
-  `sitype` varchar(4) NOT NULL DEFAULT '',
-  `networkid` int(11) NOT NULL DEFAULT '0',
-  `private_type` varchar(20) NOT NULL DEFAULT '',
-  `private_value` varchar(100) NOT NULL DEFAULT ''
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `dtv_privatetypes`
---
-
-LOCK TABLES `dtv_privatetypes` WRITE;
-/*!40000 ALTER TABLE `dtv_privatetypes` DISABLE KEYS */;
-INSERT INTO `dtv_privatetypes` (`sitype`, `networkid`, `private_type`, `private_value`) VALUES ('dvb',9018,'channel_numbers','131'),('dvb',9018,'guide_fixup','2'),('dvb',256,'guide_fixup','1'),('dvb',257,'guide_fixup','1'),('dvb',256,'tv_types','1,150,134,133'),('dvb',257,'tv_types','1,150,134,133'),('dvb',4100,'sdt_mapping','1'),('dvb',4101,'sdt_mapping','1'),('dvb',4102,'sdt_mapping','1'),('dvb',4103,'sdt_mapping','1'),('dvb',4104,'sdt_mapping','1'),('dvb',4105,'sdt_mapping','1'),('dvb',4106,'sdt_mapping','1'),('dvb',4107,'sdt_mapping','1'),('dvb',4097,'sdt_mapping','1'),('dvb',4098,'sdt_mapping','1'),('dvb',4100,'tv_types','1,145,154'),('dvb',4101,'tv_types','1,145,154'),('dvb',4102,'tv_types','1,145,154'),('dvb',4103,'tv_types','1,145,154'),('dvb',4104,'tv_types','1,145,154'),('dvb',4105,'tv_types','1,145,154'),('dvb',4106,'tv_types','1,145,154'),('dvb',4107,'tv_types','1,145,154'),('dvb',4097,'tv_types','1,145,154'),('dvb',4098,'tv_types','1,145,154'),('dvb',4100,'guide_fixup','1'),('dvb',4101,'guide_fixup','1'),('dvb',4102,'guide_fixup','1'),('dvb',4103,'guide_fixup','1'),('dvb',4104,'guide_fixup','1'),('dvb',4105,'guide_fixup','1'),('dvb',4106,'guide_fixup','1'),('dvb',4107,'guide_fixup','1'),('dvb',4096,'guide_fixup','5'),('dvb',4097,'guide_fixup','1'),('dvb',4098,'guide_fixup','1'),('dvb',94,'tv_types','1,128'),('atsc',1793,'guide_fixup','3'),('dvb',40999,'guide_fixup','4'),('dvb',70,'force_guide_present','yes'),('dvb',70,'guide_ranges','80,80,96,96'),('dvb',4112,'channel_numbers','131'),('dvb',4115,'channel_numbers','131'),('dvb',4116,'channel_numbers','131'),('dvb',12802,'channel_numbers','131'),('dvb',12803,'channel_numbers','131'),('dvb',12829,'channel_numbers','131'),('dvb',40999,'parse_subtitle_list','1070,1308,1041,1306,1307,1030,1016,1131,1068,1069'),('dvb',4096,'guide_fixup','5');
-/*!40000 ALTER TABLE `dtv_privatetypes` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `dvdbookmark`
---
-
-DROP TABLE IF EXISTS `dvdbookmark`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `dvdbookmark` (
-  `serialid` varchar(16) NOT NULL DEFAULT '',
-  `name` varchar(32) DEFAULT NULL,
-  `title` smallint(6) NOT NULL DEFAULT '0',
-  `audionum` tinyint(4) NOT NULL DEFAULT '-1',
-  `subtitlenum` tinyint(4) NOT NULL DEFAULT '-1',
-  `framenum` bigint(20) NOT NULL DEFAULT '0',
-  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  PRIMARY KEY (`serialid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `dvdbookmark`
---
-
-LOCK TABLES `dvdbookmark` WRITE;
-/*!40000 ALTER TABLE `dvdbookmark` DISABLE KEYS */;
-/*!40000 ALTER TABLE `dvdbookmark` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `dvdinput`
---
-
-DROP TABLE IF EXISTS `dvdinput`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `dvdinput` (
-  `intid` int(10) unsigned NOT NULL,
-  `hsize` int(10) unsigned DEFAULT NULL,
-  `vsize` int(10) unsigned DEFAULT NULL,
-  `ar_num` int(10) unsigned DEFAULT NULL,
-  `ar_denom` int(10) unsigned DEFAULT NULL,
-  `fr_code` int(10) unsigned DEFAULT NULL,
-  `letterbox` tinyint(1) DEFAULT NULL,
-  `v_format` varchar(16) DEFAULT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `dvdinput`
---
-
-LOCK TABLES `dvdinput` WRITE;
-/*!40000 ALTER TABLE `dvdinput` DISABLE KEYS */;
-INSERT INTO `dvdinput` (`intid`, `hsize`, `vsize`, `ar_num`, `ar_denom`, `fr_code`, `letterbox`, `v_format`) VALUES (1,720,480,16,9,1,1,'ntsc'),(2,720,480,16,9,1,0,'ntsc'),(3,720,480,4,3,1,1,'ntsc'),(4,720,480,4,3,1,0,'ntsc'),(5,720,576,16,9,3,1,'pal'),(6,720,576,16,9,3,0,'pal'),(7,720,576,4,3,3,1,'pal'),(8,720,576,4,3,3,0,'pal');
-/*!40000 ALTER TABLE `dvdinput` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `dvdtranscode`
---
-
-DROP TABLE IF EXISTS `dvdtranscode`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `dvdtranscode` (
-  `intid` int(11) NOT NULL AUTO_INCREMENT,
-  `input` int(10) unsigned DEFAULT NULL,
-  `name` varchar(128) NOT NULL,
-  `sync_mode` int(10) unsigned DEFAULT NULL,
-  `use_yv12` tinyint(1) DEFAULT NULL,
-  `cliptop` int(11) DEFAULT NULL,
-  `clipbottom` int(11) DEFAULT NULL,
-  `clipleft` int(11) DEFAULT NULL,
-  `clipright` int(11) DEFAULT NULL,
-  `f_resize_h` int(11) DEFAULT NULL,
-  `f_resize_w` int(11) DEFAULT NULL,
-  `hq_resize_h` int(11) DEFAULT NULL,
-  `hq_resize_w` int(11) DEFAULT NULL,
-  `grow_h` int(11) DEFAULT NULL,
-  `grow_w` int(11) DEFAULT NULL,
-  `clip2top` int(11) DEFAULT NULL,
-  `clip2bottom` int(11) DEFAULT NULL,
-  `clip2left` int(11) DEFAULT NULL,
-  `clip2right` int(11) DEFAULT NULL,
-  `codec` varchar(128) NOT NULL,
-  `codec_param` varchar(128) DEFAULT NULL,
-  `bitrate` int(11) DEFAULT NULL,
-  `a_sample_r` int(11) DEFAULT NULL,
-  `a_bitrate` int(11) DEFAULT NULL,
-  `two_pass` tinyint(1) DEFAULT NULL,
-  `tc_param` varchar(128) DEFAULT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `dvdtranscode`
---
-
-LOCK TABLES `dvdtranscode` WRITE;
-/*!40000 ALTER TABLE `dvdtranscode` DISABLE KEYS */;
-INSERT INTO `dvdtranscode` (`intid`, `input`, `name`, `sync_mode`, `use_yv12`, `cliptop`, `clipbottom`, `clipleft`, `clipright`, `f_resize_h`, `f_resize_w`, `hq_resize_h`, `hq_resize_w`, `grow_h`, `grow_w`, `clip2top`, `clip2bottom`, `clip2left`, `clip2right`, `codec`, `codec_param`, `bitrate`, `a_sample_r`, `a_bitrate`, `two_pass`, `tc_param`) VALUES (1,1,'Good',2,1,16,16,0,0,2,0,0,0,0,0,32,32,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(2,2,'Excellent',2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(3,2,'Good',2,1,0,0,8,8,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(4,2,'Medium',2,1,0,0,8,8,5,5,0,0,0,0,0,0,0,0,'divx5',NULL,1200,NULL,NULL,0,NULL),(5,3,'Good',2,1,0,0,0,0,0,0,0,0,2,0,80,80,8,8,'divx5',NULL,0,NULL,NULL,0,NULL),(6,4,'Excellent',2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(7,4,'Good',2,1,0,0,8,8,0,2,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(8,5,'Good',1,1,16,16,0,0,5,0,0,0,0,0,40,40,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(9,6,'Good',1,1,0,0,16,16,5,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(10,7,'Good',1,1,0,0,0,0,1,0,0,0,0,0,76,76,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(11,8,'Good',1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);
-/*!40000 ALTER TABLE `dvdtranscode` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `eit_cache`
---
-
-DROP TABLE IF EXISTS `eit_cache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `eit_cache` (
-  `chanid` int(10) NOT NULL,
-  `eventid` int(10) unsigned NOT NULL DEFAULT '0',
-  `tableid` tinyint(3) unsigned NOT NULL,
-  `version` tinyint(3) unsigned NOT NULL,
-  `endtime` int(10) unsigned NOT NULL,
-  `status` tinyint(4) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`chanid`,`eventid`,`status`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `eit_cache`
---
-
-LOCK TABLES `eit_cache` WRITE;
-/*!40000 ALTER TABLE `eit_cache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `eit_cache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `filemarkup`
---
-
-DROP TABLE IF EXISTS `filemarkup`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `filemarkup` (
-  `filename` text NOT NULL,
-  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `offset` bigint(20) unsigned DEFAULT NULL,
-  `type` tinyint(4) NOT NULL DEFAULT '0',
-  KEY `filename` (`filename`(255))
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `filemarkup`
---
-
-LOCK TABLES `filemarkup` WRITE;
-/*!40000 ALTER TABLE `filemarkup` DISABLE KEYS */;
-/*!40000 ALTER TABLE `filemarkup` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `gallerymetadata`
---
-
-DROP TABLE IF EXISTS `gallerymetadata`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `gallerymetadata` (
-  `image` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `angle` int(11) NOT NULL,
-  PRIMARY KEY (`image`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `gallerymetadata`
---
-
-LOCK TABLES `gallerymetadata` WRITE;
-/*!40000 ALTER TABLE `gallerymetadata` DISABLE KEYS */;
-/*!40000 ALTER TABLE `gallerymetadata` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `gamemetadata`
---
-
-DROP TABLE IF EXISTS `gamemetadata`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `gamemetadata` (
-  `system` varchar(128) NOT NULL DEFAULT '',
-  `romname` varchar(128) NOT NULL DEFAULT '',
-  `gamename` varchar(128) NOT NULL DEFAULT '',
-  `genre` varchar(128) NOT NULL DEFAULT '',
-  `year` varchar(10) NOT NULL DEFAULT '',
-  `publisher` varchar(128) NOT NULL DEFAULT '',
-  `favorite` tinyint(1) DEFAULT NULL,
-  `rompath` varchar(255) NOT NULL DEFAULT '',
-  `screenshot` varchar(255) NOT NULL,
-  `fanart` varchar(255) NOT NULL,
-  `plot` text NOT NULL,
-  `boxart` varchar(255) NOT NULL,
-  `gametype` varchar(64) NOT NULL DEFAULT '',
-  `diskcount` tinyint(1) NOT NULL DEFAULT '1',
-  `country` varchar(128) NOT NULL DEFAULT '',
-  `crc_value` varchar(64) NOT NULL DEFAULT '',
-  `inetref` text,
-  `display` tinyint(1) NOT NULL DEFAULT '1',
-  `version` varchar(64) NOT NULL DEFAULT '',
-  KEY `system` (`system`),
-  KEY `year` (`year`),
-  KEY `romname` (`romname`),
-  KEY `gamename` (`gamename`),
-  KEY `genre` (`genre`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `gamemetadata`
---
-
-LOCK TABLES `gamemetadata` WRITE;
-/*!40000 ALTER TABLE `gamemetadata` DISABLE KEYS */;
-/*!40000 ALTER TABLE `gamemetadata` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `gameplayers`
---
-
-DROP TABLE IF EXISTS `gameplayers`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `gameplayers` (
-  `gameplayerid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `playername` varchar(64) NOT NULL DEFAULT '',
-  `workingpath` varchar(255) NOT NULL DEFAULT '',
-  `rompath` varchar(255) NOT NULL DEFAULT '',
-  `screenshots` varchar(255) NOT NULL DEFAULT '',
-  `commandline` text NOT NULL,
-  `gametype` varchar(64) NOT NULL DEFAULT '',
-  `extensions` varchar(128) NOT NULL DEFAULT '',
-  `spandisks` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`gameplayerid`),
-  UNIQUE KEY `playername` (`playername`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `gameplayers`
---
-
-LOCK TABLES `gameplayers` WRITE;
-/*!40000 ALTER TABLE `gameplayers` DISABLE KEYS */;
-/*!40000 ALTER TABLE `gameplayers` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `housekeeping`
---
-
-DROP TABLE IF EXISTS `housekeeping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `housekeeping` (
-  `tag` varchar(64) NOT NULL DEFAULT '',
-  `lastrun` datetime DEFAULT NULL,
-  PRIMARY KEY (`tag`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `housekeeping`
---
-
-LOCK TABLES `housekeeping` WRITE;
-/*!40000 ALTER TABLE `housekeeping` DISABLE KEYS */;
-INSERT INTO `housekeeping` (`tag`, `lastrun`) VALUES ('BackupDB','2010-11-29 17:02:27'),('MythFillDB','2010-05-23 00:32:23'),('DailyCleanup','2010-05-23 00:32:23'),('JobQueueRecover-larch5','2010-05-23 00:32:23'),('DBCleanup','2010-05-23 00:32:23');
-/*!40000 ALTER TABLE `housekeeping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `inputgroup`
---
-
-DROP TABLE IF EXISTS `inputgroup`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `inputgroup` (
-  `cardinputid` int(10) unsigned NOT NULL,
-  `inputgroupid` int(10) unsigned NOT NULL,
-  `inputgroupname` varchar(32) NOT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `inputgroup`
---
-
-LOCK TABLES `inputgroup` WRITE;
-/*!40000 ALTER TABLE `inputgroup` DISABLE KEYS */;
-/*!40000 ALTER TABLE `inputgroup` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `internetcontent`
---
-
-DROP TABLE IF EXISTS `internetcontent`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `internetcontent` (
-  `name` varchar(255) NOT NULL,
-  `thumbnail` varchar(255) DEFAULT NULL,
-  `type` smallint(3) NOT NULL,
-  `author` varchar(128) NOT NULL,
-  `description` text NOT NULL,
-  `commandline` text NOT NULL,
-  `version` double NOT NULL,
-  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `search` tinyint(1) NOT NULL,
-  `tree` tinyint(1) NOT NULL,
-  `podcast` tinyint(1) NOT NULL,
-  `download` tinyint(1) NOT NULL,
-  `host` varchar(128) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `internetcontent`
---
-
-LOCK TABLES `internetcontent` WRITE;
-/*!40000 ALTER TABLE `internetcontent` DISABLE KEYS */;
-/*!40000 ALTER TABLE `internetcontent` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `internetcontentarticles`
---
-
-DROP TABLE IF EXISTS `internetcontentarticles`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `internetcontentarticles` (
-  `feedtitle` varchar(255) NOT NULL,
-  `path` text NOT NULL,
-  `paththumb` text NOT NULL,
-  `title` varchar(255) NOT NULL,
-  `subtitle` varchar(255) NOT NULL,
-  `season` smallint(5) NOT NULL DEFAULT '0',
-  `episode` smallint(5) NOT NULL DEFAULT '0',
-  `description` text NOT NULL,
-  `url` text NOT NULL,
-  `type` smallint(3) NOT NULL,
-  `thumbnail` text NOT NULL,
-  `mediaURL` text NOT NULL,
-  `author` varchar(255) NOT NULL,
-  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `time` int(11) NOT NULL,
-  `rating` varchar(255) NOT NULL,
-  `filesize` bigint(20) NOT NULL,
-  `player` varchar(255) NOT NULL,
-  `playerargs` text NOT NULL,
-  `download` varchar(255) NOT NULL,
-  `downloadargs` text NOT NULL,
-  `width` smallint(6) NOT NULL,
-  `height` smallint(6) NOT NULL,
-  `language` varchar(128) NOT NULL,
-  `podcast` tinyint(1) NOT NULL,
-  `downloadable` tinyint(1) NOT NULL,
-  `customhtml` tinyint(1) NOT NULL,
-  `countries` varchar(255) NOT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `internetcontentarticles`
---
-
-LOCK TABLES `internetcontentarticles` WRITE;
-/*!40000 ALTER TABLE `internetcontentarticles` DISABLE KEYS */;
-/*!40000 ALTER TABLE `internetcontentarticles` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `inuseprograms`
---
-
-DROP TABLE IF EXISTS `inuseprograms`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `inuseprograms` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `recusage` varchar(128) NOT NULL DEFAULT '',
-  `lastupdatetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  `rechost` varchar(64) NOT NULL,
-  `recdir` varchar(255) NOT NULL DEFAULT '',
-  KEY `chanid` (`chanid`,`starttime`),
-  KEY `recusage` (`recusage`,`lastupdatetime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `inuseprograms`
---
-
-LOCK TABLES `inuseprograms` WRITE;
-/*!40000 ALTER TABLE `inuseprograms` DISABLE KEYS */;
-/*!40000 ALTER TABLE `inuseprograms` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `jobqueue`
---
-
-DROP TABLE IF EXISTS `jobqueue`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `jobqueue` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `chanid` int(10) NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `inserttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `type` int(11) NOT NULL DEFAULT '0',
-  `cmds` int(11) NOT NULL DEFAULT '0',
-  `flags` int(11) NOT NULL DEFAULT '0',
-  `status` int(11) NOT NULL DEFAULT '0',
-  `statustime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  `args` blob NOT NULL,
-  `comment` varchar(128) NOT NULL DEFAULT '',
-  `schedruntime` datetime NOT NULL DEFAULT '2007-01-01 00:00:00',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `chanid` (`chanid`,`starttime`,`type`,`inserttime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `jobqueue`
---
-
-LOCK TABLES `jobqueue` WRITE;
-/*!40000 ALTER TABLE `jobqueue` DISABLE KEYS */;
-/*!40000 ALTER TABLE `jobqueue` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `jumppoints`
---
-
-DROP TABLE IF EXISTS `jumppoints`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `jumppoints` (
-  `destination` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(255) DEFAULT NULL,
-  `keylist` varchar(128) DEFAULT NULL,
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  PRIMARY KEY (`destination`,`hostname`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `jumppoints`
---
-
-LOCK TABLES `jumppoints` WRITE;
-/*!40000 ALTER TABLE `jumppoints` DISABLE KEYS */;
-INSERT INTO `jumppoints` (`destination`, `description`, `keylist`, `hostname`) VALUES ('Reload Theme','','','larch5'),('Main Menu','','','larch5'),('Program Guide','','','larch5'),('Program Finder','','','larch5'),('Manage Recordings / Fix Conflicts','','','larch5'),('Program Recording Priorities','','','larch5'),('Channel Recording Priorities','','','larch5'),('TV Recording Playback','','','larch5'),('TV Recording Deletion','','','larch5'),('Live TV','','','larch5'),('Live TV In Guide','','','larch5'),('Manual Record Scheduling','','','larch5'),('Status Screen','','','larch5'),('Previously Recorded','','','larch5'),('Netflix Browser','Browse Netflix titles','','larch5'),('Netflix Queue','Administer Netflix Queue','','larch5'),('Netflix History','View Netflix History','','larch5'),('MythGallery','Image viewer / slideshow','','larch5'),('MythGame','Game frontend','','larch5'),('Play music','','','larch5'),('Select music playlists','','','larch5'),('Rip CD','','','larch5'),('Scan music','','','larch5'),('Show Music Miniplayer','','','larch5'),('MythNews','RSS News feed reader','','larch5'),('MythVideo','The MythVideo default view','','larch5'),('Video Manager','The MythVideo video manager','','larch5'),('Video Browser','The MythVideo video browser','','larch5'),('Video Listings','The MythVideo video listings','','larch5'),('Video Gallery','The MythVideo video gallery','','larch5'),('Play DVD','Play a DVD','','larch5'),('Play VCD','Play a VCD','','larch5'),('Rip DVD','Import a DVD into your MythVideo database','','larch5'),('MythWeather','Weather forecasts','','larch5'),('Manage Recording Rules','','','larch5'),('ScreenShot','','','larch5'),('Create DVD','','','larch5'),('Create Archive','','','larch5'),('Import Archive','','','larch5'),('View Archive Log','','','larch5'),('Play Created DVD','','','larch5'),('Burn DVD','','','larch5'),('MythSmolt','Hardware profiler','Ctrl+Alt+p','larch5');
-/*!40000 ALTER TABLE `jumppoints` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `keybindings`
---
-
-DROP TABLE IF EXISTS `keybindings`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `keybindings` (
-  `context` varchar(32) NOT NULL DEFAULT '',
-  `action` varchar(32) NOT NULL DEFAULT '',
-  `description` varchar(255) DEFAULT NULL,
-  `keylist` varchar(128) DEFAULT NULL,
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  PRIMARY KEY (`context`,`action`,`hostname`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `keybindings`
---
-
-LOCK TABLES `keybindings` WRITE;
-/*!40000 ALTER TABLE `keybindings` DISABLE KEYS */;
-INSERT INTO `keybindings` (`context`, `action`, `description`, `keylist`, `hostname`) VALUES ('Global','UP','Up Arrow','Up','larch5'),('Global','DOWN','Down Arrow','Down','larch5'),('Global','LEFT','Left Arrow','Left','larch5'),('Global','RIGHT','Right Arrow','Right','larch5'),('Global','SELECT','Select','Return,Enter,Space','larch5'),('Global','ESCAPE','Escape','Esc','larch5'),('Global','MENU','Pop-up menu','M','larch5'),('Global','INFO','More information','I','larch5'),('Global','PAGEUP','Page Up','PgUp','larch5'),('Global','PAGEDOWN','Page Down','PgDown','larch5'),('Global','PREVVIEW','Previous View','Home','larch5'),('Global','NEXTVIEW','Next View','End','larch5'),('Global','HELP','Help','F1','larch5'),('Global','EJECT','Eject Removable Media','','larch5'),('Global','0','0','0','larch5'),('Global','1','1','1','larch5'),('Global','2','2','2','larch5'),('Global','3','3','3','larch5'),('Global','4','4','4','larch5'),('Global','5','5','5','larch5'),('Global','6','6','6','larch5'),('Global','7','7','7','larch5'),('Global','8','8','8','larch5'),('Global','9','9','9','larch5'),('TV Playback','CREATEPBPVIEW','Create Picture-by-Picture view','','larch5'),('TV Playback','CREATEPIPVIEW','Create Picture-in-Picture view','','larch5'),('TV Playback','NEXTPIPWINDOW','Toggle active PIP/PBP window','B','larch5'),('TV Frontend','PLAYBACK','Play Program','P','larch5'),('TV Frontend','TOGGLERECORD','Toggle recording status of current program','R','larch5'),('TV Frontend','DAYLEFT','Page the program guide back one day','Home,7','larch5'),('TV Frontend','DAYRIGHT','Page the program guide forward one day','End,1','larch5'),('TV Frontend','PAGELEFT','Page the program guide left',',,<','larch5'),('TV Frontend','PAGERIGHT','Page the program guide right','>,.','larch5'),('TV Frontend','TOGGLEFAV','Toggle the current channel as a favorite','?','larch5'),('TV Frontend','TOGGLEEPGORDER','Reverse the channel order in the program guide','0','larch5'),('TV Frontend','GUIDE','Show the Program Guide','S','larch5'),('TV Frontend','FINDER','Show the Program Finder','#','larch5'),('TV Frontend','NEXTFAV','Cycle through channel groups and all channels in the program guide.','/','larch5'),('TV Frontend','CHANUPDATE','Switch channels without exiting guide in Live TV mode.','X','larch5'),('TV Frontend','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','larch5'),('TV Frontend','VOLUMEUP','Volume up','],},F11,Volume Up','larch5'),('TV Frontend','MUTE','Mute','|,\\,F9,Volume Mute','larch5'),('TV Frontend','RANKINC','Increase program or channel rank','Right','larch5'),('TV Frontend','RANKDEC','Decrease program or channel rank','Left','larch5'),('TV Frontend','UPCOMING','List upcoming episodes','O','larch5'),('TV Frontend','DETAILS','Show program details','U','larch5'),('TV Frontend','VIEWCARD','Switch Capture Card view','Y','larch5'),('TV Frontend','VIEWINPUT','Switch Capture Card view','C','larch5'),('TV Frontend','CHANGERECGROUP','Change Recording Group','','larch5'),('TV Frontend','CHANGEGROUPVIEW','Change Group View','','larch5'),('TV Playback','CLEAROSD','Clear OSD','Backspace','larch5'),('TV Playback','PAUSE','Pause','P','larch5'),('TV Playback','SEEKFFWD','Fast Forward','Right','larch5'),('TV Playback','SEEKRWND','Rewind','Left','larch5'),('TV Playback','ARBSEEK','Arbitrary Seek','*','larch5'),('TV Playback','CHANNELUP','Channel up','Up','larch5'),('TV Playback','CHANNELDOWN','Channel down','Down','larch5'),('TV Playback','NEXTFAV','Switch to the next favorite channel','/','larch5'),('TV Playback','PREVCHAN','Switch to the previous channel','H','larch5'),('TV Playback','JUMPFFWD','Jump ahead','PgDown','larch5'),('TV Playback','JUMPRWND','Jump back','PgUp','larch5'),('TV Playback','JUMPBKMRK','Jump to bookmark','K','larch5'),('TV Playback','FFWDSTICKY','Fast Forward (Sticky) or Forward one frame while paused','>,.','larch5'),('TV Playback','RWNDSTICKY','Rewind (Sticky) or Rewind one frame while paused',',,<','larch5'),('TV Playback','NEXTSOURCE','Next Video Source','Y','larch5'),('TV Playback','PREVSOURCE','Previous Video Source','Ctrl+Y','larch5'),('TV Playback','NEXTINPUT','Next Input','C','larch5'),('TV Playback','NEXTCARD','Next Card','','larch5'),('TV Playback','SKIPCOMMERCIAL','Skip Commercial','Z,End','larch5'),('TV Playback','SKIPCOMMBACK','Skip Commercial (Reverse)','Q,Home','larch5'),('TV Playback','JUMPSTART','Jump to the start of the recording.','Ctrl+B','larch5'),('TV Playback','TOGGLEBROWSE','Toggle channel browse mode','O','larch5'),('TV Playback','TOGGLERECORD','Toggle recording status of current program','R','larch5'),('TV Playback','TOGGLEFAV','Toggle the current channel as a favorite','?','larch5'),('TV Playback','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','larch5'),('TV Playback','VOLUMEUP','Volume up','],},F11,Volume Up','larch5'),('TV Playback','MUTE','Mute','|,\\,F9,Volume Mute','larch5'),('TV Playback','TOGGLEPIPMODE','Toggle Picture-in-Picture view','V','larch5'),('TV Playback','TOGGLEPIPWINDOW','Toggle active PiP window','B','larch5'),('TV Playback','SWAPPIP','Swap PBP/PIP Windows','N','larch5'),('TV Playback','TOGGLEASPECT','Toggle the video aspect ratio','Ctrl+W','larch5'),('TV Playback','TOGGLEFILL','Next Preconfigured Zoom mode','W','larch5'),('TV Playback','TOGGLECC','Toggle any captions','T','larch5'),('TV Playback','TOGGLETTC','Toggle Teletext Captions','','larch5'),('TV Playback','TOGGLESUBTITLE','Toggle Subtitles','','larch5'),('TV Playback','TOGGLECC608','Toggle VBI CC','','larch5'),('TV Playback','TOGGLECC708','Toggle ATSC CC','','larch5'),('TV Playback','TOGGLETTM','Toggle Teletext Menu','','larch5'),('TV Playback','SELECTAUDIO_0','Play audio track 1','','larch5'),('TV Playback','SELECTAUDIO_1','Play audio track 2','','larch5'),('TV Playback','SELECTSUBTITLE_0','Display subtitle 1','','larch5'),('TV Playback','SELECTSUBTITLE_1','Display subtitle 2','','larch5'),('TV Playback','SELECTCC608_0','Display VBI CC1','','larch5'),('TV Playback','SELECTCC608_1','Display VBI CC2','','larch5'),('TV Playback','SELECTCC608_2','Display VBI CC3','','larch5'),('TV Playback','SELECTCC608_3','Display VBI CC4','','larch5'),('TV Playback','SELECTCC708_0','Display ATSC CC1','','larch5'),('TV Playback','SELECTCC708_1','Display ATSC CC2','','larch5'),('TV Playback','SELECTCC708_2','Display ATSC CC3','','larch5'),('TV Playback','SELECTCC708_3','Display ATSC CC4','','larch5'),('TV Playback','NEXTAUDIO','Next audio track','+','larch5'),('TV Playback','PREVAUDIO','Previous audio track','-','larch5'),('TV Playback','NEXTSUBTITLE','Next subtitle track','','larch5'),('TV Playback','PREVSUBTITLE','Previous subtitle track','','larch5'),('TV Playback','NEXTCC608','Next VBI CC track','','larch5'),('TV Playback','PREVCC608','Previous VBI CC track','','larch5'),('TV Playback','NEXTCC708','Next ATSC CC track','','larch5'),('TV Playback','PREVCC708','Previous ATSC CC track','','larch5'),('TV Playback','NEXTCC','Next of any captions','','larch5'),('TV Playback','NEXTSCAN','Next video scan overidemode','','larch5'),('TV Playback','QUEUETRANSCODE','Queue the current recording for transcoding','X','larch5'),('TV Playback','SPEEDINC','Increase the playback speed','U','larch5'),('TV Playback','SPEEDDEC','Decrease the playback speed','J','larch5'),('TV Playback','ADJUSTSTRETCH','Turn on time stretch control','A','larch5'),('TV Playback','STRETCHINC','Increase time stretch speed','','larch5'),('TV Playback','STRETCHDEC','Decrease time stretch speed','','larch5'),('TV Playback','TOGGLESTRETCH','Toggle time stretch speed','','larch5'),('TV Playback','TOGGLEAUDIOSYNC','Turn on audio sync adjustment controls','','larch5'),('TV Playback','TOGGLEPICCONTROLS','Playback picture adjustments','F','larch5'),('TV Playback','TOGGLECHANCONTROLS','Recording picture adjustments for this channel','Ctrl+G','larch5'),('TV Playback','TOGGLERECCONTROLS','Recording picture adjustments for this recorder','G','larch5'),('TV Playback','TOGGLEPBPMODE','Toggle Picture-by-Picture view','Ctrl+V','larch5'),('TV Playback','CYCLECOMMSKIPMODE','Cycle Commercial Skip mode','','larch5'),('TV Playback','GUIDE','Show the Program Guide','S','larch5'),('TV Playback','FINDER','Show the Program Finder','#','larch5'),('TV Playback','TOGGLESLEEP','Toggle the Sleep Timer','F8','larch5'),('TV Playback','PLAY','Play','Ctrl+P','larch5'),('TV Playback','JUMPPREV','Jump to previously played recording','','larch5'),('TV Playback','JUMPREC','Display menu of recorded programs to jump to','','larch5'),('TV Playback','VIEWSCHEDULED','Display scheduled recording list','','larch5'),('TV Playback','SIGNALMON','Monitor Signal Quality','Alt+F7','larch5'),('TV Playback','JUMPTODVDROOTMENU','Jump to the DVD Root Menu','','larch5'),('TV Playback','EXITSHOWNOPROMPTS','Exit Show without any prompts','','larch5'),('TV Playback','SCREENSHOT','Save screenshot of current video frame','','larch5'),('TV Playback','MENURED','Menu Red','F2','larch5'),('TV Playback','MENUGREEN','Menu Green','F3','larch5'),('TV Playback','MENUYELLOW','Menu Yellow','F4','larch5'),('TV Playback','MENUBLUE','Menu Blue','F5','larch5'),('TV Playback','TEXTEXIT','Menu Exit','F6','larch5'),('TV Playback','MENUTEXT','Menu Text','F7','larch5'),('TV Playback','MENUEPG','Menu EPG','F12','larch5'),('TV Editing','CLEARMAP','Clear editing cut points','C,Q,Home','larch5'),('TV Editing','INVERTMAP','Invert Begin/End cut points','I','larch5'),('TV Editing','LOADCOMMSKIP','Load cut list from commercial skips','Z,End','larch5'),('TV Editing','NEXTCUT','Jump to the next cut point','PgDown','larch5'),('TV Editing','PREVCUT','Jump to the previous cut point','PgUp','larch5'),('TV Editing','BIGJUMPREW','Jump back 10x the normal amount',',,<','larch5'),('TV Editing','BIGJUMPFWD','Jump forward 10x the normal amount','>,.','larch5'),('Teletext Menu','NEXTPAGE','Next Page','Down','larch5'),('Teletext Menu','PREVPAGE','Previous Page','Up','larch5'),('Teletext Menu','NEXTSUBPAGE','Next Subpage','Right','larch5'),('Teletext Menu','PREVSUBPAGE','Previous Subpage','Left','larch5'),('Teletext Menu','TOGGLETT','Toggle Teletext','T','larch5'),('Teletext Menu','MENURED','Menu Red','F2','larch5'),('Teletext Menu','MENUGREEN','Menu Green','F3','larch5'),('Teletext Menu','MENUYELLOW','Menu Yellow','F4','larch5'),('Teletext Menu','MENUBLUE','Menu Blue','F5','larch5'),('Teletext Menu','MENUWHITE','Menu White','F6','larch5'),('Teletext Menu','TOGGLEBACKGROUND','Toggle Background','F7','larch5'),('Teletext Menu','REVEAL','Reveal hidden Text','F8','larch5'),('Archive','TOGGLECUT','Toggle use cut list state for selected program','C','larch5'),('NetFlix','MOVETOTOP','Moves movie to top of queue','1','larch5'),('Video','DOWNLOADDATA','Download metadata for current item','W','larch5'),('Gallery','PLAY','Start/Stop Slideshow','P','larch5'),('Gallery','HOME','Go to the first image in thumbnail view','Home','larch5'),('Gallery','END','Go to the last image in thumbnail view','End','larch5'),('Gallery','MENU','Toggle activating menu in thumbnail view','M','larch5'),('Gallery','SLIDESHOW','Start Slideshow in thumbnail view','S','larch5'),('Gallery','RANDOMSHOW','Start Random Slideshow in thumbnail view','R','larch5'),('Gallery','ROTRIGHT','Rotate image right 90 degrees','],3','larch5'),('Gallery','ROTLEFT','Rotate image left 90 degrees','[,1','larch5'),('Gallery','ZOOMOUT','Zoom image out','7','larch5'),('Gallery','ZOOMIN','Zoom image in','9','larch5'),('Gallery','SCROLLUP','Scroll image up','2','larch5'),('Gallery','SCROLLLEFT','Scroll image left','4','larch5'),('Gallery','SCROLLRIGHT','Scroll image right','6','larch5'),('Gallery','SCROLLDOWN','Scroll image down','8','larch5'),('Gallery','RECENTER','Recenter image','5','larch5'),('Gallery','FULLSIZE','Full-size (un-zoom) image','0','larch5'),('Gallery','UPLEFT','Go to the upper-left corner of the image','PgUp','larch5'),('Gallery','LOWRIGHT','Go to the lower-right corner of the image','PgDown','larch5'),('Gallery','INFO','Toggle Showing Information about Image','I','larch5'),('Video','INCSEARCH','Show Incremental Search Dialog','Ctrl+S','larch5'),('Gallery','MARK','Mark image','T','larch5'),('Gallery','FULLSCREEN','Toggle scale to fullscreen/scale to fit','W','larch5'),('Game','TOGGLEFAV','Toggle the current game as a favorite','?,/','larch5'),('Game','INCSEARCH','Show incremental search dialog','Ctrl+S','larch5'),('Game','INCSEARCHNEXT','Incremental search find next match','Ctrl+N','larch5'),('Music','NEXTTRACK','Move to the next track','>,.,Z,End','larch5'),('Music','PREVTRACK','Move to the previous track',',,<,Q,Home','larch5'),('Music','FFWD','Fast forward','PgDown','larch5'),('Music','RWND','Rewind','PgUp','larch5'),('Music','PAUSE','Pause/Start playback','P','larch5'),('Music','PLAY','Start playback','','larch5'),('Music','STOP','Stop playback','O','larch5'),('Music','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','larch5'),('Music','VOLUMEUP','Volume up','],},F11,Volume Up','larch5'),('Music','MUTE','Mute','|,\\,F9,Volume Mute','larch5'),('Music','CYCLEVIS','Cycle visualizer mode','6','larch5'),('Music','BLANKSCR','Blank screen','5','larch5'),('Music','THMBUP','Increase rating','9','larch5'),('Music','THMBDOWN','Decrease rating','7','larch5'),('Music','REFRESH','Refresh music tree','8','larch5'),('Music','FILTER','Filter All My Music','F','larch5'),('Music','INCSEARCH','Show incremental search dialog','Ctrl+S','larch5'),('Music','INCSEARCHNEXT','Incremental search find next match','Ctrl+N','larch5'),('Music','SPEEDUP','Increase Play Speed','W','larch5'),('Music','SPEEDDOWN','Decrease Play Speed','X','larch5'),('News','RETRIEVENEWS','Update news items','I','larch5'),('News','FORCERETRIEVE','Force update news items','M','larch5'),('News','CANCEL','Cancel news item updating','C','larch5'),('Phone','0','0','0','larch5'),('Phone','1','1','1','larch5'),('Phone','2','2','2','larch5'),('Phone','3','3','3','larch5'),('Phone','4','4','4','larch5'),('Phone','5','5','5','larch5'),('Phone','6','6','6','larch5'),('Phone','7','7','7','larch5'),('Phone','8','8','8','larch5'),('Phone','9','9','9','larch5'),('Phone','HASH','HASH','#','larch5'),('Phone','STAR','STAR','*','larch5'),('Phone','Up','Up','Up','larch5'),('Phone','Down','Down','Down','larch5'),('Phone','Left','Left','Left','larch5'),('Phone','Right','Right','Right','larch5'),('Phone','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','larch5'),('Phone','VOLUMEUP','Volume up','],},F11,Volume Up','larch5'),('Phone','MUTE','Mute','|,\\,F9,Volume Mute','larch5'),('Phone','ZOOMIN','Zoom the video window in','>,.,Z,End','larch5'),('Phone','ZOOMOUT','Zoom the video window out',',,<,Q,Home','larch5'),('Phone','FULLSCRN','Show received video full-screen','P','larch5'),('Phone','HANGUP','Hangup an active call','O','larch5'),('Phone','LOOPBACK','Loopback Video','L','larch5'),('Video','FILTER','Open video filter dialog','F','larch5'),('Video','PLAYALT','Play selected item in alternate player','ALT+P','larch5'),('Video','BROWSE','Change browsable in video manager','B','larch5'),('Video','INCPARENT','Increase Parental Level','],},F11','larch5'),('Video','DECPARENT','Decrease Parental Level','[,{,F10','larch5'),('Video','HOME','Go to the first video','Home','larch5'),('Video','END','Go to the last video','End','larch5'),('Weather','PAUSE','Pause current page','P','larch5'),('Weather','SEARCH','Search List','/','larch5'),('Weather','NEXTSEARCH','Search List','n','larch5'),('Weather','UPDATE','Search List','u','larch5'),('Global','NEXT','Move to next widget','Tab','larch5'),('Global','PREVIOUS','Move to preview widget','Backtab','larch5'),('Global','BACKSPACE','Backspace','Backspace','larch5'),('Global','DELETE','Delete','D','larch5'),('Global','EDIT','Edit','E','larch5'),('Global','PAGETOP','Page to top of list','','larch5'),('Global','PAGEMIDDLE','Page to middle of list','','larch5'),('Global','PAGEBOTTOM','Page to bottom of list','','larch5'),('Browser','ZOOMIN','Zoom in on browser window','.,>','larch5'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','larch5'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','larch5'),('Browser','MOUSEUP','Move mouse pointer up','2','larch5'),('Browser','MOUSEDOWN','Move mouse pointer down','8','larch5'),('Browser','MOUSELEFT','Move mouse pointer left','4','larch5'),('Browser','MOUSERIGHT','Move mouse pointer right','6','larch5'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','larch5'),('Browser','PAGEDOWN','Scroll down half a page','9','larch5'),('Browser','PAGEUP','Scroll up half a page','3','larch5'),('Browser','PAGELEFT','Scroll left half a page','7','larch5'),('Browser','PAGERIGHT','Scroll right half a page','1','larch5'),('Browser','NEXTLINK','Move selection to next link','Z','larch5'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','larch5'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','larch5'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','larch5'),('Browser','HISTORYFORWARD','Go forward to previous page','F','larch5'),('Welcome','STARTXTERM','Open an Xterm window','F12','larch5'),('Welcome','SHOWSETTINGS','Show Mythshutdown settings','F11','larch5'),('TV Playback','TOGGLEPIPSTATE','Change PxP view','','larch5'),('Browser','NEXTTAB','Move to next browser tab','P','larch5'),('Browser','PREVTAB','Move to previous browser tab','','larch5'),('Video','ITEMDETAIL','Display Item Detail Popup','','larch5'),('Global','CUT','Cut text from textedit','Ctrl+X','larch5'),('Global','COPY','Copy text from textedit','Ctrl+C','larch5'),('Global','PASTE','Paste text into textedit','Ctrl+V','larch5'),('Global','SYSEVENT01','Trigger System Key Event #1','','larch5'),('Global','SYSEVENT02','Trigger System Key Event #2','','larch5'),('Global','SYSEVENT03','Trigger System Key Event #3','','larch5'),('Global','SYSEVENT04','Trigger System Key Event #4','','larch5'),('Global','SYSEVENT05','Trigger System Key Event #5','','larch5'),('Global','SYSEVENT06','Trigger System Key Event #6','','larch5'),('Global','SYSEVENT07','Trigger System Key Event #7','','larch5'),('Global','SYSEVENT08','Trigger System Key Event #8','','larch5'),('Global','SYSEVENT09','Trigger System Key Event #9','','larch5'),('Global','SYSEVENT10','Trigger System Key Event #10','','larch5'),('TV Frontend','CUSTOMEDIT','Edit Custom Record Rule','','larch5'),('TV Playback','TOGGLEUPMIX','Toggle audio upmixer','Ctrl+U','larch5'),('Music','TOGGLEUPMIX','Toggle audio upmixer','Ctrl+U','larch5'),('Main Menu','EXIT','System Exit','Esc','larch5'),('TV Frontend','CYCLEAUDIOCHAN','Cycle audio channels','','larch5'),('TV Playback','BACK','Exit or return to DVD menu','','larch5'),('TV Playback','CYCLEAUDIOCHAN','Cycle audio channels','','larch5'),('TV Playback','TOGGLETEXT','Toggle External Subtitles','','larch5'),('TV Playback','TOGGLERAWTEXT','Toggle Text Subtitles','','larch5'),('TV Playback','SELECTRAWTEXT_0','Display Text Subtitle 1','','larch5'),('TV Playback','NEXTRAWTEXT','Next Text track','','larch5'),('TV Playback','PREVRAWTEXT','Previous Text track','','larch5'),('TV Editing','SAVEMAP','Save cut list','','larch5'),('Game','DOWNLOADDATA','Download metadata for current item','W','larch5');
-/*!40000 ALTER TABLE `keybindings` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `keyword`
---
-
-DROP TABLE IF EXISTS `keyword`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `keyword` (
-  `phrase` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
-  `searchtype` int(10) unsigned NOT NULL DEFAULT '3',
-  UNIQUE KEY `phrase` (`phrase`,`searchtype`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `keyword`
---
-
-LOCK TABLES `keyword` WRITE;
-/*!40000 ALTER TABLE `keyword` DISABLE KEYS */;
-/*!40000 ALTER TABLE `keyword` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_albumart`
---
-
-DROP TABLE IF EXISTS `music_albumart`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_albumart` (
-  `albumart_id` int(20) NOT NULL AUTO_INCREMENT,
-  `filename` varchar(255) NOT NULL DEFAULT '',
-  `directory_id` int(20) NOT NULL DEFAULT '0',
-  `imagetype` tinyint(3) NOT NULL DEFAULT '0',
-  `song_id` int(11) NOT NULL DEFAULT '0',
-  `embedded` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`albumart_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_albumart`
---
-
-LOCK TABLES `music_albumart` WRITE;
-/*!40000 ALTER TABLE `music_albumart` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_albumart` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_albums`
---
-
-DROP TABLE IF EXISTS `music_albums`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_albums` (
-  `album_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `artist_id` int(11) unsigned NOT NULL DEFAULT '0',
-  `album_name` varchar(255) NOT NULL DEFAULT '',
-  `year` smallint(6) NOT NULL DEFAULT '0',
-  `compilation` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`album_id`),
-  KEY `idx_album_name` (`album_name`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_albums`
---
-
-LOCK TABLES `music_albums` WRITE;
-/*!40000 ALTER TABLE `music_albums` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_albums` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_artists`
---
-
-DROP TABLE IF EXISTS `music_artists`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_artists` (
-  `artist_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `artist_name` varchar(255) NOT NULL DEFAULT '',
-  PRIMARY KEY (`artist_id`),
-  KEY `idx_artist_name` (`artist_name`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_artists`
---
-
-LOCK TABLES `music_artists` WRITE;
-/*!40000 ALTER TABLE `music_artists` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_artists` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_directories`
---
-
-DROP TABLE IF EXISTS `music_directories`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_directories` (
-  `directory_id` int(20) NOT NULL AUTO_INCREMENT,
-  `path` text NOT NULL,
-  `parent_id` int(20) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`directory_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_directories`
---
-
-LOCK TABLES `music_directories` WRITE;
-/*!40000 ALTER TABLE `music_directories` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_directories` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_genres`
---
-
-DROP TABLE IF EXISTS `music_genres`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_genres` (
-  `genre_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `genre` varchar(255) NOT NULL DEFAULT '',
-  PRIMARY KEY (`genre_id`),
-  KEY `idx_genre` (`genre`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_genres`
---
-
-LOCK TABLES `music_genres` WRITE;
-/*!40000 ALTER TABLE `music_genres` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_genres` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_playlists`
---
-
-DROP TABLE IF EXISTS `music_playlists`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_playlists` (
-  `playlist_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `playlist_name` varchar(255) NOT NULL DEFAULT '',
-  `playlist_songs` text NOT NULL,
-  `last_accessed` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `length` int(11) unsigned NOT NULL DEFAULT '0',
-  `songcount` smallint(8) unsigned NOT NULL DEFAULT '0',
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  PRIMARY KEY (`playlist_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_playlists`
---
-
-LOCK TABLES `music_playlists` WRITE;
-/*!40000 ALTER TABLE `music_playlists` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_playlists` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_smartplaylist_categories`
---
-
-DROP TABLE IF EXISTS `music_smartplaylist_categories`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_smartplaylist_categories` (
-  `categoryid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(128) NOT NULL,
-  PRIMARY KEY (`categoryid`),
-  KEY `name` (`name`)
-) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_smartplaylist_categories`
---
-
-LOCK TABLES `music_smartplaylist_categories` WRITE;
-/*!40000 ALTER TABLE `music_smartplaylist_categories` DISABLE KEYS */;
-INSERT INTO `music_smartplaylist_categories` (`categoryid`, `name`) VALUES (1,'Decades'),(2,'Favourite Tracks'),(3,'New Tracks');
-/*!40000 ALTER TABLE `music_smartplaylist_categories` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_smartplaylist_items`
---
-
-DROP TABLE IF EXISTS `music_smartplaylist_items`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_smartplaylist_items` (
-  `smartplaylistitemid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `smartplaylistid` int(10) unsigned NOT NULL,
-  `field` varchar(50) NOT NULL,
-  `operator` varchar(20) NOT NULL,
-  `value1` varchar(255) NOT NULL,
-  `value2` varchar(255) NOT NULL,
-  PRIMARY KEY (`smartplaylistitemid`),
-  KEY `smartplaylistid` (`smartplaylistid`)
-) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_smartplaylist_items`
---
-
-LOCK TABLES `music_smartplaylist_items` WRITE;
-/*!40000 ALTER TABLE `music_smartplaylist_items` DISABLE KEYS */;
-INSERT INTO `music_smartplaylist_items` (`smartplaylistitemid`, `smartplaylistid`, `field`, `operator`, `value1`, `value2`) VALUES (1,1,'Year','is between','1960','1969'),(2,2,'Year','is between','1970','1979'),(3,3,'Year','is between','1980','1989'),(4,4,'Year','is between','1990','1999'),(5,5,'Year','is between','2000','2009'),(6,6,'Rating','is greater than','7','0'),(7,7,'Play Count','is greater than','0','0'),(8,8,'Play Count','is equal to','0','0');
-/*!40000 ALTER TABLE `music_smartplaylist_items` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_smartplaylists`
---
-
-DROP TABLE IF EXISTS `music_smartplaylists`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_smartplaylists` (
-  `smartplaylistid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(128) NOT NULL,
-  `categoryid` int(10) unsigned NOT NULL,
-  `matchtype` set('All','Any') CHARACTER SET latin1 NOT NULL DEFAULT 'All',
-  `orderby` varchar(128) NOT NULL DEFAULT '',
-  `limitto` int(10) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`smartplaylistid`),
-  KEY `name` (`name`),
-  KEY `categoryid` (`categoryid`)
-) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_smartplaylists`
---
-
-LOCK TABLES `music_smartplaylists` WRITE;
-/*!40000 ALTER TABLE `music_smartplaylists` DISABLE KEYS */;
-INSERT INTO `music_smartplaylists` (`smartplaylistid`, `name`, `categoryid`, `matchtype`, `orderby`, `limitto`) VALUES (1,'1960\'s',1,'All','Artist (A)',0),(2,'1970\'s',1,'All','Artist (A)',0),(3,'1980\'s',1,'All','Artist (A)',0),(4,'1990\'s',1,'All','Artist (A)',0),(5,'2000\'s',1,'All','Artist (A)',0),(6,'Favorite Tracks',2,'All','Artist (A), Album (A)',0),(7,'100 Most Played Tracks',2,'All','Play Count (D)',100),(8,'Never Played Tracks',3,'All','Artist (A), Album (A)',0);
-/*!40000 ALTER TABLE `music_smartplaylists` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_songs`
---
-
-DROP TABLE IF EXISTS `music_songs`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_songs` (
-  `song_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `filename` text NOT NULL,
-  `name` varchar(255) NOT NULL DEFAULT '',
-  `track` smallint(6) unsigned NOT NULL DEFAULT '0',
-  `artist_id` int(11) unsigned NOT NULL DEFAULT '0',
-  `album_id` int(11) unsigned NOT NULL DEFAULT '0',
-  `genre_id` int(11) unsigned NOT NULL DEFAULT '0',
-  `year` smallint(6) NOT NULL DEFAULT '0',
-  `length` int(11) unsigned NOT NULL DEFAULT '0',
-  `numplays` int(11) unsigned NOT NULL DEFAULT '0',
-  `rating` tinyint(4) unsigned NOT NULL DEFAULT '0',
-  `lastplay` datetime DEFAULT NULL,
-  `date_entered` datetime DEFAULT NULL,
-  `date_modified` datetime DEFAULT NULL,
-  `format` varchar(4) NOT NULL DEFAULT '0',
-  `mythdigest` varchar(255) DEFAULT NULL,
-  `size` bigint(20) unsigned DEFAULT NULL,
-  `description` varchar(255) DEFAULT NULL,
-  `comment` varchar(255) DEFAULT NULL,
-  `disc_count` smallint(5) unsigned DEFAULT '0',
-  `disc_number` smallint(5) unsigned DEFAULT '0',
-  `track_count` smallint(5) unsigned DEFAULT '0',
-  `start_time` int(10) unsigned DEFAULT '0',
-  `stop_time` int(10) unsigned DEFAULT NULL,
-  `eq_preset` varchar(255) DEFAULT NULL,
-  `relative_volume` tinyint(4) DEFAULT '0',
-  `sample_rate` int(10) unsigned DEFAULT '0',
-  `bitrate` int(10) unsigned DEFAULT '0',
-  `bpm` smallint(5) unsigned DEFAULT NULL,
-  `directory_id` int(20) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`song_id`),
-  KEY `idx_name` (`name`),
-  KEY `idx_mythdigest` (`mythdigest`),
-  KEY `directory_id` (`directory_id`),
-  KEY `album_id` (`album_id`),
-  KEY `genre_id` (`genre_id`),
-  KEY `artist_id` (`artist_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_songs`
---
-
-LOCK TABLES `music_songs` WRITE;
-/*!40000 ALTER TABLE `music_songs` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_songs` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `music_stats`
---
-
-DROP TABLE IF EXISTS `music_stats`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `music_stats` (
-  `num_artists` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `num_albums` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `num_songs` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `num_genres` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `total_time` varchar(12) NOT NULL DEFAULT '0',
-  `total_size` varchar(10) NOT NULL DEFAULT '0'
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `music_stats`
---
-
-LOCK TABLES `music_stats` WRITE;
-/*!40000 ALTER TABLE `music_stats` DISABLE KEYS */;
-/*!40000 ALTER TABLE `music_stats` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mythlog`
---
-
-DROP TABLE IF EXISTS `mythlog`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mythlog` (
-  `logid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `module` varchar(32) NOT NULL DEFAULT '',
-  `priority` int(11) NOT NULL DEFAULT '0',
-  `acknowledged` tinyint(1) DEFAULT '0',
-  `logdate` datetime DEFAULT NULL,
-  `host` varchar(128) DEFAULT NULL,
-  `message` varchar(255) NOT NULL DEFAULT '',
-  `details` varchar(16000) NOT NULL DEFAULT '',
-  PRIMARY KEY (`logid`),
-  KEY `module` (`module`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mythlog`
---
-
-LOCK TABLES `mythlog` WRITE;
-/*!40000 ALTER TABLE `mythlog` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mythlog` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `netflix`
---
-
-DROP TABLE IF EXISTS `netflix`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `netflix` (
-  `name` varchar(100) NOT NULL,
-  `category` varchar(255) NOT NULL,
-  `url` varchar(255) NOT NULL,
-  `ico` varchar(255) DEFAULT NULL,
-  `updated` int(10) unsigned DEFAULT NULL,
-  `is_queue` int(10) unsigned DEFAULT NULL,
-  `queue` varchar(32) NOT NULL DEFAULT '',
-  PRIMARY KEY (`name`,`queue`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `netflix`
---
-
-LOCK TABLES `netflix` WRITE;
-/*!40000 ALTER TABLE `netflix` DISABLE KEYS */;
-/*!40000 ALTER TABLE `netflix` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `networkiconmap`
---
-
-DROP TABLE IF EXISTS `networkiconmap`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `networkiconmap` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `network` varchar(20) NOT NULL DEFAULT '',
-  `url` varchar(255) NOT NULL DEFAULT '',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `network` (`network`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `networkiconmap`
---
-
-LOCK TABLES `networkiconmap` WRITE;
-/*!40000 ALTER TABLE `networkiconmap` DISABLE KEYS */;
-/*!40000 ALTER TABLE `networkiconmap` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `oldfind`
---
-
-DROP TABLE IF EXISTS `oldfind`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `oldfind` (
-  `recordid` int(11) NOT NULL DEFAULT '0',
-  `findid` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`recordid`,`findid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `oldfind`
---
-
-LOCK TABLES `oldfind` WRITE;
-/*!40000 ALTER TABLE `oldfind` DISABLE KEYS */;
-/*!40000 ALTER TABLE `oldfind` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `oldprogram`
---
-
-DROP TABLE IF EXISTS `oldprogram`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `oldprogram` (
-  `oldtitle` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
-  `airdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  PRIMARY KEY (`oldtitle`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `oldprogram`
---
-
-LOCK TABLES `oldprogram` WRITE;
-/*!40000 ALTER TABLE `oldprogram` DISABLE KEYS */;
-/*!40000 ALTER TABLE `oldprogram` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `oldrecorded`
---
-
-DROP TABLE IF EXISTS `oldrecorded`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `oldrecorded` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `title` varchar(128) NOT NULL DEFAULT '',
-  `subtitle` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(16000) NOT NULL DEFAULT '',
-  `category` varchar(64) NOT NULL DEFAULT '',
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
-  `findid` int(11) NOT NULL DEFAULT '0',
-  `recordid` int(11) NOT NULL DEFAULT '0',
-  `station` varchar(20) NOT NULL DEFAULT '',
-  `rectype` int(10) unsigned NOT NULL DEFAULT '0',
-  `duplicate` tinyint(1) NOT NULL DEFAULT '0',
-  `recstatus` int(11) NOT NULL DEFAULT '0',
-  `reactivate` smallint(6) NOT NULL DEFAULT '0',
-  `generic` tinyint(1) DEFAULT '0',
-  PRIMARY KEY (`station`,`starttime`,`title`),
-  KEY `endtime` (`endtime`),
-  KEY `title` (`title`),
-  KEY `seriesid` (`seriesid`),
-  KEY `programid` (`programid`),
-  KEY `recordid` (`recordid`),
-  KEY `recstatus` (`recstatus`,`programid`,`seriesid`),
-  KEY `recstatus_2` (`recstatus`,`title`,`subtitle`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `oldrecorded`
---
-
-LOCK TABLES `oldrecorded` WRITE;
-/*!40000 ALTER TABLE `oldrecorded` DISABLE KEYS */;
-/*!40000 ALTER TABLE `oldrecorded` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `people`
---
-
-DROP TABLE IF EXISTS `people`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `people` (
-  `person` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
-  PRIMARY KEY (`person`),
-  UNIQUE KEY `name` (`name`(41))
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `people`
---
-
-LOCK TABLES `people` WRITE;
-/*!40000 ALTER TABLE `people` DISABLE KEYS */;
-/*!40000 ALTER TABLE `people` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `phonecallhistory`
---
-
-DROP TABLE IF EXISTS `phonecallhistory`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `phonecallhistory` (
-  `recid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `displayname` text NOT NULL,
-  `url` text NOT NULL,
-  `timestamp` text NOT NULL,
-  `duration` int(10) unsigned NOT NULL,
-  `directionin` int(10) unsigned NOT NULL,
-  `directoryref` int(10) unsigned DEFAULT NULL,
-  PRIMARY KEY (`recid`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `phonecallhistory`
---
-
-LOCK TABLES `phonecallhistory` WRITE;
-/*!40000 ALTER TABLE `phonecallhistory` DISABLE KEYS */;
-/*!40000 ALTER TABLE `phonecallhistory` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `phonedirectory`
---
-
-DROP TABLE IF EXISTS `phonedirectory`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `phonedirectory` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `nickname` text NOT NULL,
-  `firstname` text,
-  `surname` text,
-  `url` text NOT NULL,
-  `directory` text NOT NULL,
-  `photofile` text,
-  `speeddial` int(10) unsigned NOT NULL,
-  `onhomelan` int(10) unsigned DEFAULT '0',
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `phonedirectory`
---
-
-LOCK TABLES `phonedirectory` WRITE;
-/*!40000 ALTER TABLE `phonedirectory` DISABLE KEYS */;
-INSERT INTO `phonedirectory` (`intid`, `nickname`, `firstname`, `surname`, `url`, `directory`, `photofile`, `speeddial`, `onhomelan`) VALUES (1,'Me(larch5)','Local Myth Host','larch5','','My MythTVs','',1,1);
-/*!40000 ALTER TABLE `phonedirectory` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `pidcache`
---
-
-DROP TABLE IF EXISTS `pidcache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `pidcache` (
-  `chanid` smallint(6) NOT NULL DEFAULT '0',
-  `pid` int(11) NOT NULL DEFAULT '-1',
-  `tableid` int(11) NOT NULL DEFAULT '-1',
-  KEY `chanid` (`chanid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `pidcache`
---
-
-LOCK TABLES `pidcache` WRITE;
-/*!40000 ALTER TABLE `pidcache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `pidcache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `playgroup`
---
-
-DROP TABLE IF EXISTS `playgroup`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `playgroup` (
-  `name` varchar(32) NOT NULL DEFAULT '',
-  `titlematch` varchar(255) NOT NULL DEFAULT '',
-  `skipahead` int(11) NOT NULL DEFAULT '0',
-  `skipback` int(11) NOT NULL DEFAULT '0',
-  `timestretch` int(11) NOT NULL DEFAULT '0',
-  `jump` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`name`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `playgroup`
---
-
-LOCK TABLES `playgroup` WRITE;
-/*!40000 ALTER TABLE `playgroup` DISABLE KEYS */;
-INSERT INTO `playgroup` (`name`, `titlematch`, `skipahead`, `skipback`, `timestretch`, `jump`) VALUES ('Default','',30,5,100,0);
-/*!40000 ALTER TABLE `playgroup` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `powerpriority`
---
-
-DROP TABLE IF EXISTS `powerpriority`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `powerpriority` (
-  `priorityname` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
-  `recpriority` int(10) NOT NULL DEFAULT '0',
-  `selectclause` varchar(16000) NOT NULL DEFAULT '',
-  PRIMARY KEY (`priorityname`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `powerpriority`
---
-
-LOCK TABLES `powerpriority` WRITE;
-/*!40000 ALTER TABLE `powerpriority` DISABLE KEYS */;
-/*!40000 ALTER TABLE `powerpriority` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `profilegroups`
---
-
-DROP TABLE IF EXISTS `profilegroups`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `profilegroups` (
-  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(128) DEFAULT NULL,
-  `cardtype` varchar(32) NOT NULL DEFAULT 'V4L',
-  `is_default` int(1) DEFAULT '0',
-  `hostname` varchar(64) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`,`hostname`),
-  KEY `cardtype` (`cardtype`)
-) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `profilegroups`
---
-
-LOCK TABLES `profilegroups` WRITE;
-/*!40000 ALTER TABLE `profilegroups` DISABLE KEYS */;
-INSERT INTO `profilegroups` (`id`, `name`, `cardtype`, `is_default`, `hostname`) VALUES (1,'Software Encoders (v4l based)','V4L',1,NULL),(2,'MPEG-2 Encoders (PVR-x50, PVR-500)','MPEG',1,NULL),(3,'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)','MJPEG',1,NULL),(4,'Hardware HDTV','HDTV',1,NULL),(5,'Hardware DVB Encoders','DVB',1,NULL),(6,'Transcoders','TRANSCODE',1,NULL),(7,'FireWire Input','FIREWIRE',1,NULL),(8,'USB Mpeg-4 Encoder (Plextor ConvertX, etc)','GO7007',1,NULL),(14,'Import Recorder','IMPORT',1,NULL),(10,'Freebox Input','Freebox',1,NULL),(11,'HDHomeRun Recorders','HDHOMERUN',1,NULL),(12,'CRC IP Recorders','CRC_IP',1,NULL),(13,'HD-PVR Recorders','HDPVR',1,NULL);
-/*!40000 ALTER TABLE `profilegroups` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `program`
---
-
-DROP TABLE IF EXISTS `program`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `program` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `title` varchar(128) NOT NULL DEFAULT '',
-  `subtitle` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(16000) NOT NULL DEFAULT '',
-  `category` varchar(64) NOT NULL DEFAULT '',
-  `category_type` varchar(64) NOT NULL DEFAULT '',
-  `airdate` year(4) NOT NULL DEFAULT '0000',
-  `stars` float NOT NULL DEFAULT '0',
-  `previouslyshown` tinyint(4) NOT NULL DEFAULT '0',
-  `title_pronounce` varchar(128) NOT NULL DEFAULT '',
-  `stereo` tinyint(1) NOT NULL DEFAULT '0',
-  `subtitled` tinyint(1) NOT NULL DEFAULT '0',
-  `hdtv` tinyint(1) NOT NULL DEFAULT '0',
-  `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
-  `partnumber` int(11) NOT NULL DEFAULT '0',
-  `parttotal` int(11) NOT NULL DEFAULT '0',
-  `seriesid` varchar(64) NOT NULL DEFAULT '',
-  `originalairdate` date DEFAULT NULL,
-  `showtype` varchar(30) NOT NULL DEFAULT '',
-  `colorcode` varchar(20) NOT NULL DEFAULT '',
-  `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
-  `programid` varchar(64) NOT NULL DEFAULT '',
-  `manualid` int(10) unsigned NOT NULL DEFAULT '0',
-  `generic` tinyint(1) DEFAULT '0',
-  `listingsource` int(11) NOT NULL DEFAULT '0',
-  `first` tinyint(1) NOT NULL DEFAULT '0',
-  `last` tinyint(1) NOT NULL DEFAULT '0',
-  `audioprop` set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') CHARACTER SET latin1 NOT NULL,
-  `subtitletypes` set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') CHARACTER SET latin1 NOT NULL,
-  `videoprop` set('HDTV','WIDESCREEN','AVC') CHARACTER SET latin1 NOT NULL,
-  PRIMARY KEY (`chanid`,`starttime`,`manualid`),
-  KEY `endtime` (`endtime`),
-  KEY `title` (`title`),
-  KEY `title_pronounce` (`title_pronounce`),
-  KEY `seriesid` (`seriesid`),
-  KEY `id_start_end` (`chanid`,`starttime`,`endtime`),
-  KEY `program_manualid` (`manualid`),
-  KEY `previouslyshown` (`previouslyshown`),
-  KEY `programid` (`programid`,`starttime`),
-  KEY `starttime` (`starttime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `program`
---
-
-LOCK TABLES `program` WRITE;
-/*!40000 ALTER TABLE `program` DISABLE KEYS */;
-/*!40000 ALTER TABLE `program` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `programgenres`
---
-
-DROP TABLE IF EXISTS `programgenres`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `programgenres` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `relevance` char(1) NOT NULL DEFAULT '',
-  `genre` varchar(30) DEFAULT NULL,
-  PRIMARY KEY (`chanid`,`starttime`,`relevance`),
-  KEY `genre` (`genre`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `programgenres`
---
-
-LOCK TABLES `programgenres` WRITE;
-/*!40000 ALTER TABLE `programgenres` DISABLE KEYS */;
-/*!40000 ALTER TABLE `programgenres` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `programrating`
---
-
-DROP TABLE IF EXISTS `programrating`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `programrating` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `system` varchar(8) DEFAULT NULL,
-  `rating` varchar(16) DEFAULT NULL,
-  UNIQUE KEY `chanid` (`chanid`,`starttime`,`system`,`rating`),
-  KEY `starttime` (`starttime`,`system`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `programrating`
---
-
-LOCK TABLES `programrating` WRITE;
-/*!40000 ALTER TABLE `programrating` DISABLE KEYS */;
-/*!40000 ALTER TABLE `programrating` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recgrouppassword`
---
-
-DROP TABLE IF EXISTS `recgrouppassword`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recgrouppassword` (
-  `recgroup` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
-  `password` varchar(10) NOT NULL DEFAULT '',
-  PRIMARY KEY (`recgroup`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recgrouppassword`
---
-
-LOCK TABLES `recgrouppassword` WRITE;
-/*!40000 ALTER TABLE `recgrouppassword` DISABLE KEYS */;
-INSERT INTO `recgrouppassword` (`recgroup`, `password`) VALUES ('All Programs','');
-/*!40000 ALTER TABLE `recgrouppassword` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `record`
---
-
-DROP TABLE IF EXISTS `record`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `record` (
-  `recordid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `type` int(10) unsigned NOT NULL DEFAULT '0',
-  `chanid` int(10) unsigned DEFAULT NULL,
-  `starttime` time NOT NULL DEFAULT '00:00:00',
-  `startdate` date NOT NULL DEFAULT '0000-00-00',
-  `endtime` time NOT NULL DEFAULT '00:00:00',
-  `enddate` date NOT NULL DEFAULT '0000-00-00',
-  `title` varchar(128) NOT NULL DEFAULT '',
-  `subtitle` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(16000) NOT NULL DEFAULT '',
-  `category` varchar(64) NOT NULL DEFAULT '',
-  `profile` varchar(128) NOT NULL DEFAULT 'Default',
-  `recpriority` int(10) NOT NULL DEFAULT '0',
-  `autoexpire` int(11) NOT NULL DEFAULT '0',
-  `maxepisodes` int(11) NOT NULL DEFAULT '0',
-  `maxnewest` int(11) NOT NULL DEFAULT '0',
-  `startoffset` int(11) NOT NULL DEFAULT '0',
-  `endoffset` int(11) NOT NULL DEFAULT '0',
-  `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
-  `dupmethod` int(11) NOT NULL DEFAULT '6',
-  `dupin` int(11) NOT NULL DEFAULT '15',
-  `station` varchar(20) NOT NULL DEFAULT '',
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
-  `search` int(10) unsigned NOT NULL DEFAULT '0',
-  `autotranscode` tinyint(1) NOT NULL DEFAULT '0',
-  `autocommflag` tinyint(1) NOT NULL DEFAULT '0',
-  `autouserjob1` tinyint(1) NOT NULL DEFAULT '0',
-  `autouserjob2` tinyint(1) NOT NULL DEFAULT '0',
-  `autouserjob3` tinyint(1) NOT NULL DEFAULT '0',
-  `autouserjob4` tinyint(1) NOT NULL DEFAULT '0',
-  `findday` tinyint(4) NOT NULL DEFAULT '0',
-  `findtime` time NOT NULL DEFAULT '00:00:00',
-  `findid` int(11) NOT NULL DEFAULT '0',
-  `inactive` tinyint(1) NOT NULL DEFAULT '0',
-  `parentid` int(11) NOT NULL DEFAULT '0',
-  `transcoder` int(11) NOT NULL DEFAULT '0',
-  `playgroup` varchar(32) NOT NULL DEFAULT 'Default',
-  `prefinput` int(10) NOT NULL DEFAULT '0',
-  `next_record` datetime NOT NULL,
-  `last_record` datetime NOT NULL,
-  `last_delete` datetime NOT NULL,
-  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
-  `avg_delay` int(11) NOT NULL DEFAULT '100',
-  PRIMARY KEY (`recordid`),
-  KEY `chanid` (`chanid`,`starttime`),
-  KEY `title` (`title`),
-  KEY `seriesid` (`seriesid`),
-  KEY `programid` (`programid`),
-  KEY `maxepisodes` (`maxepisodes`),
-  KEY `search` (`search`),
-  KEY `type` (`type`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `record`
---
-
-LOCK TABLES `record` WRITE;
-/*!40000 ALTER TABLE `record` DISABLE KEYS */;
-/*!40000 ALTER TABLE `record` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recorded`
---
-
-DROP TABLE IF EXISTS `recorded`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recorded` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `title` varchar(128) NOT NULL DEFAULT '',
-  `subtitle` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(16000) NOT NULL DEFAULT '',
-  `category` varchar(64) NOT NULL DEFAULT '',
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  `bookmark` tinyint(1) NOT NULL DEFAULT '0',
-  `editing` int(10) unsigned NOT NULL DEFAULT '0',
-  `cutlist` tinyint(1) NOT NULL DEFAULT '0',
-  `autoexpire` int(11) NOT NULL DEFAULT '0',
-  `commflagged` int(10) unsigned NOT NULL DEFAULT '0',
-  `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
-  `recordid` int(11) DEFAULT NULL,
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
-  `lastmodified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `filesize` bigint(20) NOT NULL DEFAULT '0',
-  `stars` float NOT NULL DEFAULT '0',
-  `previouslyshown` tinyint(1) DEFAULT '0',
-  `originalairdate` date DEFAULT NULL,
-  `preserve` tinyint(1) NOT NULL DEFAULT '0',
-  `findid` int(11) NOT NULL DEFAULT '0',
-  `deletepending` tinyint(1) NOT NULL DEFAULT '0',
-  `transcoder` int(11) NOT NULL DEFAULT '0',
-  `timestretch` float NOT NULL DEFAULT '1',
-  `recpriority` int(11) NOT NULL DEFAULT '0',
-  `basename` varchar(255) NOT NULL,
-  `progstart` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `progend` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `playgroup` varchar(32) NOT NULL DEFAULT 'Default',
-  `profile` varchar(32) NOT NULL DEFAULT '',
-  `duplicate` tinyint(1) NOT NULL DEFAULT '0',
-  `transcoded` tinyint(1) NOT NULL DEFAULT '0',
-  `watched` tinyint(4) NOT NULL DEFAULT '0',
-  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
-  `bookmarkupdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
-  PRIMARY KEY (`chanid`,`starttime`),
-  KEY `endtime` (`endtime`),
-  KEY `seriesid` (`seriesid`),
-  KEY `programid` (`programid`),
-  KEY `title` (`title`),
-  KEY `recordid` (`recordid`),
-  KEY `deletepending` (`deletepending`,`lastmodified`),
-  KEY `recgroup` (`recgroup`,`endtime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recorded`
---
-
-LOCK TABLES `recorded` WRITE;
-/*!40000 ALTER TABLE `recorded` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recorded` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordedcredits`
---
-
-DROP TABLE IF EXISTS `recordedcredits`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordedcredits` (
-  `person` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `role` set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') CHARACTER SET latin1 NOT NULL DEFAULT '',
-  UNIQUE KEY `chanid` (`chanid`,`starttime`,`person`,`role`),
-  KEY `person` (`person`,`role`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordedcredits`
---
-
-LOCK TABLES `recordedcredits` WRITE;
-/*!40000 ALTER TABLE `recordedcredits` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordedcredits` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordedfile`
---
-
-DROP TABLE IF EXISTS `recordedfile`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordedfile` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `basename` varchar(128) NOT NULL DEFAULT '',
-  `filesize` bigint(20) NOT NULL DEFAULT '0',
-  `width` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `height` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `fps` float(6,3) NOT NULL DEFAULT '0.000',
-  `aspect` float(8,6) NOT NULL DEFAULT '0.000000',
-  `audio_sample_rate` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `audio_bits_per_sample` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `audio_channels` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `audio_type` varchar(255) NOT NULL DEFAULT '',
-  `video_type` varchar(255) NOT NULL DEFAULT '',
-  `comment` varchar(255) NOT NULL DEFAULT '',
-  `hostname` varchar(64) NOT NULL,
-  `storagegroup` varchar(32) NOT NULL,
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `chanid` (`chanid`,`starttime`,`basename`),
-  KEY `basename` (`basename`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordedfile`
---
-
-LOCK TABLES `recordedfile` WRITE;
-/*!40000 ALTER TABLE `recordedfile` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordedfile` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordedmarkup`
---
-
-DROP TABLE IF EXISTS `recordedmarkup`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordedmarkup` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `type` tinyint(4) NOT NULL DEFAULT '0',
-  `data` int(11) unsigned DEFAULT NULL,
-  PRIMARY KEY (`chanid`,`starttime`,`type`,`mark`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordedmarkup`
---
-
-LOCK TABLES `recordedmarkup` WRITE;
-/*!40000 ALTER TABLE `recordedmarkup` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordedmarkup` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordedprogram`
---
-
-DROP TABLE IF EXISTS `recordedprogram`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordedprogram` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `title` varchar(128) NOT NULL DEFAULT '',
-  `subtitle` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(16000) NOT NULL DEFAULT '',
-  `category` varchar(64) NOT NULL DEFAULT '',
-  `category_type` varchar(64) NOT NULL DEFAULT '',
-  `airdate` year(4) NOT NULL DEFAULT '0000',
-  `stars` float unsigned NOT NULL DEFAULT '0',
-  `previouslyshown` tinyint(4) NOT NULL DEFAULT '0',
-  `title_pronounce` varchar(128) NOT NULL DEFAULT '',
-  `stereo` tinyint(1) NOT NULL DEFAULT '0',
-  `subtitled` tinyint(1) NOT NULL DEFAULT '0',
-  `hdtv` tinyint(1) NOT NULL DEFAULT '0',
-  `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
-  `partnumber` int(11) NOT NULL DEFAULT '0',
-  `parttotal` int(11) NOT NULL DEFAULT '0',
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `originalairdate` date DEFAULT NULL,
-  `showtype` varchar(30) NOT NULL DEFAULT '',
-  `colorcode` varchar(20) NOT NULL DEFAULT '',
-  `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
-  `manualid` int(10) unsigned NOT NULL DEFAULT '0',
-  `generic` tinyint(1) DEFAULT '0',
-  `listingsource` int(11) NOT NULL DEFAULT '0',
-  `first` tinyint(1) NOT NULL DEFAULT '0',
-  `last` tinyint(1) NOT NULL DEFAULT '0',
-  `audioprop` set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') CHARACTER SET latin1 NOT NULL,
-  `subtitletypes` set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') CHARACTER SET latin1 NOT NULL,
-  `videoprop` set('HDTV','WIDESCREEN','AVC','720','1080') NOT NULL,
-  PRIMARY KEY (`chanid`,`starttime`,`manualid`),
-  KEY `endtime` (`endtime`),
-  KEY `title` (`title`),
-  KEY `title_pronounce` (`title_pronounce`),
-  KEY `seriesid` (`seriesid`),
-  KEY `programid` (`programid`),
-  KEY `id_start_end` (`chanid`,`starttime`,`endtime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordedprogram`
---
-
-LOCK TABLES `recordedprogram` WRITE;
-/*!40000 ALTER TABLE `recordedprogram` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordedprogram` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordedrating`
---
-
-DROP TABLE IF EXISTS `recordedrating`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordedrating` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `system` varchar(8) DEFAULT NULL,
-  `rating` varchar(16) DEFAULT NULL,
-  UNIQUE KEY `chanid` (`chanid`,`starttime`,`system`,`rating`),
-  KEY `starttime` (`starttime`,`system`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordedrating`
---
-
-LOCK TABLES `recordedrating` WRITE;
-/*!40000 ALTER TABLE `recordedrating` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordedrating` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordedseek`
---
-
-DROP TABLE IF EXISTS `recordedseek`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordedseek` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
-  `offset` bigint(20) unsigned NOT NULL,
-  `type` tinyint(4) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`chanid`,`starttime`,`type`,`mark`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordedseek`
---
-
-LOCK TABLES `recordedseek` WRITE;
-/*!40000 ALTER TABLE `recordedseek` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordedseek` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordingprofiles`
---
-
-DROP TABLE IF EXISTS `recordingprofiles`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordingprofiles` (
-  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(128) DEFAULT NULL,
-  `videocodec` varchar(128) DEFAULT NULL,
-  `audiocodec` varchar(128) DEFAULT NULL,
-  `profilegroup` int(10) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `profilegroup` (`profilegroup`)
-) ENGINE=MyISAM AUTO_INCREMENT=58 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordingprofiles`
---
-
-LOCK TABLES `recordingprofiles` WRITE;
-/*!40000 ALTER TABLE `recordingprofiles` DISABLE KEYS */;
-INSERT INTO `recordingprofiles` (`id`, `name`, `videocodec`, `audiocodec`, `profilegroup`) VALUES (1,'Default',NULL,NULL,1),(2,'Live TV',NULL,NULL,1),(3,'High Quality',NULL,NULL,1),(4,'Low Quality',NULL,NULL,1),(5,'Default',NULL,NULL,2),(6,'Live TV',NULL,NULL,2),(7,'High Quality',NULL,NULL,2),(8,'Low Quality',NULL,NULL,2),(9,'Default',NULL,NULL,3),(10,'Live TV',NULL,NULL,3),(11,'High Quality',NULL,NULL,3),(12,'Low Quality',NULL,NULL,3),(13,'Default',NULL,NULL,4),(14,'Live TV',NULL,NULL,4),(15,'High Quality',NULL,NULL,4),(16,'Low Quality',NULL,NULL,4),(17,'Default',NULL,NULL,5),(18,'Live TV',NULL,NULL,5),(19,'High Quality',NULL,NULL,5),(20,'Low Quality',NULL,NULL,5),(21,'RTjpeg/MPEG4',NULL,NULL,6),(22,'MPEG2',NULL,NULL,6),(23,'Default',NULL,NULL,8),(24,'Live TV',NULL,NULL,8),(25,'High Quality',NULL,NULL,8),(26,'Low Quality',NULL,NULL,8),(27,'High Quality',NULL,NULL,6),(28,'Medium Quality',NULL,NULL,6),(29,'Low Quality',NULL,NULL,6),(30,'Default',NULL,NULL,10),(31,'Live TV',NULL,NULL,10),(32,'High Quality',NULL,NULL,10),(33,'Low Quality',NULL,NULL,10),(34,'Default',NULL,NULL,11),(35,'Live TV',NULL,NULL,11),(36,'High Quality',NULL,NULL,11),(37,'Low Quality',NULL,NULL,11),(38,'Default',NULL,NULL,12),(39,'Live TV',NULL,NULL,12),(40,'High Quality',NULL,NULL,12),(41,'Low Quality',NULL,NULL,12),(42,'Default',NULL,NULL,7),(43,'Live TV',NULL,NULL,7),(44,'High Quality',NULL,NULL,7),(45,'Low Quality',NULL,NULL,7),(46,'Default',NULL,NULL,9),(47,'Live TV',NULL,NULL,9),(48,'High Quality',NULL,NULL,9),(49,'Low Quality',NULL,NULL,9),(50,'Default',NULL,NULL,13),(51,'Live TV',NULL,NULL,13),(52,'High Quality',NULL,NULL,13),(53,'Low Quality',NULL,NULL,13),(54,'Default',NULL,NULL,14),(55,'Live TV',NULL,NULL,14),(56,'High Quality',NULL,NULL,14),(57,'Low Quality',NULL,NULL,14);
-/*!40000 ALTER TABLE `recordingprofiles` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `recordmatch`
---
-
-DROP TABLE IF EXISTS `recordmatch`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recordmatch` (
-  `recordid` int(10) unsigned DEFAULT NULL,
-  `chanid` int(10) unsigned DEFAULT NULL,
-  `starttime` datetime DEFAULT NULL,
-  `manualid` int(10) unsigned DEFAULT NULL,
-  `oldrecduplicate` tinyint(1) DEFAULT NULL,
-  `recduplicate` tinyint(1) DEFAULT NULL,
-  `findduplicate` tinyint(1) DEFAULT NULL,
-  `oldrecstatus` int(11) DEFAULT NULL,
-  KEY `recordid` (`recordid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `recordmatch`
---
-
-LOCK TABLES `recordmatch` WRITE;
-/*!40000 ALTER TABLE `recordmatch` DISABLE KEYS */;
-/*!40000 ALTER TABLE `recordmatch` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `romdb`
---
-
-DROP TABLE IF EXISTS `romdb`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `romdb` (
-  `crc` varchar(64) NOT NULL DEFAULT '',
-  `name` varchar(128) NOT NULL DEFAULT '',
-  `description` varchar(128) NOT NULL DEFAULT '',
-  `category` varchar(128) NOT NULL DEFAULT '',
-  `year` varchar(10) NOT NULL DEFAULT '',
-  `manufacturer` varchar(128) NOT NULL DEFAULT '',
-  `country` varchar(128) NOT NULL DEFAULT '',
-  `publisher` varchar(128) NOT NULL DEFAULT '',
-  `platform` varchar(64) NOT NULL DEFAULT '',
-  `filesize` int(12) DEFAULT NULL,
-  `flags` varchar(64) NOT NULL DEFAULT '',
-  `version` varchar(64) NOT NULL DEFAULT '',
-  `binfile` varchar(64) NOT NULL DEFAULT '',
-  KEY `crc` (`crc`),
-  KEY `year` (`year`),
-  KEY `category` (`category`),
-  KEY `name` (`name`),
-  KEY `description` (`description`),
-  KEY `platform` (`platform`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `romdb`
---
-
-LOCK TABLES `romdb` WRITE;
-/*!40000 ALTER TABLE `romdb` DISABLE KEYS */;
-/*!40000 ALTER TABLE `romdb` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `schemalock`
---
-
-DROP TABLE IF EXISTS `schemalock`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `schemalock` (
-  `schemalock` int(1) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `schemalock`
---
-
-LOCK TABLES `schemalock` WRITE;
-/*!40000 ALTER TABLE `schemalock` DISABLE KEYS */;
-/*!40000 ALTER TABLE `schemalock` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `settings`
---
-
-DROP TABLE IF EXISTS `settings`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `settings` (
-  `value` varchar(128) NOT NULL DEFAULT '',
-  `data` varchar(16000) NOT NULL DEFAULT '',
-  `hostname` varchar(64) DEFAULT NULL,
-  KEY `value` (`value`,`hostname`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `settings`
---
-
-LOCK TABLES `settings` WRITE;
-/*!40000 ALTER TABLE `settings` DISABLE KEYS */;
-INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1264',NULL),('DefaultTranscoder','0',NULL),('MythFillSuggestedRunTime','1970-01-01T00:00:00',NULL),('MythFillGrabberSuggestsTime','1',NULL),('MythFillFixProgramIDsHasRunOnce','1','larch5'),('Language','EN_US','larch5'),('BackendServerIP','127.0.0.1','larch5'),('BackendServerPort','6543','larch5'),('BackendStatusPort','6544','larch5'),('SecurityPin','','larch5'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('TVFormat','NTSC',NULL),('VbiFormat','None',NULL),('FreqTable','us-bcast',NULL),('TimeOffset','None',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','1',NULL),('TruncateDeletesSlowly','0','larch5'),('HDRingbufferSize','9400',NULL),('MiscStatusScript','','larch5'),('DisableFirewireReset','0','larch5'),('EITTransportTimeout','5',NULL),('EITIgnoresSource','0',NULL),('EITCrawIdleStart','60',NULL),('startupCommand','',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('SetWakeuptimeCommand','',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('preSDWUCheckCommand','',NULL),('WOLbackendConnectRetry','5',NULL),('WOLbackendCommand','',NULL),('WOLslaveBackendsCommand','',NULL),('JobQueueMaxSimultaneousJobs','1','larch5'),('JobQueueCheckFrequency','60','larch5'),('JobQueueWindowStart','00:00','larch5'),('JobQueueWindowEnd','23:59','larch5'),('JobQueueCPU','0','larch5'),('JobAllowCommFlag','1','larch5'),('JobAllowTranscode','1','larch5'),('JobAllowUserJob1','0','larch5'),('JobAllowUserJob2','0','larch5'),('JobAllowUserJob3','0','larch5'),('JobAllowUserJob4','0','larch5'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJob1','',NULL),('UserJobDesc2','User Job #2',NULL),('UserJob2','',NULL),('UserJobDesc3','User Job #3',NULL),('UserJob3','',NULL),('UserJobDesc4','User Job #4',NULL),('UserJob4','',NULL),('DefaultVideoPlaybackProfile','CPU+','larch5'),('RealtimePriority','1','larch5'),('DecodeExtraAudio','1','larch5'),('AudioNag','1','larch5'),('UseVideoTimebase','0','larch5'),('ClearSavedPosition','1','larch5'),('AltClearSavedPosition','1','larch5'),('JumpToProgramOSD','1','larch5'),('ContinueEmbeddedTVPlay','0','larch5'),('AutomaticSetWatched','0','larch5'),('AlwaysStreamFiles','1','larch5'),('UseOpenGLVSync','0','larch5'),('UseOutputPictureControls','1','larch5'),('AspectOverride','0','larch5'),('AdjustFill','0','larch5'),('LetterboxColour','0','larch5'),('PIPLocation','0','larch5'),('PlaybackExitPrompt','2','larch5'),('EndOfRecordingExitPrompt','1','larch5'),('PlayBoxOrdering','1','larch5'),('PlayBoxEpisodeSort','Date','larch5'),('GeneratePreviewPixmaps','0','larch5'),('PreviewPixmapOffset','64',NULL),('PreviewFromBookmark','1','larch5'),('PlaybackPreview','1','larch5'),('PlaybackBoxStartInTitle','1','larch5'),('ShowGroupInfo','0','larch5'),('DisplayRecGroup','All Programs','larch5'),('QueryInitialFilter','0','larch5'),('RememberRecGroup','1','larch5'),('DispRecGroupAsAllProg','0','larch5'),('LiveTVInAllPrograms','0','larch5'),('DisplayGroupDefaultView','0','larch5'),('DisplayGroupTitleSort','0','larch5'),('PlaybackWatchList','1','larch5'),('PlaybackWLStart','0','larch5'),('PlaybackWLAutoExpire','0','larch5'),('PlaybackWLMaxAge','60','larch5'),('PlaybackWLBlackOut','2','larch5'),('SmartForward','0','larch5'),('StickyKeys','0','larch5'),('FFRewReposTime','100','larch5'),('FFRewReverse','1','larch5'),('ExactSeeking','0','larch5'),('AutoCommercialSkip','0','larch5'),('MaximumCommercialSkip','3600',NULL),('CommSkipAllBlanks','1',NULL),('PVR350OutputEnable','0','larch5'),('PVR350EPGAlphaValue','164','larch5'),('PVR350InternalAudioOnly','0','larch5'),('OSDTheme','blueosd','larch5'),('OSDGeneralTimeout','2','larch5'),('OSDProgramInfoTimeout','3','larch5'),('OSDFont','FreeMono.ttf','larch5'),('OSDThemeFontSizeType','default','larch5'),('EnableMHEG','0','larch5'),('PersistentBrowseMode','1','larch5'),('OSDNotifyTimeout','5','larch5'),('UDPNotifyPort','6948','larch5'),('OSDCCFont','FreeMono.ttf','larch5'),('CCBackground','0','larch5'),('DefaultCCMode','0','larch5'),('Prefer708Captions','1','larch5'),('OSDCC708TextZoom','100','larch5'),('OSDCC708DefaultFontType','MonoSerif','larch5'),('OSDCC708MonoSerifFont','FreeMono.ttf','larch5'),('OSDCC708PropSerifFont','FreeMono.ttf','larch5'),('OSDCC708MonoSansSerifFont','FreeMono.ttf','larch5'),('OSDCC708PropSansSerifFont','FreeMono.ttf','larch5'),('OSDCC708CasualFont','FreeMono.ttf','larch5'),('OSDCC708CursiveFont','FreeMono.ttf','larch5'),('OSDCC708CapitalsFont','FreeMono.ttf','larch5'),('OSDCC708MonoSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708PropSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708MonoSansSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708PropSansSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708CasualItalicFont','FreeMono.ttf','larch5'),('OSDCC708CursiveItalicFont','FreeMono.ttf','larch5'),('OSDCC708CapitalsItalicFont','FreeMono.ttf','larch5'),('ChannelOrdering','channum','larch5'),('ChannelFormat','<num> <sign>','larch5'),('LongChannelFormat','<num> <name>','larch5'),('SmartChannelChange','0','larch5'),('LastFreeCard','0',NULL),('LiveTVPriority','0',NULL),('AutoExpireMethod','2',NULL),('AutoExpireDefault','1',NULL),('RerecordWatched','1',NULL),('AutoExpireWatchedPriority','0',NULL),('AutoExpireLiveTVMaxAge','1',NULL),('AutoExpireDayPriority','3',NULL),('AutoExpireExtraSpace','1',NULL),('AutoExpireInsteadOfDelete','0',NULL),('DeletedFifoOrder','0',NULL),('CommercialSkipMethod','7',NULL),('AggressiveCommDetect','1',NULL),('AutoCommercialFlag','1',NULL),('AutoTranscode','0',NULL),('AutoRunUserJob1','0',NULL),('AutoRunUserJob2','0',NULL),('AutoRunUserJob3','0',NULL),('AutoRunUserJob4','0',NULL),('OverTimeCategory','category name',NULL),('CategoryOverTime','30',NULL),('EPGFillType','12','larch5'),('EPGShowCategoryColors','1','larch5'),('EPGShowCategoryText','1','larch5'),('EPGScrollType','1','larch5'),('EPGShowChannelIcon','1','larch5'),('EPGShowFavorites','0','larch5'),('WatchTVGuide','0','larch5'),('chanPerPage','5','larch5'),('timePerPage','4','larch5'),('UnknownTitle','Unknown','larch5'),('UnknownCategory','Unknown','larch5'),('DefaultTVChannel','3','larch5'),('SelectChangesChannel','0','larch5'),('SelChangeRecThreshold','16','larch5'),('EPGEnableJumpToChannel','0',NULL),('Theme','LinHES','larch5'),('RandomTheme','0','larch5'),('ThemeCacheSize','1','larch5'),('ThemePainter','qt','larch5'),('Style','Desktop Style','larch5'),('ThemeFontSizeType','default','larch5'),('MenuTheme','default','larch5'),('XineramaScreen','0','larch5'),('XineramaMonitorAspectRatio','1.3333','larch5'),('GuiSizeForTV','1','larch5'),('HideMouseCursor','1','larch5'),('RunFrontendInWindow','0','larch5'),('UseVideoModes','0','larch5'),('GuiVidModeResolution','640x480','larch5'),('TVVidModeResolution','320x200','larch5'),('TVVidModeForceAspect','0.0','larch5'),('TVVidModeResolution0','320x200','larch5'),('TVVidModeForceAspect0','0.0','larch5'),('TVVidModeResolution1','320x200','larch5'),('TVVidModeForceAspect1','0.0','larch5'),('TVVidModeResolution2','320x200','larch5'),('TVVidModeForceAspect2','0.0','larch5'),('ISO639Language0','eng',NULL),('ISO639Language1','eng',NULL),('DateFormat','ddd MMM d','larch5'),('ShortDateFormat','M/d','larch5'),('TimeFormat','h:mm AP','larch5'),('QtFontSmall','12','larch5'),('QtFontMedium','16','larch5'),('QtFontBig','25','larch5'),('PlayBoxTransparency','1','larch5'),('PlayBoxShading','0','larch5'),('UseVirtualKeyboard','1','larch5'),('LCDEnable','0','larch5'),('LCDShowTime','1','larch5'),('LCDShowMenu','1','larch5'),('LCDShowMusic','1','larch5'),('LCDShowMusicItems','ArtistTitle','larch5'),('LCDShowChannel','1','larch5'),('LCDShowRecStatus','0','larch5'),('LCDShowVolume','1','larch5'),('LCDShowGeneric','1','larch5'),('LCDBacklightOn','1','larch5'),('LCDHeartBeatOn','0','larch5'),('LCDBigClock','0','larch5'),('LCDKeyString','ABCDEF','larch5'),('LCDPopupTime','5','larch5'),('AudioOutputDevice','ALSA:default','larch5'),('PassThruOutputDevice','Default','larch5'),('MaxChannels','2','larch5'),('AudioUpmixType','0','larch5'),('AC3PassThru','0','larch5'),('DTSPassThru','0','larch5'),('AggressiveSoundcardBuffer','0','larch5'),('MythControlsVolume','1','larch5'),('MixerDevice','ALSA:default','larch5'),('MixerControl','PCM','larch5'),('MasterMixerVolume','100','larch5'),('PCMMixerVolume','50','larch5'),('IndividualMuteControl','0','larch5'),('LircKeyPressedApp','','larch5'),('AllowQuitShutdown','4','larch5'),('NoPromptOnExit','1','larch5'),('UseArrowAccels','1','larch5'),('NetworkControlEnabled','0','larch5'),('NetworkControlPort','6546','larch5'),('MonitorDrives','0','larch5'),('MediaChangeEvents','0','larch5'),('IgnoreDevices','','larch5'),('SetupPinCodeRequired','0','larch5'),('OverrideExitMenu','3','larch5'),('HaltCommand','sudo /sbin/halt','larch5'),('RebootCommand','sudo /sbin/reboot','larch5'),('EnableXbox','0','larch5'),('LogEnabled','0',NULL),('LogMaxCount','100','larch5'),('LogPrintLevel','8','larch5'),('LogCleanEnabled','0','larch5'),('LogCleanPeriod','14','larch5'),('LogCleanDays','14','larch5'),('LogCleanMax','30','larch5'),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillDatabaseArgs','',NULL),('MythFillDatabaseLog','',NULL),('MythFillPeriod','1',NULL),('MythFillMinHour','2',NULL),('MythFillMaxHour','5',NULL),('SchedMoveHigher','1',NULL),('SchedOpenEnd','0',NULL),('ComplexPriority','0',NULL),('PrefInputPriority','2',NULL),('SingleRecordRecPriority','1',NULL),('FindOneRecordRecPriority','-1',NULL),('ArchiveDBSchemaVer','1005',NULL),('MythArchiveTempDir','/myth/tmp','larch5'),('MythArchiveShareDir','/usr/share/mythtv/mytharchive/','larch5'),('MythArchiveVideoFormat','NTSC','larch5'),('MythArchiveFileFilter','*.mpg *.mov *.avi *.mpeg *.nuv','larch5'),('MythArchiveDVDLocation','/dev/dvd','larch5'),('MythArchiveDVDPlayerCmd','Internal','larch5'),('MythArchiveEncodeToAc3','0','larch5'),('MythArchiveCopyRemoteFiles','0','larch5'),('MythArchiveAlwaysUseMythTranscode','1','larch5'),('MythArchiveUseProjectX','0','larch5'),('MythArchiveAddSubtitles','0','larch5'),('MythArchiveUseFIFO','1','larch5'),('MythArchiveDefaultEncProfile','SP','larch5'),('MythArchiveMainMenuAR','16:9','larch5'),('MythArchiveChapterMenuAR','Video','larch5'),('MythArchiveDateFormat','%a  %b  %d','larch5'),('MythArchiveTimeFormat','%I:%M %p','larch5'),('MythArchiveFfmpegCmd','ffmpeg','larch5'),('MythArchiveMplexCmd','mplex','larch5'),('MythArchiveDvdauthorCmd','dvdauthor','larch5'),('MythArchiveSpumuxCmd','spumux','larch5'),('MythArchiveMpeg2encCmd','mpeg2enc','larch5'),('MythArchiveMkisofsCmd','mkisofs','larch5'),('MythArchiveGrowisofsCmd','growisofs','larch5'),('MythArchiveTcrequantCmd','tcrequant','larch5'),('MythArchiveJpeg2yuvCmd','jpeg2yuv','larch5'),('MythArchiveProjectXCmd','projectx','larch5'),('FlixDBSchemaVer','1004',NULL),('GalleryDBSchemaVer','1003',NULL),('GalleryDir','/myth/gallery','larch5'),('GalleryThumbnailLocation','1','larch5'),('GallerySortOrder','20','larch5'),('GalleryImportDirs','/mnt/cdrom:/mnt/camera','larch5'),('GalleryMoviePlayerCmd','Internal','larch5'),('SlideshowUseOpenGL','0','larch5'),('SlideshowDelay','5','larch5'),('SlideshowOpenGLTransition','none','larch5'),('SlideshowOpenGLTransitionLength','2000','larch5'),('SlideshowTransition','random','larch5'),('SlideshowBackground','black','larch5'),('GameDBSchemaVer','1017',NULL),('MusicDBSchemaVer','1017',NULL),('VisualMode','','larch5'),('MusicLocation','/myth/music/','larch5'),('MusicAudioDevice','default','larch5'),('CDDevice','/dev/cdrom','larch5'),('AutoLookupCD','1','larch5'),('AutoPlayCD','0','larch5'),('KeyboardAccelerators','1','larch5'),('TreeLevels','splitartist artist album title','larch5'),('ArtistTreeGroups','0','larch5'),('NonID3FileNameFormat','GENRE/ARTIST/ALBUM/TRACK_TITLE','larch5'),('Ignore_ID3','0','larch5'),('MusicTagEncoding','utf16','larch5'),('CDWriterEnabled','1','larch5'),('CDDiskSize','1','larch5'),('CDCreateDir','1','larch5'),('CDWriteSpeed','0','larch5'),('CDBlankType','fast','larch5'),('PlayMode','none','larch5'),('ResumeMode','off','larch5'),('MaxSearchResults','300','larch5'),('MusicShowRatings','0','larch5'),('ShowWholeTree','0','larch5'),('ListAsShuffled','0','larch5'),('IntelliRatingWeight','35','larch5'),('IntelliPlayCountWeight','25','larch5'),('IntelliLastPlayWeight','25','larch5'),('IntelliRandomWeight','15','larch5'),('VisualCycleOnSongChange','0','larch5'),('VisualAlbumArtOnSongChange','0','larch5'),('VisualRandomize','0','larch5'),('VisualModeDelay','0','larch5'),('VisualScaleWidth','1','larch5'),('VisualScaleHeight','1','larch5'),('ParanoiaLevel','Full','larch5'),('FilenameTemplate','ARTIST/ALBUM/TRACK-TITLE','larch5'),('NoWhitespace','0','larch5'),('PostCDRipScript','','larch5'),('EjectCDAfterRipping','1','larch5'),('EncoderType','ogg','larch5'),('DefaultRipQuality','1','larch5'),('Mp3UseVBR','0','larch5'),('PhoneDBSchemaVer','1001',NULL),('SipRegisterWithProxy','1','larch5'),('SipProxyName','fwd.pulver.com','larch5'),('SipProxyAuthName','','larch5'),('SipProxyAuthPassword','','larch5'),('MySipName','Me','larch5'),('SipAutoanswer','0','larch5'),('SipBindInterface','eth0','larch5'),('SipLocalPort','5060','larch5'),('NatTraversalMethod','None','larch5'),('NatIpAddress','http://checkip.dyndns.org','larch5'),('AudioLocalPort','21232','larch5'),('VideoLocalPort','21234','larch5'),('MicrophoneDevice','None','larch5'),('CodecPriorityList','GSM;G.711u;G.711a','larch5'),('PlayoutAudioCall','40','larch5'),('PlayoutVideoCall','110','larch5'),('TxResolution','176x144','larch5'),('TransmitFPS','5','larch5'),('TransmitBandwidth','256','larch5'),('CaptureResolution','352x288','larch5'),('TimeToAnswer','10','larch5'),('DefaultVxmlUrl','http://127.0.0.1/vxml/index.vxml','larch5'),('DefaultVoicemailPrompt','I am not at home, please leave a message after the tone','larch5'),('mythvideo.DBSchemaVer','1038',NULL),('VideoStartupDir','/myth/video','larch5'),('VideoArtworkDir','/myth/video_stuff/coverart','larch5'),('Default MythVideo View','2','larch5'),('VideoListUnknownFiletypes','1','larch5'),('VideoBrowserNoDB','1','larch5'),('VideoGalleryNoDB','1','larch5'),('VideoTreeNoDB','1','larch5'),('VideoTreeLoadMetaData','1','larch5'),('VideoNewBrowsable','1','larch5'),('mythvideo.sort_ignores_case','1','larch5'),('mythvideo.db_folder_view','1','larch5'),('mythvideo.VideoTreeRemember','1','larch5'),('mythvideo.ImageCacheSize','50','larch5'),('DVDDeviceLocation','/dev/dvd','larch5'),('VCDDeviceLocation','/dev/cdrom','larch5'),('DVDOnInsertDVD','1','larch5'),('DVDDriveSpeed','2','larch5'),('EnableDVDBookmark','1','larch5'),('DVDBookmarkPrompt','1','larch5'),('DVDBookmarkDays','10','larch5'),('mythvideo.fanartDir','/myth/video_stuff/fanart','larch5'),('mythvideo.screenshotDir','/myth/video_stuff/screenshots','larch5'),('mythvideo.bannerDir','/myth/video_stuff/banners','larch5'),('VideoGalleryColsPerPage','4','larch5'),('VideoGalleryRowsPerPage','3','larch5'),('VideoGallerySubtitle','1','larch5'),('VideoDefaultParentalLevel','4','larch5'),('VideoAggressivePC','0','larch5'),('mythvideo.ParentalLevelFromRating','0','larch5'),('mythvideo.AutoR2PL1','G','larch5'),('mythvideo.AutoR2PL2','PG','larch5'),('mythvideo.AutoR2PL3','PG-13','larch5'),('mythvideo.AutoR2PL4','R:NC-17','larch5'),('VideoDefaultPlayer','Internal','larch5'),('mythdvd.DVDPlayerCommand','Internal','larch5'),('VCDPlayerCommand','mplayer vcd:// -cdrom-device %d -fs -zoom -vo xv','larch5'),('DVDRipLocation','/myth/tmp','larch5'),('TitlePlayCommand','Internal','larch5'),('SubTitleCommand','-sid %s','larch5'),('TranscodeCommand','transcode','larch5'),('MTDPort','2442','larch5'),('MTDNiceLevel','20','larch5'),('MTDConcurrentTranscodes','1','larch5'),('MTDLogFlag','0','larch5'),('MTDac3Flag','0','larch5'),('MTDxvidFlag','1','larch5'),('mythvideo.TrustTranscodeFRDetect','1','larch5'),('WeatherDBSchemaVer','1004',NULL),('TVVidModeRefreshRate','0','larch5'),('TVVidModeRefreshRate0','0','larch5'),('TVVidModeRefreshRate1','0','larch5'),('TVVidModeRefreshRate2','0','larch5'),('GalleryRecursiveSlideshow','1','larch5'),('WebBrowserZoomLevel','20','larch5'),('WebBrowserCommand','Internal','larch5'),('WebBrowserScrollMode','1','larch5'),('WebBrowserScrollSpeed','4','larch5'),('WebBrowserHideScrollbars','0','larch5'),('RepeatMode','all','larch5'),('MusicAutoShowPlayer','1','larch5'),('HOSTOSsize','5','larch5'),('NetworkControlEnabled','1','larch5'),('Hostpluginmytharchive','1','larch5'),('Hostpluginmythbrowser','1','larch5'),('Hostpluginmythcontrols','1','larch5'),('Hostpluginmythflix','1','larch5'),('Hostpluginmythgallery','1','larch5'),('Hostpluginmythgame','1','larch5'),('HostpluginmythgameFceu','1','larch5'),('HostpluginmythgameMame','1','larch5'),('HostpluginmythgameZsnes','1','larch5'),('Hostpluginmythmovietime','1','larch5'),('Hostpluginmythmusic','1','larch5'),('Hostpluginmythnews','1','larch5'),('Hostpluginmythphone','1','larch5'),('Hostpluginmythsmolt','1','larch5'),('Hostpluginmythvideo','1','larch5'),('Hostpluginmythvideo_dvdcss','0','larch5'),('Hostpluginmythweather','1','larch5'),('HostAudiotype','ALSA','larch5'),('HostpluginmythgameZsnes','1','larch5'),('HostpluginmythgameMame','1','larch5'),('Hostpluginmythvideo_dvdcss','0','larch5'),('Hostpluginmythappletrailers','1','larch5'),('Hostpluginmythstream','1','larch5'),('Hostpluginmythvodka','1','larch5'),('HostMiro','1','larch5'),('HostpluginmythgameXE','1','larch5'),('HostpluginmythgameROMDB','1','larch5'),('HostXine','1','larch5'),('HOSTOSsize','5','larch5'),('HostMyhostname','larch5','larch5'),('NetworkControlEnabled','1','larch5'),('Hostaccessuser','1','larch5'),('WOLbackendReconnectWaitTime','5',NULL),('Hostbootsplash','0','larch5'),('HostIPeth0','192.168.1.177','larch5'),('HostNETMASKeth0','/24    255.255.255.0','larch5'),('HostGWeth0','192.168.1.1','larch5'),('HostDNSeth0','192.168.1.1','larch5'),('HostReceiverType','Hauppauge','larch5'),('HostRemoteType','no_remote','larch5'),('HOSTtemplatetype','Do Nothing','larch5'),('BackupDBLastRunStart','2010-11-29 17:02:26',NULL),('BackupDBLastRunEnd','2010-11-29 17:02:27',NULL),('StorageScheduler','Combination',NULL),('DisableAutomaticBackup','0',NULL),('BackendStopCommand','sudo sv stop mythbackend',NULL),('BackendStartCommand','sudo sv start mythbackend',NULL),('UPnP/WMPSource','0',NULL),('UPnP/RebuildDelay','30','larch5'),('GeneratePreviewRemotely','0','larch5'),('HWAccelPlaybackPreview','0','larch5'),('BrowseAllTuners','0','larch5'),('SubtitleCodec','UTF-8','larch5'),('ChannelGroupRememberLast','0','larch5'),('ChannelGroupDefault','-1','larch5'),('BrowseChannelGroup','0','larch5'),('UseFixedWindowSize','1','larch5'),('ScreenShotPath','/myth/video_stuff/screenshots','larch5'),('LircSocket','/var/run/lirc/lircd','larch5'),('BrowserDBSchemaVer','1002',NULL),('CDWriterDevice','default','larch5'),('MusicExitAction','prompt','larch5'),('mythvideo.db_group_view','1','larch5'),('mythvideo.db_group_type','0','larch5'),('MovieListCommandLine','/usr/share/mythtv/mythvideo/scripts/tmdb.pl -M','larch5'),('MoviePosterCommandLine','/usr/share/mythtv/mythvideo/scripts/tmdb.pl -P','larch5'),('MovieFanartCommandLine','/usr/share/mythtv/mythvideo/scripts/tmdb.pl -B','larch5'),('MovieDataCommandLine','/usr/share/mythtv/mythvideo/scripts/tmdb.pl -D','larch5'),('mythvideo.TrailersDir','/myth/video_stuff/trailers','larch5'),('mythvideo.TrailersRandomEnabled','1','larch5'),('mythvideo.TrailersRandomCount','3','larch5'),('mythvideo.TVListCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -M','larch5'),('mythvideo.TVPosterCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -P','larch5'),('mythvideo.TVFanartCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -F','larch5'),('mythvideo.TVBannerCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -B','larch5'),('mythvideo.TVDataCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -D','larch5'),('mythvideo.TVTitleSubCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -N','larch5'),('mythvideo.TVScreenshotCommandLine','/usr/share/mythtv/mythvideo/scripts/ttvdb.py -S','larch5'),('mythvideo.EnableAlternatePlayer','1','larch5'),('mythvideo.VideoAlternatePlayer','mplayer -fs -zoom -quiet -vo xv %s','larch5'),('AudioDefaultUpmix','1','larch5'),('AdvancedAudioSettings','0','larch5'),('SRCQualityOverride','0','larch5'),('SRCQuality','1','larch5'),('MusicDefaultUpmix','0','larch5'),('Country','US','larch5'),('OSDSubFont','FreeSans','larch5'),('CommFlagFast','0',NULL),('MultiChannelPCM','0','larch5'),('Audio48kOverride','0','larch5'),('PassThruDeviceOverride','0','larch5'),('MythArchiveM2VRequantiserCmd','M2VRequantiser','larch5');
-/*!40000 ALTER TABLE `settings` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `storagegroup`
---
-
-DROP TABLE IF EXISTS `storagegroup`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `storagegroup` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `groupname` varchar(32) NOT NULL,
-  `hostname` varchar(64) NOT NULL DEFAULT '',
-  `dirname` varchar(235) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `grouphostdir` (`groupname`,`hostname`,`dirname`),
-  KEY `hostname` (`hostname`)
-) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `storagegroup`
---
-
-LOCK TABLES `storagegroup` WRITE;
-/*!40000 ALTER TABLE `storagegroup` DISABLE KEYS */;
-INSERT INTO `storagegroup` (`id`, `groupname`, `hostname`, `dirname`) VALUES (1,'Default','larch5','/myth/tv/');
-/*!40000 ALTER TABLE `storagegroup` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `tvchain`
---
-
-DROP TABLE IF EXISTS `tvchain`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tvchain` (
-  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
-  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  `chainid` varchar(128) NOT NULL DEFAULT '',
-  `chainpos` int(10) NOT NULL DEFAULT '0',
-  `discontinuity` tinyint(1) NOT NULL DEFAULT '0',
-  `watching` int(10) NOT NULL DEFAULT '0',
-  `hostprefix` varchar(128) NOT NULL DEFAULT '',
-  `cardtype` varchar(32) NOT NULL DEFAULT 'V4L',
-  `input` varchar(32) NOT NULL DEFAULT '',
-  `channame` varchar(32) NOT NULL DEFAULT '',
-  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-  PRIMARY KEY (`chanid`,`starttime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `tvchain`
---
-
-LOCK TABLES `tvchain` WRITE;
-/*!40000 ALTER TABLE `tvchain` DISABLE KEYS */;
-/*!40000 ALTER TABLE `tvchain` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `tvosdmenu`
---
-
-DROP TABLE IF EXISTS `tvosdmenu`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tvosdmenu` (
-  `osdcategory` varchar(32) NOT NULL,
-  `livetv` tinyint(4) NOT NULL DEFAULT '0',
-  `recorded` tinyint(4) NOT NULL DEFAULT '0',
-  `video` tinyint(4) NOT NULL DEFAULT '0',
-  `dvd` tinyint(4) NOT NULL DEFAULT '0',
-  `description` varchar(32) NOT NULL,
-  PRIMARY KEY (`osdcategory`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `tvosdmenu`
---
-
-LOCK TABLES `tvosdmenu` WRITE;
-/*!40000 ALTER TABLE `tvosdmenu` DISABLE KEYS */;
-/*!40000 ALTER TABLE `tvosdmenu` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `upnpmedia`
---
-
-DROP TABLE IF EXISTS `upnpmedia`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `upnpmedia` (
-  `intid` int(10) unsigned NOT NULL DEFAULT '0',
-  `class` varchar(64) NOT NULL DEFAULT '',
-  `itemtype` varchar(128) NOT NULL DEFAULT '',
-  `parentid` int(10) unsigned NOT NULL DEFAULT '0',
-  `itemproperties` varchar(255) NOT NULL DEFAULT '',
-  `filepath` varchar(512) NOT NULL DEFAULT '',
-  `title` varchar(255) NOT NULL DEFAULT '',
-  `filename` varchar(512) NOT NULL DEFAULT '',
-  `coverart` varchar(512) NOT NULL DEFAULT '',
-  PRIMARY KEY (`intid`),
-  KEY `class` (`class`),
-  KEY `filepath` (`filepath`(333)),
-  KEY `parentid` (`parentid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `upnpmedia`
---
-
-LOCK TABLES `upnpmedia` WRITE;
-/*!40000 ALTER TABLE `upnpmedia` DISABLE KEYS */;
-/*!40000 ALTER TABLE `upnpmedia` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videocast`
---
-
-DROP TABLE IF EXISTS `videocast`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videocast` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `cast` varchar(128) NOT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videocast`
---
-
-LOCK TABLES `videocast` WRITE;
-/*!40000 ALTER TABLE `videocast` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videocast` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videocategory`
---
-
-DROP TABLE IF EXISTS `videocategory`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videocategory` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `category` varchar(128) NOT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videocategory`
---
-
-LOCK TABLES `videocategory` WRITE;
-/*!40000 ALTER TABLE `videocategory` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videocategory` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videocountry`
---
-
-DROP TABLE IF EXISTS `videocountry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videocountry` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `country` varchar(128) NOT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videocountry`
---
-
-LOCK TABLES `videocountry` WRITE;
-/*!40000 ALTER TABLE `videocountry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videocountry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videogenre`
---
-
-DROP TABLE IF EXISTS `videogenre`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videogenre` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `genre` varchar(128) NOT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videogenre`
---
-
-LOCK TABLES `videogenre` WRITE;
-/*!40000 ALTER TABLE `videogenre` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videogenre` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videometadata`
---
-
-DROP TABLE IF EXISTS `videometadata`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videometadata` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `title` varchar(128) NOT NULL,
-  `subtitle` text NOT NULL,
-  `tagline` varchar(255) DEFAULT NULL,
-  `director` varchar(128) NOT NULL,
-  `studio` varchar(128) DEFAULT NULL,
-  `plot` text,
-  `rating` varchar(128) NOT NULL,
-  `inetref` varchar(255) NOT NULL,
-  `homepage` text NOT NULL,
-  `year` int(10) unsigned NOT NULL,
-  `releasedate` date NOT NULL,
-  `userrating` float NOT NULL,
-  `length` int(10) unsigned NOT NULL,
-  `season` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `episode` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `showlevel` int(10) unsigned NOT NULL,
-  `filename` text NOT NULL,
-  `hash` varchar(128) NOT NULL,
-  `coverfile` text NOT NULL,
-  `childid` int(11) NOT NULL DEFAULT '-1',
-  `browse` tinyint(1) NOT NULL DEFAULT '1',
-  `watched` tinyint(1) NOT NULL DEFAULT '0',
-  `processed` tinyint(1) NOT NULL DEFAULT '0',
-  `playcommand` varchar(255) DEFAULT NULL,
-  `category` int(10) unsigned NOT NULL DEFAULT '0',
-  `trailer` text,
-  `host` text NOT NULL,
-  `screenshot` text,
-  `banner` text,
-  `fanart` text,
-  `insertdate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
-  PRIMARY KEY (`intid`),
-  KEY `director` (`director`),
-  KEY `title` (`title`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videometadata`
---
-
-LOCK TABLES `videometadata` WRITE;
-/*!40000 ALTER TABLE `videometadata` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videometadata` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videometadatacast`
---
-
-DROP TABLE IF EXISTS `videometadatacast`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videometadatacast` (
-  `idvideo` int(10) unsigned NOT NULL,
-  `idcast` int(10) unsigned NOT NULL,
-  UNIQUE KEY `idvideo` (`idvideo`,`idcast`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videometadatacast`
---
-
-LOCK TABLES `videometadatacast` WRITE;
-/*!40000 ALTER TABLE `videometadatacast` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videometadatacast` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videometadatacountry`
---
-
-DROP TABLE IF EXISTS `videometadatacountry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videometadatacountry` (
-  `idvideo` int(10) unsigned NOT NULL,
-  `idcountry` int(10) unsigned NOT NULL,
-  UNIQUE KEY `idvideo_2` (`idvideo`,`idcountry`),
-  KEY `idvideo` (`idvideo`),
-  KEY `idcountry` (`idcountry`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videometadatacountry`
---
-
-LOCK TABLES `videometadatacountry` WRITE;
-/*!40000 ALTER TABLE `videometadatacountry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videometadatacountry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videometadatagenre`
---
-
-DROP TABLE IF EXISTS `videometadatagenre`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videometadatagenre` (
-  `idvideo` int(10) unsigned NOT NULL,
-  `idgenre` int(10) unsigned NOT NULL,
-  UNIQUE KEY `idvideo_2` (`idvideo`,`idgenre`),
-  KEY `idvideo` (`idvideo`),
-  KEY `idgenre` (`idgenre`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videometadatagenre`
---
-
-LOCK TABLES `videometadatagenre` WRITE;
-/*!40000 ALTER TABLE `videometadatagenre` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videometadatagenre` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videosource`
---
-
-DROP TABLE IF EXISTS `videosource`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videosource` (
-  `sourceid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(128) NOT NULL DEFAULT '',
-  `xmltvgrabber` varchar(128) DEFAULT NULL,
-  `userid` varchar(128) NOT NULL DEFAULT '',
-  `freqtable` varchar(16) NOT NULL DEFAULT 'default',
-  `lineupid` varchar(64) DEFAULT NULL,
-  `password` varchar(64) DEFAULT NULL,
-  `useeit` smallint(6) NOT NULL DEFAULT '0',
-  `configpath` varchar(4096) DEFAULT NULL,
-  `dvb_nit_id` int(6) DEFAULT '-1',
-  PRIMARY KEY (`sourceid`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videosource`
---
-
-LOCK TABLES `videosource` WRITE;
-/*!40000 ALTER TABLE `videosource` DISABLE KEYS */;
-/*!40000 ALTER TABLE `videosource` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `videotypes`
---
-
-DROP TABLE IF EXISTS `videotypes`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `videotypes` (
-  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `extension` varchar(128) NOT NULL,
-  `playcommand` varchar(255) NOT NULL,
-  `f_ignore` tinyint(1) DEFAULT NULL,
-  `use_default` tinyint(1) DEFAULT NULL,
-  PRIMARY KEY (`intid`)
-) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `videotypes`
---
-
-LOCK TABLES `videotypes` WRITE;
-/*!40000 ALTER TABLE `videotypes` DISABLE KEYS */;
-INSERT INTO `videotypes` (`intid`, `extension`, `playcommand`, `f_ignore`, `use_default`) VALUES (1,'txt','',1,0),(2,'log','',1,0),(3,'mpg','Internal',0,0),(4,'avi','',0,1),(5,'vob','Internal',0,0),(6,'mpeg','Internal',0,0),(8,'iso','Internal',0,0),(9,'img','Internal',0,0),(10,'mkv','Internal',0,1),(11,'mp4','Internal',0,0),(12,'m2ts','Internal',0,0),(13,'evo','Internal',0,0),(14,'divx','Internal',0,0),(15,'mov','Internal',0,0),(16,'qt','Internal',0,0),(17,'wmv','Internal',0,0),(18,'3gp','Internal',0,0),(19,'asf','Internal',0,0),(20,'ogg','Internal',0,0),(21,'ogm','Internal',0,0),(22,'flv','Internal',0,0),(23,'ogv','Internal',0,0),(25,'nut','Internal',0,0),(26,'mxf','Internal',0,0),(27,'m4v','Internal',0,0),(28,'rm','Internal',0,0),(29,'ts','Internal',0,0),(30,'swf','Internal',0,0),(31,'f4v','Internal',0,0),(32,'nuv','Internal',0,0);
-/*!40000 ALTER TABLE `videotypes` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `weatherdatalayout`
---
-
-DROP TABLE IF EXISTS `weatherdatalayout`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `weatherdatalayout` (
-  `location` varchar(64) NOT NULL,
-  `dataitem` varchar(64) NOT NULL,
-  `weatherscreens_screen_id` int(10) unsigned NOT NULL,
-  `weathersourcesettings_sourceid` int(10) unsigned NOT NULL,
-  PRIMARY KEY (`location`,`dataitem`,`weatherscreens_screen_id`,`weathersourcesettings_sourceid`),
-  KEY `weatherdatalayout_FKIndex1` (`weatherscreens_screen_id`),
-  KEY `weatherdatalayout_FKIndex2` (`weathersourcesettings_sourceid`),
-  CONSTRAINT `weatherdatalayout_ibfk_1` FOREIGN KEY (`weatherscreens_screen_id`) REFERENCES `weatherscreens` (`screen_id`) ON DELETE CASCADE ON UPDATE CASCADE,
-  CONSTRAINT `weatherdatalayout_ibfk_2` FOREIGN KEY (`weathersourcesettings_sourceid`) REFERENCES `weathersourcesettings` (`sourceid`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `weatherdatalayout`
---
-
-LOCK TABLES `weatherdatalayout` WRITE;
-/*!40000 ALTER TABLE `weatherdatalayout` DISABLE KEYS */;
-/*!40000 ALTER TABLE `weatherdatalayout` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `weatherscreens`
---
-
-DROP TABLE IF EXISTS `weatherscreens`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `weatherscreens` (
-  `screen_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `draworder` int(10) unsigned NOT NULL,
-  `container` varchar(64) NOT NULL,
-  `hostname` varchar(64) DEFAULT NULL,
-  `units` tinyint(3) unsigned NOT NULL,
-  PRIMARY KEY (`screen_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `weatherscreens`
---
-
-LOCK TABLES `weatherscreens` WRITE;
-/*!40000 ALTER TABLE `weatherscreens` DISABLE KEYS */;
-/*!40000 ALTER TABLE `weatherscreens` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `weathersourcesettings`
---
-
-DROP TABLE IF EXISTS `weathersourcesettings`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `weathersourcesettings` (
-  `sourceid` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `source_name` varchar(64) NOT NULL,
-  `update_timeout` int(10) unsigned NOT NULL DEFAULT '600',
-  `retrieve_timeout` int(10) unsigned NOT NULL DEFAULT '60',
-  `hostname` varchar(64) DEFAULT NULL,
-  `path` varchar(255) DEFAULT NULL,
-  `author` varchar(128) DEFAULT NULL,
-  `version` varchar(32) DEFAULT NULL,
-  `email` varchar(255) DEFAULT NULL,
-  `types` mediumtext,
-  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  PRIMARY KEY (`sourceid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `weathersourcesettings`
---
-
-LOCK TABLES `weathersourcesettings` WRITE;
-/*!40000 ALTER TABLE `weathersourcesettings` DISABLE KEYS */;
-/*!40000 ALTER TABLE `weathersourcesettings` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `websites`
---
-
-DROP TABLE IF EXISTS `websites`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `websites` (
-  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `category` varchar(100) NOT NULL,
-  `name` varchar(100) NOT NULL,
-  `url` varchar(255) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `websites`
---
-
-LOCK TABLES `websites` WRITE;
-/*!40000 ALTER TABLE `websites` DISABLE KEYS */;
-/*!40000 ALTER TABLE `websites` ENABLE KEYS */;
-UNLOCK TABLES;
-/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-
--- Dump completed on 2010-11-29 17:03:00
-- 
cgit v0.12


From b571d821fa367c9977064954e238a72d736a4436 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 6 Nov 2013 14:22:42 -0600
Subject: LinHES-config: rename video_stuff to artwork. ref #935

---
 abs/core/LinHES-config/PKGBUILD     | 4 ++--
 abs/core/LinHES-config/mv_config.py | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 7a22626..072e6ae 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.0
-pkgrel=13
+pkgrel=14
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -135,7 +135,7 @@ package() {
 
 md5sums=('c832059cd635359d39a2ac3166ff463c'
          '3f6855b7bb860a44f96a972c2e80f497'
-         'aaeb581275433649ff74e05da5e61a78'
+         'febc2b6caaf6e79277fc0b5bcac806c9'
          '2596460462cf6c889cf8f95485537b20'
          '985891a43f7c4c983eb2a362162f1a0f'
          'fda01259a4bc74d83c9092d338bd247a'
diff --git a/abs/core/LinHES-config/mv_config.py b/abs/core/LinHES-config/mv_config.py
index f15f41c..18a7144 100755
--- a/abs/core/LinHES-config/mv_config.py
+++ b/abs/core/LinHES-config/mv_config.py
@@ -13,7 +13,7 @@ NOOPDEBUG="FALSE"
 TEMP_TEMPLATES="/tmp/templates"
 share_exclude_dir=['mysql','srv']
 
-SG_MAP_AUTONFS_SKIP=['media/tv','media/video','media/video_stuff','media/streaming']
+SG_MAP_AUTONFS_SKIP=['media/tv','media/video','media/artwork','media/streaming']
 
 MAP_AUTONFS_SKIP=['lost+found','media','backup']
 nfs_options="hard,intr,actimeo=0"
-- 
cgit v0.12


From 52695f08ac6e528893ab0787962fe4a330ad90e4 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 6 Nov 2013 14:27:29 -0600
Subject: LinHES-system: rename video_stuff to artwork. ref #935

---
 abs/core/LinHES-system/PKGBUILD             |  6 +++---
 abs/core/LinHES-system/add_storage.py       | 10 +++++-----
 abs/core/LinHES-system/create_media_dirs.sh | 10 +++++-----
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index a28ecfa..d746ba2 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=31
+pkgrel=32
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -94,11 +94,11 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
-         '2cc4a31e086f2370439156b027dec7cd'
+         'c9f6f08c415b8adee2c45ebeb5c11edb'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
          '8f474e019d5fcb775497aca355d61b0b'
-         '16f079dab35dde6efd55bf6cf4e2fb2f'
+         '7f7c49d859abdaa0b5fca399241d4998'
          '3e60b17892e5b8214d47dcfddf5215a4'
          '57ec994cc3964a10c00580e89ebcae35'
          'ea315f41dcd6c978e546c95fc05546cf'
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
index 72056f8..3badbdc 100644
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -32,11 +32,11 @@ SG_MAP_BE={ 'Default'    :'media/tv',
 
 SG_MAP_FE={
   'Videos'     :'media/video',
-  'Trailers'   :'media/video_stuff/trailers',
-  'Coverart'   :'media/video_stuff/coverart',
-  'Fanart'     :'media/video_stuff/fanart',
-  'Banners'    :'media/video_stuff/banners',
-  'Screenshots':'media/video_stuff/screenshots',
+  'Trailers'   :'media/artwork/trailers',
+  'Coverart'   :'media/artwork/coverart',
+  'Fanart'     :'media/artwork/fanart',
+  'Banners'    :'media/artwork/banners',
+  'Screenshots':'media/artwork/screenshots',
   }
 
 FS_LIST_BE=[]
diff --git a/abs/core/LinHES-system/create_media_dirs.sh b/abs/core/LinHES-system/create_media_dirs.sh
index 9e64301..6af6eb7 100644
--- a/abs/core/LinHES-system/create_media_dirs.sh
+++ b/abs/core/LinHES-system/create_media_dirs.sh
@@ -52,11 +52,11 @@ media/tmp
 media/archive
 media/pretty
 media/streaming
-media/video_stuff/trailers
-media/video_stuff/coverart
-media/video_stuff/fanart
-media/video_stuff/screenshots
-media/video_stuff/banners
+media/artwork/trailers
+media/artwork/coverart
+media/artwork/fanart
+media/artwork/screenshots
+media/artwork/banners
 media/games/screenshots
 media/games/fanart
 media/games/boxart
-- 
cgit v0.12


From 3dd79ac0d69d48f8f018121c5a7c1c5e7c56ba8c Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 6 Nov 2013 15:29:19 -0600
Subject: LinHES-system: lh_backend_control.sh: update OSD message

---
 abs/core/LinHES-system/PKGBUILD              | 4 ++--
 abs/core/LinHES-system/lh_backend_control.sh | 8 +++-----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index d746ba2..0c2a055 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=32
+pkgrel=33
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -97,7 +97,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          'c9f6f08c415b8adee2c45ebeb5c11edb'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
-         '8f474e019d5fcb775497aca355d61b0b'
+         'ca63946920ba33de1f15abda83e74e40'
          '7f7c49d859abdaa0b5fca399241d4998'
          '3e60b17892e5b8214d47dcfddf5215a4'
          '57ec994cc3964a10c00580e89ebcae35'
diff --git a/abs/core/LinHES-system/lh_backend_control.sh b/abs/core/LinHES-system/lh_backend_control.sh
index c116cdb..4b0f184 100644
--- a/abs/core/LinHES-system/lh_backend_control.sh
+++ b/abs/core/LinHES-system/lh_backend_control.sh
@@ -24,7 +24,7 @@ case $1 in
             then
                 $MV_BEC stop $dbhost
             else
-                msg_client.py --msg "Stopping backend"
+                msg_client.py --msg "Stopping MythBackend"
                 sudo sv stop mythbackend
             fi
         else
@@ -41,7 +41,7 @@ case $1 in
             then
                 $MV_BEC start $dbhost
             else
-                msg_client.py --msg "Starting backend"
+                msg_client.py --msg "Starting MythBackend"
                 sudo sv start mythbackend
             fi
         else
@@ -58,7 +58,7 @@ case $1 in
             then
                 $MV_BEC restart $dbhost
             else
-                msg_client.py --msg "Restarting backend"
+                msg_client.py --msg "Restarting MythBackend"
                 sudo sv restart mythbackend
             fi
         else
@@ -71,5 +71,3 @@ case $1 in
         ;;
 
 esac
-
-
-- 
cgit v0.12


From 1468cf62b07b10ab3d87bca6f54b20dc8b816abd Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 7 Nov 2013 09:23:43 -0600
Subject: supplemental-web: bestart.cgi, bestop.cgi, beclear.cgi: update OSD
 messages

---
 abs/core/supplemental-web/PKGBUILD        |  2 +-
 abs/core/supplemental-web/cgi/beclear.cgi |  2 +-
 abs/core/supplemental-web/cgi/bestart.cgi | 15 +++++++++------
 abs/core/supplemental-web/cgi/bestop.cgi  | 15 ++++++++-------
 4 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/abs/core/supplemental-web/PKGBUILD b/abs/core/supplemental-web/PKGBUILD
index 090b6ec..5448bcc 100644
--- a/abs/core/supplemental-web/PKGBUILD
+++ b/abs/core/supplemental-web/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=supplemental-web
 pkgname=('supplemental-web' 'supplemental-web-slave')
 pkgver=8.0
-pkgrel=11
+pkgrel=12
 arch=('i686' 'x86_64')
 license=('GPL')
 backup=('data/srv/httpd/cgi/extra.cfg.txt')
diff --git a/abs/core/supplemental-web/cgi/beclear.cgi b/abs/core/supplemental-web/cgi/beclear.cgi
index 489466d..941c958 100644
--- a/abs/core/supplemental-web/cgi/beclear.cgi
+++ b/abs/core/supplemental-web/cgi/beclear.cgi
@@ -1,4 +1,4 @@
 #!/bin/bash
 /usr/bin/mythbackend --clearcache
-MESSAGE="settings cache is cleared "
+MESSAGE="MythBackend Settings Cache Cleared"
 #/usr/bin/notify.py SYS  "$MESSAGE" 2>/dev/null
diff --git a/abs/core/supplemental-web/cgi/bestart.cgi b/abs/core/supplemental-web/cgi/bestart.cgi
index e09e42b..a7a49b2 100644
--- a/abs/core/supplemental-web/cgi/bestart.cgi
+++ b/abs/core/supplemental-web/cgi/bestart.cgi
@@ -1,10 +1,13 @@
 #!/bin/bash
-# MESSAGE="Trying to start `hostname` B.E."
-# /usr/bin/func "*" call msg display "$MESSAGE" &
+#MESSAGE="Starting `hostname` MythBackend"
+#/usr/bin/func "*" call msg display "$MESSAGE" &
 
-sudo /sbin/sv start mythbackend
-
-MESSAGE="`hostname` B.E. started"
-/usr/bin/func "*" call msg display "$MESSAGE" &
+svresult=`sudo /sbin/sv start mythbackend`
 
+if [[ $svresult == *"run: "* ]]; then
+    MESSAGE="`hostname` MythBackend Started"
+else
+    MESSAGE="`hostname` MythBackend didn't Start\nCheck MythBackend Log"
+fi
 
+/usr/bin/func "*" call msg display "$MESSAGE" &
diff --git a/abs/core/supplemental-web/cgi/bestop.cgi b/abs/core/supplemental-web/cgi/bestop.cgi
index c9d7fad..2d31904 100644
--- a/abs/core/supplemental-web/cgi/bestop.cgi
+++ b/abs/core/supplemental-web/cgi/bestop.cgi
@@ -1,12 +1,13 @@
 #!/bin/bash
-MESSAGE="Trying to stop `hostname` B.E."
-/usr/bin/func "*" call msg display "$MESSAGE" &
-
-sudo /sbin/sv stop mythbackend
-
-MESSAGE="`hostname` B.E. stopped"
+MESSAGE="Stopping `hostname` MythBackend..."
 /usr/bin/func "*" call msg display "$MESSAGE" &
 
+svresult=`sudo /sbin/sv stop mythbackend`
 
+if [[ $svresult == *"down: "* ]]; then
+    MESSAGE="`hostname` MythBackend Stopped"
+else
+    MESSAGE="`hostname` MythBackend didn't Stop"
+fi
 
-
+/usr/bin/func "*" call msg display "$MESSAGE" &
-- 
cgit v0.12


From 75f54194c0e1cf6e2f8f9c685888439d00f4df9c Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 8 Nov 2013 12:41:57 -0600
Subject: LinHES-system: add_storage.py: add more explaination of what the tool
 is going to do and improve help text.

---
 abs/core/LinHES-system/PKGBUILD       |   4 +-
 abs/core/LinHES-system/add_storage.py | 133 +++++++++++++++++++++-------------
 2 files changed, 85 insertions(+), 52 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 0c2a055..3234ee2 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=33
+pkgrel=34
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -94,7 +94,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
-         'c9f6f08c415b8adee2c45ebeb5c11edb'
+         'f2b16283a8c89b08d5e5360f7bf4c026'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
          'ca63946920ba33de1f15abda83e74e40'
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
index 3badbdc..600c8fe 100644
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -153,7 +153,7 @@ class disk_device:
 
 
     def partition_disk(self):
-        print "    Creating new partiton table"
+        print "    Creating new partition table"
         cmd = "parted -s -a optimal %s mklabel gpt" %self.block_path
         runcmd(cmd)
         cmd = "parted -s -a optimal %s mkpart primary \" 1 -1\"" %self.block_path
@@ -190,20 +190,23 @@ class disk_device:
                     break
         return fstype
 
-
-    def format_disk(self):
+    def lookup_format(self):
         fstab = self.read_fstab()
-        #lookup format
         current_media_mount = self.find_options_type(fstab)[1]
         new_fstype = self.find_fstype(current_media_mount)
         #setting self.new_fstype so that it can be referenced when setting fstab
         self.new_fstype = new_fstype
+        return
+
+    def format_disk(self):
+        #lookup format
+        #self.lookup_format()
         #do format
-        if new_fstype == "xfs":
-            cmd = "mkfs -t %s -f %s " %(new_fstype,self.block_partition)
+        if self.new_fstype == "xfs":
+            cmd = "mkfs -t %s -f %s " %(self.new_fstype,self.block_partition)
         else:
-            cmd = "mkfs -t %s %s " %(new_fstype,self.block_partition)
-        print "    Formating %s with %s" %(self.block_partition,new_fstype)
+            cmd = "mkfs -t %s %s " %(self.new_fstype,self.block_partition)
+        print "    Formatting %s with %s" %(self.block_partition,self.new_fstype)
         runcmd(cmd)
         return
 
@@ -286,8 +289,13 @@ class disk_device:
         except:
             os.makedirs(self.new_mount_point)
         if no_mount == False:
-            cmd = "mount %s" %self.new_mount_point
-            runcmd(cmd)
+            if os.path.ismount(self.new_mount_point):
+                print "    Disk already mounted, will not mount:\n       %s" %self.new_mount_point
+                pass
+            else:
+                print "    Mounting %s" %self.new_mount_point
+                cmd = "mount %s" %self.new_mount_point
+                runcmd(cmd)
         return
 
     def mkdirs(self,FS_LIST):
@@ -447,16 +455,16 @@ def prompt_to_add(current_drive,destruction = True):
     loop = True
     if destruction :
         prompt = '''
-        Adding the disk will remove all contents on the disk.
+        ** Adding this disk will remove all contents on the disk. **
+        This disk will be partitioned and formatted.
 
-        Do you wish enable this disk for MythTV storage(Y/N)?:'''
+        Enable this disk for MythTV storage (Y/N)?:'''
     else:
         prompt = '''
-        ** Preserving existing data  **
-         will not format or partition
+        ** Preserving existing contents on the disk. **
+        This disk will NOT be partitioned or formatted.
 
-        Do you wish enable this disk for MythTV storage(Y/N)?:
-        '''
+        Enable this disk for MythTV storage (Y/N)?:'''
     while loop:
         str1 = raw_input(prompt)
 
@@ -470,11 +478,17 @@ def prompt_to_add(current_drive,destruction = True):
         rc = False
     return rc
 
-def prompt_to_continue():
+def prompt_to_continue(process_list):
     loop = True
     #while loop:
-    print "\n\n\n\n"
-    str1 = raw_input("\n    Ready to add additional storage!\n    Press Y to add disk(s), anything else to abort:")
+    print "\n\n\n   Ready to add additional storage!\n"
+    if destruction:
+        print "** WARNING: These disk(s) WILL be partitioned and formatted. **\n   ** All content on these disk(s) will be erased. **"
+    else:
+        print "   ** These disk(s) will NOT be partitioned and formatted. **"  
+    for i in process_list:
+        print "      %s" %(i.get_name())
+    str1 = raw_input("\n   Press Y to add disk(s), any other key to cancel:")
 
         #if str1 in ['Y','N','y','n']:
         #    loop = False
@@ -484,6 +498,7 @@ def prompt_to_continue():
         rc = True
     else:
         rc = False
+        print "\nCancelled: No disk(s) added to your system."
     print "-----"
     return rc
 
@@ -499,7 +514,7 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
     The content on these storage groups will
     only be available while the system is online.
 
-    Do you wish enable Backend Storage Groups(Y/N)?:'''
+    Enable Backend Storage Groups (Y/N)?:'''
 
         while loop:
             str1 = raw_input(prompt_string)
@@ -519,14 +534,14 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
     if dir_fe_sg != True:
         loop = True
         print ""
-        print "+" * 20
+        print "    ++++++++++++++++++++"
         prompt_string='''
     Frontend Storage Groups are used for artwork and videos.
 
     The content on these storage groups will
     only be available while the system is online.
 
-    Do you wish enable Frontend Storage Groups(Y/N)?:'''
+    Enable Frontend Storage Groups (Y/N)?:'''
         while loop:
             str1 = raw_input(prompt_string)
             if str1 in ['Y','N','y','n']:
@@ -548,7 +563,7 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
 
 def remove_pickle():
     try:
-        print "* Resetting list of known disks."
+        print "\n* Removing list of known disks.\n"
         os.remove(pickle_file)
     except:
         pass
@@ -594,6 +609,7 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
                 dstatus = "    Ignoring - Disk has been previously skipped and is mounted:"
 
             print "\n"
+            print "    --------------------------------------------------------"
             print dstatus
             print "        model: %s" %i.model
             print "        location: %s" %i.block_path
@@ -604,31 +620,31 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
             if not scan_only:
                 print "\n"
                 print "    --------------------------------------------------------"
-                print "    Found new disk:"
+                print "    Found New Disk:"
                 print "        model: %s" %i.model
                 print "        location: %s" %i.block_path
                 print "        size: %s " %i.device_size
 
                 if prompt_to_add(i,destruction) :
-                    print "\n    Disk will be added to the storage pool!"
+                    print "\n    %s will be added to your system!" %i.model
                     process_list.append(i)
                 else:
                     no_process_list.append(i)
             else:
                 process_list.append(i)
     print "\n"
-    print "  End of Scan"
+    print "  Scan Finished"
     print "-" * 60
 
     if scan_only:
         if len(process_list) > 0:
-            print "    Unknown or unmounted disks:"
+            print "    Unknown or Unmounted Disks:"
             f = open('/tmp/scan_report', 'w')
             for i in process_list:
                 f.write("disk: %s , location: %s ,size: %s \n" %(i.model,i.block_path,i.device_size))
                 print "\n"
                 print "    ---------------------------------------------------------"
-                print "    Found new disk:"
+                print "    Found New Disk:"
                 print "        model: %s" %i.model
                 print "        location: %s" %i.block_path
                 print "        size: %s " %i.device_size
@@ -646,7 +662,7 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
             system_drive_list.remove(y)
         write_known_drive_list(system_drive_list)
     else:
-        print "\nDid not find any new disks to add.\n"
+        print "\nThere are no disks to add to your system.\n\nFor more options: add_storage.py --help\n"
         write_known_drive_list(system_drive_list)
             #BE = MythBE(db=DB)
 
@@ -660,12 +676,13 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
         print "\n  Will add %s disk(s) to your system." %len(process_list)
 
         dir_be_sg , dir_fe_sg = prompt_sg(dir_be_sg,dir_fe_sg)
-        if prompt_to_continue() == True:
+        if prompt_to_continue(process_list) == True:
             write_known_drive_list(system_drive_list)
             disk_num = last_disk_num()
             for i in process_list:
                 print "    Disk: %s" %(i.get_name())
                 disk_num = disk_num + 1
+                i.lookup_format()
                 if destruction == True:
                     i.partition_disk()
                     i.format_disk()
@@ -862,7 +879,6 @@ class reconstruct_path:
         cmd = "ln -s %s %s" %(self.mount_point,disk_ln)
         runcmd(cmd)
 
-
     def add_fstab(self):
         #new_fstab_list=['UUID=', 'mount_point', 'auto', 'defaults', '0', '1']
         new_fstab_list=['UUID=', 'mount_point', self.fstype, 'defaults', '0', '1']
@@ -897,8 +913,13 @@ class reconstruct_path:
         except:
             os.makedirs(self.mount_point)
         if no_mount == False :
-            cmd = "mount %s" %self.mount_point
-            runcmd(cmd)
+            if os.path.ismount(self.mount_point):
+                print "    Disk already mounted, will not mount:\n       %s" %self.mount_point
+                pass
+            else:
+                print "    Mounting %s" %self.mount_point
+                cmd = "mount %s" %self.mount_point
+                runcmd(cmd)
         return
 
     def write_config(self):
@@ -917,14 +938,14 @@ class reconstruct_path:
         return
 
 def reconstruct_mounts(no_mount):
-    print "Recreating disks based on contents of /etc/storage.d"
+    print "\nRecreating disks from contents of /etc/storage.d/"
     for conf_file in glob.glob('%s/*.conf' %storage_dir):
         print "\n"
         cf = reconstruct_path(conf_file)
 
         #print cf.get_conf()
         #print cf.get_uuid()
-        print "    %s" %cf.get_mount_point()
+        print "    Recreating %s" %cf.get_mount_point()
         #print cf.get_shareable()
         #print cf.get_is_myth_mount()
         #print cf.get_disk_num()
@@ -934,6 +955,7 @@ def reconstruct_mounts(no_mount):
         cf.symlink_disk()
         cf.mount_disk(no_mount)
 
+    print "\n\nDone recreating disks.\n"
     pass
 
 
@@ -941,31 +963,43 @@ def usage():
     help='''
     add_storage.py finds and sets up disks for MythTV usage.
     It's a powerful tool that could destroy data if not used correctly,
-        so please be careful.
+        please be careful.
+
+    Scanned disks are ignored if they are mounted or have been
+        previously skipped by add_storage.py.
 
     The file system type for disks added by add_storage.py is 
-        automatically set to the type you selected at install.
+        automatically set to the type selected for the data partition
+        at install.
 
-    Normal operations include (in this order):
+    Normal operations without options include (in this order):
         Partition the disk
         Format the disk
         Add disk to /etc/fstab
         Mount the disk
         Create the directories
-        Write out the config file to /etc/storage.d
+        Write out the disk config file to /etc/storage.d/
+        Create disk# symlink at /data/storage/
+        Create /myth symlink (if applicable)
         Add new locations to MythTV storage groups
 
     Options:
-    --no_mount:         Do not mount the disk, only add it to /etc/fstab
-                        and create the directory.
+    --add_be_sg:        Create the storage group directories for backup,
+                           tv and streaming. Excludes artwork and video.
+    --add_fe_sg:        Create the storage group directories for artwork
+                           and video. Excludes backup, tv and streaming.
+    -h, --help:         Show this help message.
+    --new_init:         Erase the list of known disks and rescan.
     --no_destruction:   Will not partition or format the disk.
-                        This can be used to import disks from other systems.
-    --new_init:         Erase the list of new disks and rescan.
+                           All other normal operations will be performed.
+                           Can be used to import disks from other systems.
+    --no_mount:         Do not mount the disk.
+                           All other normal operations will be performed.
+    --reconstruct:      Recreate mount point, /myth symlink, fstab entry,
+                           /data/storage/disk# symlink, and mount the disk.
+                           no_mount is the only option that works with
+                           reconstruct.
     --report:           Scan disks and print new found disks.
-    --add_fe_sg:        Create the storage group directories for artwork
-                        and video. Excludes backup, tv and streaming.
-    --add_be_sg:        Create the storage group directories for backup,
-                        tv and streaming.
     '''
     print help
     sys.exit(0)
@@ -988,9 +1022,9 @@ if __name__ == "__main__":
         pass
 
     if not os.geteuid()==0:
-        sys.exit("\nRoot access is required to run this program\n")
+        sys.exit("\nRoot access is required to run this program.\n")
 
-    if "--help" in sys.argv:
+    if "--help" in sys.argv or "-h" in sys.argv:
         usage()
 
     if "--install_call" in sys.argv:
@@ -1014,7 +1048,6 @@ if __name__ == "__main__":
     if "--add_be_sg" in sys.argv:
         dir_be_sg = True
 
-
     if "--reconstruct" in sys.argv:
         reconstruct = True
 
-- 
cgit v0.12


From 6df210dbea6bd619cf63a276e4cc3ebffbfe7ed5 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 9 Nov 2013 11:25:40 -0600
Subject: LinHES-system: add_storage.py: lookup_formate for --double_myth
 option

---
 abs/core/LinHES-system/PKGBUILD       | 4 ++--
 abs/core/LinHES-system/add_storage.py | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 3234ee2..e2f4b47 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=34
+pkgrel=36
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -94,7 +94,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
-         'f2b16283a8c89b08d5e5360f7bf4c026'
+         '2f0c92539ae35314ac97710dbb7e9f3a'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
          'ca63946920ba33de1f15abda83e74e40'
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
index 600c8fe..073bc96 100644
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -761,6 +761,7 @@ def myth_main(no_mount,install_call,dir_fe_sg):
     i.set_mmount(True)
     i.set_partition("7")
     i.set_disk_num(0)
+    i.lookup_format()
     i.add_fstab(True)
     #if not install_call:
     i.mount_disk(no_mount)
-- 
cgit v0.12


From 738b3ecedc0aec27a9a67f6c605fb02a3e37f474 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 12 Nov 2013 12:58:44 -0600
Subject: LinHES-system: lh_system_backup_job: create copy of system_backups on
 second disk if it exists. closes #936.

---
 abs/core/LinHES-system/PKGBUILD             |  4 ++--
 abs/core/LinHES-system/lh_system_backup_job | 29 +++++++++++++++++++++++++++--
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index e2f4b47..ab3f438 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=36
+pkgrel=37
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -90,7 +90,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          '33fbebbd546672cedd3c5e7350ab414e'
          'c773d8caacba8fbd4968e8afe5137bc6'
          '3edef50a49a47694bf8add39cc160add'
-         '5e17e0786afd891550a660f646076308'
+         'e8f178a913862e09dfd422a182f41f9e'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
index e095a97..c3f4e72 100644
--- a/abs/core/LinHES-system/lh_system_backup_job
+++ b/abs/core/LinHES-system/lh_system_backup_job
@@ -7,7 +7,8 @@ MYTH_RUN_STATUS="1"
 . /etc/profile
 . /etc/systemconfig
 BACKUPDIR=/data/storage/disk0/backup/system_backups
-DELETE_DAYS=21
+SECBACKUPLINK=/data/storage/disk1
+KeepBackups=13
 DATE=`date +%F_%H-%M`
 backup_status=0
 #
@@ -140,7 +141,11 @@ function update_backup_status(){
 
 function remove_old_backups(){
     #remove old backups
-    find $BACKUPDIR/backup*.tgz -type f -mtime +$DELETE_DAYS -delete
+    NumBackups=`ls $BACKUPDIR/backup*.tgz|wc -l`
+    if [[ $NumBackups > $KeepBackups ]]; then
+        numdel=$(($NumBackups-$KeepBackups))
+        rm -f `ls $BACKUPDIR/backup*.tgz -tr1|head -$numdel`
+    fi
 }
 
 
@@ -168,6 +173,26 @@ function remote_backup(){
                 /usr/bin/func  ${RemoteBackupDir} copyfile  -f  $BACKUPDIR/backup.$DATE.tgz  --remotepath $BACKUPDIR/MBE_$DATE.tgz
             fi
         fi
+    else  #do local copy to SECBACKUPLINK
+        echo "Remote backup is not enabled, copying backup to $SECBACKUPLINK if it exists"
+        SECBACKUPDISK=`readlink $SECBACKUPLINK`
+        SECBACKUP=$SECBACKUPDISK/backup
+
+        if [ -n "$SECBACKUPDISK" ]; then
+            if [ `mountpoint -q -d $SECBACKUPDISK` ]; then
+                if [ ! -d "$SECBACKUP" ]; then
+                    mkdir -p -m 775 $SECBACKUP
+                    echo "Created $SECBACKUP"
+                    chown mythtv:users $SECBACKUP
+                fi
+                echo "Copying systems_backups"
+                rsync -au --delete $BACKUPDIR $SECBACKUP
+            else
+                echo "$SECBACKUPDISK isn't mounted."
+            fi
+        else
+            echo "Link $SECBACKUPLINK doesn't exist."
+        fi
     fi
 }
 
-- 
cgit v0.12


From 33343a58483364c15567ad02ed27988a1f4f69e2 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 12 Nov 2013 13:17:08 -0600
Subject: google-chrome: update to 31.0.1650.48

---
 abs/extra/google-chrome/PKGBUILD | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/abs/extra/google-chrome/PKGBUILD b/abs/extra/google-chrome/PKGBUILD
index 085418c..e0aadc8 100644
--- a/abs/extra/google-chrome/PKGBUILD
+++ b/abs/extra/google-chrome/PKGBUILD
@@ -5,7 +5,7 @@
 # or use: $ curl -s https://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/other.xml.gz | gzip -df | awk -F\" '/pkgid/{ sub(".*-","",$4); print $4": "$10 }'
 
 pkgname=google-chrome
-pkgver=30.0.1599.101
+pkgver=31.0.1650.48
 pkgrel=1
 pkgdesc="An attempt at creating a safer, faster, and more stable browser (Stable Channel)"
 arch=('i686' 'x86_64')
@@ -23,10 +23,10 @@ _channel=stable
 _arch=i386
 [ "$CARCH" = 'x86_64' ] && _arch=amd64
 source=("google-chrome-${_channel}_${pkgver}_${_arch}.deb::https://dl.google.com/linux/direct/google-chrome-${_channel}_current_${_arch}.deb"
-        "$url/intl/en/eula_text.html")
-md5sums=('fa5d706a9f7ef0682de6b665c20f302f'
+        'https://www.google.com/intl/en/chrome/browser/privacy/eula_text.html')
+md5sums=('2927095d2011c0ff771e5289d73aa240'
          '6d57da7476a4b1b7a81821d9c036425c')
-[ "$CARCH" = 'x86_64' ] && md5sums[0]='9abdef7ee0422f7dabb16941453551cc'
+[ "$CARCH" = 'x86_64' ] && md5sums[0]='2927095d2011c0ff771e5289d73aa240'
 
 #PKGEXT='.pkg.tar'
 
-- 
cgit v0.12


From 404d8881490095229560d5820ea56e8ba0b7f172 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 12 Nov 2013 15:32:44 -0600
Subject: google-chrome: rename google-chrome-stable to google-chrome

---
 abs/extra/google-chrome/PKGBUILD | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/abs/extra/google-chrome/PKGBUILD b/abs/extra/google-chrome/PKGBUILD
index e0aadc8..a113f2d 100644
--- a/abs/extra/google-chrome/PKGBUILD
+++ b/abs/extra/google-chrome/PKGBUILD
@@ -6,7 +6,7 @@
 
 pkgname=google-chrome
 pkgver=31.0.1650.48
-pkgrel=1
+pkgrel=2
 pkgdesc="An attempt at creating a safer, faster, and more stable browser (Stable Channel)"
 arch=('i686' 'x86_64')
 url="https://www.google.com/chrome"
@@ -55,4 +55,7 @@ package() {
   msg2 "Removing the Debian-intended cron job and duplicated images"
   rm -r "$pkgdir"/etc/cron.daily/ "$pkgdir"/opt/google/chrome/cron/
   rm "$pkgdir"/opt/google/chrome/product_logo_*.png
+
+  msg2 "Rename google-chrome-stable to google-chrome"
+  mv "$pkgdir"/usr/bin/google-chrome-stable "$pkgdir"/usr/bin/google-chrome
 }
-- 
cgit v0.12


From 65d116fd70f48623c761c9375c31ab6ee6fcc179 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 13 Nov 2013 10:11:18 -0600
Subject: rsyslog: log_care.sh: keep backups based on number rather than time.

---
 abs/core/rsyslog/PKGBUILD    |  4 ++--
 abs/core/rsyslog/log_care.sh | 22 ++++++++++++----------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/abs/core/rsyslog/PKGBUILD b/abs/core/rsyslog/PKGBUILD
index e8084ea..10ff5fa 100644
--- a/abs/core/rsyslog/PKGBUILD
+++ b/abs/core/rsyslog/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=rsyslog
 pkgver=5.8.6
-pkgrel=9
+pkgrel=10
 pkgdesc="An enhanced multi-threaded syslogd with a focus on security and reliability"
 url="http://www.rsyslog.com/"
 arch=('i686' 'x86_64')
@@ -51,4 +51,4 @@ md5sums=('c46db0496066b82faf735bd4222208d7'
          'a18bbcbb6ebdaa13a6ec6d9f3d9eb2da'
          '1a0cd4530dd5d1439456d5ae230574d9'
          'df5cb090691db8640c489981ba3d0798'
-         'f20c660ec9444613df0ad078944b31ec')
+         'cd39e6edc1fcbbae2093c40c880e0079')
diff --git a/abs/core/rsyslog/log_care.sh b/abs/core/rsyslog/log_care.sh
index b0a774b..ced0f06 100644
--- a/abs/core/rsyslog/log_care.sh
+++ b/abs/core/rsyslog/log_care.sh
@@ -1,14 +1,16 @@
 #!/bin/bash
 MYTH_RUN_STATUS=1
 . /etc/profile
-YEAR=`date +%Y`
-LASTYEAR=$(($YEAR - 1))
-for DATE in $YEAR $LASTYEAR
-do
-    echo "Compressing log files"
-    find /var/log/$DATE* -mtime +1 -exec gzip -9 {} \;
+
+BackupDir="/var/log/20*-*-*"
+KeepBackups=14
+NumBackups=`ls -d $BackupDir | wc -l`
+
+if [[ $NumBackups > $KeepBackups ]]; then
     echo "Deleting old log files"
-    find /var/log/$DATE* -mtime +12 -exec rm -rf {} \;
-    echo "Deleting empty directories"
-    find /var/log/$DATE* -depth -type d -empty -exec rm -rf {} \;
-done
+    numdel=$(($NumBackups-$KeepBackups))
+    rm -rf `ls -d $BackupDir | head -$numdel`
+fi
+
+echo "Compressing log files"
+find $BackupDir -type f -mtime +2 \( ! -iname "*.gz" \) -exec gzip -9 {} \;
-- 
cgit v0.12


From 806fc99ed3a2c281846aa82120244e0ce593c48f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 13 Nov 2013 16:00:18 -0600
Subject: LinHES-system: myth_status.py: fix for Myth .27. closes #937

---
 abs/core/LinHES-system/PKGBUILD       |  4 +--
 abs/core/LinHES-system/myth_status.py | 46 ++++++++++++++++++++---------------
 2 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index ab3f438..6d298a8 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=37
+pkgrel=38
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -84,7 +84,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          '542e670e78d117657f93141e9689f54d'
          '41951459ea9d2b0567be521b67e6285a'
          'bb72ab230c7a71706285bd0f31a4fb1f'
-         '692563448cca1d49f45e7d1c8abcaa0c'
+         'a5960b188c020edb4fba945875927758'
          '962a3e9eaba2d1466251b7ab0956705d'
          '1758aed160de64abfafb28a3a8f3390e'
          '33fbebbd546672cedd3c5e7350ab414e'
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index 2e48024..5515d1e 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -1,8 +1,8 @@
 #!/usr/bin/python2
 from MythTV import MythBE,MythDB,MythLog
-import datetime,time,sys,subprocess
+import datetime,time,sys,subprocess,re
 try:
-    be=MythBE()
+    be = MythBE()
     db = MythDB()
 except:
     print "\nCouldn't connect to MythTV service for status"
@@ -21,27 +21,29 @@ def formatTD(td):
     minutes = (td.seconds % 3600) // 60
     seconds = td.seconds % 60
 
-    if days > 1:
-      day_string = "%s days" %days
+    if days == 0:
+      day_string = ""
+    elif days > 1:
+      day_string = "%s days, " %days
     else:
-      day_string = "%s day" %days
+      day_string = "%s day, " %days
 
     if hours > 1:
-      hour_string = "%s hours" %hours
+      hour_string = "%s hours, " %hours
     else:
-      hour_string = "%s hour" %hours
+      hour_string = "%s hour, " %hours
 
     if minutes > 1:
-      minute_string = "%s minutes" %minutes
+      minute_string = "%s minutes, " %minutes
     else:
-      minute_string = "%s minute" %minutes
+      minute_string = "%s minute, " %minutes
 
     if seconds > 1:
       second_string = "%s seconds" %seconds
     else:
       second_string = "%s second" %seconds
 
-    return_string = '%s, %s, %s, %s' % (day_string, hour_string, minute_string, second_string)
+    return_string = '%s%s%s%s' % (day_string, hour_string, minute_string, second_string)
     return return_string
 
 
@@ -50,8 +52,8 @@ a=be.getRecorderList()
 header="#"*60
 print header
 print ""
-print "Tuner Status:            "
-print "--------------"
+print "Tuner Status:"
+print "-------------"
 for i in a:
     cmd="select cardtype,hostname  from capturecard where cardid=%s;" %i
 
@@ -72,7 +74,7 @@ for i in a:
 
 print ""
 print "Upcoming Recordings (Next %s scheduled):" %(num_upcoming)
-print "--------------------"
+print "----------------------------------------"
 a=be.getUpcomingRecordings()
 r=0
 for i in a:
@@ -81,9 +83,12 @@ for i in a:
         break
 
     title_chan="%s (%s)" %(i.title, i.channame)
-    print "    %s - %s - %-50s " %(i.starttime,i.hostname, title_chan)
-    #start_time=time.strptime(str(i.starttime), "%Y-%m-%d %H:%M:%S")
-    diff = i.starttime - now
+    #remove timezone
+    start_time=re.split("[-+]\d\d:\d\d",str(i.starttime))[0]
+    start_time_struct=datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
+    start_time_out=start_time_struct.strftime("%a %b %d %I:%M%p")
+    print "    %s - %s - %-50s " %(start_time_out,i.hostname, title_chan)
+    diff = start_time_struct - now
     if diff < next_start_diff :
         next_start_diff = diff
 
@@ -99,17 +104,18 @@ for i in a:
     c=c+1
 
 if c == 0:
-    print "    No conflicts"
+    print "    No Conflicts"
 
 print ""
-print ""
-
 
 if next_start_diff == datetime.timedelta(farout):
    ur="No recordings are scheduled"
 else:
     ur=formatTD(next_start_diff)
-print "The next recording starts in:\n     %s" %(ur)
+print "The next recording starts in:"
+print "-----------------------------"
+print "    %s" %(ur)
 print ""
 subprocess.call("/usr/LH/bin/diskspace.sh",shell=True)
 print ""
+print header
-- 
cgit v0.12


From 202c1c45cf8dcd9ae2189c073d555a95d09260d1 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 14 Nov 2013 10:56:05 -0600
Subject: LinHES-system: myth_status.py: remove padding for upcoming recordings

---
 abs/core/LinHES-system/PKGBUILD       | 4 ++--
 abs/core/LinHES-system/myth_status.py | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 6d298a8..1cb2055 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.0
-pkgrel=38
+pkgrel=39
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -84,7 +84,7 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          '542e670e78d117657f93141e9689f54d'
          '41951459ea9d2b0567be521b67e6285a'
          'bb72ab230c7a71706285bd0f31a4fb1f'
-         'a5960b188c020edb4fba945875927758'
+         'a8c79014423a95b41908fbe74ba83a6e'
          '962a3e9eaba2d1466251b7ab0956705d'
          '1758aed160de64abfafb28a3a8f3390e'
          '33fbebbd546672cedd3c5e7350ab414e'
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index 5515d1e..f0e41f3 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -73,7 +73,7 @@ for i in a:
         print "    Tuner %s (%s) on %s : %s " %(id, type, hostname, "Tuner Error")
 
 print ""
-print "Upcoming Recordings (Next %s scheduled):" %(num_upcoming)
+print "Upcoming Recordings (Next %s Scheduled):" %(num_upcoming)
 print "----------------------------------------"
 a=be.getUpcomingRecordings()
 r=0
@@ -87,14 +87,14 @@ for i in a:
     start_time=re.split("[-+]\d\d:\d\d",str(i.starttime))[0]
     start_time_struct=datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
     start_time_out=start_time_struct.strftime("%a %b %d %I:%M%p")
-    print "    %s - %s - %-50s " %(start_time_out,i.hostname, title_chan)
+    print "    %s - %s - %s" %(start_time_out,i.hostname, title_chan)
     diff = start_time_struct - now
     if diff < next_start_diff :
         next_start_diff = diff
 
 
 print ""
-print "Conflicted Recordings:"
+print "Recording Conflicts:"
 print "----------------------"
 a=be.getConflictedRecordings()
 c=0
-- 
cgit v0.12


From 8804b7d1312f648e265f9166786bfa3fe064eaa2 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 14 Nov 2013 11:22:21 -0600
Subject: mythinstall: update for mythtv 0.27. closes #938.

---
 abs/core/mythinstall/PKGBUILD                | 10 ++---
 abs/core/mythinstall/checkout_MythVantage.sh | 11 +----
 abs/core/mythinstall/main.cpp.patch          | 63 ----------------------------
 abs/core/mythinstall/misc_settings.cpp.patch | 57 -------------------------
 abs/core/mythinstall/misc_settings.h.patch   | 20 ---------
 5 files changed, 7 insertions(+), 154 deletions(-)
 delete mode 100644 abs/core/mythinstall/main.cpp.patch
 delete mode 100644 abs/core/mythinstall/misc_settings.cpp.patch
 delete mode 100644 abs/core/mythinstall/misc_settings.h.patch

diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index 7f2bef6..4f4531f 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,11 +1,11 @@
 # Maintainer: Jams
 pkgname=mythinstall
-pkgver=3
-pkgrel=80
+pkgver=8.1
+pkgrel=1
 pkgdesc="LinHES installer/systemconfig GUI."
 arch=('i686'  'x86_64')
-depends=('mythtv>=0.25')
-makedepends=('mythtv>=0.25')
+depends=('mythtv>=0.27')
+makedepends=('mythtv>=0.27')
 logofiles=`ls logo*.png`
 source=('install-ui.xml' $logofiles)
 
@@ -22,7 +22,7 @@ package() {
     ln -s MythVantage mythvantage
     ln -s MythVantage mythinstall
     #cd -
-echo $logofiles    
+    echo $logofiles    
     for i in $logofiles
     do
        install -D -m 0755 $srcdir/$i $pkgdir/usr/MythVantage/logos/$i
diff --git a/abs/core/mythinstall/checkout_MythVantage.sh b/abs/core/mythinstall/checkout_MythVantage.sh
index e0d4b0c..269cc64 100755
--- a/abs/core/mythinstall/checkout_MythVantage.sh
+++ b/abs/core/mythinstall/checkout_MythVantage.sh
@@ -2,8 +2,8 @@
 MYDIR=`pwd`
 
 PREFIX="\/usr\/include\/mythtv"
-LIBVERSION=0.25
-VERSION=0.25.0
+LIBVERSION=0.27
+VERSION=0.27.0
 
 
 function setup_links {
@@ -56,13 +56,6 @@ sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common
 
 #echo 'INCLUDEPATH += $$MYTHPATH/mythtv/libs/libmythtv/' >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
 
-#remove hitchhiker guide to timezones
-patch -N $MYDIR/src/MythVantage-app/mythinstall/misc_settings.cpp < $MYDIR/misc_settings.cpp.patch
-patch -N $MYDIR/src/MythVantage-app/mythinstall/misc_settings.h < $MYDIR/misc_settings.h.patch
-
-#update help screen
-patch -N $MYDIR/src/MythVantage-app/mythinstall/main.cpp < $MYDIR/main.cpp.patch
-
 cd $MYDIR/src/MythVantage-app/mythinstall && qmake
 make || exit 1
 #cd $MYDIR/src/MythVantage-app/mythbeselect && qmake
diff --git a/abs/core/mythinstall/main.cpp.patch b/abs/core/mythinstall/main.cpp.patch
deleted file mode 100644
index 9c4c3ce..0000000
--- a/abs/core/mythinstall/main.cpp.patch
+++ /dev/null
@@ -1,63 +0,0 @@
---- main.cpp.orig	2013-09-18 13:57:34.589499257 +0000
-+++ main.cpp	2013-09-18 14:27:59.535328888 +0000
-@@ -445,38 +445,45 @@
-     {
-         DialogBox *dia = NULL;
-         QString prompt;
--        QString *problems = new QString("			Help Screen");
-+        QString *problems = new QString("LinHES Help");
-         problems->append("\n");
--        problems->append("-------------------------------------------------");
-+        problems->append("Visit http://linhes.org for additional help.");
-         problems->append("\n");
--        problems->append("Alt+h This screen");
-+        problems->append("\n");
-+        problems->append("------Keyboard Shortcuts---------------------------------");
-+        problems->append("\n");
-+        problems->append("Alt + h: This Screen");
-         problems->append("\n");
- #ifdef __MVAPP__
--        problems->append("F2 open/close  terminal");
-+        problems->append("F2: Open/Close Terminal");
-         problems->append("\n");
--        problems->append("Shift + Return  opens new xterm");
-+        problems->append("Shift + Return: Open New Terminal (xterm)");
-         problems->append("\n");
--        problems->append("Alt+F2 for 2nd desktop  Alt+F1 to go back");
-+        problems->append("Alt + F2: Show 2nd desktop  Alt + F1 To Go Back");
-         problems->append("\n");
--        problems->append("Alt+c Capture myth screenshot");
-+        problems->append("Alt + c: Capture Myth Screenshot");
-         problems->append("\n");
- #else
--        problems->append("Alt + X  opens new xterm ");
-+        problems->append("Alt + x: Open New Terminal (xterm)");
-         problems->append("\n");
--        problems->append("Alt + m  start mythfrontend");
-+        problems->append("Alt + m: Open mythfrontend");
-         problems->append("\n");
--        problems->append("m will display a popup for power/about");
-+        problems->append("m in mythfrontend: Display Power/About Menu");
-         problems->append("\n");
- #endif
--        problems->append("Ctrl + Alt + u  unhide  mouse cursor");
-+        problems->append("Alt + 1: Start Master mythbackend");
-+        problems->append("\n");
-+        problems->append("Alt + 2: Stop Master mythbackend");
-+        problems->append("\n");
-+        problems->append("Alt + 3: Restart Master mythbackend");
-         problems->append("\n");
--        problems->append("Alt+1 start   masterbackend");
-+        problems->append("Alt + s: Open mythtv-setup");
-         problems->append("\n");
--        problems->append("Alt+2 stop    masterbackend");
-+        problems->append("Alt + u: Unhide/Hide Mouse Pointer");
-         problems->append("\n");
--        problems->append("Alt+3 restart masterbackend");
-+        problems->append("Alt + w: Open Web Browser (Chrome if installed)");
-         problems->append("\n");
--        problems->append("Alt+s  run mythtv-setup");
-+        problems->append("Alt + f: Restart Window Manager");
-         problems->append("\n");
- 
- 
diff --git a/abs/core/mythinstall/misc_settings.cpp.patch b/abs/core/mythinstall/misc_settings.cpp.patch
deleted file mode 100644
index 75c4d8d..0000000
--- a/abs/core/mythinstall/misc_settings.cpp.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- misc_settings.cpp.orig	2013-09-06 21:04:22.406221919 +0000
-+++ misc_settings.cpp	2013-09-06 21:01:01.927900734 +0000
-@@ -74,17 +74,17 @@
- //         miscsettings_2->addChild(HostZipcode());
- 
-     TimezoneRegion *timezoneregion = new TimezoneRegion();
--    TimezoneButton *timezonebutton = new TimezoneButton();
-+//    TimezoneButton *timezonebutton = new TimezoneButton();
- 
-     VerticalConfigurationGroup* miscsettings =
-         new VerticalConfigurationGroup(false, true,false,false);
--    miscsettings->addChild(timezonebutton);
-+//    miscsettings->addChild(timezonebutton);
-     if (  showLabels  && ( hostparm.ThisTimeZone != "" ))
-     {
-         if (MVAPP)
-         {
-             miscsettings->addChild(temptimezone);
--            timezonebutton->disableButton();
-+//            timezonebutton->disableButton();
-         }
-         else
-             miscsettings->addChild(timezoneregion);
-@@ -104,13 +104,13 @@
- 
- 
- 
--    connect(timezonebutton, SIGNAL(mf_launch_tzgui()),timezoneregion ,SLOT(timezone_gathersettings()));
-+//    connect(timezonebutton, SIGNAL(mf_launch_tzgui()),timezoneregion ,SLOT(timezone_gathersettings()));
- 
-     connect(timezoneregion,SIGNAL(mf_show_tz(QString)),this,SLOT(mf_show_tz(QString)));
-     connect(this,SIGNAL(update_timezone(QString)),timezoneregion,SLOT(update_timezone_values(QString)));
- 
-     autoLaunchTimer = new QTimer(this);
--    connect(autoLaunchTimer, SIGNAL(timeout()), timezonebutton, SLOT(launch_tzgui()));
-+//    connect(autoLaunchTimer, SIGNAL(timeout()), timezonebutton, SLOT(launch_tzgui()));
-     autoLaunchTimer->start(0);
- }
- 
-@@ -191,7 +191,7 @@
- 
- 
- //_______________Misc time timezone
--
-+/*
- TimezoneButton::TimezoneButton():
-     VerticalConfigurationGroup(false,false,false,false)
- {
-@@ -211,7 +211,7 @@
- {
-     TZButton->setEnabled(false);
- }
--
-+*/
- //This is used for the timezone
- QStringList findFilesRecursively ( QStringList paths, QString fileTypes ) {
-     if ( fileTypes.isEmpty() ) fileTypes = "*";
diff --git a/abs/core/mythinstall/misc_settings.h.patch b/abs/core/mythinstall/misc_settings.h.patch
deleted file mode 100644
index 10c69fb..0000000
--- a/abs/core/mythinstall/misc_settings.h.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- misc_settings.h.orig	2013-09-06 20:57:11.240009509 +0000
-+++ misc_settings.h	2013-09-06 21:06:16.558645309 +0000
-@@ -35,7 +35,7 @@
-     MiscMainFrame2();
- };
- 
--
-+/*
- class TimezoneButton: public VerticalConfigurationGroup {
-     Q_OBJECT
- public:
-@@ -48,7 +48,7 @@
-     QString mf_launch_tzgui();
- 
- };
--
-+*/
- class TimezoneRegion: public TriggeredConfigurationGroup {
-     Q_OBJECT
- public:
-- 
cgit v0.12


From d86e2ed184fb7f545659fdfb5257598ff7d3e316 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 14 Nov 2013 11:38:42 -0600
Subject: LinHES-config: LinHES-release: Update for R8.1

---
 abs/core/LinHES-config/LinHES-release | 2 +-
 abs/core/LinHES-config/PKGBUILD       | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/abs/core/LinHES-config/LinHES-release b/abs/core/LinHES-config/LinHES-release
index 747db47..f4126e5 100644
--- a/abs/core/LinHES-config/LinHES-release
+++ b/abs/core/LinHES-config/LinHES-release
@@ -1 +1 @@
-LinHES 8.0 (Trip the bits) 
+LinHES R8.1 (It isn't only a girl's name) 
diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 072e6ae..00b3885 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,9 +1,9 @@
 pkgname=LinHES-config
-pkgver=8.0
-pkgrel=14
+pkgver=8.1
+pkgrel=1
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
-depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
+depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
 	 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted'
 	 'python-pexpect' 'python-netifaces' 'xcursor-vanilla-dmz-aa'
 	 'python-iplib' 'mythinstall>=2-10' 'sudo' 'setserial' 'udevil' 'balance')
@@ -147,7 +147,7 @@ md5sums=('c832059cd635359d39a2ac3166ff463c'
          '5012fbd31d205a6d6b0a1d8caf3eba8f'
          '157e73d0f90d7b306aba8f5921aeedd3'
          'a805504b6593eaa416fe5f32cd4d1b9e'
-         '8ba06c2ce6129371548cc360ccca27f8'
+         '952af1c0a44579c04a405ffce9aed264'
          '5f890ea9bda6aef652d2560ca19dac07'
          'ab2aa42c2947148c2b1cac0ade6d1d55'
          'd429b59d3cfb37b0624c6a4a71a7c2c0'
-- 
cgit v0.12


From ad0bba6a903ab9ad9d190ee9cb15d1f8c1198030 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 16 Nov 2013 09:46:13 -0600
Subject: mythtv: update to latest .27-fixes

---
 abs/core/mythtv/stable-0.27/git_src/git_hash     |  2 +-
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD |  2 +-
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD      | 23 +++--------------------
 3 files changed, 5 insertions(+), 22 deletions(-)

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index cfcfa4d..4d9183d 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-d7c8faa567fb1f301eceb16adeb8463e7738488c
+77a66f4fd77744727c2a22182d34a69da94290c0
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index a29f66c..ec47156 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index a00c869..6af1e2f 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=1
+pkgrel=2
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
@@ -11,24 +11,7 @@ depends=('avahi' 'fftw' 'glew' 'lame' 'libass' 'libavc1394' 'libcdio'
          'lirc-utils' 'mysql-clients' 'mysql-python' 'openssl'
          'perl-dbd-mysql' 'perl-io-socket-inet6' 'perl-libwww'
          'perl-net-upnp' 'python2-lxml' 'qtwebkit' 'taglib' 'urlgrabber'
-         'x264' 'xmltv'
-         #'qt'
-         #'ffmpeg'
-         #'fribidi'
-         #'perl-soap-lite'
-         #'perl-date-manip'
-         #'perl-xml-sax'
-         #'perl-math-round'
-         #'perl-time-hires'
-         #'wget'
-         #'libxrandr'
-         #'faad2'
-         #'libvdpau'
-         #'libcrystalhd-git'
-         #'python-pycurl'
-         #'lsdvd'
-         #'dvdbackup'
-         )
+         'x264' 'xmltv')
 makedepends=('mesa' 'libgl' 'yasm' 'git' 'rsync')
 replaces=()
 groups=('pvr')
@@ -37,7 +20,7 @@ install='mythtv.install'
 
 patches=(#'myth_settings.patch' 
          '0001-protect-metadata-loads-from-multiple-threads.patch')
-    #http://code.mythtv.org/trac/ticket/10825   thread safety in video metadata load
+         #http://code.mythtv.org/trac/ticket/10825   thread safety in video metadata load
  
 optdepends=()
 replaces=('mythvideo' 'myththemes')
-- 
cgit v0.12


From a4265edac47afc88cfc2d7806fad048214e0267d Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 16 Nov 2013 10:20:12 -0600
Subject: rsyslog: change rules for .27 mythlogserver. refs #933 #939

---
 abs/core/rsyslog/PKGBUILD            | 14 ++++----
 abs/core/rsyslog/mythtv.conf         | 63 ++++++++++++++++++++++++++++++++++++
 abs/core/rsyslog/rsyslog.conf.linhes | 15 ++++-----
 3 files changed, 76 insertions(+), 16 deletions(-)
 create mode 100644 abs/core/rsyslog/mythtv.conf

diff --git a/abs/core/rsyslog/PKGBUILD b/abs/core/rsyslog/PKGBUILD
index 10ff5fa..61e61f0 100644
--- a/abs/core/rsyslog/PKGBUILD
+++ b/abs/core/rsyslog/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=rsyslog
 pkgver=5.8.6
-pkgrel=10
+pkgrel=11
 pkgdesc="An enhanced multi-threaded syslogd with a focus on security and reliability"
 url="http://www.rsyslog.com/"
 arch=('i686' 'x86_64')
@@ -21,8 +21,8 @@ groups=('base')
 options=('strip' 'zipman' '!libtool')
 #install=('rsyslog.install')
 source=("http://www.rsyslog.com/files/download/rsyslog/rsyslog-$pkgver.tar.gz"
-	'rsyslog'
-	'rsyslog.conf.d' 'rsyslog.conf.linhes' log_care.sh)
+        'rsyslog' 'rsyslog.conf.d' 'rsyslog.conf.linhes' 'mythtv.conf'
+        'log_care.sh')
 
 build() {
   cd ${srcdir}/${pkgname}-${pkgver}
@@ -41,14 +41,14 @@ package() {
   make install DESTDIR=${pkgdir}
   # Install Daemons and Configuration Files
   install -D -m755 ${srcdir}/${pkgname} ${pkgdir}/etc/rc.d/${pkgname}d
-  install -D -m644 $srcdir/${pkgname}.conf.linhes ${pkgdir}/etc/${pkgname}.conf
-  mkdir -p  ${pkgdir}/etc/rsyslog.d/
-  touch ${pkgdir}/etc/rsyslog.d/empty.conf
+  install -D -m644 ${srcdir}/${pkgname}.conf.linhes ${pkgdir}/etc/${pkgname}.conf
+  install -D -m644 ${srcdir}/mythtv.conf ${pkgdir}/etc/rsyslog.d/mythtv.conf
   install -D -m644 ${srcdir}/${pkgname}.conf.d ${pkgdir}/etc/conf.d/${pkgname}
   install -D -m755 ${srcdir}/log_care.sh ${pkgdir}/etc/cron.daily/log_care
 }
 md5sums=('c46db0496066b82faf735bd4222208d7'
          'a18bbcbb6ebdaa13a6ec6d9f3d9eb2da'
          '1a0cd4530dd5d1439456d5ae230574d9'
-         'df5cb090691db8640c489981ba3d0798'
+         'a4dd3846116b02f35d48c8987b30394b'
+         'c71fa75857ff7b9e24e41457e89c76ca'
          'cd39e6edc1fcbbae2093c40c880e0079')
diff --git a/abs/core/rsyslog/mythtv.conf b/abs/core/rsyslog/mythtv.conf
new file mode 100644
index 0000000..1878b74
--- /dev/null
+++ b/abs/core/rsyslog/mythtv.conf
@@ -0,0 +1,63 @@
+# MythTV 0.26 and later rsyslog.d conf
+
+# Control-code conversion. The default is on.
+#$EscapeControlCharactersOnReceive off
+
+$template DynMythFormat,"%TIMESTAMP:::date-rfc3339%%msg%\n"
+$template DynMythBackend,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythbackend.log"
+$template DynMythFrontend,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythfrontend.log"
+$template DynMythJobQueue,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythjobqueue.log"
+$template DynMythMediaServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythmediaserver.log"
+$template DynMythSetup,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythtv_setup.log"
+$template DynMythFillDatabase,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythfilldatabase.log"
+$template DynMythCommflag,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythcommflag.log"
+$template DynMythPreviewGen,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythpreviewgen.log"
+$template DynMythTranscode,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythtranscode.log"
+$template DynMythMetadataLookup,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythmetadatalookup.log"
+$template DynMythUtil,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythutil.log"
+$template DynMythWelcome,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythwelcome.log"
+$template DynMythShutdown,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythshutdown.log"
+$template DynMythLCDServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythlcdserver.log"
+$template DynMythccExtractor,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythccextractor.log"
+$template DynMythAVTest,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythavtest.log"
+$template DynMythLogServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythlogserver.log"
+$template DynMythNoLogServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_%programname%.log"
+
+
+
+if $syslogfacility-text == 'local6' and $msg startswith ' mythbackend' then ?DynMythBackend;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythfrontend' then ?DynMythFrontend;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythjobqueue' then ?DynMythJobQueue;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythmediaserver' then ?DynMythMediaServer;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythtv-setup' then ?DynMythSetup;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythfilldatabase' then ?DynMythFillDatabase;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythcommflag' then ?DynMythCommflag;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythpreviewgen' then ?DynMythPreviewGen;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythtranscode' then ?DynMythTranscode;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythmetadatalookup' then ?DynMythMetadataLookup;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythutil' then ?DynMythUtil;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythwelcome' then ?DynMythWelcome;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythshutdown' then ?DynMythShutdown;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythlcdserver' then ?DynMythLCDServer;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythccextractor' then ?DynMythccExtractor;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythavtest' then ?DynMythAVTest;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $msg startswith ' mythlogserver' then ?DynMythLogServer;DynMythFormat
+& ~
+if $syslogfacility-text == 'local6' and $programname startswith 'myth' then ?DynMythNoLogServer
+& ~
diff --git a/abs/core/rsyslog/rsyslog.conf.linhes b/abs/core/rsyslog/rsyslog.conf.linhes
index 24bf3f5..ecdc1f4 100644
--- a/abs/core/rsyslog/rsyslog.conf.linhes
+++ b/abs/core/rsyslog/rsyslog.conf.linhes
@@ -14,20 +14,18 @@ $DirCreateMode 0755
 # Log all kernel messages to the console.
 # Logging much else clutters up the screen.
 #kern.*                                                 /dev/console
-$template DailyPerHostLogs,"/var/log//%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_messages.log"
+$template DailyPerHostLogs,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_messages.log"
 $template DynFile,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_%programname%.log"
-$template DynMail,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_maillog"
-$template DynCron,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_cron"
+$template DynMail,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_maillog.log"
+$template DynCron,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_cron.log"
 $template DynBoot,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_boot.log"
-$template DynSpooler,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_spooler"
-$template DynLighttpd,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_lighttpd"
-$template DynMyth,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_%programname%.%syslogtag:R,ERE,1,ZERO:\[([[:digit:]]{1,})\]--end%.log"
+$template DynSpooler,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_spooler.log"
+$template DynLighttpd,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_lighttpd.log"
+
 
 if $programname contains 'lighttpd' then ?DynLighttpd
 & ~
 
-local6.*                                                ?DynMyth
-#& ~
 # Log anything (except mail) of level info or higher.
 # Don't log private authentication messages!
 #*.info;mail.none;authpriv.none;cron.none                -/var/log/messages
@@ -42,7 +40,6 @@ authpriv.*                                              ?DynFile
 #mail.*                                                  -/var/log/maillog
 mail.*                                                  ?DynMail
 
-
 # Log cron stuff
 #cron.*                                                  -/var/log/cron
 cron.*                                                  ?DynCron
-- 
cgit v0.12


From e3e2804c1b462102cab62f7d9b7d7cc84c185c6b Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 16 Nov 2013 12:47:29 -0600
Subject: LinHES-system: misc_status_info.sh: fix log parsing. closes #939.
 refs #933.

remove myth .24 detection

remove LinHES-run as it isn't used anymore and was replaced by LinHES-session
---
 abs/core/LinHES-system/LinHES-run             | 149 --------------------------
 abs/core/LinHES-system/LinHES-session         |   7 +-
 abs/core/LinHES-system/PKGBUILD               |  15 ++-
 abs/core/LinHES-system/misc_status_info.sh    |   2 +-
 abs/core/LinHES-system/misc_which_recorder.pl |   6 +-
 abs/core/LinHES-system/mythfrontend-start     |   7 +-
 6 files changed, 13 insertions(+), 173 deletions(-)
 delete mode 100755 abs/core/LinHES-system/LinHES-run

diff --git a/abs/core/LinHES-system/LinHES-run b/abs/core/LinHES-system/LinHES-run
deleted file mode 100755
index 0de0feb..0000000
--- a/abs/core/LinHES-system/LinHES-run
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/bin/sh
-exit 0
-################################################################
-#  WARNING THIS FILE IS DEPRECATED 
-#  any changes to this file must also be made to  LinHES-session
-#
-#
-###############################################################
-function msg(){
-    echo -e "$1"  | osd_cat --pos=middle --align=center --offset=200 --delay=5 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font &
-}
-
-. /etc/profile
-. /etc/systemconfig
-. /etc/unclutter.cfg || {
-	idle=1
-	jitter=200
-}
-. /etc/osd_cat.cfg || {
-	color=yellow
-	outline=2
-	outlinecolour=black
-	shadow=0
-	shadowcolour=black
-	font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*"
-}
-#keylaunch &
-#/usr/bin/tilda &
-
-lsmod |cut -f1 -d" " |grep -q nvidia
-if [ $? = 0 ]
-then
-   /usr/bin/nvidia-settings --load-config-only
-fi
-
-#move mouse to corner
-xdotool mousemove 0 0 
-/usr/X11R6/bin/unclutter -root -idle $idle -jitter $jitter -noevents  &
-if [ x"$Screensavertype" = "xgscreensaver" ]
-then
-    gnome-screensaver &
-elif  [ x"$Screensavertype" = "xxscreensaver" ]
-then
-    xscreensaver  -no-splash &
-fi
-
-/usr/bin/xvattr -a XV_COLORKEY -v 0
-mtd &
-#/usr/bin/nvidia-settings -l
-#/usr/bin/nvidia-settings -a InitialPixmapPlacement=2
-
-if [ x$ShowTips = "x1" ]
-then
-    msg "Alt+h for help" &
-fi
-
-# Run any scripting that applies to special hardware.  These brand-specific commands that run
-# after Tweaker will, of course, override generic or hardware-specific settings.
-SpecialHardwareCommands() {
-    special_hardware_file=/myth/.special_hardware_type
-    special_hardware=`cat $special_hardware_file`
-
-    case $special_hardware in
-	dragon*)
-	    sudo -E twk_audio.pl --implement digital
-	    sudo -E twk_dragon.pl --implement all
-	    ;;
-	ausdragon*)
-	    ;;
-	*)
-	    # there are no brand-specific commands for configuring whatever
-	    # special hardware the user chose
-	    ;;
-    esac
-}
-
-#update apple trailers
-if [[ x$RunFrontend = x1 && -f ~/.configure ]]
-then
-    /usr/bin/php -q /usr/bin/myth_trailers_grabber > /home/mythtv/appletrailer.xml && /usr/bin/fix_aple_url.sh 2>/dev/null &
-fi
-
-
-if [ !  $SystemType = "Frontend_only" ]
-then
-    if [  -f ~/.configure ]
-    then
-	# Run Tweaker, which applies generic and hardware-specific settings
-	if [ ! -f ~/.no_meth ]
-	then
-            #remove tweaker cause it's broken and duplicates entries
-            #sudo -E tweaker.pl
-            #/bin/rm /tmp/fps # ??? clean up a temp file that will eventually be obsolete anyway
-            # Run any brand-specific commands, if necessary.
-            SpecialHardwareCommands
-        else
-	    rm -f ~/.no_meth
-	fi
-	sudo pacman -R --noconfirm myth2ipod myt2xvid3
-	sudo pacman -S --noconfirm myth2ipod myt2xvid3
-#	sudo ln -s /usr/share/mythtv/mythexport /data/srv/httpd/htdocs
-    sudo sv stop mythbackend
-    /usr/LH/bin/dtheme.sh
-    xterm -fn *18* -e sudo taskset -c 0 /usr/bin/mythtv-setup
-    sudo sv start mythbackend
-    sudo sv stop mythexport
-    sudo pacman -R --noconfirm mythexport
-    sudo pacman -S --noconfirm mythexport
-    sudo chown -R mythtv.mythtv /home/mythtv
-    nice -n 19 mythfilldatabase --quiet &
-    msg "Guide data is being loaded. \n Until this completes\n some shows will appear as unknown \n in the program guide."
-    rm ~/.configure
-    fi
-fi
-
-
-if [ x"$UseMythWelcome" = "x1" ]
-then
-    STARTCMD="/usr/bin/mythwelcome"
-else
-    if pacman -Q mythtv | grep -q 0.24
-    then
-        STARTCMD="/usr/bin/mythfrontend -d -l /var/log/mythtv/mythfrontend.log"
-    else
-        STARTCMD="/usr/bin/mythfrontend -d --syslog local6"
-    fi
-fi
-
-echo "====================================================================="
-echo "Starting $STARTCMD"
-firstboot.sh &
-
-if [ -f /tmp/nomfe ]
-then
-    exit 0
-else
-    if [ -f /tmp/debug ]
-    then
-        echo "using gbd/debug"
-        gdb /usr/bin/mythfrontend -x $MV_ROOT/mfegdbcommands.txt
-        mv gdb.txt gdb.txt.mythfrontend
-        sleep 10
-    else
-        killall -9 irexec
-        /usr/bin/irexec -d
-        $STARTCMD 2>&1
-    fi
-fi
-
diff --git a/abs/core/LinHES-system/LinHES-session b/abs/core/LinHES-system/LinHES-session
index a8c8c09..6badfab 100755
--- a/abs/core/LinHES-system/LinHES-session
+++ b/abs/core/LinHES-system/LinHES-session
@@ -286,12 +286,7 @@ function start_myth() {
     then
         STARTCMD="/usr/bin/mythwelcome"
     else
-        if pacman -Q mythtv | grep -q 0.24
-        then
-            STARTCMD="/usr/bin/mythfrontend -d -l /var/log/mythtv/mythfrontend.log"
-        else
-            STARTCMD="/usr/bin/mythfrontend $MYTH_ARGS"
-        fi
+        STARTCMD="/usr/bin/mythfrontend $MYTH_ARGS"
     fi
 
     echo "====================================================================="
diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 1cb2055..03b1c96 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
-pkgver=8.0
-pkgrel=39
+pkgver=8.1
+pkgrel=1
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -12,7 +12,7 @@ depends=('linhes-sounds' 'xdotool' 'tilda' 'keylaunch'
         'handbrake-cli' 'mkvtoolnix' 'mplayer')
 backup=('etc/modprobe.d/alsa-base.conf')
 binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh
- LinHES-run load-modules-mythvantage.sh unclutter-toggle.sh tvterm.sh
+ load-modules-mythvantage.sh unclutter-toggle.sh tvterm.sh
  mythfrontend-start set_windowmanager.sh myth_status.py myth_status.sh
  install_supplemental_service.sh get_airplay_key importfiles.sh
  lh_system_backup lh_system_backup_job lh_system_restore_job
@@ -72,17 +72,16 @@ package() {
 
 }
 
-md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
+md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          'de32a1c50101265dd7f6ca5037f7a26a'
          'a875ee97f86e46f34a741c2bc455f894'
          '76b2637cac0452b3acdbeeb4e8a5474b'
          '781c977f8872543f033dad2caaf0458e'
          '6f5b757524d905b5d2420519a88edc93'
-         '4b4585ccba30595cf958d202997c57f7'
          'dc3eef2a624754e16805d72bbe488b67'
          '617af86b901538817ebdcaf646248dc5'
          '542e670e78d117657f93141e9689f54d'
-         '41951459ea9d2b0567be521b67e6285a'
+         '8da6a7f1703a002f84e66629e847d8a6'
          'bb72ab230c7a71706285bd0f31a4fb1f'
          'a8c79014423a95b41908fbe74ba83a6e'
          '962a3e9eaba2d1466251b7ab0956705d'
@@ -107,9 +106,9 @@ md5sums=('5ee78704cab0e88ec58d1aab821fc1aa'
          'b7febd04f64fe21e8cfbb888219b0b31'
          '06a628469051237943b7c874f2e29b8a'
          '8fe86aa9109a285aedce3c8658952bbb'
-         '45f46d1f9193c8dde18e56369ec29a1e'
+         '3300ea8b02e4fb8bd3409df348de6e16'
          '145b1da6ce501b3ce38ea415a576bf2d'
-         '116b0f62ed4e8dd6e437930deeb6e49e'
+         'b51c93ad9f3717a616d92899f6bfde76'
          '17f678d37187be0f12d67f64e40429c6'
          'bacc813b48bafcc6fe906e5969930501'
          '8e02efe1ad0df9a179075147eebb05b9'
diff --git a/abs/core/LinHES-system/misc_status_info.sh b/abs/core/LinHES-system/misc_status_info.sh
index 14a972c..a75b144 100755
--- a/abs/core/LinHES-system/misc_status_info.sh
+++ b/abs/core/LinHES-system/misc_status_info.sh
@@ -12,7 +12,7 @@
 
 # Get Encoder that was used for recordings from the backend log
 firstrun=1
-loglist=`find /var/log/ -name *_mythbackend.*.log*`
+loglist=`find /var/log/ -name *_mythbackend*.log*`
 for i in `ls -t $loglist`
 do
     if [ $firstrun -eq 1 ]; then
diff --git a/abs/core/LinHES-system/misc_which_recorder.pl b/abs/core/LinHES-system/misc_which_recorder.pl
index 6952b3f..2ad91b0 100755
--- a/abs/core/LinHES-system/misc_which_recorder.pl
+++ b/abs/core/LinHES-system/misc_which_recorder.pl
@@ -47,20 +47,20 @@ if ($log_file =~ /\.gz$/)
 {   
 #   read top down
 #    open($fh, "gunzip -c $log_file |") or die "Unable to open log file '$log_file', stopping:";   
+#   read bottom up
     open($fh, "gunzip -c $log_file |tac |") or die "Unable to open log file '$log_file', stopping:";   
 }
 else 
 {
 #   read top down
 #    open($fh, "<$log_file") or die "Unable to open log file '$log_file', stopping:";
+#   read bottom up
     open($fh, "tac $log_file |") or die "Unable to open log file '$log_file', stopping:";
 }
 
 while (<$fh>)
 {
-#   Myth .24 regex to find start of recording
-#    if (/^(.*)(?:\d(?: I )?|I.* -) (?:Started|Tuning) recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/)
-#   Myth .25 regex to find start of recording for digital and analog MPEG
+#   Myth .25 & .27 regex to find start of recording for digital and analog MPEG
     if (/^(\d+-\d+-\d+T\d+\:\d+\:\d+)(?:.*) (?:Started|Tuning) recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/ || /^(\d+-\d+-\d+T\d+\:\d+\:\d+)(?:.*) \(UpdateRecStatus\) Updating status for (.*)() on cardid (\d+) \(Will Record => Recording\)()/)
     {
         if ($mode eq "--noheader")
diff --git a/abs/core/LinHES-system/mythfrontend-start b/abs/core/LinHES-system/mythfrontend-start
index 5cfc9b7..320f960 100755
--- a/abs/core/LinHES-system/mythfrontend-start
+++ b/abs/core/LinHES-system/mythfrontend-start
@@ -3,12 +3,7 @@ PIDS=$(pidof mythfrontend)
 P_array=( $PIDS )
 let "instances = ${#P_array[*]}"  # Count elements.
 
-if pacman -Q mythtv | grep -q 0.24
-then
-    STARTCMD="/usr/bin/mythfrontend -d -l /var/log/mythtv/mythfrontend.log"
-else
-    STARTCMD="/usr/bin/mythfrontend -d --syslog local6"
-fi
+STARTCMD="/usr/bin/mythfrontend -d --syslog local6"
 
 if [ $instances -gt 0 ];
 then
-- 
cgit v0.12


From efcb770dfe6077662de9fc81cdc2628e3391b579 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 16 Nov 2013 12:55:14 -0600
Subject: runit-scripts: mythbackend run: remove myth .24 detection

---
 abs/core/runit-scripts/PKGBUILD                              | 4 ++--
 abs/core/runit-scripts/runitscripts/services/mythbackend/run | 9 +--------
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index b652cba..2e5d50b 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
-pkgver=8.0
-pkgrel=6
+pkgver=8.1
+pkgrel=1
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core/runit-scripts/runitscripts/services/mythbackend/run b/abs/core/runit-scripts/runitscripts/services/mythbackend/run
index 903979c..e24fc3d 100755
--- a/abs/core/runit-scripts/runitscripts/services/mythbackend/run
+++ b/abs/core/runit-scripts/runitscripts/services/mythbackend/run
@@ -79,12 +79,5 @@ export HOME=/root
                 stat_runit "Starting Primary MythBackend"
             fi
 
-
-
-            if pacman -Q mythtv | grep -q 0.24
-            then
-                exec su mythtv -c "/usr/bin/mythbackend --logfile /var/log/mythtv/mythbackend.log"
-            else
-                exec su mythtv -c "/usr/bin/mythbackend -q --syslog local6"
-            fi
+            exec su mythtv -c "/usr/bin/mythbackend -q --syslog local6"
 # 		fi
-- 
cgit v0.12


From ee5656f312804eacb69e43e209972c5ba0ac0494 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 16 Nov 2013 13:10:05 -0600
Subject: google-chrome: update to 31.0.1650.57

---
 abs/extra/google-chrome/PKGBUILD    | 10 +++++-----
 abs/extra/google-chrome/__changelog |  1 +
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/abs/extra/google-chrome/PKGBUILD b/abs/extra/google-chrome/PKGBUILD
index a113f2d..7000c9d 100644
--- a/abs/extra/google-chrome/PKGBUILD
+++ b/abs/extra/google-chrome/PKGBUILD
@@ -5,8 +5,8 @@
 # or use: $ curl -s https://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/other.xml.gz | gzip -df | awk -F\" '/pkgid/{ sub(".*-","",$4); print $4": "$10 }'
 
 pkgname=google-chrome
-pkgver=31.0.1650.48
-pkgrel=2
+pkgver=31.0.1650.57
+pkgrel=1
 pkgdesc="An attempt at creating a safer, faster, and more stable browser (Stable Channel)"
 arch=('i686' 'x86_64')
 url="https://www.google.com/chrome"
@@ -24,9 +24,7 @@ _arch=i386
 [ "$CARCH" = 'x86_64' ] && _arch=amd64
 source=("google-chrome-${_channel}_${pkgver}_${_arch}.deb::https://dl.google.com/linux/direct/google-chrome-${_channel}_current_${_arch}.deb"
         'https://www.google.com/intl/en/chrome/browser/privacy/eula_text.html')
-md5sums=('2927095d2011c0ff771e5289d73aa240'
-         '6d57da7476a4b1b7a81821d9c036425c')
-[ "$CARCH" = 'x86_64' ] && md5sums[0]='2927095d2011c0ff771e5289d73aa240'
+[ "$CARCH" = 'x86_64' ] && md5sums[0]='71b197df869c71ec662732b830e4e98d'
 
 #PKGEXT='.pkg.tar'
 
@@ -59,3 +57,5 @@ package() {
   msg2 "Rename google-chrome-stable to google-chrome"
   mv "$pkgdir"/usr/bin/google-chrome-stable "$pkgdir"/usr/bin/google-chrome
 }
+md5sums=('71b197df869c71ec662732b830e4e98d'
+         '6d57da7476a4b1b7a81821d9c036425c')
diff --git a/abs/extra/google-chrome/__changelog b/abs/extra/google-chrome/__changelog
index 20fbc77..c280aef 100644
--- a/abs/extra/google-chrome/__changelog
+++ b/abs/extra/google-chrome/__changelog
@@ -3,3 +3,4 @@ Pull from ARU: https://aur.archlinux.org/packages/google-chrome/
 - PKGBUILD: comment out PKGEXT so we compress the pkg
 - PKGBUILD: add replaces chromium
 - google-chrome.install: add symlink from /usr/bin/chromium to google-chrome so as not to break pkgs that use chromium
+- Rename google-chrome-stable to google-chrome"
-- 
cgit v0.12


From 6038e9cb555c4bdc02517bf34a8716d8dbf4c1e7 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 16 Nov 2013 14:23:36 -0600
Subject: mythinstall: recompile with latest libs

---
 abs/core/mythinstall/PKGBUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index 4f4531f..82ffb3b 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Jams
 pkgname=mythinstall
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 pkgdesc="LinHES installer/systemconfig GUI."
 arch=('i686'  'x86_64')
 depends=('mythtv>=0.27')
-- 
cgit v0.12


From 9bba98c7fd7dcefe263b12eea84c7a5789d3d1b9 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 17 Nov 2013 15:10:14 -0600
Subject: mythweb: set permissions correctly so tv_icons will be populated by
 mythbackend

---
 abs/core/mythtv/stable-0.27/mythweb/PKGBUILD        |  6 +++---
 abs/core/mythtv/stable-0.27/mythweb/mythweb.install | 14 +++++++++-----
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD b/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD
index d9c36d7..75e8d47 100644
--- a/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythweb/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythweb
 pkgver=0.27
-pkgrel=1
+pkgrel=2
 commit_hash=`cat ../git_src/git_hash_web`
 pkgdesc="Web interface for MythTV's backend, $commit_hash"
 arch=('i686' 'x86_64')
@@ -43,10 +43,10 @@ build() {
 package() {
     DOCROOT=/data/srv/httpd/mythweb
 	mkdir -p $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
-        rsync -arp --exclude .git --delete-excluded  $srcdir/mythweb/* $pkgdir/$DOCROOT
+    rsync -arp --exclude .git* --delete-excluded  $srcdir/mythweb/* $pkgdir/$DOCROOT
 	rm $pkgdir/$DOCROOT/README
 	chown -R http:http $pkgdir/$DOCROOT
-	chmod g+rw $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
+	chmod -R 775 $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
 
     #install conf files for lighttpd
     mkdir -p $pkgdir/etc/lighttpd
diff --git a/abs/core/mythtv/stable-0.27/mythweb/mythweb.install b/abs/core/mythtv/stable-0.27/mythweb/mythweb.install
index 0073499..b8e31a8 100644
--- a/abs/core/mythtv/stable-0.27/mythweb/mythweb.install
+++ b/abs/core/mythtv/stable-0.27/mythweb/mythweb.install
@@ -1,10 +1,16 @@
 post_install() {
+ echo "==> Setting mythweb permissions."
+ chmod -R 755 /data/srv/httpd/mythweb/
+ chown mythtv:http /data/srv/httpd/mythweb/data/tv_icons
+ chmod -R 775 /data/srv/httpd/mythweb/{image_cache,php_sessions,data}
+ echo "==> Reading lighttpd's configuration file."
  gen_light_include.py
-  /sbin/sv hup /service/lighttpd
+ echo "==> Restarting lighttpd."
+ /sbin/sv hup /service/lighttpd
 }
+
 post_upgrade() {
   post_install
-
 }
 
 post_remove() {
@@ -12,7 +18,5 @@ post_remove() {
  echo
  echo "==> Forcing a re-read of lighttpd's configuration file."
  echo ""
-  /sbin/sv hup /service/lighttpd
-#--
-
+ /sbin/sv hup /service/lighttpd
 }
-- 
cgit v0.12


From 02f95477101b1afb1b9d1f54c3999d58eca41b16 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 18 Nov 2013 20:09:27 -0600
Subject: linhes-theme: New default LinHES MythTV theme

linhes-theme-old: still around just in case but not built.
---
 abs/core/linhes-theme-old/LinHES/README            |  32 +
 abs/core/linhes-theme-old/LinHES/base.xml          |  25 +
 abs/core/linhes-theme-old/LinHES/config-ui.xml     | 833 +++++++++++++++++++++
 abs/core/linhes-theme-old/LinHES/cr-lines.png      | Bin 0 -> 7194 bytes
 abs/core/linhes-theme-old/LinHES/cr-selectbar.png  | Bin 0 -> 3081 bytes
 .../LinHES/htmls/progdetails_page1.html            |  30 +
 .../LinHES/htmls/progdetails_page2.html            |  47 ++
 abs/core/linhes-theme-old/LinHES/menu-ui.xml       | 456 +++++++++++
 abs/core/linhes-theme-old/LinHES/preview.jpg       | Bin 0 -> 7606 bytes
 abs/core/linhes-theme-old/LinHES/qtlook.txt        |  98 +++
 abs/core/linhes-theme-old/LinHES/themeinfo.xml     |  56 ++
 abs/core/linhes-theme-old/LinHES/ui.xml            | 182 +++++
 abs/core/linhes-theme-old/LinHES/ui/LinHESlogo.png | Bin 0 -> 14750 bytes
 abs/core/linhes-theme-old/LinHES/ui/background.png | Bin 0 -> 195508 bytes
 abs/core/linhes-theme-old/LinHES/ui/button_off.png | Bin 0 -> 306 bytes
 abs/core/linhes-theme-old/LinHES/ui/button_on.png  | Bin 0 -> 1835 bytes
 abs/core/linhes-theme-old/LinHES/ui/kmlogo.png     | Bin 0 -> 7633 bytes
 abs/core/linhes-theme-old/LinHES/ui/kmlogo1.png    | Bin 0 -> 10306 bytes
 .../LinHES/watermark/appearance.png                | Bin 0 -> 17926 bytes
 .../linhes-theme-old/LinHES/watermark/archive.png  | Bin 0 -> 22055 bytes
 .../linhes-theme-old/LinHES/watermark/backup.png   | Bin 0 -> 20560 bytes
 .../linhes-theme-old/LinHES/watermark/blank.png    | Bin 0 -> 2740 bytes
 .../linhes-theme-old/LinHES/watermark/browser.png  | Bin 0 -> 23307 bytes
 .../LinHES/watermark/categories.png                | Bin 0 -> 18445 bytes
 abs/core/linhes-theme-old/LinHES/watermark/cd.png  | Bin 0 -> 20061 bytes
 .../linhes-theme-old/LinHES/watermark/cd_rip.png   | Bin 0 -> 22482 bytes
 .../LinHES/watermark/checklist.png                 | Bin 0 -> 18088 bytes
 .../linhes-theme-old/LinHES/watermark/clock.png    | Bin 0 -> 20829 bytes
 .../linhes-theme-old/LinHES/watermark/delete.png   | Bin 0 -> 15863 bytes
 abs/core/linhes-theme-old/LinHES/watermark/dvd.png | Bin 0 -> 21929 bytes
 .../linhes-theme-old/LinHES/watermark/dvd_rip.png  | Bin 0 -> 17874 bytes
 .../linhes-theme-old/LinHES/watermark/eject.png    | Bin 0 -> 10120 bytes
 .../linhes-theme-old/LinHES/watermark/gallery.png  | Bin 0 -> 21515 bytes
 .../LinHES/watermark/gallery_settings.png          | Bin 0 -> 16959 bytes
 .../LinHES/watermark/hardware_info.png             | Bin 0 -> 20290 bytes
 .../LinHES/watermark/hardware_settings.png         | Bin 0 -> 19672 bytes
 .../linhes-theme-old/LinHES/watermark/info.png     | Bin 0 -> 17085 bytes
 .../linhes-theme-old/LinHES/watermark/joystick.png | Bin 0 -> 19896 bytes
 .../linhes-theme-old/LinHES/watermark/keys.png     | Bin 0 -> 9850 bytes
 .../LinHES/watermark/movietime.png                 | Bin 0 -> 22507 bytes
 .../LinHES/watermark/multimedia.png                | Bin 0 -> 26544 bytes
 .../linhes-theme-old/LinHES/watermark/music.png    | Bin 0 -> 17707 bytes
 .../LinHES/watermark/music_settings.png            | Bin 0 -> 16664 bytes
 .../linhes-theme-old/LinHES/watermark/news.png     | Bin 0 -> 18377 bytes
 .../linhes-theme-old/LinHES/watermark/optical.png  | Bin 0 -> 20312 bytes
 .../linhes-theme-old/LinHES/watermark/phone.png    | Bin 0 -> 21081 bytes
 .../linhes-theme-old/LinHES/watermark/play.png     | Bin 0 -> 23696 bytes
 .../linhes-theme-old/LinHES/watermark/previous.png | Bin 0 -> 15845 bytes
 .../linhes-theme-old/LinHES/watermark/priority.png | Bin 0 -> 13209 bytes
 .../linhes-theme-old/LinHES/watermark/record.png   | Bin 0 -> 14236 bytes
 .../linhes-theme-old/LinHES/watermark/restore.png  | Bin 0 -> 18406 bytes
 .../linhes-theme-old/LinHES/watermark/search.png   | Bin 0 -> 12588 bytes
 .../linhes-theme-old/LinHES/watermark/setup.png    | Bin 0 -> 21414 bytes
 .../linhes-theme-old/LinHES/watermark/smolt.png    | Bin 0 -> 19672 bytes
 .../linhes-theme-old/LinHES/watermark/stream.png   | Bin 0 -> 19398 bytes
 abs/core/linhes-theme-old/LinHES/watermark/tng.png | Bin 0 -> 19019 bytes
 abs/core/linhes-theme-old/LinHES/watermark/tv.png  | Bin 0 -> 14951 bytes
 .../linhes-theme-old/LinHES/watermark/upgrade.png  | Bin 0 -> 18875 bytes
 .../linhes-theme-old/LinHES/watermark/video.png    | Bin 0 -> 22688 bytes
 .../LinHES/watermark/video_settings.png            | Bin 0 -> 19234 bytes
 .../linhes-theme-old/LinHES/watermark/weather.png  | Bin 0 -> 20572 bytes
 .../linhes-theme-old/LinHES/watermark/wizard.png   | Bin 0 -> 18834 bytes
 .../LinHES/watermark/zoneminder.png                | Bin 0 -> 14476 bytes
 abs/core/linhes-theme-old/PKGBUILD                 |  18 +
 abs/core/linhes-theme/LinHES/README                |  32 -
 abs/core/linhes-theme/LinHES/base.xml              |  25 -
 abs/core/linhes-theme/LinHES/config-ui.xml         | 833 ---------------------
 abs/core/linhes-theme/LinHES/cr-lines.png          | Bin 7194 -> 0 bytes
 abs/core/linhes-theme/LinHES/cr-selectbar.png      | Bin 3081 -> 0 bytes
 .../LinHES/htmls/progdetails_page1.html            |  30 -
 .../LinHES/htmls/progdetails_page2.html            |  47 --
 abs/core/linhes-theme/LinHES/menu-ui.xml           | 456 -----------
 abs/core/linhes-theme/LinHES/preview.jpg           | Bin 7606 -> 0 bytes
 abs/core/linhes-theme/LinHES/qtlook.txt            |  98 ---
 abs/core/linhes-theme/LinHES/themeinfo.xml         |  56 --
 abs/core/linhes-theme/LinHES/ui.xml                | 182 -----
 abs/core/linhes-theme/LinHES/ui/LinHESlogo.png     | Bin 14750 -> 0 bytes
 abs/core/linhes-theme/LinHES/ui/background.png     | Bin 195508 -> 0 bytes
 abs/core/linhes-theme/LinHES/ui/button_off.png     | Bin 306 -> 0 bytes
 abs/core/linhes-theme/LinHES/ui/button_on.png      | Bin 1835 -> 0 bytes
 abs/core/linhes-theme/LinHES/ui/kmlogo.png         | Bin 7633 -> 0 bytes
 abs/core/linhes-theme/LinHES/ui/kmlogo1.png        | Bin 10306 -> 0 bytes
 .../linhes-theme/LinHES/watermark/appearance.png   | Bin 17926 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/archive.png | Bin 22055 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/backup.png  | Bin 20560 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/blank.png   | Bin 2740 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/browser.png | Bin 23307 -> 0 bytes
 .../linhes-theme/LinHES/watermark/categories.png   | Bin 18445 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/cd.png      | Bin 20061 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/cd_rip.png  | Bin 22482 -> 0 bytes
 .../linhes-theme/LinHES/watermark/checklist.png    | Bin 18088 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/clock.png   | Bin 20829 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/delete.png  | Bin 15863 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/dvd.png     | Bin 21929 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/dvd_rip.png | Bin 17874 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/eject.png   | Bin 10120 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/gallery.png | Bin 21515 -> 0 bytes
 .../LinHES/watermark/gallery_settings.png          | Bin 16959 -> 0 bytes
 .../LinHES/watermark/hardware_info.png             | Bin 20290 -> 0 bytes
 .../LinHES/watermark/hardware_settings.png         | Bin 19672 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/info.png    | Bin 17085 -> 0 bytes
 .../linhes-theme/LinHES/watermark/joystick.png     | Bin 19896 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/keys.png    | Bin 9850 -> 0 bytes
 .../linhes-theme/LinHES/watermark/movietime.png    | Bin 22507 -> 0 bytes
 .../linhes-theme/LinHES/watermark/multimedia.png   | Bin 26544 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/music.png   | Bin 17707 -> 0 bytes
 .../LinHES/watermark/music_settings.png            | Bin 16664 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/news.png    | Bin 18377 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/optical.png | Bin 20312 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/phone.png   | Bin 21081 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/play.png    | Bin 23696 -> 0 bytes
 .../linhes-theme/LinHES/watermark/previous.png     | Bin 15845 -> 0 bytes
 .../linhes-theme/LinHES/watermark/priority.png     | Bin 13209 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/record.png  | Bin 14236 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/restore.png | Bin 18406 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/search.png  | Bin 12588 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/setup.png   | Bin 21414 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/smolt.png   | Bin 19672 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/stream.png  | Bin 19398 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/tng.png     | Bin 19019 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/tv.png      | Bin 14951 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/upgrade.png | Bin 18875 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/video.png   | Bin 22688 -> 0 bytes
 .../LinHES/watermark/video_settings.png            | Bin 19234 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/weather.png | Bin 20572 -> 0 bytes
 abs/core/linhes-theme/LinHES/watermark/wizard.png  | Bin 18834 -> 0 bytes
 .../linhes-theme/LinHES/watermark/zoneminder.png   | Bin 14476 -> 0 bytes
 abs/core/linhes-theme/PKGBUILD                     |  58 +-
 abs/core/linhes-theme/background.png               | Bin 0 -> 821488 bytes
 abs/core/linhes-theme/base.xml.patch               |  22 +
 abs/core/linhes-theme/osd.xml.patch                |  45 ++
 abs/core/linhes-theme/qt-background.png            | Bin 0 -> 781602 bytes
 abs/core/linhes-theme/readme.txt.patch             |  18 +
 abs/core/linhes-theme/themeinfo.xml                |  59 ++
 134 files changed, 1968 insertions(+), 1770 deletions(-)
 create mode 100644 abs/core/linhes-theme-old/LinHES/README
 create mode 100644 abs/core/linhes-theme-old/LinHES/base.xml
 create mode 100644 abs/core/linhes-theme-old/LinHES/config-ui.xml
 create mode 100644 abs/core/linhes-theme-old/LinHES/cr-lines.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/cr-selectbar.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/htmls/progdetails_page1.html
 create mode 100644 abs/core/linhes-theme-old/LinHES/htmls/progdetails_page2.html
 create mode 100644 abs/core/linhes-theme-old/LinHES/menu-ui.xml
 create mode 100644 abs/core/linhes-theme-old/LinHES/preview.jpg
 create mode 100644 abs/core/linhes-theme-old/LinHES/qtlook.txt
 create mode 100755 abs/core/linhes-theme-old/LinHES/themeinfo.xml
 create mode 100644 abs/core/linhes-theme-old/LinHES/ui.xml
 create mode 100644 abs/core/linhes-theme-old/LinHES/ui/LinHESlogo.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/ui/background.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/ui/button_off.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/ui/button_on.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/ui/kmlogo.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/ui/kmlogo1.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/appearance.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/watermark/archive.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/backup.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/blank.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/browser.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/watermark/categories.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/cd.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/cd_rip.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/checklist.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/clock.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/watermark/delete.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/dvd.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/dvd_rip.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/watermark/eject.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/gallery.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/gallery_settings.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/hardware_info.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/hardware_settings.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/info.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/joystick.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/keys.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/movietime.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/multimedia.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/music.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/music_settings.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/news.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/optical.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/phone.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/play.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/watermark/previous.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/priority.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/record.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/restore.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/search.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/setup.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/smolt.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/stream.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/tng.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/tv.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/upgrade.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/video.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/video_settings.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/weather.png
 create mode 100644 abs/core/linhes-theme-old/LinHES/watermark/wizard.png
 create mode 100755 abs/core/linhes-theme-old/LinHES/watermark/zoneminder.png
 create mode 100644 abs/core/linhes-theme-old/PKGBUILD
 delete mode 100644 abs/core/linhes-theme/LinHES/README
 delete mode 100644 abs/core/linhes-theme/LinHES/base.xml
 delete mode 100644 abs/core/linhes-theme/LinHES/config-ui.xml
 delete mode 100644 abs/core/linhes-theme/LinHES/cr-lines.png
 delete mode 100644 abs/core/linhes-theme/LinHES/cr-selectbar.png
 delete mode 100644 abs/core/linhes-theme/LinHES/htmls/progdetails_page1.html
 delete mode 100644 abs/core/linhes-theme/LinHES/htmls/progdetails_page2.html
 delete mode 100644 abs/core/linhes-theme/LinHES/menu-ui.xml
 delete mode 100644 abs/core/linhes-theme/LinHES/preview.jpg
 delete mode 100644 abs/core/linhes-theme/LinHES/qtlook.txt
 delete mode 100755 abs/core/linhes-theme/LinHES/themeinfo.xml
 delete mode 100644 abs/core/linhes-theme/LinHES/ui.xml
 delete mode 100644 abs/core/linhes-theme/LinHES/ui/LinHESlogo.png
 delete mode 100644 abs/core/linhes-theme/LinHES/ui/background.png
 delete mode 100644 abs/core/linhes-theme/LinHES/ui/button_off.png
 delete mode 100755 abs/core/linhes-theme/LinHES/ui/button_on.png
 delete mode 100755 abs/core/linhes-theme/LinHES/ui/kmlogo.png
 delete mode 100755 abs/core/linhes-theme/LinHES/ui/kmlogo1.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/appearance.png
 delete mode 100755 abs/core/linhes-theme/LinHES/watermark/archive.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/backup.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/blank.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/browser.png
 delete mode 100755 abs/core/linhes-theme/LinHES/watermark/categories.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/cd.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/cd_rip.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/checklist.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/clock.png
 delete mode 100755 abs/core/linhes-theme/LinHES/watermark/delete.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/dvd.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/dvd_rip.png
 delete mode 100755 abs/core/linhes-theme/LinHES/watermark/eject.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/gallery.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/gallery_settings.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/hardware_info.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/hardware_settings.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/info.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/joystick.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/keys.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/movietime.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/multimedia.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/music.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/music_settings.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/news.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/optical.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/phone.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/play.png
 delete mode 100755 abs/core/linhes-theme/LinHES/watermark/previous.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/priority.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/record.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/restore.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/search.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/setup.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/smolt.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/stream.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/tng.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/tv.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/upgrade.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/video.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/video_settings.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/weather.png
 delete mode 100644 abs/core/linhes-theme/LinHES/watermark/wizard.png
 delete mode 100755 abs/core/linhes-theme/LinHES/watermark/zoneminder.png
 create mode 100644 abs/core/linhes-theme/background.png
 create mode 100644 abs/core/linhes-theme/base.xml.patch
 create mode 100644 abs/core/linhes-theme/osd.xml.patch
 create mode 100644 abs/core/linhes-theme/qt-background.png
 create mode 100644 abs/core/linhes-theme/readme.txt.patch
 create mode 100644 abs/core/linhes-theme/themeinfo.xml

diff --git a/abs/core/linhes-theme-old/LinHES/README b/abs/core/linhes-theme-old/LinHES/README
new file mode 100644
index 0000000..7fcf653
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/README
@@ -0,0 +1,32 @@
+===================================
+ The 'MythCenter' theme for MythTV
+===================================
+
+Changelog:
+----------
+04 feb 2005: removed clashing 'MythCenter' text from background
+03 feb 2005: initial release
+
+About:
+------
+
+This theme is originally based on G.A.N.T. by Oscar Carlsson and 
+is inspired by the well-known Media Center theme.
+
+I found the MythTVMediaCenterOSD osd theme by Jason Gabriele to go best 
+with this theme, but of course this is merely a matter of taste. 
+Maybe I will do an OSD theme in the future too.
+
+The most recent version can be downloaded here: 
+http://www.fotoniq.nl/files/MythCenter.tar.gz
+
+Licensing:
+----------
+
+The contents may be freely distributed and changed.
+
+Contact:
+--------
+
+Jeroen Brosens
+jeroen@fotoniq.nl
diff --git a/abs/core/linhes-theme-old/LinHES/base.xml b/abs/core/linhes-theme-old/LinHES/base.xml
new file mode 100644
index 0000000..93d8fc2
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/base.xml
@@ -0,0 +1,25 @@
+<mythuitheme>
+
+    <window name="backgroundwindow">
+        <imagetype name="backimg">
+            <filename>ui/background.png</filename>
+        </imagetype>
+
+        <fontdef name="small" face="Trebuchet MS">
+            <color>#FFFFFF</color>
+            <pixelsize>19</pixelsize>
+	    <weight>bold</weight>
+        </fontdef>
+
+        <fontdef name="medium" from="small">
+            <pixelsize>22</pixelsize>
+        </fontdef>
+
+        <fontdef name="large" from="small">
+            <pixelsize>28</pixelsize>
+        </fontdef>
+
+    </window>
+
+</mythuitheme>
+
diff --git a/abs/core/linhes-theme-old/LinHES/config-ui.xml b/abs/core/linhes-theme-old/LinHES/config-ui.xml
new file mode 100644
index 0000000..c4a3ed0
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/config-ui.xml
@@ -0,0 +1,833 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mythuitheme SYSTEM "http://www.mythtv.org/schema/mythuitheme.dtd">
+<mythuitheme>
+    <window name="iconimport">
+        <textarea name="name" from="basetextarea">
+            <area>30,15,740,30</area>
+            <font>basemedium</font>
+            <align>hcenter</align>
+        </textarea>
+
+        <buttonlist name="icons">
+            <area>20,50,760,450</area>
+            <buttonarea>0,0,760,420</buttonarea>
+            <layout>grid</layout>
+            <spacing>5</spacing>
+            <statetype name="buttonitem">
+                <state name="active">
+                    <area>0,0,250,60</area>
+                    <shape name="background">
+                        <area>0,0,250,60</area>
+                        <type>roundbox</type>
+                        <cornerradius>4</cornerradius>
+                        <fill style="gradient">
+                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical" />
+                        </fill>
+                    </shape>
+                    <imagetype name="icon">
+                        <area>0,5,80,50</area>
+                        <preserveaspect>true</preserveaspect>
+                    </imagetype>
+                    <textarea name="buttontext">
+                        <area>100,5,140,50</area>
+                        <align>allcenter</align>
+                        <multiline>yes</multiline>
+                    </textarea>
+                </state>
+                <state name="selectedactive" from="active">
+                    <shape name="background">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="255" />
+                        </fill>
+                    </shape>
+                </state>
+                <state name="selectedinactive" from="selectedactive">
+                    <shape name="background">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="175" />
+                        </fill>
+                    </shape>
+                </state>
+            </statetype>
+            <statetype name="upscrollarrow">
+                <position>700,425</position>
+                <state type="off">
+                    <imagetype name="upon">
+                        <filename>lb-uparrow-reg.png</filename>
+                    </imagetype>
+                </state>
+                <state type="full">
+                    <imagetype name="upoff">
+                        <filename>lb-uparrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <statetype name="downscrollarrow">
+                <position>740,425</position>
+                <state type="off">
+                    <imagetype name="dnon">
+                        <filename>lb-dnarrow-reg.png</filename>
+                    </imagetype>
+                </state>
+                <state type="full">
+                    <imagetype name="dnoff">
+                        <filename>lb-dnarrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+        </buttonlist>
+
+        <textarea name="status" from="basetextarea">
+            <area>30,480,600,25</area>
+        </textarea>
+
+        <textarea name="manuallabel" from="basetextarea">
+            <area>30,505,300,25</area>
+            <value>Search terms:</value>
+        </textarea>
+
+        <textedit name="manualsearch" from="basetextedit">
+            <position>30,535</position>
+        </textedit>
+
+        <button name="search" from="basebutton">
+            <position>440,538</position>
+            <value>Search</value>
+        </button>
+
+        <button name="skip" from="basebutton">
+            <position>620,538</position>
+            <value>Skip</value>
+        </button>
+
+    </window>
+
+    <window name="channeloverview">
+
+        <textarea name="pagetitle">
+            <area>20,5,570,40</area>
+            <font>baselarge</font>
+            <value>Channel Editor</value>
+        </textarea>
+
+        <shape name="list_background" from="basebackground">
+            <area>10,39,780,275</area>
+        </shape>
+
+        <shape name="channum_column">
+            <area>51,43,60,267</area>
+            <fill color="#333333" alpha="180" />
+        </shape>
+
+        <shape name="sourcename_background" from="channum_column">
+            <area>515,43,219,267</area>
+        </shape>
+
+        <buttonlist name="channels" from="basebuttonlist2">
+            <position>19,50</position>
+            <statetype name="buttonitem">
+                <state name="active">
+                    <imagetype name="icon">
+                        <area>705,0,60,25</area>
+                        <preserveaspect>true</preserveaspect>
+                    </imagetype>
+                    <textarea name="buttontext" />
+                    <textarea name="channum" from="buttontext">
+                        <area>32,1,60,24</area>
+                        <align>center</align>
+                    </textarea>
+                    <textarea name="name" from="buttontext">
+                        <area>100,1,380,24</area>
+                    </textarea>
+                    <textarea name="sourcename" from="name">
+                        <area>500,1,200,24</area>
+                    </textarea>
+                </state>
+                <state name="selectedactive" from="active" />
+                <state name="selectedinactive" from="active" />
+            </statetype>
+        </buttonlist>
+
+        <textarea name="sortlabel" from="basetextarea">
+            <area>30,375,170,30</area>
+            <value>Sort Mode:</value>
+            <font>basemedium</font>
+        </textarea>
+
+        <buttonlist name="sorting" from="basewideselector">
+            <position>210,370</position>
+        </buttonlist>
+
+        <textarea name="sourcelabel" from="sortlabel">
+            <position>30,435</position>
+            <value>Video Source:</value>
+        </textarea>
+
+        <buttonlist name="source" from="basewideselector">
+            <position>210,430</position>
+        </buttonlist>
+
+        <button name="delete" from="basebutton">
+            <position>620,427</position>
+            <value>Delete</value>
+        </button>
+
+        <textarea name="nochannumlabel" from="basetextarea">
+            <area>70,496,500,60</area>
+            <value>Hide Channels without channel number.</value>
+        </textarea>
+
+        <checkbox name="nochannum" from="basecheckbox">
+            <position>30,490</position>
+        </checkbox>
+
+        <button name="scan">
+            <area>35,540,220,43</area>
+            <statetype name="buttonstate">
+                <state name="active">
+                    <imagetype name="background">
+                        <area>0,0,220,43</area>
+                        <filename>wide_button_background.png</filename>
+                    </imagetype>
+                    <textarea name="text">
+                        <area>5,6,210,30</area>
+                        <align>allcenter</align>
+                        <font>basemedium</font>
+                        <font state="selected">basemedium</font>
+                        <font state="disabled">basemediumgrey</font>
+                    </textarea>
+                </state>
+                <state name="selected" from="active">
+                    <imagetype name="background">
+                        <area>0,0,220,43</area>
+                        <filename>wide_button_selected_background.png</filename>
+                    </imagetype>
+                </state>
+                <state name="disabled" from="active" />
+                <state name="pushed" from="active">
+                    <imagetype name="background">
+                        <area>0,0,220,43</area>
+                        <filename>wide_button_pushed_background.png</filename>
+                    </imagetype>
+                    <textarea name="text">
+                        <position>8,8</position>
+                    </textarea>
+                </state>
+            </statetype>
+            <value>Channel Scan</value>
+        </button>
+
+        <button name="importicons" from="scan">
+            <position>290,540</position>
+            <value>Icon Download</value>
+        </button>
+
+        <button name="edittransport" from="scan">
+            <position>545,540</position>
+            <value>Edit Transports</value>
+        </button>
+
+    </window>
+
+    <window name="languageselection">
+
+        <textarea name="countrylabel">
+            <font>baselarge</font>
+            <area>40,20,330,30</area>
+            <value>Country</value>
+            <align>allcenter</align>
+        </textarea>
+
+        <shape name="countrybackground" from="basebackground">
+            <area>20,55,370,450</area>
+        </shape>
+
+        <buttonlist name="countries">
+            <area>30,65,350,430</area>
+            <scrollstyle>center</scrollstyle>
+            <spacing>4</spacing>
+            <layout>vertical</layout>
+            <wrapstyle>selection</wrapstyle>
+            <buttonarea>0,0,100%,97%</buttonarea>
+            <statetype name="buttonitem">
+                <state name="active">
+                    <area>0,0,100%,55</area>
+                    <shape name="buttonbackground">
+                        <area>0,2,100%,100%</area>
+                        <fill style="gradient">
+                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical"  />
+                        </fill>
+                    </shape>
+                    <imagetype name="buttonimage">
+                        <area>5,7,60,40</area>
+                    </imagetype>
+                    <textarea name="buttontext">
+                        <area>70,2,95%,25</area>
+                        <font>basemedium</font>
+                        <cutdown>yes</cutdown>
+                        <align>left,vcenter</align>
+                    </textarea>
+                    <textarea name="country" from="buttontext" /> <!-- Workaround for vanishing buttontext bug -->
+                    <textarea name="nativecountry">
+                        <area>70,30,95%,25</area>
+                        <font>basesmallgrey</font>
+                        <cutdown>yes</cutdown>
+                        <align>left,vcenter</align>
+                    </textarea>
+                </state>
+                <state name="inactive" from="active" />
+                <state name="selectedactive" from="active">
+                    <shape name="buttonbackground">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="255" />
+                        </fill>
+                    </shape>
+                </state>
+                <state name="selectedinactive" from="active">
+                    <shape name="buttonbackground">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="100" />
+                        </fill>
+                    </shape>
+                </state>
+            </statetype>
+            <statetype name="upscrollarrow">
+                <position>10,96%</position>
+                <state type="full">
+                    <imagetype name="upoff">
+                        <filename>lb-uparrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <statetype name="downscrollarrow">
+                <position>40,96%</position>
+                <state type="full">
+                    <imagetype name="dnoff">
+                        <filename>lb-dnarrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <helptext>Select the country in which you currently reside</helptext>
+        </buttonlist>
+
+        <textarea name="languagelabel" from="countrylabel">
+            <position>430,20</position>
+            <value>Language</value>
+        </textarea>
+
+        <shape name="languagebackground" from="basebackground">
+            <area>410,55,370,450</area>
+        </shape>
+
+        <buttonlist name="languages">
+            <area>420,65,350,430</area>
+            <spacing>4</spacing>
+            <scrollstyle>center</scrollstyle>
+            <layout>vertical</layout>
+            <wrapstyle>selection</wrapstyle>
+            <buttonarea>0,0,100%,97%</buttonarea>
+            <statetype name="buttonitem">
+                <state name="active">
+                    <area>0,0,100%,55</area>
+                    <shape name="buttonbackground">
+                        <area>0,2,100%,100%</area>
+                        <fill style="gradient">
+                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical"  />
+                        </fill>
+                    </shape>
+                    <textarea name="buttontext">
+                        <area>10,2,98%,25</area>
+                        <font>basemedium</font>
+                        <cutdown>yes</cutdown>
+                        <align>left,vcenter</align>
+                    </textarea>
+                    <textarea name="language">
+                        <area>10,30,98%,25</area>
+                        <font>basesmallgrey</font>
+                        <cutdown>yes</cutdown>
+                        <align>left,vcenter</align>
+                    </textarea>
+                </state>
+                <state name="inactive" from="active" />
+                <state name="selectedactive" from="active">
+                    <shape name="buttonbackground">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="255" />
+                        </fill>
+                    </shape>
+                </state>
+                <state name="selectedinactive" from="active">
+                    <shape name="buttonbackground">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="100" />
+                        </fill>
+                    </shape>
+                </state>
+            </statetype>
+            <statetype name="upscrollarrow">
+                <position>10,96%</position>
+                <state type="full">
+                    <imagetype name="upoff">
+                        <filename>lb-uparrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <statetype name="downscrollarrow">
+                <position>40,96%</position>
+                <state type="full">
+                    <imagetype name="dnoff">
+                        <filename>lb-dnarrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <helptext>Select your preferred language</helptext>
+        </buttonlist>
+
+        <textarea name="helptext" from="basetextarea">
+            <area>200,520,400,60</area>
+            <align>allcenter</align>
+            <multiline>true</multiline>
+        </textarea>
+
+        <button name="save" from="basebutton">
+            <position>610,530</position>
+            <value>Save</value>
+        </button>
+
+        <button name="cancel" from="basebutton">
+            <position>40,530</position>
+            <value>Cancel</value>
+        </button>
+
+    </window>
+
+    <window name="grabbersettings">
+
+        <textarea name="title" from="basetextarea">
+            <area>20,40,760,40</area>
+            <value>Artwork and Metadata Sources</value>
+            <align>hcenter,vcenter</align>
+            <font>baselarge</font>
+        </textarea>
+
+        <textarea name="helptext" from="basetextarea">
+            <area>50,350,700,280</area>
+            <multiline>yes</multiline>
+            <font>basesmall</font>
+            <align>allcenter</align>
+        </textarea>
+
+        <textarea name="moviegrabber_text" from="basetextarea">
+            <area>75,173,225,30</area>
+            <font>basesmall</font>
+            <value>Movie Metadata Source:</value>
+        </textarea>
+
+        <textarea name="tvgrabber_text" from="basetextarea">
+            <area>75,238,225,30</area>
+            <font>basesmall</font>
+            <value>Television Metadata Source:</value>
+        </textarea>
+
+        <textarea name="gamegrabber_text" from="basetextarea">
+            <area>75,303,225,30</area>
+            <font>basesmall</font>
+            <value>Game Metadata Source:</value>
+        </textarea>
+
+        <textarea name="dailyupdates_text" from="basetextarea">
+            <area>330,365,500,40</area>
+            <value>Perform daily updates of recording artwork</value>
+            <align>left,vcenter</align>
+        </textarea>
+
+    <!--Widgets-->
+
+        <buttonlist name="moviegrabber" from="basewideselector">
+            <position>310,167</position>
+        </buttonlist>
+
+        <buttonlist name="tvgrabber" from="basewideselector">
+            <position>310,232</position>
+        </buttonlist>
+
+        <buttonlist name="gamegrabber" from="basewideselector">
+            <position>310,297</position>
+        </buttonlist>
+
+        <checkbox name="dailyupdates" from="basecheckbox">
+            <position>290,370</position>
+        </checkbox>
+
+        <button name="cancel" from="basebutton">
+            <position>188,530</position>
+            <value>Cancel</value>
+        </button>
+
+        <button name="ok" from="basebutton">
+            <position>435,530</position>
+            <value>OK</value>
+        </button>
+
+    </window>
+
+    <window name="generalwizard">
+
+        <textarea name="title" from="basetextarea">
+            <area>20,40,760,40</area>
+            <value>MythTV Configuration Wizard</value>
+            <align>hcenter,vcenter</align>
+            <font>baselarge</font>
+        </textarea>
+
+        <textarea name="helptext" from="basetextarea">
+            <area>30,470,740,50</area>
+            <multiline>yes</multiline>
+            <font>basesmall</font>
+            <align>allcenter</align>
+        </textarea>
+
+    <!--Widgets-->
+
+        <button name="submit" from="basewidebutton">
+            <position>250,167</position>
+            <value>Submit your hardware profile</value>
+        </button>
+
+        <button name="view" from="basewidebutton">
+            <position>250,232</position>
+            <value>View your hardware profile</value>
+        </button>
+
+        <button name="delete" from="basewidebutton">
+            <position>250,297</position>
+            <value>Delete your hardware profile</value>
+        </button>
+
+        <button name="cancel" from="basebutton">
+            <position>188,530</position>
+            <value>Cancel</value>
+        </button>
+
+        <button name="next" from="basebutton">
+            <position>435,530</position>
+            <value>Next</value>
+        </button>
+
+    </window>
+
+    <window name="audiowizard">
+
+        <textarea name="title" from="basetextarea">
+            <area>20,40,760,40</area>
+            <value>Audio Configuration</value>
+            <align>hcenter,vcenter</align>
+            <font>baselarge</font>
+        </textarea>
+
+        <textarea name="helptext" from="basetextarea">
+            <area>30,470,740,50</area>
+            <multiline>yes</multiline>
+            <font>basesmall</font>
+            <align>allcenter</align>
+        </textarea>
+
+        <textarea name="auddev_text" from="basetextarea">
+            <area>20,103,225,30</area>
+            <font>basesmall</font>
+            <align>right</align>
+            <value>Audio Device:</value>
+        </textarea>
+
+        <textarea name="ac3_text" from="basetextarea">
+            <area>290,155,-20,30</area>
+            <font>basesmall</font>
+            <value>My audio subsystem supports Dolby Digital</value>
+        </textarea>
+
+        <textarea name="dts_text" from="basetextarea">
+            <area>290,200,-20,30</area>
+            <font>basesmall</font>
+            <value>My audio subsystem supports DTS</value>
+        </textarea>
+
+        <textarea name="eac3_text" from="basetextarea">
+            <area>290,245,-20,30</area>
+            <font>basesmall</font>
+            <value>My audio subsystem supports E-AC-3</value>
+        </textarea>
+
+        <textarea name="truehd_text" from="basetextarea">
+            <area>290,290,-20,30</area>
+            <font>basesmall</font>
+            <value>My audio subsystem supports TrueHD</value>
+        </textarea>
+
+        <textarea name="dtshd_text" from="basetextarea">
+            <area>290,335,-20,30</area>
+            <font>basesmall</font>
+            <value>My audio subsystem supports DTS-HD</value>
+        </textarea>
+
+        <textarea name="speaktext_text" from="basetextarea">
+            <area>20,378,225,30</area>
+            <font>basesmall</font>
+            <align>right</align>
+            <value>Number of Speakers:</value>
+        </textarea>
+
+    <!--Widgets-->
+
+        <buttonlist name="audiodevices" from="basewideselector">
+            <position>250,97</position>
+        </buttonlist>
+
+        <checkbox name="ac3check" from="basecheckbox">
+            <position>250,153</position>
+        </checkbox>
+
+        <checkbox name="dtscheck" from="basecheckbox">
+            <position>250,198</position>
+        </checkbox>
+
+        <checkbox name="eac3check" from="basecheckbox">
+            <position>250,243</position>
+        </checkbox>
+
+        <checkbox name="truehdcheck" from="basecheckbox">
+            <position>250,288</position>
+        </checkbox>
+
+        <checkbox name="dtshdcheck" from="basecheckbox">
+            <position>250,333</position>
+        </checkbox>
+
+        <buttonlist name="speakers" from="basewideselector">
+            <position>250,372</position>
+        </buttonlist>
+
+        <button name="testspeakers" from="basewidebutton">
+            <position>250,422</position>
+        </button>
+
+        <button name="previous" from="basebutton">
+            <position>188,530</position>
+            <value>Previous</value>
+        </button>
+
+        <button name="next" from="basebutton">
+            <position>435,530</position>
+            <value>Next</value>
+        </button>
+
+    </window>
+
+    <window name="videowizard">
+
+        <textarea name="title" from="basetextarea">
+            <area>20,40,760,40</area>
+            <value>Video Configuration</value>
+            <align>hcenter,vcenter</align>
+            <font>baselarge</font>
+        </textarea>
+
+        <textarea name="helptext" from="basetextarea">
+            <area>30,470,740,50</area>
+            <multiline>yes</multiline>
+            <font>basesmall</font>
+            <align>allcenter</align>
+        </textarea>
+
+        <textarea name="prof_text" from="basetextarea">
+            <area>75,173,225,30</area>
+            <font>basesmall</font>
+            <value>Video Playback Profile:</value>
+        </textarea>
+
+    <!--Widgets-->
+
+        <buttonlist name="playbackprofiles" from="basewideselector">
+            <position>310,167</position>
+        </buttonlist>
+
+        <button name="testsd" from="baseverywidebutton">
+            <position>310,232</position>
+            <value>Test Standard Definition</value>
+        </button>
+
+        <button name="testhd" from="baseverywidebutton">
+            <position>310,297</position>
+            <value>Test High Definition</value>
+        </button>
+
+        <button name="previous" from="basebutton">
+            <position>188,530</position>
+            <value>Previous</value>
+        </button>
+
+        <button name="next" from="basebutton">
+            <position>435,530</position>
+            <value>Finish</value>
+        </button>
+
+    </window>
+
+    <window name="backendselection">
+
+        <textarea name="label">
+            <font>baselarge</font>
+            <area>40,20,330,30</area>
+            <value>MythTV Servers</value>
+            <align>left</align>
+        </textarea>
+
+        <shape name="listbackground" from="basebackground">
+            <area>20,55,760,410</area>
+        </shape>
+
+        <buttonlist name="backends">
+            <area>30,65,740,390</area>
+            <spacing>4</spacing>
+            <layout>vertical</layout>
+            <wrapstyle>selection</wrapstyle>
+            <buttonarea>0,0,100%,97%</buttonarea>
+            <statetype name="buttonitem">
+                <state name="active">
+                    <area>0,0,100%,55</area>
+                    <shape name="buttonbackground">
+                        <area>0,2,100%,100%</area>
+                        <fill style="gradient">
+                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical"  />
+                        </fill>
+                    </shape>
+                    <textarea name="buttontext">
+                        <area>10,2,450,25</area>
+                        <font>basemedium</font>
+                        <cutdown>yes</cutdown>
+                        <align>left,vcenter</align>
+                    </textarea>
+                    <textarea name="modelname" from="buttontext" /> <!-- Workaround for vanishing buttontext bug -->
+                    <textarea name="protocolversion">
+                        <area>15,30,300,25</area>
+                        <font>basesmallgrey</font>
+                        <cutdown>yes</cutdown>
+                        <align>left,vcenter</align>
+                    </textarea>
+
+                    <textarea name="version">
+                        <area>570,2,100,50</area>
+                        <font>basesmall</font>
+                        <cutdown>yes</cutdown>
+                        <align>right,vcenter</align>
+                    </textarea>
+
+                    <statetype name="connection">
+                        <area>470,2,100,50</area>
+                        <state name="good">
+                            <area>0,0,100,50</area>
+                        </state>
+                        <state name="protocolmismatch" from="good">
+                            <textarea name="description">
+                                <area>0,0,100%,100%</area>
+                                <align>hcenter</align>
+                                <value>Version Mismatch</value>
+                                <font>basesmallred</font>
+                                <multiline>yes</multiline>
+                            </textarea>
+                        </state>
+                        <state name="blocked" from="protocolmismatch">
+                            <textarea name="description">
+                                <value>Firewall</value>
+                            </textarea>
+                        </state>
+                    </statetype>
+
+                    <statetype name="securitypin">
+                        <area>680,7,40,40</area>
+                        <state name="yes">
+                            <area>0,0,40,40</area>
+                            <shape name="pin">
+                                <area>0,0,40,40</area>
+                                <type>roundbox</type>
+                                <cornerradius>6</cornerradius>
+                                <fill color="#990000" />
+                            </shape>
+                            <imagetype name="locked">
+                                <position>6,5</position>
+                                <filename>shared/secure.png</filename>
+                            </imagetype>
+                        </state>
+                        <state name="no">
+                            <area>0,0,40,40</area>
+                            <shape name="nopin">
+                                <area>0,0,40,40</area>
+                                <type>roundbox</type>
+                                <cornerradius>6</cornerradius>
+                                <fill color="#009900" />
+                            </shape>
+                            <imagetype name="unlocked">
+                                <position>2,5</position>
+                                <filename>shared/unsecure.png</filename>
+                            </imagetype>
+                        </state>
+                    </statetype>
+                </state>
+                <state name="inactive" from="active" />
+                <state name="selectedactive" from="active">
+                    <shape name="buttonbackground">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="255" />
+                        </fill>
+                    </shape>
+                </state>
+                <state name="selectedinactive" from="active">
+                    <shape name="buttonbackground">
+                        <fill style="gradient">
+                            <gradient start="#52CA38" end="#349838" alpha="100" />
+                        </fill>
+                    </shape>
+                </state>
+            </statetype>
+            <statetype name="upscrollarrow">
+                <position>10,96%</position>
+                <state type="full">
+                    <imagetype name="upoff">
+                        <filename>lb-uparrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <statetype name="downscrollarrow">
+                <position>40,96%</position>
+                <state type="full">
+                    <imagetype name="dnoff">
+                        <filename>lb-dnarrow-sel.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <helptext>Select the server you wish to connect to</helptext>
+        </buttonlist>
+
+        <textarea name="helptext" from="basetextarea">
+            <area>200,530,400,60</area>
+            <align>allcenter</align>
+            <multiline>true</multiline>
+        </textarea>
+
+        <button name="save" from="basebutton">
+            <position>610,530</position>
+            <value>Save</value>
+        </button>
+
+        <button name="manual" from="basebutton">
+            <position>310,530</position>
+            <value>Manual</value>
+        </button>
+
+        <button name="cancel" from="basebutton">
+            <position>40,530</position>
+            <value>Cancel</value>
+        </button>
+
+    </window>
+
+</mythuitheme>
diff --git a/abs/core/linhes-theme-old/LinHES/cr-lines.png b/abs/core/linhes-theme-old/LinHES/cr-lines.png
new file mode 100644
index 0000000..5edb06a
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/cr-lines.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/cr-selectbar.png b/abs/core/linhes-theme-old/LinHES/cr-selectbar.png
new file mode 100644
index 0000000..9c4b635
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/cr-selectbar.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/htmls/progdetails_page1.html b/abs/core/linhes-theme-old/LinHES/htmls/progdetails_page1.html
new file mode 100644
index 0000000..0ac7b5e
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/htmls/progdetails_page1.html
@@ -0,0 +1,30 @@
+<HTML>
+<head>
+    <style type="text/css">
+        h1 {font-size:15pt;font-style: normal;color:#33FF33}
+        p  {font-size:15pt;font-style: normal;color:#FFFFFF;margin-top: -10pt}
+    </style>
+</head>
+
+<body>
+    <h1>%TITLE_LABEL%</h1> <p>%TITLE%</p>
+    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
+    <h1>%DESCRIPTION_LABEL%</h1> <p>%DESCRIPTION%</p>
+    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
+    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
+    <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
+    <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
+    <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
+    <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
+    <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
+    <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
+    <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
+    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
+    <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
+    <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
+    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
+    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
+    <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
+</body>
+
+</html>
diff --git a/abs/core/linhes-theme-old/LinHES/htmls/progdetails_page2.html b/abs/core/linhes-theme-old/LinHES/htmls/progdetails_page2.html
new file mode 100644
index 0000000..ede4146
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/htmls/progdetails_page2.html
@@ -0,0 +1,47 @@
+<HTML>
+<head>
+    <style type="text/css">
+        h1 {font-size:15pt;font-style: normal;color:#33FF33}
+        p  {font-size:15pt;font-style: normal;color:#FFFFFF;margin-top: -10pt}
+    </style>
+</head>
+
+<body>
+    <h1>%TITLE_LABEL%</h1> <p>%TITLE%</p>
+    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
+    <h1>%DESCRIPTION_LABEL%</h1> <p>%DESCRIPTION%</p>
+    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
+    <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
+    <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
+    <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
+    <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
+    <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
+    <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
+    <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
+    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
+    <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
+    <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
+    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
+    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
+    <h1>%CATEGORY_TYPE_LABEL%</h1> <p>%CATEGORY_TYPE%</p>
+    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
+    <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
+    <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
+    <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
+    <h1>%LAST_RECORDED_LABEL%</h1> <p>%LAST_RECORDED%</p>
+    <h1>%NEXT_RECORDING_LABEL%</h1> <p>%NEXT_RECORDING%</p>
+    <h1>%AVERAGE_TIME_SHIFT_LABEL%</h1> <p>%AVERAGE_TIME_SHIFT%</p>
+    <h1>%WATCH_LIST_SCORE_LABEL%</h1> <p>%WATCH_LIST_SCORE%</p>
+    <h1>%WATCH_LIST_STATUS_LABEL%</h1> <p>%WATCH_LIST_STATUS%</p>
+    <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
+    <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p>
+    <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p>
+    <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
+    <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
+    <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
+    <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
+    <h1>%STORAGE_GROUP_LABEL%</h1> <p>%STORAGE_GROUP%</p>
+    <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
+</body>
+
+</html>
diff --git a/abs/core/linhes-theme-old/LinHES/menu-ui.xml b/abs/core/linhes-theme-old/LinHES/menu-ui.xml
new file mode 100644
index 0000000..3883b21
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/menu-ui.xml
@@ -0,0 +1,456 @@
+<!-- theme.xml for the MythCenter theme - by Jeroen Brosens -->
+<mythuitheme>
+    <window name="mainmenu">
+
+        <fontdef name="menufontdef" face="Trebuchet MS">
+            <color>#FFFFFF</color>
+            <size>17</size>
+            <bold>yes</bold>
+            <shadowcolor>#000000</shadowcolor>
+            <shadowoffset>2,2</shadowoffset>
+            <shadowalpha>50</shadowalpha>
+        </fontdef>
+
+        <fontdef name="clock" from="small">
+            <size>20</size>
+        </fontdef>
+
+        <clock name="clock">
+            <area>280,525,500,40</area>
+            <fontdef>clock</fontdef>
+            <template>%DATE%, %TIME%</template>
+            <align>center</align>
+            <alpha>85</alpha>
+        </clock>
+     
+        <imagetype name="logo">
+            <position>10,10</position>
+            <filename>ui/kmlogo.png</filename>
+        </imagetype>
+        
+        <imagetype name="logo1">
+            <position>10,10</position>
+            <filename>ui/kmlogo1.png</filename>
+            <alphapulse min="0" max="255" change="10" />
+        </imagetype>
+        
+        <imagetype name="logo2">
+            <position>475,10</position>
+            <filename>ui/LinHESlogo.png</filename>
+        </imagetype>
+
+        <buttonlist name="menu">
+            <area>160,70,300,415</area>
+            <layout>vertical</layout>
+            <wrapstyle>selection</wrapstyle>
+            <spacing>0</spacing>
+            <buttonarea>0,57,300,300</buttonarea>
+            <statetype name="buttonitem">
+                <state name="active">
+                    <area>0,0,300,50</area>
+                    <imagetype name="background" />
+                    <textarea name="buttontext">
+                        <area>5,0,300,50</area>
+                        <fontdef>menufontdef</fontdef>
+                        <align>left,vcenter</align>
+                        <cutdown>yes</cutdown>
+                    </textarea>
+                </state>
+                <state name="selectedactive" from="active">
+                    <imagetype name="background">
+                        <filename>ui/button_on.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <statetype name="upscrollarrow">
+                <position>250,0</position>
+                <showempty>yes</showempty>
+                <state type="full">
+                    <imagetype name="upon">
+                        <filename>ui/up.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+            <statetype name="downscrollarrow">
+                <position>250,365</position>
+                <showempty>yes</showempty>
+                <state type="full">
+                    <imagetype name="dnon">
+                        <filename>ui/down.png</filename>
+                    </imagetype>
+                </state>
+            </statetype>
+        </buttonlist>
+
+        <statetype name="watermarks">
+            <position>575,220</position>
+
+            <state name="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/tv.png</filename>
+                    <reflection axis="vertical" shear="0" scale="85" length="35" />
+                </imagetype>
+            </state>
+
+            <!--   mainmenu.xml  -->
+            <state name="TV" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/tv.png</filename>
+                </imagetype>
+            </state>
+            <state name="MUSIC" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/music.png</filename>
+                </imagetype>
+            </state>
+            <state name="VIDEO" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/video.png</filename>
+                </imagetype>
+            </state>
+            <state name="DVD" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/dvd.png</filename>
+                </imagetype>
+            </state>
+            <state name="FM" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/radio.png</filename>
+                </imagetype>
+            </state>
+            <state name="IMAGES" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/gallery.png</filename>
+                </imagetype>
+            </state>
+            <state name="GAME" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/joystick.png</filename>
+                </imagetype>
+            </state>
+            <state name="WEATHER" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/weather.png</filename>
+                </imagetype>
+            </state>
+            <state name="NEWS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/news.png</filename>
+                </imagetype>
+            </state>
+            <state name="WEBPAGE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/browser.png</filename>
+                </imagetype>
+            </state>
+            <state name="RECIPE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/pie.png</filename>
+                </imagetype>
+            </state>
+            <state name="PHONE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/phone.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETUP" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/setup.png</filename>
+                </imagetype>
+            </state>
+            <state name="SHUTDOWN" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/important.png</filename>
+                </imagetype>
+            </state>
+            <state name="BACKUP" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/backup.png</filename>
+                </imagetype>
+            </state>
+            <state name="RESTORE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/restore.png</filename>
+                </imagetype>
+            </state>
+            <state name="UPGRADE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/upgrade.png</filename>
+                </imagetype>
+            </state>
+            <state name="LINHES_SETUP" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/hardware_settings.png</filename>
+                </imagetype>
+            </state>
+
+            <!--   dvdmenu.xml  -->
+            <state name="DVD_PLAY" from="DVD" />
+            <state name="VCD_PLAY" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/cd.png</filename>
+                </imagetype>
+            </state>
+            <state name="DVD_RIP" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/dvd_rip.png</filename>
+                </imagetype>
+            </state>
+
+            <!--   dvd_settings.xml  -->
+            <state name="DVD_SETTINGS_GENERAL" from="DVD" />
+            <state name="DVD_SETTINGS_PLAY" from="DVD" />
+            <state name="DVD_SETTINGS_RIP" from="DVD_RIP" />
+
+            <!--   game_settings.xml  -->
+            <state name="GAME_SETTINGS_GENERAL" from="GAME" />
+            <state name="GAME_SCAN" from="GAME" />
+
+            <!-- Netflix -->
+            <state name="NETFLIX" from="DVD" />
+            <state name="NETFLIX_QUEUE" from="DVD" />
+            <state name="NETFLIX_BROWSE" from="DVD" />
+            <state name="NETFLIX_HISTORY" from="DVD" />
+            <state name="SETTINGS_NETFLIX" from="DVD" />
+
+            <!--   main_settings.xml  -->
+            <state name="SETTINGS_GENERAL" from="SETUP" />
+            <state name="SETTINGS_APPEARANCE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/appearance.png</filename>
+                </imagetype>
+            </state>
+            <state name="SCREENSETUPWIZARD" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/wizard.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_TV" from="TV" />
+            <state name="SETTINGS_MUSIC" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/music_settings.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_VIDEO" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/video_settings.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_DVD" from="DVD" />
+            <state name="SETTINGS_FM" from="FM" />
+            <state name="SETTINGS_IMAGES" from="IMAGES" />
+            <state name="SETTINGS_GAME" from="GAME" />
+            <state name="SETTINGS_WEATHER" from="WEATHER" />
+            <state name="SETTINGS_NEWS" from="NEWS" />
+            <state name="SETTINGS_WEBPAGE" from="WEBPAGE" />
+            <state name="SETTINGS_RECIPE" from="RECIPE" />
+            <state name="SETTINGS_XBOX" from="SETUP" />
+            <state name="SETUP_KEYS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/keys.png</filename>
+                </imagetype>
+            </state>
+
+            <!--   musicmenu.xml  -->
+            <state name="MUSIC_PLAY" from="MUSIC" />
+            <state name="MUSIC_PLAYLIST" from="MUSIC" />
+            <state name="MUSIC_RIP" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/cd_rip.png</filename>
+                </imagetype>
+            </state>
+            <state name="MUSIC_SCAN" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/search.png</filename>
+                </imagetype>
+            </state>
+
+            <!--   music_settings.xml  -->
+            <state name="MUSIC_SETTINGS_GENERAL" from="SETTINGS_MUSIC" />
+            <state name="MUSIC_SETTINGS_PLAYER" from="SETTINGS_MUSIC" />
+            <state name="MUSIC_SETTINGS_RIP" from="MUSIC_RIP" />
+
+            <!--   tv_schedule.xml  -->
+
+            <state name="TV_PROGRAM_GUIDE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/clock.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_PROGFIND" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/search.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_SEARCH_LISTINGS" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_WORDS" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_LISTS" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_PEOPLE" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_POWER" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_KEYWORDS" from="TV_PROGFIND" />
+            <state name="TV_CUSTOM_RECORD" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/record.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_MANUAL_SCHEDULE" from="TV_PROGRAM_GUIDE" />
+            <state name="TV_RECPRIORITIES" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/priority.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_CONFLICTS" from="TV_CUSTOM_RECORD" />
+
+            <!--   recpriorities_settings.xml  -->
+            <state name="TV_RECPRIORITIES_SETTINGS_GENERAL" from="TV_RECPRIORITIES" />
+            <state name="TV_RECPRIORITIES_CHANNEL" from="TV_RECPRIORITIES" />
+            <state name="TV_RECPRIORITIES_CUSTOM" from="TV_RECPRIORITIES" />
+
+            <!--   setup.xml  -->
+            <state name="SETUP_GENERAL" from="SETUP" />
+            <state name="SETUP_STORAGE_GROUPS" from="SETUP" />
+            <state name="SETUP_CAPTURE_CARDS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/hardware_settings.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETUP_VIDEO_SOURCES" from="SETTINGS_VIDEO" />
+            <state name="SETUP_INPUT_CONNECTIONS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/hardware_info.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETUP_CHANNEL_EDITOR" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/checklist.png</filename>
+                </imagetype>
+            </state>
+
+            <!--   tv_search.xml  -->
+            <state name="TV_SEARCH_TITLES" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_KEYWORDS" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_PEOPLE" from="TV_PROGFIND" />
+
+            <!--   tv_lists.xml  -->
+            <state name="TV_SEARCH_NEW_TITLES" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_MOVIES" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_CATEGORIES" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_CHANNELS" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_TIMES" from="TV_PROGFIND" />
+            <state name="TV_SEARCH_STORED" from="TV_PROGFIND" />
+
+            <!--   tv_settings.xml  -->
+            <state name="TV_SETTINGS_GENERAL" from="SETUP" />
+            <state name="TV_SETTINGS_PROGRAM_GUIDE" from="TV_PROGRAM_GUIDE" />
+            <state name="TV_SETTINGS_PLAYBACK" from="TV" />
+            <state name="TV_SETTINGS_PLAYBACK_OSD" from="TV" />
+            <state name="TV_SETTINGS_PLAYBACK_GROUPS" from="TV" />
+            <state name="TV_SETTINGS_RECORDING_PROFILES" from="TV_CUSTOM_RECORD" />
+            <state name="TV_SETTINGS_RECPRIORITIES" from="TV_RECPRIORITIES" />
+
+            <!--   tvmenu.xml  -->
+            <state name="TV_WATCH_TV" from="TV" />
+            <state name="TV_SCHEDULE_RECORDINGS" from="TV_PROGRAM_GUIDE" />
+            <state name="TV_WATCH_RECORDINGS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/play.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_DELETE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/delete.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_PREVIOUS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/previous.png</filename>
+                </imagetype>
+            </state>
+            <state name="TV_STATUS" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/info.png</filename>
+                </imagetype>
+            </state>
+
+            <!--   video_settings.xml  -->
+            <state name="VIDEO_SETTINGS_GENERAL" from="SETTINGS_VIDEO" />
+            <state name="VIDEO_SETTINGS_PLAYER" from="SETTINGS_VIDEO" />
+            <state name="VIDEO_FILE_TYPES" from="SETTINGS_VIDEO" />
+
+            <!--   videomenu.xml  -->
+            <state name="VIDEO_GALLERY" from="VIDEO" />
+            <state name="VIDEO_BROWSER" from="VIDEO" />
+            <state name="VIDEO_LIST" from="SETTINGS_VIDEO" />
+            <state name="VIDEO_MANAGER" from="SETTINGS_VIDEO" />
+
+            <!--   AltMenus Specific Icons  -->
+            <state name="TV_UPCOMING_RECORDINGS" from="TV_PROGRAM_GUIDE" />
+            <state name="SETTINGS_MEDIA" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/multimedia.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_INFO_CENTER" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/hardware_info.png</filename>
+                </imagetype>
+            </state>
+            <state name="MENU_MEDIA_LIBRARY" from="SETTINGS_MEDIA" />
+            <state name="MENU_MANAGE_RECORDINGS" from="SETUP_CHANNEL_EDITOR" />
+            <state name="MENU_INFO_CENTER" from="TV_STATUS" />
+            <state name="MENU_OPTICAL_DISKS" from="DVD" />
+            <state name="MENU_UTILITIES_SETUP" from="SETUP" />
+            <state name="SETUP_FRONTEND" from="SETUP" />
+            <state name="SETUP_BACKEND" from="SETUP" />
+            <state name="SETUP_MENU" from="SETUP" />
+            <state name="STREAM" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/stream.png</filename>
+                </imagetype>
+            </state>
+            <state name="EJECT" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/eject.png</filename>
+                </imagetype>
+            </state>
+            <state name="ARCHIVE" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/archive.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_ARCHIVE" from="ARCHIVE" />
+            <state name="ARCHIVE_FINDER" from="TV_PROGFIND" />
+            <state name="ARCHIVE_EXPORT_VIDEO" from="ARCHIVE" />
+            <state name="ARCHIVE_IMPORT_VIDEO" from="ARCHIVE" />
+            <state name="ARCHIVE_SELECT_RECORDINGS" from="ARCHIVE" />
+            <state name="ARCHIVE_SELECT_VIDEOS" from="ARCHIVE" />
+            <state name="ARCHIVE_SELECT_FILES" from="ARCHIVE" />
+            <state name="ARCHIVE_CREATE_DVD" from="ARCHIVE" />
+            <state name="ARCHIVE_CREATE_ARCHIVE" from="ARCHIVE" />
+            <state name="ARCHIVE_UTILITIES" from="ARCHIVE" />
+            <state name="ARCHIVE_LAST_LOG" from="TV_STATUS" />
+            <state name="ARCHIVE_TEST_DVD" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/archive.png</filename>
+                </imagetype>
+            </state>
+            <state name="ARCHIVE_BURN_DVD" from="ARCHIVE" />
+            <!-- Movietimes -->
+            <state name="MOVIETIMES" from="DEFAULT">
+                <imagetype name="watermark">
+                    <filename>watermark/movietime.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_MOVIETIME" from="MOVIETIMES" />
+            <!-- Zoneminder -->
+            <state name="ZONEMINDER">
+                <imagetype name="watermark">
+                    <filename>watermark/zoneminder.png</filename>
+                </imagetype>
+            </state>
+            <state name="SETTINGS_ZONEMINDER" from="ZONEMINDER" />
+        </statetype>
+
+    </window>
+
+</mythuitheme>
diff --git a/abs/core/linhes-theme-old/LinHES/preview.jpg b/abs/core/linhes-theme-old/LinHES/preview.jpg
new file mode 100644
index 0000000..d89d8e5
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/preview.jpg differ
diff --git a/abs/core/linhes-theme-old/LinHES/qtlook.txt b/abs/core/linhes-theme-old/LinHES/qtlook.txt
new file mode 100644
index 0000000..1e1a3d5
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/qtlook.txt
@@ -0,0 +1,98 @@
+# Color of the background
+str BackgroundColor=SteelBlue
+# Color of lines, text, etc
+str ForegroundColor=white
+# Pixmap to use for the background
+str BackgroundPixmap=ui/background.png
+
+# Colors for the different program categories
+str Cat_Comedy=DarkOrchid
+str Cat_Animals=ForestGreen
+str Cat_Nature=SprintGreen
+str Cat_SciFi=DarkBlue
+str Cat_Horror=firebrick3
+str Cat_Action=maroon
+str Cat_Game=orchid
+str Cat_Children's=MediumSlateBlue
+str Cat_Edu=CornflowerBlue
+str Cat_Adult=thistle3
+str Cat_Musical=turquoise3
+str Cat_News=DarkOrange3
+str Cat_Reality=sienna
+str Cat_Cooking=tan3
+str Cat_Doc=goldenrod
+str Cat_Sports=DarkCyan
+str Cat_Mystery=SlateGrey
+str Cat_Drama=rosybrown3
+str Cat_Classic=grey62
+str Cat_Crime=MediumVioletRed
+str Cat_Talk=MediumTurquoise
+
+str ActiveForeground=#ffffff
+str ActiveButton=#38689c
+str ActiveLight=#5788c3
+str ActiveMidlight=#4871a2
+str ActiveDark=#162231
+str ActiveMid=#37567b
+str ActiveText=#dcdcdc
+str ActiveBrightText=#5788c3
+str ActiveButtonText=#ffffff
+str ActiveBase=#002a4e
+str ActiveBackground=#426794
+str ActiveShadow=#000000
+str ActiveHighlight=#70a0d8
+str ActiveHighlightedText=#000000
+
+str InactiveForeground=#ffffff
+str InactiveButton=#426794
+str InactiveLight=#5788c3
+str InactiveMidlight=#4871a2
+str InactiveDark=#162231
+str InactiveMid=#37567b
+str InactiveText=#dcdcdc
+str InactiveBrightText=#5788c3
+str InactiveButtonText=#ffffff
+str InactiveBase=#002a4e
+str InactiveBackground=#426794
+str InactiveShadow=#000000
+str InactiveHighlight=#5cb3ff
+str InactiveHighlightedText=#000000
+
+str DisabledForeground=#555555
+str DisabledButton=#426794
+str DisabledLight=#5788c3
+str DisabledMidlight=#4871a2
+str DisabledDark=#162231
+str DisabledMid=#37567b
+str DisabledText=#37567b
+str DisabledBrightText=#5788c3
+str DisabledButtonText=#37567b
+str DisabledBase=#002a4e
+str DisabledBackground=#426794
+str DisabledShadow=#000000
+str DisabledHighlight=#000080
+str DisabledHighlightedText=#ffffff
+
+str curTimeChan_bgColor=#8f2813
+str curTimeChan_fgColor=#ffffff
+str date_bgColor=#0f2e8f
+str date_dsColor=#000000
+str date_fgColor=#ffffff
+str chan_bgColor=#0f2f5a
+str chan_dsColor=#000000
+str chan_fgColor=#ffffff
+str time_bgColor=#0f2e8f
+str time_dsColor=#000000
+str time_fgColor=#ffffff
+str prog_bgColor=#2d587b
+str prog_fgColor=#ffffff
+str progLine_Color=#104064
+str progArrow_Color=#ffffff
+int progArrow_Type=0
+str curProg_bgColor=#85a5bc
+str curRecProg_bgColor=#bc4c32
+str curProg_dsColor=#000000
+str curProg_fgColor=#eefb92
+str misChanIcon_bgColor=#000000
+str misChanIcon_fgColor=#ffffff
+
diff --git a/abs/core/linhes-theme-old/LinHES/themeinfo.xml b/abs/core/linhes-theme-old/LinHES/themeinfo.xml
new file mode 100755
index 0000000..3ff2771
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/themeinfo.xml
@@ -0,0 +1,56 @@
+<themeinfo>
+    <!-- The Theme Name (Required) -->
+    <name>LinHES</name>
+
+    <!-- The Theme Types (Required) -->
+    <types>
+        <!-- Type. Legal Values are one or more of: UI, OSD and Menu -->
+        <type>UI</type>
+    </types>
+
+    <!-- Aspect ratio of the theme. (Required)
+         Maybe be: 4:3, 5:4, 16:9 or 16:10 -->
+    <aspect>4:3</aspect>
+
+    <!-- The base resolution of the theme before being scaled to the users
+         resolution (Required)
+         Usually 800x600 (4:3) or 1280x720 (16:9) -->
+    <baseres>800x600</baseres>
+
+    <!-- Theme Author Details (Optional)-->
+    <author>
+        <!-- Your name -->
+        <name>Cecil Watson</name>
+
+        <!-- Your Email Address -->
+        <email>linhes@ovi.com</email>
+    </author>
+
+    <!-- The Versioning Info (Required) -->
+    <version>
+        <!-- Major version changes mean the theme is no longer
+             compatible with earlier versions of mythtv -->
+        <major>1</major>
+
+        <!-- Minor version changes are backwards compatible -->
+        <minor>4</minor>
+    </version>
+
+    <!-- Theme Details (Required) -->
+    <detail>
+        <!-- At least one thumbnail image named "preview" must be included
+             with the theme.
+             There is no limit to the number of thumbnails.
+             Each thumbnail must be given a different name -->
+        <thumbnail name="preview">preview.jpg</thumbnail>
+
+        <!-- A description of the theme, including general colours and
+             style. The description should include any details that
+             may help to locate your theme in a search. -->
+        <description>LinHES theme based on MythCenter.</description>
+
+        <!-- Errata. A list of known faults, missing elements or unfinished
+             areas. e.g. "mythgallery not themed" -->
+        <errata>N/A</errata>
+    </detail>
+</themeinfo>
diff --git a/abs/core/linhes-theme-old/LinHES/ui.xml b/abs/core/linhes-theme-old/LinHES/ui.xml
new file mode 100644
index 0000000..7857798
--- /dev/null
+++ b/abs/core/linhes-theme-old/LinHES/ui.xml
@@ -0,0 +1,182 @@
+	<!-- ui.xml for the MythCenter theme - by Jeroen Brosens -->
+<mythuitheme>
+
+  <window name="schdiff">
+
+    <font name="active_font" face="Trebuchet MS">
+      <color>#ffffff</color>
+      <size>16</size>
+      <size:small>11</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="inactive_font" face="Trebuchet MS">
+      <color>#9999cc</color>
+      <size>16</size>
+      <size:small>11</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="record_font" face="Trebuchet MS">
+      <color>#33FF33</color>
+      <size>16</size>
+      <size:small>11</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="recording_font" face="Trebuchet MS">
+      <color>#FF33FF</color>
+      <size>16</size>
+      <size:small>11</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="norecordfnt" face="Trebuchet MS">
+      <color>#999999</color>
+      <size>16</size>
+      <size:small>11</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="conflictfnt" face="Trebuchet MS">
+      <color>#ffff33</color>
+      <size>16</size>
+      <size:small>11</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="currenttitle" face="Trebuchet MS">
+      <color>#ffff33</color>
+      <size>18</size>
+      <size:small>12</size:small>
+      <bold>yes</bold>
+    </font>
+
+    <font name="title" face="Trebuchet MS">
+      <color>#ffffff</color>
+      <dropcolor>#000000</dropcolor>
+      <size>27</size>
+      <size:small>13</size:small>
+      <shadow>3,3</shadow>
+      <bold>yes</bold>
+    </font>
+
+    <font name="info" face="Trebuchet MS">
+      <color>#ffffff</color>
+      <size>17</size>
+      <size:small>8</size:small>
+      <shadow>1,1</shadow>
+      <bold>yes</bold>
+    </font>
+
+    <font name="message" face="Trebuchet MS">
+      <color>#ffffff</color>
+      <size>16</size>
+      <size:small>10</size:small>
+      <shadow>1,1</shadow>
+      <bold>yes</bold>
+    </font>
+
+    <font name="messagegray" face="Trebuchet MS">
+      <color>#999999</color>
+      <size>16</size>
+      <size:small>10</size:small>
+      <shadow>1,1</shadow>
+      <bold>yes</bold>
+    </font>
+
+    <font name="messageyellow" face="Trebuchet MS">
+      <color>#ffff33</color>
+      <size>16</size>
+      <size:small>10</size:small>
+      <shadow>1,1</shadow>
+      <bold>yes</bold>
+    </font>
+
+    <container name="background">
+      <textarea name="sched" draworder="0">
+        <area>20,10,400,40</area>
+        <font>info</font>
+        <value>Preview Schedule Changes:</value>
+      </textarea>
+      <textarea name="view" align="right" draworder="0">
+        <area>400,10,380,30</area>
+        <font>info</font>
+      </textarea>
+      <image name="filler" draworder="0" fleximage="yes">
+        <filename>cr-background.png</filename>
+        <position>0,39</position>
+      </image>
+    </container>
+
+    <container name="selector">
+      <area>0,39,800,290</area>
+      <listarea name="conflictlist" draworder="4">
+        <area>20,12,760,265</area>
+        <fcnfont name="conflictfnt" function="conflictingrecording"></fcnfont>
+        <fcnfont name="norecordfnt" function="disabledrecording"></fcnfont>
+        <fcnfont name="active_font" function="active"></fcnfont>
+        <fcnfont name="inactive_font" function="inactive"></fcnfont>
+        <fcnfont name="record_font" function="record"></fcnfont>
+        <fcnfont name="recording_font" function="recording"></fcnfont>
+        <fcnfont name="active_font" function="selected"></fcnfont>
+        <columnpadding>10</columnpadding>
+        <column number="1" width="160" context="-1"></column>
+        <column number="2" width="120" context="-1"></column>
+        <column number="3" width="370" context="-1"></column>
+        <column number="4" width="20" context="-1"></column>
+        <column number="5" width="20" context="-1"></column>
+        <items>9</items>
+        <image function="selectionbar" filename="cr-selectbar.png" location="-14,-5"></image>
+        <image function="uparrow" filename="uparrow.png" location="760,20"></image>
+        <image function="downarrow" filename="downarrow.png" location="760,220"></image>
+      </listarea>
+      <image name="showinglines" draworder="5" fleximage="no">
+        <filename>cr-lines.png</filename>
+        <position>0,0</position>
+      </image>
+    </container>
+
+    <container name="program_info">
+      <area>0,360,800,210</area>
+      <textarea name="title" draworder="6">
+        <area>20,0,800,40</area>
+        <font>title</font>
+      </textarea>
+      <textarea name="channel" draworder="6">
+        <area>20,40,160,30</area>
+        <font>info</font>
+      </textarea>
+      <textarea name="timedate" draworder="6">
+        <area>200,40,420,30</area>
+        <font>info</font>
+      </textarea>
+      <textarea name="subdescr" draworder="6">
+        <area>20,70,720,140</area>
+        <font>info</font>
+        <multiline>yes</multiline>
+        <value>%SUBTITLE|"|"
+%%STARS%%DESCRIPTION%</value>
+      </textarea>
+    </container>
+
+    <container name="status_info">
+      <area>300,330,480,30</area>
+      <textarea name="recordingstatus" align="right" draworder="6">
+        <area>0,0,480,30</area>
+        <font>message</font>
+      </textarea>
+    </container>
+
+   <container name="norecordings_list">
+      <textarea name="msg" align="center" draworder="8">
+         <area>0,110,800,70</area>
+         <font>info</font>
+         <value>The recording schedule would not be affected.</value>
+         <multiline>yes</multiline>
+      </textarea>
+    </container>
+
+  </window>
+
+</mythuitheme>
diff --git a/abs/core/linhes-theme-old/LinHES/ui/LinHESlogo.png b/abs/core/linhes-theme-old/LinHES/ui/LinHESlogo.png
new file mode 100644
index 0000000..b0ebf1a
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/ui/LinHESlogo.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/ui/background.png b/abs/core/linhes-theme-old/LinHES/ui/background.png
new file mode 100644
index 0000000..d948de7
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/ui/background.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/ui/button_off.png b/abs/core/linhes-theme-old/LinHES/ui/button_off.png
new file mode 100644
index 0000000..56d4c36
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/ui/button_off.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/ui/button_on.png b/abs/core/linhes-theme-old/LinHES/ui/button_on.png
new file mode 100755
index 0000000..09c10f9
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/ui/button_on.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/ui/kmlogo.png b/abs/core/linhes-theme-old/LinHES/ui/kmlogo.png
new file mode 100755
index 0000000..19ea6d5
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/ui/kmlogo.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/ui/kmlogo1.png b/abs/core/linhes-theme-old/LinHES/ui/kmlogo1.png
new file mode 100755
index 0000000..0550ef3
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/ui/kmlogo1.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/appearance.png b/abs/core/linhes-theme-old/LinHES/watermark/appearance.png
new file mode 100644
index 0000000..37b575e
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/appearance.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/archive.png b/abs/core/linhes-theme-old/LinHES/watermark/archive.png
new file mode 100755
index 0000000..0fd1dff
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/archive.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/backup.png b/abs/core/linhes-theme-old/LinHES/watermark/backup.png
new file mode 100644
index 0000000..a63ea36
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/backup.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/blank.png b/abs/core/linhes-theme-old/LinHES/watermark/blank.png
new file mode 100644
index 0000000..163a9ff
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/blank.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/browser.png b/abs/core/linhes-theme-old/LinHES/watermark/browser.png
new file mode 100644
index 0000000..0171ab6
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/browser.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/categories.png b/abs/core/linhes-theme-old/LinHES/watermark/categories.png
new file mode 100755
index 0000000..e0fd57f
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/categories.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/cd.png b/abs/core/linhes-theme-old/LinHES/watermark/cd.png
new file mode 100644
index 0000000..9f08c2f
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/cd.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/cd_rip.png b/abs/core/linhes-theme-old/LinHES/watermark/cd_rip.png
new file mode 100644
index 0000000..92150bd
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/cd_rip.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/checklist.png b/abs/core/linhes-theme-old/LinHES/watermark/checklist.png
new file mode 100644
index 0000000..66fd8b2
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/checklist.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/clock.png b/abs/core/linhes-theme-old/LinHES/watermark/clock.png
new file mode 100644
index 0000000..621fec4
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/clock.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/delete.png b/abs/core/linhes-theme-old/LinHES/watermark/delete.png
new file mode 100755
index 0000000..d8b9e76
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/delete.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/dvd.png b/abs/core/linhes-theme-old/LinHES/watermark/dvd.png
new file mode 100644
index 0000000..be25627
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/dvd.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/dvd_rip.png b/abs/core/linhes-theme-old/LinHES/watermark/dvd_rip.png
new file mode 100644
index 0000000..81b776c
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/dvd_rip.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/eject.png b/abs/core/linhes-theme-old/LinHES/watermark/eject.png
new file mode 100755
index 0000000..871576d
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/eject.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/gallery.png b/abs/core/linhes-theme-old/LinHES/watermark/gallery.png
new file mode 100644
index 0000000..ad5baa5
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/gallery.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/gallery_settings.png b/abs/core/linhes-theme-old/LinHES/watermark/gallery_settings.png
new file mode 100644
index 0000000..17f0c9a
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/gallery_settings.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/hardware_info.png b/abs/core/linhes-theme-old/LinHES/watermark/hardware_info.png
new file mode 100644
index 0000000..0d7232d
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/hardware_info.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/hardware_settings.png b/abs/core/linhes-theme-old/LinHES/watermark/hardware_settings.png
new file mode 100644
index 0000000..44dec7a
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/hardware_settings.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/info.png b/abs/core/linhes-theme-old/LinHES/watermark/info.png
new file mode 100644
index 0000000..41821ab
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/info.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/joystick.png b/abs/core/linhes-theme-old/LinHES/watermark/joystick.png
new file mode 100644
index 0000000..e482e5d
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/joystick.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/keys.png b/abs/core/linhes-theme-old/LinHES/watermark/keys.png
new file mode 100644
index 0000000..fa8fecb
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/keys.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/movietime.png b/abs/core/linhes-theme-old/LinHES/watermark/movietime.png
new file mode 100644
index 0000000..df3bcb6
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/movietime.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/multimedia.png b/abs/core/linhes-theme-old/LinHES/watermark/multimedia.png
new file mode 100644
index 0000000..0e8e1dd
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/multimedia.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/music.png b/abs/core/linhes-theme-old/LinHES/watermark/music.png
new file mode 100644
index 0000000..a97ba4c
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/music.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/music_settings.png b/abs/core/linhes-theme-old/LinHES/watermark/music_settings.png
new file mode 100644
index 0000000..9e65588
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/music_settings.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/news.png b/abs/core/linhes-theme-old/LinHES/watermark/news.png
new file mode 100644
index 0000000..438a02d
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/news.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/optical.png b/abs/core/linhes-theme-old/LinHES/watermark/optical.png
new file mode 100644
index 0000000..1cdf3ea
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/optical.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/phone.png b/abs/core/linhes-theme-old/LinHES/watermark/phone.png
new file mode 100644
index 0000000..c9abc2e
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/phone.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/play.png b/abs/core/linhes-theme-old/LinHES/watermark/play.png
new file mode 100644
index 0000000..e9c8b15
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/play.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/previous.png b/abs/core/linhes-theme-old/LinHES/watermark/previous.png
new file mode 100755
index 0000000..57363e8
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/previous.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/priority.png b/abs/core/linhes-theme-old/LinHES/watermark/priority.png
new file mode 100644
index 0000000..9b00a35
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/priority.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/record.png b/abs/core/linhes-theme-old/LinHES/watermark/record.png
new file mode 100644
index 0000000..7c07dd9
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/record.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/restore.png b/abs/core/linhes-theme-old/LinHES/watermark/restore.png
new file mode 100644
index 0000000..6ed810c
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/restore.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/search.png b/abs/core/linhes-theme-old/LinHES/watermark/search.png
new file mode 100644
index 0000000..2371f90
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/search.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/setup.png b/abs/core/linhes-theme-old/LinHES/watermark/setup.png
new file mode 100644
index 0000000..4aaa062
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/setup.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/smolt.png b/abs/core/linhes-theme-old/LinHES/watermark/smolt.png
new file mode 100644
index 0000000..44dec7a
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/smolt.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/stream.png b/abs/core/linhes-theme-old/LinHES/watermark/stream.png
new file mode 100644
index 0000000..493e5da
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/stream.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/tng.png b/abs/core/linhes-theme-old/LinHES/watermark/tng.png
new file mode 100644
index 0000000..ac0b685
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/tng.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/tv.png b/abs/core/linhes-theme-old/LinHES/watermark/tv.png
new file mode 100644
index 0000000..e836592
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/tv.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/upgrade.png b/abs/core/linhes-theme-old/LinHES/watermark/upgrade.png
new file mode 100644
index 0000000..c838a3d
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/upgrade.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/video.png b/abs/core/linhes-theme-old/LinHES/watermark/video.png
new file mode 100644
index 0000000..bf07e27
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/video.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/video_settings.png b/abs/core/linhes-theme-old/LinHES/watermark/video_settings.png
new file mode 100644
index 0000000..a786c2c
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/video_settings.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/weather.png b/abs/core/linhes-theme-old/LinHES/watermark/weather.png
new file mode 100644
index 0000000..6ef59eb
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/weather.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/wizard.png b/abs/core/linhes-theme-old/LinHES/watermark/wizard.png
new file mode 100644
index 0000000..3b7a184
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/wizard.png differ
diff --git a/abs/core/linhes-theme-old/LinHES/watermark/zoneminder.png b/abs/core/linhes-theme-old/LinHES/watermark/zoneminder.png
new file mode 100755
index 0000000..b97dec2
Binary files /dev/null and b/abs/core/linhes-theme-old/LinHES/watermark/zoneminder.png differ
diff --git a/abs/core/linhes-theme-old/PKGBUILD b/abs/core/linhes-theme-old/PKGBUILD
new file mode 100644
index 0000000..75d2157
--- /dev/null
+++ b/abs/core/linhes-theme-old/PKGBUILD
@@ -0,0 +1,18 @@
+# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $
+# Maintainer: Cecil Watson<knoppmyth@gmail.com>
+
+pkgname=linhes-theme
+pkgver=1.4
+pkgrel=4
+pkgdesc="Default LinHES theme."
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://linhes.org/"
+
+package() {
+  cd $srcdir/
+  cp -a $startdir/LinHES $srcdir/
+  mkdir -p $pkgdir/usr/share/mythtv/themes
+  cp -a LinHES $pkgdir/usr/share/mythtv/themes
+}
+md5sums=()
diff --git a/abs/core/linhes-theme/LinHES/README b/abs/core/linhes-theme/LinHES/README
deleted file mode 100644
index 7fcf653..0000000
--- a/abs/core/linhes-theme/LinHES/README
+++ /dev/null
@@ -1,32 +0,0 @@
-===================================
- The 'MythCenter' theme for MythTV
-===================================
-
-Changelog:
-----------
-04 feb 2005: removed clashing 'MythCenter' text from background
-03 feb 2005: initial release
-
-About:
-------
-
-This theme is originally based on G.A.N.T. by Oscar Carlsson and 
-is inspired by the well-known Media Center theme.
-
-I found the MythTVMediaCenterOSD osd theme by Jason Gabriele to go best 
-with this theme, but of course this is merely a matter of taste. 
-Maybe I will do an OSD theme in the future too.
-
-The most recent version can be downloaded here: 
-http://www.fotoniq.nl/files/MythCenter.tar.gz
-
-Licensing:
-----------
-
-The contents may be freely distributed and changed.
-
-Contact:
---------
-
-Jeroen Brosens
-jeroen@fotoniq.nl
diff --git a/abs/core/linhes-theme/LinHES/base.xml b/abs/core/linhes-theme/LinHES/base.xml
deleted file mode 100644
index 93d8fc2..0000000
--- a/abs/core/linhes-theme/LinHES/base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<mythuitheme>
-
-    <window name="backgroundwindow">
-        <imagetype name="backimg">
-            <filename>ui/background.png</filename>
-        </imagetype>
-
-        <fontdef name="small" face="Trebuchet MS">
-            <color>#FFFFFF</color>
-            <pixelsize>19</pixelsize>
-	    <weight>bold</weight>
-        </fontdef>
-
-        <fontdef name="medium" from="small">
-            <pixelsize>22</pixelsize>
-        </fontdef>
-
-        <fontdef name="large" from="small">
-            <pixelsize>28</pixelsize>
-        </fontdef>
-
-    </window>
-
-</mythuitheme>
-
diff --git a/abs/core/linhes-theme/LinHES/config-ui.xml b/abs/core/linhes-theme/LinHES/config-ui.xml
deleted file mode 100644
index c4a3ed0..0000000
--- a/abs/core/linhes-theme/LinHES/config-ui.xml
+++ /dev/null
@@ -1,833 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mythuitheme SYSTEM "http://www.mythtv.org/schema/mythuitheme.dtd">
-<mythuitheme>
-    <window name="iconimport">
-        <textarea name="name" from="basetextarea">
-            <area>30,15,740,30</area>
-            <font>basemedium</font>
-            <align>hcenter</align>
-        </textarea>
-
-        <buttonlist name="icons">
-            <area>20,50,760,450</area>
-            <buttonarea>0,0,760,420</buttonarea>
-            <layout>grid</layout>
-            <spacing>5</spacing>
-            <statetype name="buttonitem">
-                <state name="active">
-                    <area>0,0,250,60</area>
-                    <shape name="background">
-                        <area>0,0,250,60</area>
-                        <type>roundbox</type>
-                        <cornerradius>4</cornerradius>
-                        <fill style="gradient">
-                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical" />
-                        </fill>
-                    </shape>
-                    <imagetype name="icon">
-                        <area>0,5,80,50</area>
-                        <preserveaspect>true</preserveaspect>
-                    </imagetype>
-                    <textarea name="buttontext">
-                        <area>100,5,140,50</area>
-                        <align>allcenter</align>
-                        <multiline>yes</multiline>
-                    </textarea>
-                </state>
-                <state name="selectedactive" from="active">
-                    <shape name="background">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="255" />
-                        </fill>
-                    </shape>
-                </state>
-                <state name="selectedinactive" from="selectedactive">
-                    <shape name="background">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="175" />
-                        </fill>
-                    </shape>
-                </state>
-            </statetype>
-            <statetype name="upscrollarrow">
-                <position>700,425</position>
-                <state type="off">
-                    <imagetype name="upon">
-                        <filename>lb-uparrow-reg.png</filename>
-                    </imagetype>
-                </state>
-                <state type="full">
-                    <imagetype name="upoff">
-                        <filename>lb-uparrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <statetype name="downscrollarrow">
-                <position>740,425</position>
-                <state type="off">
-                    <imagetype name="dnon">
-                        <filename>lb-dnarrow-reg.png</filename>
-                    </imagetype>
-                </state>
-                <state type="full">
-                    <imagetype name="dnoff">
-                        <filename>lb-dnarrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-        </buttonlist>
-
-        <textarea name="status" from="basetextarea">
-            <area>30,480,600,25</area>
-        </textarea>
-
-        <textarea name="manuallabel" from="basetextarea">
-            <area>30,505,300,25</area>
-            <value>Search terms:</value>
-        </textarea>
-
-        <textedit name="manualsearch" from="basetextedit">
-            <position>30,535</position>
-        </textedit>
-
-        <button name="search" from="basebutton">
-            <position>440,538</position>
-            <value>Search</value>
-        </button>
-
-        <button name="skip" from="basebutton">
-            <position>620,538</position>
-            <value>Skip</value>
-        </button>
-
-    </window>
-
-    <window name="channeloverview">
-
-        <textarea name="pagetitle">
-            <area>20,5,570,40</area>
-            <font>baselarge</font>
-            <value>Channel Editor</value>
-        </textarea>
-
-        <shape name="list_background" from="basebackground">
-            <area>10,39,780,275</area>
-        </shape>
-
-        <shape name="channum_column">
-            <area>51,43,60,267</area>
-            <fill color="#333333" alpha="180" />
-        </shape>
-
-        <shape name="sourcename_background" from="channum_column">
-            <area>515,43,219,267</area>
-        </shape>
-
-        <buttonlist name="channels" from="basebuttonlist2">
-            <position>19,50</position>
-            <statetype name="buttonitem">
-                <state name="active">
-                    <imagetype name="icon">
-                        <area>705,0,60,25</area>
-                        <preserveaspect>true</preserveaspect>
-                    </imagetype>
-                    <textarea name="buttontext" />
-                    <textarea name="channum" from="buttontext">
-                        <area>32,1,60,24</area>
-                        <align>center</align>
-                    </textarea>
-                    <textarea name="name" from="buttontext">
-                        <area>100,1,380,24</area>
-                    </textarea>
-                    <textarea name="sourcename" from="name">
-                        <area>500,1,200,24</area>
-                    </textarea>
-                </state>
-                <state name="selectedactive" from="active" />
-                <state name="selectedinactive" from="active" />
-            </statetype>
-        </buttonlist>
-
-        <textarea name="sortlabel" from="basetextarea">
-            <area>30,375,170,30</area>
-            <value>Sort Mode:</value>
-            <font>basemedium</font>
-        </textarea>
-
-        <buttonlist name="sorting" from="basewideselector">
-            <position>210,370</position>
-        </buttonlist>
-
-        <textarea name="sourcelabel" from="sortlabel">
-            <position>30,435</position>
-            <value>Video Source:</value>
-        </textarea>
-
-        <buttonlist name="source" from="basewideselector">
-            <position>210,430</position>
-        </buttonlist>
-
-        <button name="delete" from="basebutton">
-            <position>620,427</position>
-            <value>Delete</value>
-        </button>
-
-        <textarea name="nochannumlabel" from="basetextarea">
-            <area>70,496,500,60</area>
-            <value>Hide Channels without channel number.</value>
-        </textarea>
-
-        <checkbox name="nochannum" from="basecheckbox">
-            <position>30,490</position>
-        </checkbox>
-
-        <button name="scan">
-            <area>35,540,220,43</area>
-            <statetype name="buttonstate">
-                <state name="active">
-                    <imagetype name="background">
-                        <area>0,0,220,43</area>
-                        <filename>wide_button_background.png</filename>
-                    </imagetype>
-                    <textarea name="text">
-                        <area>5,6,210,30</area>
-                        <align>allcenter</align>
-                        <font>basemedium</font>
-                        <font state="selected">basemedium</font>
-                        <font state="disabled">basemediumgrey</font>
-                    </textarea>
-                </state>
-                <state name="selected" from="active">
-                    <imagetype name="background">
-                        <area>0,0,220,43</area>
-                        <filename>wide_button_selected_background.png</filename>
-                    </imagetype>
-                </state>
-                <state name="disabled" from="active" />
-                <state name="pushed" from="active">
-                    <imagetype name="background">
-                        <area>0,0,220,43</area>
-                        <filename>wide_button_pushed_background.png</filename>
-                    </imagetype>
-                    <textarea name="text">
-                        <position>8,8</position>
-                    </textarea>
-                </state>
-            </statetype>
-            <value>Channel Scan</value>
-        </button>
-
-        <button name="importicons" from="scan">
-            <position>290,540</position>
-            <value>Icon Download</value>
-        </button>
-
-        <button name="edittransport" from="scan">
-            <position>545,540</position>
-            <value>Edit Transports</value>
-        </button>
-
-    </window>
-
-    <window name="languageselection">
-
-        <textarea name="countrylabel">
-            <font>baselarge</font>
-            <area>40,20,330,30</area>
-            <value>Country</value>
-            <align>allcenter</align>
-        </textarea>
-
-        <shape name="countrybackground" from="basebackground">
-            <area>20,55,370,450</area>
-        </shape>
-
-        <buttonlist name="countries">
-            <area>30,65,350,430</area>
-            <scrollstyle>center</scrollstyle>
-            <spacing>4</spacing>
-            <layout>vertical</layout>
-            <wrapstyle>selection</wrapstyle>
-            <buttonarea>0,0,100%,97%</buttonarea>
-            <statetype name="buttonitem">
-                <state name="active">
-                    <area>0,0,100%,55</area>
-                    <shape name="buttonbackground">
-                        <area>0,2,100%,100%</area>
-                        <fill style="gradient">
-                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical"  />
-                        </fill>
-                    </shape>
-                    <imagetype name="buttonimage">
-                        <area>5,7,60,40</area>
-                    </imagetype>
-                    <textarea name="buttontext">
-                        <area>70,2,95%,25</area>
-                        <font>basemedium</font>
-                        <cutdown>yes</cutdown>
-                        <align>left,vcenter</align>
-                    </textarea>
-                    <textarea name="country" from="buttontext" /> <!-- Workaround for vanishing buttontext bug -->
-                    <textarea name="nativecountry">
-                        <area>70,30,95%,25</area>
-                        <font>basesmallgrey</font>
-                        <cutdown>yes</cutdown>
-                        <align>left,vcenter</align>
-                    </textarea>
-                </state>
-                <state name="inactive" from="active" />
-                <state name="selectedactive" from="active">
-                    <shape name="buttonbackground">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="255" />
-                        </fill>
-                    </shape>
-                </state>
-                <state name="selectedinactive" from="active">
-                    <shape name="buttonbackground">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="100" />
-                        </fill>
-                    </shape>
-                </state>
-            </statetype>
-            <statetype name="upscrollarrow">
-                <position>10,96%</position>
-                <state type="full">
-                    <imagetype name="upoff">
-                        <filename>lb-uparrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <statetype name="downscrollarrow">
-                <position>40,96%</position>
-                <state type="full">
-                    <imagetype name="dnoff">
-                        <filename>lb-dnarrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <helptext>Select the country in which you currently reside</helptext>
-        </buttonlist>
-
-        <textarea name="languagelabel" from="countrylabel">
-            <position>430,20</position>
-            <value>Language</value>
-        </textarea>
-
-        <shape name="languagebackground" from="basebackground">
-            <area>410,55,370,450</area>
-        </shape>
-
-        <buttonlist name="languages">
-            <area>420,65,350,430</area>
-            <spacing>4</spacing>
-            <scrollstyle>center</scrollstyle>
-            <layout>vertical</layout>
-            <wrapstyle>selection</wrapstyle>
-            <buttonarea>0,0,100%,97%</buttonarea>
-            <statetype name="buttonitem">
-                <state name="active">
-                    <area>0,0,100%,55</area>
-                    <shape name="buttonbackground">
-                        <area>0,2,100%,100%</area>
-                        <fill style="gradient">
-                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical"  />
-                        </fill>
-                    </shape>
-                    <textarea name="buttontext">
-                        <area>10,2,98%,25</area>
-                        <font>basemedium</font>
-                        <cutdown>yes</cutdown>
-                        <align>left,vcenter</align>
-                    </textarea>
-                    <textarea name="language">
-                        <area>10,30,98%,25</area>
-                        <font>basesmallgrey</font>
-                        <cutdown>yes</cutdown>
-                        <align>left,vcenter</align>
-                    </textarea>
-                </state>
-                <state name="inactive" from="active" />
-                <state name="selectedactive" from="active">
-                    <shape name="buttonbackground">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="255" />
-                        </fill>
-                    </shape>
-                </state>
-                <state name="selectedinactive" from="active">
-                    <shape name="buttonbackground">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="100" />
-                        </fill>
-                    </shape>
-                </state>
-            </statetype>
-            <statetype name="upscrollarrow">
-                <position>10,96%</position>
-                <state type="full">
-                    <imagetype name="upoff">
-                        <filename>lb-uparrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <statetype name="downscrollarrow">
-                <position>40,96%</position>
-                <state type="full">
-                    <imagetype name="dnoff">
-                        <filename>lb-dnarrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <helptext>Select your preferred language</helptext>
-        </buttonlist>
-
-        <textarea name="helptext" from="basetextarea">
-            <area>200,520,400,60</area>
-            <align>allcenter</align>
-            <multiline>true</multiline>
-        </textarea>
-
-        <button name="save" from="basebutton">
-            <position>610,530</position>
-            <value>Save</value>
-        </button>
-
-        <button name="cancel" from="basebutton">
-            <position>40,530</position>
-            <value>Cancel</value>
-        </button>
-
-    </window>
-
-    <window name="grabbersettings">
-
-        <textarea name="title" from="basetextarea">
-            <area>20,40,760,40</area>
-            <value>Artwork and Metadata Sources</value>
-            <align>hcenter,vcenter</align>
-            <font>baselarge</font>
-        </textarea>
-
-        <textarea name="helptext" from="basetextarea">
-            <area>50,350,700,280</area>
-            <multiline>yes</multiline>
-            <font>basesmall</font>
-            <align>allcenter</align>
-        </textarea>
-
-        <textarea name="moviegrabber_text" from="basetextarea">
-            <area>75,173,225,30</area>
-            <font>basesmall</font>
-            <value>Movie Metadata Source:</value>
-        </textarea>
-
-        <textarea name="tvgrabber_text" from="basetextarea">
-            <area>75,238,225,30</area>
-            <font>basesmall</font>
-            <value>Television Metadata Source:</value>
-        </textarea>
-
-        <textarea name="gamegrabber_text" from="basetextarea">
-            <area>75,303,225,30</area>
-            <font>basesmall</font>
-            <value>Game Metadata Source:</value>
-        </textarea>
-
-        <textarea name="dailyupdates_text" from="basetextarea">
-            <area>330,365,500,40</area>
-            <value>Perform daily updates of recording artwork</value>
-            <align>left,vcenter</align>
-        </textarea>
-
-    <!--Widgets-->
-
-        <buttonlist name="moviegrabber" from="basewideselector">
-            <position>310,167</position>
-        </buttonlist>
-
-        <buttonlist name="tvgrabber" from="basewideselector">
-            <position>310,232</position>
-        </buttonlist>
-
-        <buttonlist name="gamegrabber" from="basewideselector">
-            <position>310,297</position>
-        </buttonlist>
-
-        <checkbox name="dailyupdates" from="basecheckbox">
-            <position>290,370</position>
-        </checkbox>
-
-        <button name="cancel" from="basebutton">
-            <position>188,530</position>
-            <value>Cancel</value>
-        </button>
-
-        <button name="ok" from="basebutton">
-            <position>435,530</position>
-            <value>OK</value>
-        </button>
-
-    </window>
-
-    <window name="generalwizard">
-
-        <textarea name="title" from="basetextarea">
-            <area>20,40,760,40</area>
-            <value>MythTV Configuration Wizard</value>
-            <align>hcenter,vcenter</align>
-            <font>baselarge</font>
-        </textarea>
-
-        <textarea name="helptext" from="basetextarea">
-            <area>30,470,740,50</area>
-            <multiline>yes</multiline>
-            <font>basesmall</font>
-            <align>allcenter</align>
-        </textarea>
-
-    <!--Widgets-->
-
-        <button name="submit" from="basewidebutton">
-            <position>250,167</position>
-            <value>Submit your hardware profile</value>
-        </button>
-
-        <button name="view" from="basewidebutton">
-            <position>250,232</position>
-            <value>View your hardware profile</value>
-        </button>
-
-        <button name="delete" from="basewidebutton">
-            <position>250,297</position>
-            <value>Delete your hardware profile</value>
-        </button>
-
-        <button name="cancel" from="basebutton">
-            <position>188,530</position>
-            <value>Cancel</value>
-        </button>
-
-        <button name="next" from="basebutton">
-            <position>435,530</position>
-            <value>Next</value>
-        </button>
-
-    </window>
-
-    <window name="audiowizard">
-
-        <textarea name="title" from="basetextarea">
-            <area>20,40,760,40</area>
-            <value>Audio Configuration</value>
-            <align>hcenter,vcenter</align>
-            <font>baselarge</font>
-        </textarea>
-
-        <textarea name="helptext" from="basetextarea">
-            <area>30,470,740,50</area>
-            <multiline>yes</multiline>
-            <font>basesmall</font>
-            <align>allcenter</align>
-        </textarea>
-
-        <textarea name="auddev_text" from="basetextarea">
-            <area>20,103,225,30</area>
-            <font>basesmall</font>
-            <align>right</align>
-            <value>Audio Device:</value>
-        </textarea>
-
-        <textarea name="ac3_text" from="basetextarea">
-            <area>290,155,-20,30</area>
-            <font>basesmall</font>
-            <value>My audio subsystem supports Dolby Digital</value>
-        </textarea>
-
-        <textarea name="dts_text" from="basetextarea">
-            <area>290,200,-20,30</area>
-            <font>basesmall</font>
-            <value>My audio subsystem supports DTS</value>
-        </textarea>
-
-        <textarea name="eac3_text" from="basetextarea">
-            <area>290,245,-20,30</area>
-            <font>basesmall</font>
-            <value>My audio subsystem supports E-AC-3</value>
-        </textarea>
-
-        <textarea name="truehd_text" from="basetextarea">
-            <area>290,290,-20,30</area>
-            <font>basesmall</font>
-            <value>My audio subsystem supports TrueHD</value>
-        </textarea>
-
-        <textarea name="dtshd_text" from="basetextarea">
-            <area>290,335,-20,30</area>
-            <font>basesmall</font>
-            <value>My audio subsystem supports DTS-HD</value>
-        </textarea>
-
-        <textarea name="speaktext_text" from="basetextarea">
-            <area>20,378,225,30</area>
-            <font>basesmall</font>
-            <align>right</align>
-            <value>Number of Speakers:</value>
-        </textarea>
-
-    <!--Widgets-->
-
-        <buttonlist name="audiodevices" from="basewideselector">
-            <position>250,97</position>
-        </buttonlist>
-
-        <checkbox name="ac3check" from="basecheckbox">
-            <position>250,153</position>
-        </checkbox>
-
-        <checkbox name="dtscheck" from="basecheckbox">
-            <position>250,198</position>
-        </checkbox>
-
-        <checkbox name="eac3check" from="basecheckbox">
-            <position>250,243</position>
-        </checkbox>
-
-        <checkbox name="truehdcheck" from="basecheckbox">
-            <position>250,288</position>
-        </checkbox>
-
-        <checkbox name="dtshdcheck" from="basecheckbox">
-            <position>250,333</position>
-        </checkbox>
-
-        <buttonlist name="speakers" from="basewideselector">
-            <position>250,372</position>
-        </buttonlist>
-
-        <button name="testspeakers" from="basewidebutton">
-            <position>250,422</position>
-        </button>
-
-        <button name="previous" from="basebutton">
-            <position>188,530</position>
-            <value>Previous</value>
-        </button>
-
-        <button name="next" from="basebutton">
-            <position>435,530</position>
-            <value>Next</value>
-        </button>
-
-    </window>
-
-    <window name="videowizard">
-
-        <textarea name="title" from="basetextarea">
-            <area>20,40,760,40</area>
-            <value>Video Configuration</value>
-            <align>hcenter,vcenter</align>
-            <font>baselarge</font>
-        </textarea>
-
-        <textarea name="helptext" from="basetextarea">
-            <area>30,470,740,50</area>
-            <multiline>yes</multiline>
-            <font>basesmall</font>
-            <align>allcenter</align>
-        </textarea>
-
-        <textarea name="prof_text" from="basetextarea">
-            <area>75,173,225,30</area>
-            <font>basesmall</font>
-            <value>Video Playback Profile:</value>
-        </textarea>
-
-    <!--Widgets-->
-
-        <buttonlist name="playbackprofiles" from="basewideselector">
-            <position>310,167</position>
-        </buttonlist>
-
-        <button name="testsd" from="baseverywidebutton">
-            <position>310,232</position>
-            <value>Test Standard Definition</value>
-        </button>
-
-        <button name="testhd" from="baseverywidebutton">
-            <position>310,297</position>
-            <value>Test High Definition</value>
-        </button>
-
-        <button name="previous" from="basebutton">
-            <position>188,530</position>
-            <value>Previous</value>
-        </button>
-
-        <button name="next" from="basebutton">
-            <position>435,530</position>
-            <value>Finish</value>
-        </button>
-
-    </window>
-
-    <window name="backendselection">
-
-        <textarea name="label">
-            <font>baselarge</font>
-            <area>40,20,330,30</area>
-            <value>MythTV Servers</value>
-            <align>left</align>
-        </textarea>
-
-        <shape name="listbackground" from="basebackground">
-            <area>20,55,760,410</area>
-        </shape>
-
-        <buttonlist name="backends">
-            <area>30,65,740,390</area>
-            <spacing>4</spacing>
-            <layout>vertical</layout>
-            <wrapstyle>selection</wrapstyle>
-            <buttonarea>0,0,100%,97%</buttonarea>
-            <statetype name="buttonitem">
-                <state name="active">
-                    <area>0,0,100%,55</area>
-                    <shape name="buttonbackground">
-                        <area>0,2,100%,100%</area>
-                        <fill style="gradient">
-                            <gradient start="#505050" end="#000000" alpha="200" direction="vertical"  />
-                        </fill>
-                    </shape>
-                    <textarea name="buttontext">
-                        <area>10,2,450,25</area>
-                        <font>basemedium</font>
-                        <cutdown>yes</cutdown>
-                        <align>left,vcenter</align>
-                    </textarea>
-                    <textarea name="modelname" from="buttontext" /> <!-- Workaround for vanishing buttontext bug -->
-                    <textarea name="protocolversion">
-                        <area>15,30,300,25</area>
-                        <font>basesmallgrey</font>
-                        <cutdown>yes</cutdown>
-                        <align>left,vcenter</align>
-                    </textarea>
-
-                    <textarea name="version">
-                        <area>570,2,100,50</area>
-                        <font>basesmall</font>
-                        <cutdown>yes</cutdown>
-                        <align>right,vcenter</align>
-                    </textarea>
-
-                    <statetype name="connection">
-                        <area>470,2,100,50</area>
-                        <state name="good">
-                            <area>0,0,100,50</area>
-                        </state>
-                        <state name="protocolmismatch" from="good">
-                            <textarea name="description">
-                                <area>0,0,100%,100%</area>
-                                <align>hcenter</align>
-                                <value>Version Mismatch</value>
-                                <font>basesmallred</font>
-                                <multiline>yes</multiline>
-                            </textarea>
-                        </state>
-                        <state name="blocked" from="protocolmismatch">
-                            <textarea name="description">
-                                <value>Firewall</value>
-                            </textarea>
-                        </state>
-                    </statetype>
-
-                    <statetype name="securitypin">
-                        <area>680,7,40,40</area>
-                        <state name="yes">
-                            <area>0,0,40,40</area>
-                            <shape name="pin">
-                                <area>0,0,40,40</area>
-                                <type>roundbox</type>
-                                <cornerradius>6</cornerradius>
-                                <fill color="#990000" />
-                            </shape>
-                            <imagetype name="locked">
-                                <position>6,5</position>
-                                <filename>shared/secure.png</filename>
-                            </imagetype>
-                        </state>
-                        <state name="no">
-                            <area>0,0,40,40</area>
-                            <shape name="nopin">
-                                <area>0,0,40,40</area>
-                                <type>roundbox</type>
-                                <cornerradius>6</cornerradius>
-                                <fill color="#009900" />
-                            </shape>
-                            <imagetype name="unlocked">
-                                <position>2,5</position>
-                                <filename>shared/unsecure.png</filename>
-                            </imagetype>
-                        </state>
-                    </statetype>
-                </state>
-                <state name="inactive" from="active" />
-                <state name="selectedactive" from="active">
-                    <shape name="buttonbackground">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="255" />
-                        </fill>
-                    </shape>
-                </state>
-                <state name="selectedinactive" from="active">
-                    <shape name="buttonbackground">
-                        <fill style="gradient">
-                            <gradient start="#52CA38" end="#349838" alpha="100" />
-                        </fill>
-                    </shape>
-                </state>
-            </statetype>
-            <statetype name="upscrollarrow">
-                <position>10,96%</position>
-                <state type="full">
-                    <imagetype name="upoff">
-                        <filename>lb-uparrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <statetype name="downscrollarrow">
-                <position>40,96%</position>
-                <state type="full">
-                    <imagetype name="dnoff">
-                        <filename>lb-dnarrow-sel.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <helptext>Select the server you wish to connect to</helptext>
-        </buttonlist>
-
-        <textarea name="helptext" from="basetextarea">
-            <area>200,530,400,60</area>
-            <align>allcenter</align>
-            <multiline>true</multiline>
-        </textarea>
-
-        <button name="save" from="basebutton">
-            <position>610,530</position>
-            <value>Save</value>
-        </button>
-
-        <button name="manual" from="basebutton">
-            <position>310,530</position>
-            <value>Manual</value>
-        </button>
-
-        <button name="cancel" from="basebutton">
-            <position>40,530</position>
-            <value>Cancel</value>
-        </button>
-
-    </window>
-
-</mythuitheme>
diff --git a/abs/core/linhes-theme/LinHES/cr-lines.png b/abs/core/linhes-theme/LinHES/cr-lines.png
deleted file mode 100644
index 5edb06a..0000000
Binary files a/abs/core/linhes-theme/LinHES/cr-lines.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/cr-selectbar.png b/abs/core/linhes-theme/LinHES/cr-selectbar.png
deleted file mode 100644
index 9c4b635..0000000
Binary files a/abs/core/linhes-theme/LinHES/cr-selectbar.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/htmls/progdetails_page1.html b/abs/core/linhes-theme/LinHES/htmls/progdetails_page1.html
deleted file mode 100644
index 0ac7b5e..0000000
--- a/abs/core/linhes-theme/LinHES/htmls/progdetails_page1.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<HTML>
-<head>
-    <style type="text/css">
-        h1 {font-size:15pt;font-style: normal;color:#33FF33}
-        p  {font-size:15pt;font-style: normal;color:#FFFFFF;margin-top: -10pt}
-    </style>
-</head>
-
-<body>
-    <h1>%TITLE_LABEL%</h1> <p>%TITLE%</p>
-    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
-    <h1>%DESCRIPTION_LABEL%</h1> <p>%DESCRIPTION%</p>
-    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
-    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
-    <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
-    <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
-    <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
-    <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
-    <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
-    <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
-    <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
-    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
-    <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
-    <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
-    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
-    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
-    <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
-</body>
-
-</html>
diff --git a/abs/core/linhes-theme/LinHES/htmls/progdetails_page2.html b/abs/core/linhes-theme/LinHES/htmls/progdetails_page2.html
deleted file mode 100644
index ede4146..0000000
--- a/abs/core/linhes-theme/LinHES/htmls/progdetails_page2.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<HTML>
-<head>
-    <style type="text/css">
-        h1 {font-size:15pt;font-style: normal;color:#33FF33}
-        p  {font-size:15pt;font-style: normal;color:#FFFFFF;margin-top: -10pt}
-    </style>
-</head>
-
-<body>
-    <h1>%TITLE_LABEL%</h1> <p>%TITLE%</p>
-    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
-    <h1>%DESCRIPTION_LABEL%</h1> <p>%DESCRIPTION%</p>
-    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
-    <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
-    <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
-    <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
-    <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
-    <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
-    <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
-    <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
-    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
-    <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
-    <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
-    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
-    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
-    <h1>%CATEGORY_TYPE_LABEL%</h1> <p>%CATEGORY_TYPE%</p>
-    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
-    <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
-    <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
-    <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
-    <h1>%LAST_RECORDED_LABEL%</h1> <p>%LAST_RECORDED%</p>
-    <h1>%NEXT_RECORDING_LABEL%</h1> <p>%NEXT_RECORDING%</p>
-    <h1>%AVERAGE_TIME_SHIFT_LABEL%</h1> <p>%AVERAGE_TIME_SHIFT%</p>
-    <h1>%WATCH_LIST_SCORE_LABEL%</h1> <p>%WATCH_LIST_SCORE%</p>
-    <h1>%WATCH_LIST_STATUS_LABEL%</h1> <p>%WATCH_LIST_STATUS%</p>
-    <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
-    <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p>
-    <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p>
-    <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
-    <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
-    <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
-    <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
-    <h1>%STORAGE_GROUP_LABEL%</h1> <p>%STORAGE_GROUP%</p>
-    <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
-</body>
-
-</html>
diff --git a/abs/core/linhes-theme/LinHES/menu-ui.xml b/abs/core/linhes-theme/LinHES/menu-ui.xml
deleted file mode 100644
index 3883b21..0000000
--- a/abs/core/linhes-theme/LinHES/menu-ui.xml
+++ /dev/null
@@ -1,456 +0,0 @@
-<!-- theme.xml for the MythCenter theme - by Jeroen Brosens -->
-<mythuitheme>
-    <window name="mainmenu">
-
-        <fontdef name="menufontdef" face="Trebuchet MS">
-            <color>#FFFFFF</color>
-            <size>17</size>
-            <bold>yes</bold>
-            <shadowcolor>#000000</shadowcolor>
-            <shadowoffset>2,2</shadowoffset>
-            <shadowalpha>50</shadowalpha>
-        </fontdef>
-
-        <fontdef name="clock" from="small">
-            <size>20</size>
-        </fontdef>
-
-        <clock name="clock">
-            <area>280,525,500,40</area>
-            <fontdef>clock</fontdef>
-            <template>%DATE%, %TIME%</template>
-            <align>center</align>
-            <alpha>85</alpha>
-        </clock>
-     
-        <imagetype name="logo">
-            <position>10,10</position>
-            <filename>ui/kmlogo.png</filename>
-        </imagetype>
-        
-        <imagetype name="logo1">
-            <position>10,10</position>
-            <filename>ui/kmlogo1.png</filename>
-            <alphapulse min="0" max="255" change="10" />
-        </imagetype>
-        
-        <imagetype name="logo2">
-            <position>475,10</position>
-            <filename>ui/LinHESlogo.png</filename>
-        </imagetype>
-
-        <buttonlist name="menu">
-            <area>160,70,300,415</area>
-            <layout>vertical</layout>
-            <wrapstyle>selection</wrapstyle>
-            <spacing>0</spacing>
-            <buttonarea>0,57,300,300</buttonarea>
-            <statetype name="buttonitem">
-                <state name="active">
-                    <area>0,0,300,50</area>
-                    <imagetype name="background" />
-                    <textarea name="buttontext">
-                        <area>5,0,300,50</area>
-                        <fontdef>menufontdef</fontdef>
-                        <align>left,vcenter</align>
-                        <cutdown>yes</cutdown>
-                    </textarea>
-                </state>
-                <state name="selectedactive" from="active">
-                    <imagetype name="background">
-                        <filename>ui/button_on.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <statetype name="upscrollarrow">
-                <position>250,0</position>
-                <showempty>yes</showempty>
-                <state type="full">
-                    <imagetype name="upon">
-                        <filename>ui/up.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-            <statetype name="downscrollarrow">
-                <position>250,365</position>
-                <showempty>yes</showempty>
-                <state type="full">
-                    <imagetype name="dnon">
-                        <filename>ui/down.png</filename>
-                    </imagetype>
-                </state>
-            </statetype>
-        </buttonlist>
-
-        <statetype name="watermarks">
-            <position>575,220</position>
-
-            <state name="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/tv.png</filename>
-                    <reflection axis="vertical" shear="0" scale="85" length="35" />
-                </imagetype>
-            </state>
-
-            <!--   mainmenu.xml  -->
-            <state name="TV" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/tv.png</filename>
-                </imagetype>
-            </state>
-            <state name="MUSIC" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/music.png</filename>
-                </imagetype>
-            </state>
-            <state name="VIDEO" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/video.png</filename>
-                </imagetype>
-            </state>
-            <state name="DVD" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/dvd.png</filename>
-                </imagetype>
-            </state>
-            <state name="FM" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/radio.png</filename>
-                </imagetype>
-            </state>
-            <state name="IMAGES" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/gallery.png</filename>
-                </imagetype>
-            </state>
-            <state name="GAME" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/joystick.png</filename>
-                </imagetype>
-            </state>
-            <state name="WEATHER" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/weather.png</filename>
-                </imagetype>
-            </state>
-            <state name="NEWS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/news.png</filename>
-                </imagetype>
-            </state>
-            <state name="WEBPAGE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/browser.png</filename>
-                </imagetype>
-            </state>
-            <state name="RECIPE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/pie.png</filename>
-                </imagetype>
-            </state>
-            <state name="PHONE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/phone.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETUP" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/setup.png</filename>
-                </imagetype>
-            </state>
-            <state name="SHUTDOWN" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/important.png</filename>
-                </imagetype>
-            </state>
-            <state name="BACKUP" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/backup.png</filename>
-                </imagetype>
-            </state>
-            <state name="RESTORE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/restore.png</filename>
-                </imagetype>
-            </state>
-            <state name="UPGRADE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/upgrade.png</filename>
-                </imagetype>
-            </state>
-            <state name="LINHES_SETUP" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/hardware_settings.png</filename>
-                </imagetype>
-            </state>
-
-            <!--   dvdmenu.xml  -->
-            <state name="DVD_PLAY" from="DVD" />
-            <state name="VCD_PLAY" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/cd.png</filename>
-                </imagetype>
-            </state>
-            <state name="DVD_RIP" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/dvd_rip.png</filename>
-                </imagetype>
-            </state>
-
-            <!--   dvd_settings.xml  -->
-            <state name="DVD_SETTINGS_GENERAL" from="DVD" />
-            <state name="DVD_SETTINGS_PLAY" from="DVD" />
-            <state name="DVD_SETTINGS_RIP" from="DVD_RIP" />
-
-            <!--   game_settings.xml  -->
-            <state name="GAME_SETTINGS_GENERAL" from="GAME" />
-            <state name="GAME_SCAN" from="GAME" />
-
-            <!-- Netflix -->
-            <state name="NETFLIX" from="DVD" />
-            <state name="NETFLIX_QUEUE" from="DVD" />
-            <state name="NETFLIX_BROWSE" from="DVD" />
-            <state name="NETFLIX_HISTORY" from="DVD" />
-            <state name="SETTINGS_NETFLIX" from="DVD" />
-
-            <!--   main_settings.xml  -->
-            <state name="SETTINGS_GENERAL" from="SETUP" />
-            <state name="SETTINGS_APPEARANCE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/appearance.png</filename>
-                </imagetype>
-            </state>
-            <state name="SCREENSETUPWIZARD" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/wizard.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_TV" from="TV" />
-            <state name="SETTINGS_MUSIC" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/music_settings.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_VIDEO" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/video_settings.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_DVD" from="DVD" />
-            <state name="SETTINGS_FM" from="FM" />
-            <state name="SETTINGS_IMAGES" from="IMAGES" />
-            <state name="SETTINGS_GAME" from="GAME" />
-            <state name="SETTINGS_WEATHER" from="WEATHER" />
-            <state name="SETTINGS_NEWS" from="NEWS" />
-            <state name="SETTINGS_WEBPAGE" from="WEBPAGE" />
-            <state name="SETTINGS_RECIPE" from="RECIPE" />
-            <state name="SETTINGS_XBOX" from="SETUP" />
-            <state name="SETUP_KEYS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/keys.png</filename>
-                </imagetype>
-            </state>
-
-            <!--   musicmenu.xml  -->
-            <state name="MUSIC_PLAY" from="MUSIC" />
-            <state name="MUSIC_PLAYLIST" from="MUSIC" />
-            <state name="MUSIC_RIP" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/cd_rip.png</filename>
-                </imagetype>
-            </state>
-            <state name="MUSIC_SCAN" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/search.png</filename>
-                </imagetype>
-            </state>
-
-            <!--   music_settings.xml  -->
-            <state name="MUSIC_SETTINGS_GENERAL" from="SETTINGS_MUSIC" />
-            <state name="MUSIC_SETTINGS_PLAYER" from="SETTINGS_MUSIC" />
-            <state name="MUSIC_SETTINGS_RIP" from="MUSIC_RIP" />
-
-            <!--   tv_schedule.xml  -->
-
-            <state name="TV_PROGRAM_GUIDE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/clock.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_PROGFIND" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/search.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_SEARCH_LISTINGS" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_WORDS" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_LISTS" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_PEOPLE" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_POWER" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_KEYWORDS" from="TV_PROGFIND" />
-            <state name="TV_CUSTOM_RECORD" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/record.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_MANUAL_SCHEDULE" from="TV_PROGRAM_GUIDE" />
-            <state name="TV_RECPRIORITIES" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/priority.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_CONFLICTS" from="TV_CUSTOM_RECORD" />
-
-            <!--   recpriorities_settings.xml  -->
-            <state name="TV_RECPRIORITIES_SETTINGS_GENERAL" from="TV_RECPRIORITIES" />
-            <state name="TV_RECPRIORITIES_CHANNEL" from="TV_RECPRIORITIES" />
-            <state name="TV_RECPRIORITIES_CUSTOM" from="TV_RECPRIORITIES" />
-
-            <!--   setup.xml  -->
-            <state name="SETUP_GENERAL" from="SETUP" />
-            <state name="SETUP_STORAGE_GROUPS" from="SETUP" />
-            <state name="SETUP_CAPTURE_CARDS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/hardware_settings.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETUP_VIDEO_SOURCES" from="SETTINGS_VIDEO" />
-            <state name="SETUP_INPUT_CONNECTIONS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/hardware_info.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETUP_CHANNEL_EDITOR" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/checklist.png</filename>
-                </imagetype>
-            </state>
-
-            <!--   tv_search.xml  -->
-            <state name="TV_SEARCH_TITLES" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_KEYWORDS" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_PEOPLE" from="TV_PROGFIND" />
-
-            <!--   tv_lists.xml  -->
-            <state name="TV_SEARCH_NEW_TITLES" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_MOVIES" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_CATEGORIES" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_CHANNELS" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_TIMES" from="TV_PROGFIND" />
-            <state name="TV_SEARCH_STORED" from="TV_PROGFIND" />
-
-            <!--   tv_settings.xml  -->
-            <state name="TV_SETTINGS_GENERAL" from="SETUP" />
-            <state name="TV_SETTINGS_PROGRAM_GUIDE" from="TV_PROGRAM_GUIDE" />
-            <state name="TV_SETTINGS_PLAYBACK" from="TV" />
-            <state name="TV_SETTINGS_PLAYBACK_OSD" from="TV" />
-            <state name="TV_SETTINGS_PLAYBACK_GROUPS" from="TV" />
-            <state name="TV_SETTINGS_RECORDING_PROFILES" from="TV_CUSTOM_RECORD" />
-            <state name="TV_SETTINGS_RECPRIORITIES" from="TV_RECPRIORITIES" />
-
-            <!--   tvmenu.xml  -->
-            <state name="TV_WATCH_TV" from="TV" />
-            <state name="TV_SCHEDULE_RECORDINGS" from="TV_PROGRAM_GUIDE" />
-            <state name="TV_WATCH_RECORDINGS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/play.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_DELETE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/delete.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_PREVIOUS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/previous.png</filename>
-                </imagetype>
-            </state>
-            <state name="TV_STATUS" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/info.png</filename>
-                </imagetype>
-            </state>
-
-            <!--   video_settings.xml  -->
-            <state name="VIDEO_SETTINGS_GENERAL" from="SETTINGS_VIDEO" />
-            <state name="VIDEO_SETTINGS_PLAYER" from="SETTINGS_VIDEO" />
-            <state name="VIDEO_FILE_TYPES" from="SETTINGS_VIDEO" />
-
-            <!--   videomenu.xml  -->
-            <state name="VIDEO_GALLERY" from="VIDEO" />
-            <state name="VIDEO_BROWSER" from="VIDEO" />
-            <state name="VIDEO_LIST" from="SETTINGS_VIDEO" />
-            <state name="VIDEO_MANAGER" from="SETTINGS_VIDEO" />
-
-            <!--   AltMenus Specific Icons  -->
-            <state name="TV_UPCOMING_RECORDINGS" from="TV_PROGRAM_GUIDE" />
-            <state name="SETTINGS_MEDIA" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/multimedia.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_INFO_CENTER" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/hardware_info.png</filename>
-                </imagetype>
-            </state>
-            <state name="MENU_MEDIA_LIBRARY" from="SETTINGS_MEDIA" />
-            <state name="MENU_MANAGE_RECORDINGS" from="SETUP_CHANNEL_EDITOR" />
-            <state name="MENU_INFO_CENTER" from="TV_STATUS" />
-            <state name="MENU_OPTICAL_DISKS" from="DVD" />
-            <state name="MENU_UTILITIES_SETUP" from="SETUP" />
-            <state name="SETUP_FRONTEND" from="SETUP" />
-            <state name="SETUP_BACKEND" from="SETUP" />
-            <state name="SETUP_MENU" from="SETUP" />
-            <state name="STREAM" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/stream.png</filename>
-                </imagetype>
-            </state>
-            <state name="EJECT" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/eject.png</filename>
-                </imagetype>
-            </state>
-            <state name="ARCHIVE" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/archive.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_ARCHIVE" from="ARCHIVE" />
-            <state name="ARCHIVE_FINDER" from="TV_PROGFIND" />
-            <state name="ARCHIVE_EXPORT_VIDEO" from="ARCHIVE" />
-            <state name="ARCHIVE_IMPORT_VIDEO" from="ARCHIVE" />
-            <state name="ARCHIVE_SELECT_RECORDINGS" from="ARCHIVE" />
-            <state name="ARCHIVE_SELECT_VIDEOS" from="ARCHIVE" />
-            <state name="ARCHIVE_SELECT_FILES" from="ARCHIVE" />
-            <state name="ARCHIVE_CREATE_DVD" from="ARCHIVE" />
-            <state name="ARCHIVE_CREATE_ARCHIVE" from="ARCHIVE" />
-            <state name="ARCHIVE_UTILITIES" from="ARCHIVE" />
-            <state name="ARCHIVE_LAST_LOG" from="TV_STATUS" />
-            <state name="ARCHIVE_TEST_DVD" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/archive.png</filename>
-                </imagetype>
-            </state>
-            <state name="ARCHIVE_BURN_DVD" from="ARCHIVE" />
-            <!-- Movietimes -->
-            <state name="MOVIETIMES" from="DEFAULT">
-                <imagetype name="watermark">
-                    <filename>watermark/movietime.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_MOVIETIME" from="MOVIETIMES" />
-            <!-- Zoneminder -->
-            <state name="ZONEMINDER">
-                <imagetype name="watermark">
-                    <filename>watermark/zoneminder.png</filename>
-                </imagetype>
-            </state>
-            <state name="SETTINGS_ZONEMINDER" from="ZONEMINDER" />
-        </statetype>
-
-    </window>
-
-</mythuitheme>
diff --git a/abs/core/linhes-theme/LinHES/preview.jpg b/abs/core/linhes-theme/LinHES/preview.jpg
deleted file mode 100644
index d89d8e5..0000000
Binary files a/abs/core/linhes-theme/LinHES/preview.jpg and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/qtlook.txt b/abs/core/linhes-theme/LinHES/qtlook.txt
deleted file mode 100644
index 1e1a3d5..0000000
--- a/abs/core/linhes-theme/LinHES/qtlook.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-# Color of the background
-str BackgroundColor=SteelBlue
-# Color of lines, text, etc
-str ForegroundColor=white
-# Pixmap to use for the background
-str BackgroundPixmap=ui/background.png
-
-# Colors for the different program categories
-str Cat_Comedy=DarkOrchid
-str Cat_Animals=ForestGreen
-str Cat_Nature=SprintGreen
-str Cat_SciFi=DarkBlue
-str Cat_Horror=firebrick3
-str Cat_Action=maroon
-str Cat_Game=orchid
-str Cat_Children's=MediumSlateBlue
-str Cat_Edu=CornflowerBlue
-str Cat_Adult=thistle3
-str Cat_Musical=turquoise3
-str Cat_News=DarkOrange3
-str Cat_Reality=sienna
-str Cat_Cooking=tan3
-str Cat_Doc=goldenrod
-str Cat_Sports=DarkCyan
-str Cat_Mystery=SlateGrey
-str Cat_Drama=rosybrown3
-str Cat_Classic=grey62
-str Cat_Crime=MediumVioletRed
-str Cat_Talk=MediumTurquoise
-
-str ActiveForeground=#ffffff
-str ActiveButton=#38689c
-str ActiveLight=#5788c3
-str ActiveMidlight=#4871a2
-str ActiveDark=#162231
-str ActiveMid=#37567b
-str ActiveText=#dcdcdc
-str ActiveBrightText=#5788c3
-str ActiveButtonText=#ffffff
-str ActiveBase=#002a4e
-str ActiveBackground=#426794
-str ActiveShadow=#000000
-str ActiveHighlight=#70a0d8
-str ActiveHighlightedText=#000000
-
-str InactiveForeground=#ffffff
-str InactiveButton=#426794
-str InactiveLight=#5788c3
-str InactiveMidlight=#4871a2
-str InactiveDark=#162231
-str InactiveMid=#37567b
-str InactiveText=#dcdcdc
-str InactiveBrightText=#5788c3
-str InactiveButtonText=#ffffff
-str InactiveBase=#002a4e
-str InactiveBackground=#426794
-str InactiveShadow=#000000
-str InactiveHighlight=#5cb3ff
-str InactiveHighlightedText=#000000
-
-str DisabledForeground=#555555
-str DisabledButton=#426794
-str DisabledLight=#5788c3
-str DisabledMidlight=#4871a2
-str DisabledDark=#162231
-str DisabledMid=#37567b
-str DisabledText=#37567b
-str DisabledBrightText=#5788c3
-str DisabledButtonText=#37567b
-str DisabledBase=#002a4e
-str DisabledBackground=#426794
-str DisabledShadow=#000000
-str DisabledHighlight=#000080
-str DisabledHighlightedText=#ffffff
-
-str curTimeChan_bgColor=#8f2813
-str curTimeChan_fgColor=#ffffff
-str date_bgColor=#0f2e8f
-str date_dsColor=#000000
-str date_fgColor=#ffffff
-str chan_bgColor=#0f2f5a
-str chan_dsColor=#000000
-str chan_fgColor=#ffffff
-str time_bgColor=#0f2e8f
-str time_dsColor=#000000
-str time_fgColor=#ffffff
-str prog_bgColor=#2d587b
-str prog_fgColor=#ffffff
-str progLine_Color=#104064
-str progArrow_Color=#ffffff
-int progArrow_Type=0
-str curProg_bgColor=#85a5bc
-str curRecProg_bgColor=#bc4c32
-str curProg_dsColor=#000000
-str curProg_fgColor=#eefb92
-str misChanIcon_bgColor=#000000
-str misChanIcon_fgColor=#ffffff
-
diff --git a/abs/core/linhes-theme/LinHES/themeinfo.xml b/abs/core/linhes-theme/LinHES/themeinfo.xml
deleted file mode 100755
index 3ff2771..0000000
--- a/abs/core/linhes-theme/LinHES/themeinfo.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<themeinfo>
-    <!-- The Theme Name (Required) -->
-    <name>LinHES</name>
-
-    <!-- The Theme Types (Required) -->
-    <types>
-        <!-- Type. Legal Values are one or more of: UI, OSD and Menu -->
-        <type>UI</type>
-    </types>
-
-    <!-- Aspect ratio of the theme. (Required)
-         Maybe be: 4:3, 5:4, 16:9 or 16:10 -->
-    <aspect>4:3</aspect>
-
-    <!-- The base resolution of the theme before being scaled to the users
-         resolution (Required)
-         Usually 800x600 (4:3) or 1280x720 (16:9) -->
-    <baseres>800x600</baseres>
-
-    <!-- Theme Author Details (Optional)-->
-    <author>
-        <!-- Your name -->
-        <name>Cecil Watson</name>
-
-        <!-- Your Email Address -->
-        <email>linhes@ovi.com</email>
-    </author>
-
-    <!-- The Versioning Info (Required) -->
-    <version>
-        <!-- Major version changes mean the theme is no longer
-             compatible with earlier versions of mythtv -->
-        <major>1</major>
-
-        <!-- Minor version changes are backwards compatible -->
-        <minor>4</minor>
-    </version>
-
-    <!-- Theme Details (Required) -->
-    <detail>
-        <!-- At least one thumbnail image named "preview" must be included
-             with the theme.
-             There is no limit to the number of thumbnails.
-             Each thumbnail must be given a different name -->
-        <thumbnail name="preview">preview.jpg</thumbnail>
-
-        <!-- A description of the theme, including general colours and
-             style. The description should include any details that
-             may help to locate your theme in a search. -->
-        <description>LinHES theme based on MythCenter.</description>
-
-        <!-- Errata. A list of known faults, missing elements or unfinished
-             areas. e.g. "mythgallery not themed" -->
-        <errata>N/A</errata>
-    </detail>
-</themeinfo>
diff --git a/abs/core/linhes-theme/LinHES/ui.xml b/abs/core/linhes-theme/LinHES/ui.xml
deleted file mode 100644
index 7857798..0000000
--- a/abs/core/linhes-theme/LinHES/ui.xml
+++ /dev/null
@@ -1,182 +0,0 @@
-	<!-- ui.xml for the MythCenter theme - by Jeroen Brosens -->
-<mythuitheme>
-
-  <window name="schdiff">
-
-    <font name="active_font" face="Trebuchet MS">
-      <color>#ffffff</color>
-      <size>16</size>
-      <size:small>11</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="inactive_font" face="Trebuchet MS">
-      <color>#9999cc</color>
-      <size>16</size>
-      <size:small>11</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="record_font" face="Trebuchet MS">
-      <color>#33FF33</color>
-      <size>16</size>
-      <size:small>11</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="recording_font" face="Trebuchet MS">
-      <color>#FF33FF</color>
-      <size>16</size>
-      <size:small>11</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="norecordfnt" face="Trebuchet MS">
-      <color>#999999</color>
-      <size>16</size>
-      <size:small>11</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="conflictfnt" face="Trebuchet MS">
-      <color>#ffff33</color>
-      <size>16</size>
-      <size:small>11</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="currenttitle" face="Trebuchet MS">
-      <color>#ffff33</color>
-      <size>18</size>
-      <size:small>12</size:small>
-      <bold>yes</bold>
-    </font>
-
-    <font name="title" face="Trebuchet MS">
-      <color>#ffffff</color>
-      <dropcolor>#000000</dropcolor>
-      <size>27</size>
-      <size:small>13</size:small>
-      <shadow>3,3</shadow>
-      <bold>yes</bold>
-    </font>
-
-    <font name="info" face="Trebuchet MS">
-      <color>#ffffff</color>
-      <size>17</size>
-      <size:small>8</size:small>
-      <shadow>1,1</shadow>
-      <bold>yes</bold>
-    </font>
-
-    <font name="message" face="Trebuchet MS">
-      <color>#ffffff</color>
-      <size>16</size>
-      <size:small>10</size:small>
-      <shadow>1,1</shadow>
-      <bold>yes</bold>
-    </font>
-
-    <font name="messagegray" face="Trebuchet MS">
-      <color>#999999</color>
-      <size>16</size>
-      <size:small>10</size:small>
-      <shadow>1,1</shadow>
-      <bold>yes</bold>
-    </font>
-
-    <font name="messageyellow" face="Trebuchet MS">
-      <color>#ffff33</color>
-      <size>16</size>
-      <size:small>10</size:small>
-      <shadow>1,1</shadow>
-      <bold>yes</bold>
-    </font>
-
-    <container name="background">
-      <textarea name="sched" draworder="0">
-        <area>20,10,400,40</area>
-        <font>info</font>
-        <value>Preview Schedule Changes:</value>
-      </textarea>
-      <textarea name="view" align="right" draworder="0">
-        <area>400,10,380,30</area>
-        <font>info</font>
-      </textarea>
-      <image name="filler" draworder="0" fleximage="yes">
-        <filename>cr-background.png</filename>
-        <position>0,39</position>
-      </image>
-    </container>
-
-    <container name="selector">
-      <area>0,39,800,290</area>
-      <listarea name="conflictlist" draworder="4">
-        <area>20,12,760,265</area>
-        <fcnfont name="conflictfnt" function="conflictingrecording"></fcnfont>
-        <fcnfont name="norecordfnt" function="disabledrecording"></fcnfont>
-        <fcnfont name="active_font" function="active"></fcnfont>
-        <fcnfont name="inactive_font" function="inactive"></fcnfont>
-        <fcnfont name="record_font" function="record"></fcnfont>
-        <fcnfont name="recording_font" function="recording"></fcnfont>
-        <fcnfont name="active_font" function="selected"></fcnfont>
-        <columnpadding>10</columnpadding>
-        <column number="1" width="160" context="-1"></column>
-        <column number="2" width="120" context="-1"></column>
-        <column number="3" width="370" context="-1"></column>
-        <column number="4" width="20" context="-1"></column>
-        <column number="5" width="20" context="-1"></column>
-        <items>9</items>
-        <image function="selectionbar" filename="cr-selectbar.png" location="-14,-5"></image>
-        <image function="uparrow" filename="uparrow.png" location="760,20"></image>
-        <image function="downarrow" filename="downarrow.png" location="760,220"></image>
-      </listarea>
-      <image name="showinglines" draworder="5" fleximage="no">
-        <filename>cr-lines.png</filename>
-        <position>0,0</position>
-      </image>
-    </container>
-
-    <container name="program_info">
-      <area>0,360,800,210</area>
-      <textarea name="title" draworder="6">
-        <area>20,0,800,40</area>
-        <font>title</font>
-      </textarea>
-      <textarea name="channel" draworder="6">
-        <area>20,40,160,30</area>
-        <font>info</font>
-      </textarea>
-      <textarea name="timedate" draworder="6">
-        <area>200,40,420,30</area>
-        <font>info</font>
-      </textarea>
-      <textarea name="subdescr" draworder="6">
-        <area>20,70,720,140</area>
-        <font>info</font>
-        <multiline>yes</multiline>
-        <value>%SUBTITLE|"|"
-%%STARS%%DESCRIPTION%</value>
-      </textarea>
-    </container>
-
-    <container name="status_info">
-      <area>300,330,480,30</area>
-      <textarea name="recordingstatus" align="right" draworder="6">
-        <area>0,0,480,30</area>
-        <font>message</font>
-      </textarea>
-    </container>
-
-   <container name="norecordings_list">
-      <textarea name="msg" align="center" draworder="8">
-         <area>0,110,800,70</area>
-         <font>info</font>
-         <value>The recording schedule would not be affected.</value>
-         <multiline>yes</multiline>
-      </textarea>
-    </container>
-
-  </window>
-
-</mythuitheme>
diff --git a/abs/core/linhes-theme/LinHES/ui/LinHESlogo.png b/abs/core/linhes-theme/LinHES/ui/LinHESlogo.png
deleted file mode 100644
index b0ebf1a..0000000
Binary files a/abs/core/linhes-theme/LinHES/ui/LinHESlogo.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/ui/background.png b/abs/core/linhes-theme/LinHES/ui/background.png
deleted file mode 100644
index d948de7..0000000
Binary files a/abs/core/linhes-theme/LinHES/ui/background.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/ui/button_off.png b/abs/core/linhes-theme/LinHES/ui/button_off.png
deleted file mode 100644
index 56d4c36..0000000
Binary files a/abs/core/linhes-theme/LinHES/ui/button_off.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/ui/button_on.png b/abs/core/linhes-theme/LinHES/ui/button_on.png
deleted file mode 100755
index 09c10f9..0000000
Binary files a/abs/core/linhes-theme/LinHES/ui/button_on.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/ui/kmlogo.png b/abs/core/linhes-theme/LinHES/ui/kmlogo.png
deleted file mode 100755
index 19ea6d5..0000000
Binary files a/abs/core/linhes-theme/LinHES/ui/kmlogo.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/ui/kmlogo1.png b/abs/core/linhes-theme/LinHES/ui/kmlogo1.png
deleted file mode 100755
index 0550ef3..0000000
Binary files a/abs/core/linhes-theme/LinHES/ui/kmlogo1.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/appearance.png b/abs/core/linhes-theme/LinHES/watermark/appearance.png
deleted file mode 100644
index 37b575e..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/appearance.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/archive.png b/abs/core/linhes-theme/LinHES/watermark/archive.png
deleted file mode 100755
index 0fd1dff..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/archive.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/backup.png b/abs/core/linhes-theme/LinHES/watermark/backup.png
deleted file mode 100644
index a63ea36..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/backup.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/blank.png b/abs/core/linhes-theme/LinHES/watermark/blank.png
deleted file mode 100644
index 163a9ff..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/blank.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/browser.png b/abs/core/linhes-theme/LinHES/watermark/browser.png
deleted file mode 100644
index 0171ab6..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/browser.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/categories.png b/abs/core/linhes-theme/LinHES/watermark/categories.png
deleted file mode 100755
index e0fd57f..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/categories.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/cd.png b/abs/core/linhes-theme/LinHES/watermark/cd.png
deleted file mode 100644
index 9f08c2f..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/cd.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/cd_rip.png b/abs/core/linhes-theme/LinHES/watermark/cd_rip.png
deleted file mode 100644
index 92150bd..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/cd_rip.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/checklist.png b/abs/core/linhes-theme/LinHES/watermark/checklist.png
deleted file mode 100644
index 66fd8b2..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/checklist.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/clock.png b/abs/core/linhes-theme/LinHES/watermark/clock.png
deleted file mode 100644
index 621fec4..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/clock.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/delete.png b/abs/core/linhes-theme/LinHES/watermark/delete.png
deleted file mode 100755
index d8b9e76..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/delete.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/dvd.png b/abs/core/linhes-theme/LinHES/watermark/dvd.png
deleted file mode 100644
index be25627..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/dvd.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/dvd_rip.png b/abs/core/linhes-theme/LinHES/watermark/dvd_rip.png
deleted file mode 100644
index 81b776c..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/dvd_rip.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/eject.png b/abs/core/linhes-theme/LinHES/watermark/eject.png
deleted file mode 100755
index 871576d..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/eject.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/gallery.png b/abs/core/linhes-theme/LinHES/watermark/gallery.png
deleted file mode 100644
index ad5baa5..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/gallery.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/gallery_settings.png b/abs/core/linhes-theme/LinHES/watermark/gallery_settings.png
deleted file mode 100644
index 17f0c9a..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/gallery_settings.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/hardware_info.png b/abs/core/linhes-theme/LinHES/watermark/hardware_info.png
deleted file mode 100644
index 0d7232d..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/hardware_info.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/hardware_settings.png b/abs/core/linhes-theme/LinHES/watermark/hardware_settings.png
deleted file mode 100644
index 44dec7a..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/hardware_settings.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/info.png b/abs/core/linhes-theme/LinHES/watermark/info.png
deleted file mode 100644
index 41821ab..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/info.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/joystick.png b/abs/core/linhes-theme/LinHES/watermark/joystick.png
deleted file mode 100644
index e482e5d..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/joystick.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/keys.png b/abs/core/linhes-theme/LinHES/watermark/keys.png
deleted file mode 100644
index fa8fecb..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/keys.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/movietime.png b/abs/core/linhes-theme/LinHES/watermark/movietime.png
deleted file mode 100644
index df3bcb6..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/movietime.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/multimedia.png b/abs/core/linhes-theme/LinHES/watermark/multimedia.png
deleted file mode 100644
index 0e8e1dd..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/multimedia.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/music.png b/abs/core/linhes-theme/LinHES/watermark/music.png
deleted file mode 100644
index a97ba4c..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/music.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/music_settings.png b/abs/core/linhes-theme/LinHES/watermark/music_settings.png
deleted file mode 100644
index 9e65588..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/music_settings.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/news.png b/abs/core/linhes-theme/LinHES/watermark/news.png
deleted file mode 100644
index 438a02d..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/news.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/optical.png b/abs/core/linhes-theme/LinHES/watermark/optical.png
deleted file mode 100644
index 1cdf3ea..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/optical.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/phone.png b/abs/core/linhes-theme/LinHES/watermark/phone.png
deleted file mode 100644
index c9abc2e..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/phone.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/play.png b/abs/core/linhes-theme/LinHES/watermark/play.png
deleted file mode 100644
index e9c8b15..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/play.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/previous.png b/abs/core/linhes-theme/LinHES/watermark/previous.png
deleted file mode 100755
index 57363e8..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/previous.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/priority.png b/abs/core/linhes-theme/LinHES/watermark/priority.png
deleted file mode 100644
index 9b00a35..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/priority.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/record.png b/abs/core/linhes-theme/LinHES/watermark/record.png
deleted file mode 100644
index 7c07dd9..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/record.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/restore.png b/abs/core/linhes-theme/LinHES/watermark/restore.png
deleted file mode 100644
index 6ed810c..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/restore.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/search.png b/abs/core/linhes-theme/LinHES/watermark/search.png
deleted file mode 100644
index 2371f90..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/search.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/setup.png b/abs/core/linhes-theme/LinHES/watermark/setup.png
deleted file mode 100644
index 4aaa062..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/setup.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/smolt.png b/abs/core/linhes-theme/LinHES/watermark/smolt.png
deleted file mode 100644
index 44dec7a..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/smolt.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/stream.png b/abs/core/linhes-theme/LinHES/watermark/stream.png
deleted file mode 100644
index 493e5da..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/stream.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/tng.png b/abs/core/linhes-theme/LinHES/watermark/tng.png
deleted file mode 100644
index ac0b685..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/tng.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/tv.png b/abs/core/linhes-theme/LinHES/watermark/tv.png
deleted file mode 100644
index e836592..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/tv.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/upgrade.png b/abs/core/linhes-theme/LinHES/watermark/upgrade.png
deleted file mode 100644
index c838a3d..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/upgrade.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/video.png b/abs/core/linhes-theme/LinHES/watermark/video.png
deleted file mode 100644
index bf07e27..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/video.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/video_settings.png b/abs/core/linhes-theme/LinHES/watermark/video_settings.png
deleted file mode 100644
index a786c2c..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/video_settings.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/weather.png b/abs/core/linhes-theme/LinHES/watermark/weather.png
deleted file mode 100644
index 6ef59eb..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/weather.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/wizard.png b/abs/core/linhes-theme/LinHES/watermark/wizard.png
deleted file mode 100644
index 3b7a184..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/wizard.png and /dev/null differ
diff --git a/abs/core/linhes-theme/LinHES/watermark/zoneminder.png b/abs/core/linhes-theme/LinHES/watermark/zoneminder.png
deleted file mode 100755
index b97dec2..0000000
Binary files a/abs/core/linhes-theme/LinHES/watermark/zoneminder.png and /dev/null differ
diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 75d2157..4424d21 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,18 +1,54 @@
-# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $
-# Maintainer: Cecil Watson<knoppmyth@gmail.com>
-
 pkgname=linhes-theme
-pkgver=1.4
-pkgrel=4
-pkgdesc="Default LinHES theme."
+pkgver=8.1
+pkgrel=1
+pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
+patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch')
+
+#The LinHES theme is based on TintedGlass by Harley Peters
+source=("git://github.com/MythTV-Themes/TintedGlass.git"
+        `echo ${patches[@]:0}` 'themeinfo.xml'
+        'background.png' 'qt-background.png')
+
 package() {
-  cd $srcdir/
-  cp -a $startdir/LinHES $srcdir/
-  mkdir -p $pkgdir/usr/share/mythtv/themes
-  cp -a LinHES $pkgdir/usr/share/mythtv/themes
+    THEMEROOT=usr/share/mythtv/themes
+
+    msg "Copying theme to package"
+    mkdir -p $pkgdir/$THEMEROOT/LinHES/
+    rsync -arp --exclude .git* --delete-excluded $srcdir/TintedGlass/* $pkgdir/$THEMEROOT/LinHES/
+
+    msg "--------------------------applying patches------------------------------"
+    cd $pkgdir/$THEMEROOT/LinHES/
+    for i in `echo ${patches[@]:0}`
+    do
+        echo applying $i
+        patch -N -i ${srcdir}/$i || return 1
+        echo "-----------------------------"
+    done
+    cd $startdir
+    msg "--------------------------done applying patches-------------------------"
+
+    msg "Copy themeinfo.xml and adding backgrounds for LinHES"
+    rsync -pL $srcdir/themeinfo.xml $pkgdir/$THEMEROOT/LinHES/
+    rm -r $pkgdir/$THEMEROOT/LinHES/images/backgrounds/*
+    rsync -pL $srcdir/*background.png $pkgdir/$THEMEROOT/LinHES/images/backgrounds/
+
+    msg "Modifying yellows and blue to LinHES yellow and blue"
+    #yellow
+    grep -lr '#d9d900' $pkgdir/$THEMEROOT/LinHES/ | xargs sed -i "s/\#d9d900/\#ebb81c/g"
+    #darkyellow
+    grep -lr '#CCCC29' $pkgdir/$THEMEROOT/LinHES/ | xargs sed -i "s/\#CCCC29/\#ebb81c/g"
+    #blue
+    grep -lr '#3a9ade' $pkgdir/$THEMEROOT/LinHES/ | xargs sed -i "s/\#3a9ade/\#0072bc/g"
 }
-md5sums=()
+
+md5sums=('SKIP'
+         '9c2fc68864cbedb6e449056972b457aa'
+         '15b4462932b7be0e56b2e69e0214823a'
+         'fce30678cb5903aada8466ce7004abea'
+         '7d7bc458a8f4af408700609f3e1f412e'
+         'cbe5f663ebb5d51abe811f81dafec303'
+         '12d26a786fde397348653128a6d7676a')
diff --git a/abs/core/linhes-theme/background.png b/abs/core/linhes-theme/background.png
new file mode 100644
index 0000000..ffdf9ef
Binary files /dev/null and b/abs/core/linhes-theme/background.png differ
diff --git a/abs/core/linhes-theme/base.xml.patch b/abs/core/linhes-theme/base.xml.patch
new file mode 100644
index 0000000..d230f05
--- /dev/null
+++ b/abs/core/linhes-theme/base.xml.patch
@@ -0,0 +1,22 @@
+--- base.xml.orig	2013-11-19 01:06:47.555458106 +0000
++++ base.xml	2013-11-19 01:29:11.310340235 +0000
+@@ -539,8 +539,8 @@
+ 
+     <!-- Base definition of a active button list background -->
+     <shape name="base_button_list_background_active" from="base_button_background_selected">
+-        <fill color="#CCCCCC" alpha="150" />
+-        <line color="#CCCCCC" alpha="150" width="2" />
++        <fill color="#000000" alpha="175" />
++        <line color="#454545" alpha="180" width="2" />
+     </shape>
+ 
+     <!-- Base definition of a disabled button background -->
+@@ -579,7 +579,7 @@
+                     <area>0,0,100%,100%</area>
+                 </shape>
+                 <textarea name="buttontext">
+-                    <font>basesmallblack</font>
++                    <font>basesmallgrey</font>
+                     <cutdown>yes</cutdown>
+                     <align>allcenter</align>
+                 </textarea>
diff --git a/abs/core/linhes-theme/osd.xml.patch b/abs/core/linhes-theme/osd.xml.patch
new file mode 100644
index 0000000..587f985
--- /dev/null
+++ b/abs/core/linhes-theme/osd.xml.patch
@@ -0,0 +1,45 @@
+--- osd.xml.orig	2013-11-18 21:37:37.415954645 +0000
++++ osd.xml	2013-11-18 22:57:08.390454672 +0000
+@@ -440,7 +440,8 @@
+             <area>90,658,1100,24</area>
+             <font>small</font>
+             <align>allcenter</align>
+-            <template>%DESCRIPTION% %VALUE%%UNITS%</template>
++            <template>%DESCRIPTION%
++            %(|REMAININGTIME|)%%(|BEHINDTIME|)%%VALUE%%UNITS%</template>
+         </textarea>
+ 
+         <clock name="clock">
+@@ -980,6 +981,12 @@
+             <align>allcenter</align>
+         </textarea>
+ 
++        <textarea name="callsign">
++            <font>large</font>
++            <area>68,634,162,46</area>
++            <align>allcenter</align>
++        </textarea>
++
+         <imagetype name="iconpath">
+             <area>84,536,130,98</area>
+             <preserveaspect>true</preserveaspect>
+@@ -989,17 +996,11 @@
+ 
+ <!-- Commit 6216029d2 makes this show up in both recordings and video. --> 
+ <!-- Since I only want it in video and there is no way to control it. I have no choice but to disable it. -->
+-<!--
++
+         <imagetype name="coverart">
+             <area>70,492,158,186</area>
+-            <alpha>225</alpha>
++            <alpha>255</alpha>
+         </imagetype>
+--->
+-        <textarea name="callsign">
+-            <font>large</font>
+-            <area>68,634,162,46</area>
+-            <align>allcenter</align>
+-        </textarea>
+ 
+ 	<textarea name="category">
+             <font>supersmallblue</font>
diff --git a/abs/core/linhes-theme/qt-background.png b/abs/core/linhes-theme/qt-background.png
new file mode 100644
index 0000000..12544b2
Binary files /dev/null and b/abs/core/linhes-theme/qt-background.png differ
diff --git a/abs/core/linhes-theme/readme.txt.patch b/abs/core/linhes-theme/readme.txt.patch
new file mode 100644
index 0000000..e1894d0
--- /dev/null
+++ b/abs/core/linhes-theme/readme.txt.patch
@@ -0,0 +1,18 @@
+--- readme.txt.orig	2013-11-18 21:20:01.034553575 +0000
++++ readme.txt	2013-11-18 21:20:30.387462546 +0000
+@@ -1,15 +1,3 @@
+-Backgrounds.
+-
+-If the default background is too light for you there is a darker version located
+-in images/backgrounds/dark/.
+-
+-If the default background is too dark for you there is a lighter version located
+-in images/backgrounds/light/.
+-
+-You can just copy them over to the images/backgrounds/ directory.
+-I actually use the darker version myself as my tv is set pretty bright but it is too dark
+-for computer monitors.
+-
+ Alternate osd.
+ There is an alternate osd available for anybody that doesn't like the default. ( osd.xml.alt )
+ I use the alternate osd myself.
diff --git a/abs/core/linhes-theme/themeinfo.xml b/abs/core/linhes-theme/themeinfo.xml
new file mode 100644
index 0000000..3deae2c
--- /dev/null
+++ b/abs/core/linhes-theme/themeinfo.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mythuitheme SYSTEM "http://www.mythtv.org/schema/mythuitheme.xsd">
+<themeinfo>
+    <!-- The Theme Name (Required) -->
+    <name>LinHES</name>
+
+    <!-- The Theme Types (Required) -->
+    <types>
+        <!-- Type. Legal Values are one or more of: UI, OSD and Menu -->
+        <type>UI</type>
+        <type>OSD</type>
+    </types>
+
+    <!-- Aspect ratio of the theme. (Required)
+         Maybe be: 4:3, 5:4, 16:9 or 16:10 -->
+    <aspect>16:9</aspect>
+
+    <!-- The base resolution of the theme before being scaled to the users
+         resolution (Required)
+         Usually 800x600 (4:3) or 1280x720 (16:9) -->
+    <baseres>1280x720</baseres>
+
+    <!-- Theme Author Details (Optional)-->
+    <author>
+        <!-- Your name -->
+        <name>LinHES Dev</name>
+
+        <!-- Your Email Address -->
+        <email>http://linhes.org</email>
+    </author>
+
+    <!-- The Versioning Info (Required) -->
+    <version>
+        <!-- Major version changes mean the theme is no longer
+             compatible with earlier versions of mythtv -->
+        <major>8</major>
+
+        <!-- Minor version changes are backwards compatible -->
+        <minor>1</minor>
+    </version>
+
+    <!-- Theme Details (Required) -->
+    <detail>
+        <!-- At least one thumbnail image named "preview" must be included
+             with the theme.
+             There is no limit to the number of thumbnails.
+             Each thumbnail must be given a different name -->
+        <thumbnail name="preview">preview.png</thumbnail>
+
+        <!-- A description of the theme, including general colours and
+             style. The description should include any details that
+             may help to locate your theme in a search. -->
+        <description>LinHES is a transparent theme based on TintedGlass.</description>
+
+        <!-- Errata. A list of known faults, missing elements or unfinished
+             areas. e.g. "mythgallery not themed" -->
+        <errata>LinHES is based on TintedGlass. This version of TintedGlass is released under the GPLv2.</errata>
+    </detail>
+</themeinfo>
-- 
cgit v0.12


From ae3b752a81135d139c057bb5f060a9ddcb8ab397 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 19 Nov 2013 12:19:58 -0600
Subject: mythtv mythplugins: update to latest .27-fixes. refs #933.

add suggestedstarttime patch for mythweb showing suggested start time of mythfilldatabase
---
 abs/core/mythtv/stable-0.27/git_src/git_hash       |   2 +-
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD   |   4 +-
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD        |  18 ++--
 .../mythtv/stable-0.27/mythtv/myth_settings.patch  | 104 +++++++++++----------
 .../stable-0.27/mythtv/suggestedstarttime.patch.v1 |  32 +++++++
 5 files changed, 102 insertions(+), 58 deletions(-)
 create mode 100644 abs/core/mythtv/stable-0.27/mythtv/suggestedstarttime.patch.v1

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index 4d9183d..aa97d7b 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-77a66f4fd77744727c2a22182d34a69da94290c0
+a6c1d5336502a97f25b747e0a036fde4d25fd2ee
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index ec47156..0e11c4e 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=2
+pkgrel=3
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
@@ -112,4 +112,4 @@ package_mythzoneminder() {
     make INSTALL_ROOT="${pkgdir}" install || return 1
 }
 
-md5sums=('19446f65722769926bafad220bbc6551')
+md5sums=()
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index 6af1e2f..6ec4e55 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=2
+pkgrel=3
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
@@ -18,10 +18,12 @@ groups=('pvr')
 backup=()
 install='mythtv.install'
 
-patches=(#'myth_settings.patch' 
-         '0001-protect-metadata-loads-from-multiple-threads.patch')
+patches=('myth_settings.patch' 
+         '0001-protect-metadata-loads-from-multiple-threads.patch'
          #http://code.mythtv.org/trac/ticket/10825   thread safety in video metadata load
- 
+         'suggestedstarttime.patch.v1')
+         #http://code.mythtv.org/trac/ticket/11562   next mythfilldatabase run in mythweb
+
 optdepends=()
 replaces=('mythvideo' 'myththemes')
 conflicts=('mythvideo' 'myththemes')
@@ -41,11 +43,11 @@ build() {
     echo "#!/bin/bash" > version.sh
 
     msg "--------------------------applying patches------------------------------"
-    for i in `echo ${patches[@]:0} `
+    for i in `echo ${patches[@]:0}`
     do
         echo applying $i
-        echo "-----------------------------"
         patch -Np2  -i ${startdir}/src/$i  || return 1
+        echo "-----------------------------"
     done
     msg "--------------------------done applying patches-------------------------"
 
@@ -97,5 +99,7 @@ package() {
     install -m0755 ${srcdir}/recordings ${pkgdir}/etc/cron.hourly/
 }
 
-md5sums=('67f7316c750fba17fa578d10840b9dbd'
+md5sums=('5f3e43567e62afe17bad39f5a9b604cf'
+         '67f7316c750fba17fa578d10840b9dbd'
+         '35a7fd3e3057691e3b1bf355bb9e8b16'
          '65a08d8949431ecdeb51a686dc6f9c21')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch b/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch
index dd1de24..27f9283 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch
+++ b/abs/core/mythtv/stable-0.27/mythtv/myth_settings.patch
@@ -1,16 +1,14 @@
-commit 9b4205fa320c06afde8c6d866b854cb12d3ec99c
-Author: root <root@localhost.localdomain>
-Date:   Fri Sep 28 14:25:06 2012 -0500
+commit 0bfb6515f1c6f10d4d9d5d7297ca56a18ac3c138
+Author: James Meyer <james.meyer@operamail.com>
+Date:   Sun Nov 17 18:58:50 2013 -0600
 
-    new patch
-    
-    Signed-off-by: root <root@localhost.localdomain>
+    mythutil updated with myth_settings for .27
 
 diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
-index 84cb01a..6e3c54a 100644
+index e9cc880..4f7a3bd 100644
 --- a/mythtv/libs/libmythbase/mythcorecontext.cpp
 +++ b/mythtv/libs/libmythbase/mythcorecontext.cpp
-@@ -1260,6 +1260,90 @@ void MythCoreContext::ResetLanguage(void)
+@@ -1262,6 +1262,90 @@ void MythCoreContext::ResetLanguage(void)
      d->language.clear();
  }
  
@@ -19,7 +17,7 @@ index 84cb01a..6e3c54a 100644
 +                                            QString saved_settingsgroupname )
 +{
 +    return d->m_database->savesettings_togroup(src_hostname,
-+                                               saved_settingsgroupname);
++                                        saved_settingsgroupname);
 +}
 +
 +void MythCoreContext::deletesettings(QString delete_hostname,
@@ -102,55 +100,66 @@ index 84cb01a..6e3c54a 100644
  {
      if (!d->m_locale)
 diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
-index 0917313..3f6d5f8 100644
+index aed83d7..3f0de5e 100644
 --- a/mythtv/libs/libmythbase/mythcorecontext.h
 +++ b/mythtv/libs/libmythbase/mythcorecontext.h
-@@ -168,6 +168,40 @@ class MBASE_PUBLIC MythCoreContext : public MythObservable, public MythSocketCBs
-     QString GetLanguageAndVariant(void);
-     void ResetLanguage(void);
- 
+@@ -198,7 +198,42 @@ class MBASE_PUBLIC MythCoreContext : public QObject, public MythObservable, publ
+     void emitTVPlaybackUnpaused(void)           { emit TVPlaybackUnpaused(); }
+     void emitTVPlaybackAborted(void)            { emit TVPlaybackAborted(); }
+     void emitTVPlaybackPlaying(void)            { emit TVPlaybackPlaying(); }
+-
++    
 +    //JM ADDED
 +    void savesettings_togroup(QString src_hostname,
 +                              QString saved_settingsgroupname );
-+
++    
 +    void deletesettings(QString delete_hostname,
 +                        QString saved_settingsgroupname);
-+
++    
 +    QMap<QString,QStringList> list_settingsgroupname();
 +    QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
 +                                                     QString diff_hostname2,
 +                                                     QStringList table_list);
-+
++    
 +    void clonesettings(QString src_hostname,
 +                       QString saved_settingsgroupname,
 +                       QStringList table_list,
 +                       bool is_full_clone=TRUE,
 +                       QString dest_hostname="");
-+
++    
 +    void restoresettings (QString dest_hostname,
 +                          QString saved_settingsgroupname,
 +                          QStringList table_list);
-+
++    
 +    void change_hostname (QString old_hostname, QString new_hostname);
-+
++    
 +    bool settings_check (QString src_hostname ,QString saved_settingsgroupname);
 +    void import_settings(QMap<QString,QString> vp_map, QString table);
-+
++    
 +    QMap<QString,QMap <QString,QString> > export_settings(
-+                                             QString src_hostname,
-+                                             QString saved_settingsgroupname,
-+                                             QStringList table_list,
-+                                             bool skip_host = FALSE );
++        QString src_hostname,
++        QString saved_settingsgroupname,
++        QStringList table_list,
++        bool skip_host = FALSE );
 +    //END JM ADDED
-+
++    
++    
+   signals:
+     void TVPlaybackStarted(void);
+     //// TVPlaybackStopped signal should be used in combination with
+@@ -211,6 +246,7 @@ class MBASE_PUBLIC MythCoreContext : public QObject, public MythObservable, publ
+     void TVPlaybackAboutToStart(void);
+     void TVPlaybackPlaying(void);
+ 
++   
    private:
      MythCoreContextPrivate *d;
  
 diff --git a/mythtv/libs/libmythbase/mythdb.cpp b/mythtv/libs/libmythbase/mythdb.cpp
-index ea30783..e4c1781 100644
+index e60fce0..ed3bdf7 100644
 --- a/mythtv/libs/libmythbase/mythdb.cpp
 +++ b/mythtv/libs/libmythbase/mythdb.cpp
-@@ -774,7 +774,7 @@ void MythDB::OverrideSettingForSession(
+@@ -775,7 +775,7 @@ void MythDB::OverrideSettingForSession(
      QString mk = key.toLower(), mk2 = d->m_localhostname + ' ' + mk, mv = value;
      if ("dbschemaver" == mk)
      {
@@ -159,7 +168,7 @@ index ea30783..e4c1781 100644
              QString("ERROR: Refusing to allow override for '%1'.").arg(key));
          return;
      }
-@@ -1055,6 +1055,1015 @@ void MythDB::WriteDelayedSettings(void)
+@@ -896,6 +896,1015 @@ void MythDB::WriteDelayedSettings(void)
      }
  }
  
@@ -1176,10 +1185,10 @@ index ea30783..e4c1781 100644
   *  \brief Set a flag indicating we have successfully connected to the database
   */
 diff --git a/mythtv/libs/libmythbase/mythdb.h b/mythtv/libs/libmythbase/mythdb.h
-index 79abe56..fd6044e 100644
+index ac2a8ec..f3689a5 100644
 --- a/mythtv/libs/libmythbase/mythdb.h
 +++ b/mythtv/libs/libmythbase/mythdb.h
-@@ -75,6 +75,49 @@ class MBASE_PUBLIC MythDB
+@@ -74,6 +74,49 @@ class MBASE_PUBLIC MythDB
  
      void WriteDelayedSettings(void);
  
@@ -1230,11 +1239,11 @@ index 79abe56..fd6044e 100644
      void SetHaveSchema(bool schema);
      bool HaveSchema(void) const;
 diff --git a/mythtv/programs/mythutil/commandlineparser.cpp b/mythtv/programs/mythutil/commandlineparser.cpp
-index f4a6035..fdeeb8e 100644
+index 902314d..d86b548 100644
 --- a/mythtv/programs/mythutil/commandlineparser.cpp
 +++ b/mythtv/programs/mythutil/commandlineparser.cpp
-@@ -118,6 +118,37 @@ void MythUtilCommandLineParser::LoadArguments(void)
-         << add("--print-template", "printtemplate", false,
+@@ -144,6 +144,37 @@ void MythUtilCommandLineParser::LoadArguments(void)
+         << add("--print-notification-template", "printntemplate", false,
                  "Print the template to be sent to the frontend", "")
                  ->SetGroup("Messaging")
 +
@@ -1271,9 +1280,9 @@ index f4a6035..fdeeb8e 100644
          );
  
      // mpegutils.cpp
-@@ -140,6 +171,59 @@ void MythUtilCommandLineParser::LoadArguments(void)
-     add("--bcastaddr", "bcastaddr", "127.0.0.1", "(optional) IP address to send to", "")
-         ->SetChildOf("message");
+@@ -194,6 +225,59 @@ void MythUtilCommandLineParser::LoadArguments(void)
+     add("--type", "type", "type", "(optional) type of notification (normal, error, warning, check, busy", "")
+     ->SetChildOf("notification");
  
 +    //settingsutils.cpp
 +    add("--groupname", "groupname", "", "Group of settings name", "")
@@ -1332,18 +1341,18 @@ index f4a6035..fdeeb8e 100644
      addRecording();
      addInFile(true);
 diff --git a/mythtv/programs/mythutil/main.cpp b/mythtv/programs/mythutil/main.cpp
-index 418ea01..bd4a1f4 100644
+index 0bc49f2..faada3d 100644
 --- a/mythtv/programs/mythutil/main.cpp
 +++ b/mythtv/programs/mythutil/main.cpp
-@@ -21,6 +21,7 @@
- #include "jobutils.h"
+@@ -22,6 +22,7 @@
  #include "markuputils.h"
  #include "messageutils.h"
-+#include "settingsutils.h"
  #include "signalhandling.h"
++#include "settingsutils.h"
  
  
-@@ -105,6 +106,7 @@
+ int main(int argc, char *argv[])
+@@ -105,6 +106,7 @@ int main(int argc, char *argv[])
      registerJobUtils(utilMap);
      registerMarkupUtils(utilMap);
      registerMessageUtils(utilMap);
@@ -1352,10 +1361,10 @@ index 418ea01..bd4a1f4 100644
      bool cmdFound = false;
      int cmdResult = GENERIC_EXIT_OK;
 diff --git a/mythtv/programs/mythutil/mythutil.pro b/mythtv/programs/mythutil/mythutil.pro
-index 066e618..87d7952 100644
+index f0ecbf5..f9472fc 100644
 --- a/mythtv/programs/mythutil/mythutil.pro
 +++ b/mythtv/programs/mythutil/mythutil.pro
-@@ -10,7 +10,7 @@ TARGET = mythutil
+@@ -13,7 +13,7 @@ TARGET = mythutil
  target.path = $${PREFIX}/bin
  INSTALLS = target
  
@@ -1364,18 +1373,17 @@ index 066e618..87d7952 100644
  INCLUDEPATH += ../../libs/libmythbase
  
  QMAKE_CLEAN += $(TARGET)
-@@ -19,8 +19,10 @@ QMAKE_CLEAN += $(TARGET)
+@@ -22,8 +22,10 @@ QMAKE_CLEAN += $(TARGET)
  HEADERS += mythutil.h commandlineparser.h
  HEADERS += backendutils.h fileutils.h jobutils.h markuputils.h
  HEADERS += messageutils.h mpegutils.h
 +HEADERS += settingsutils.h
-+
  SOURCES += main.cpp mythutil.cpp commandlineparser.cpp
  SOURCES += backendutils.cpp fileutils.cpp jobutils.cpp markuputils.cpp
  SOURCES += messageutils.cpp mpegutils.cpp
--
 +SOURCES += settingsutils.cpp
- mingw: LIBS += -lwinmm -lws2_32
+ 
+ mingw|win32-msvc*: LIBS += -lwinmm -lws2_32
 diff --git a/mythtv/programs/mythutil/settingsutils.cpp b/mythtv/programs/mythutil/settingsutils.cpp
 new file mode 100644
 index 0000000..8fc7b0e
diff --git a/abs/core/mythtv/stable-0.27/mythtv/suggestedstarttime.patch.v1 b/abs/core/mythtv/stable-0.27/mythtv/suggestedstarttime.patch.v1
new file mode 100644
index 0000000..26d4c36
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythtv/suggestedstarttime.patch.v1
@@ -0,0 +1,32 @@
+diff --git a/mythtv/programs/mythbackend/httpstatus.cpp b/mythtv/programs/mythbackend/httpstatus.cpp
+index 8571a58..be0272f 100644
+--- a/mythtv/programs/mythbackend/httpstatus.cpp
++++ b/mythtv/programs/mythbackend/httpstatus.cpp
+@@ -1392,13 +1392,17 @@ int HttpStatus::PrintMachineInfo( QTextStream &os, QDomElement info )
+             QString sStatus = e.attribute( "status"   , ""  );
+             QDateTime next  = MythDate::fromString( e.attribute( "next"     , ""  ));
+             QString sNext   = next.isNull() ? "" :
+-                                MythDate::toString(next, MythDate::kDatabase);
++                                MythDate::toString(next, MythDate::kDateTimeFull);
+             QString sMsg    = "";
+ 
+             QDateTime thru  = MythDate::fromString( e.attribute( "guideThru", ""  ));
+ 
+             QDomText  text  = e.firstChild().toText();
+ 
++            QString mfdblrs =
++                gCoreContext->GetSetting("mythfilldatabaseLastRunStart");
++            QDateTime lastrunstart = MythDate::fromString(mfdblrs);
++
+             if (!text.isNull())
+                 sMsg = text.nodeValue();
+ 
+@@ -1412,7 +1416,7 @@ int HttpStatus::PrintMachineInfo( QTextStream &os, QDomElement info )
+ 
+             os << sStatus << "<br />\r\n";
+ 
+-            if (!next.isNull() && sNext >= sStart)
++            if (!next.isNull() && next >= lastrunstart)
+             {
+                 os << "    Suggested next mythfilldatabase run: "
+                     << sNext << ".<br />\r\n";
-- 
cgit v0.12


From 3283ac2bffa18293aa8d0e69ea29d654dec010c2 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 20 Nov 2013 15:56:38 -0600
Subject: LinHES-system: add_storage.py: add music storage group. refs #941.

Combine frontend SG and backend SG to all SGs or none. --add_sg option is new and is recognized in normal operation.
---
 abs/core/LinHES-system/PKGBUILD       |   4 +-
 abs/core/LinHES-system/add_storage.py | 157 ++++++++++++++--------------------
 2 files changed, 66 insertions(+), 95 deletions(-)
 mode change 100644 => 100755 abs/core/LinHES-system/add_storage.py

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 03b1c96..c55ce7e 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -93,7 +93,7 @@ md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
-         '2f0c92539ae35314ac97710dbb7e9f3a'
+         '4d6a6e88b519caf917ebe6c85c32c45b'
          '2c005d95312018bef80092136f80f254'
          '6519d209e151cdc39ae7e1091d189c3e'
          'ca63946920ba33de1f15abda83e74e40'
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
old mode 100644
new mode 100755
index 073bc96..61ce0ea
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -24,29 +24,23 @@ storage_dir = "/etc/storage.d"
 pickle_file = "%s/storage.pkl" %storage_dir
 
 
-SG_MAP_BE={ 'Default'    :'media/tv',
-'LiveTV'     :'media/tv/live',
-'DB Backups' :'backup/mythtv_backups/',
-'Streaming'  :'media/streaming'}
-
-
-SG_MAP_FE={
-  'Videos'     :'media/video',
-  'Trailers'   :'media/artwork/trailers',
-  'Coverart'   :'media/artwork/coverart',
-  'Fanart'     :'media/artwork/fanart',
-  'Banners'    :'media/artwork/banners',
-  'Screenshots':'media/artwork/screenshots',
-  }
-
-FS_LIST_BE=[]
-for key in SG_MAP_BE.keys():
-    FS_LIST_BE.append(SG_MAP_BE[key])
-
-FS_LIST_FE=[]
-for key in SG_MAP_FE.keys():
-    FS_LIST_FE.append(SG_MAP_FE[key])
-
+SG_MAP={
+    'Default'    :'media/tv',
+    'LiveTV'     :'media/tv/live',
+    'DB Backups' :'backup/mythtv_backups/',
+    'Music'      :'media/music',
+    'Streaming'  :'media/streaming',
+    'Videos'     :'media/video',
+    'Banners'    :'media/artwork/banners',
+    'Coverart'   :'media/artwork/coverart',
+    'Fanart'     :'media/artwork/fanart',
+    'Screenshots':'media/artwork/screenshots',
+    'Trailers'   :'media/artwork/trailers',
+    }
+
+FS_LIST=[]
+for key in SG_MAP.keys():
+    FS_LIST.append(SG_MAP[key])
 
 class disk_device:
     def  __init__(self,device,storage_dir):
@@ -458,13 +452,13 @@ def prompt_to_add(current_drive,destruction = True):
         ** Adding this disk will remove all contents on the disk. **
         This disk will be partitioned and formatted.
 
-        Enable this disk for MythTV storage (Y/N)?:'''
+        Enable this disk for storage (Y/N)?:'''
     else:
         prompt = '''
         ** Preserving existing contents on the disk. **
         This disk will NOT be partitioned or formatted.
 
-        Enable this disk for MythTV storage (Y/N)?:'''
+        Enable this disk for storage (Y/N)?:'''
     while loop:
         str1 = raw_input(prompt)
 
@@ -502,46 +496,23 @@ def prompt_to_continue(process_list):
     print "-----"
     return rc
 
-def prompt_sg(dir_be_sg,dir_fe_sg):
-    #check for backend storage groups
-    if dir_be_sg != True:
+def prompt_sg(dir_sg):
+    #check for storage groups
+    print "*" * 60
+    if dir_sg != True:
         loop = True
-        print "*" * 60
         prompt_string='''
-    Backend Storage Groups are used for
-    database backups, TV recordings and streaming.
+    MythTV Storage Groups are used for artwork, database backups,
+    music, streaming, TV recordings, and videos.
 
     The content on these storage groups will
     only be available while the system is online.
 
-    Enable Backend Storage Groups (Y/N)?:'''
+    Enabling MythTV Storage Groups will create the directories 
+    on the disk(s) and add the paths to the MythTV database.
 
-        while loop:
-            str1 = raw_input(prompt_string)
-            if str1 in ['Y','N','y','n']:
-                loop = False
-                break
-            print "\n"
+    Enable MythTV Storage Groups (Y/N)?:'''
 
-        if str1 == 'Y' or str1 == 'y':
-            dir_be_sg = True
-            print "    ** Will add Backend Storage Groups!"
-        else:
-            print "    ** Will NOT add Backend Storage Groups!"
-            dir_be_sg = False
-
-    #now for frontend storage groups
-    if dir_fe_sg != True:
-        loop = True
-        print ""
-        print "    ++++++++++++++++++++"
-        prompt_string='''
-    Frontend Storage Groups are used for artwork and videos.
-
-    The content on these storage groups will
-    only be available while the system is online.
-
-    Enable Frontend Storage Groups (Y/N)?:'''
         while loop:
             str1 = raw_input(prompt_string)
             if str1 in ['Y','N','y','n']:
@@ -550,16 +521,17 @@ def prompt_sg(dir_be_sg,dir_fe_sg):
             print "\n"
 
         if str1 == 'Y' or str1 == 'y':
-            dir_fe_sg = True
-            print "    ** Will add Frontend Storage Groups!"
+            dir_sg = True
+            print "    ** Will add MythTV Storage Groups!"
         else:
-            dir_fe_sg = False
-            print "    ** Will NOT add Frontend Storage Groups!"
-
-    print ""
-    print "*" * 60
+            print "    ** Will NOT add MythTV Storage Groups!"
+            dir_sg = False
+    else:
+        dir_sg = True
+        print "\n    --add_sg option used"
+        print "    ** Will add MythTV Storage Groups!"
 
-    return dir_be_sg,dir_fe_sg
+    return dir_sg
 
 def remove_pickle():
     try:
@@ -579,7 +551,7 @@ def last_disk_num():
     return num_list[-1]
 #--------------------------------------------
 
-def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
+def main(scan_only, destruction, no_mount, install_call , dir_sg):
     global bus
     bus = dbus.SystemBus()
 
@@ -675,7 +647,7 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
     if len(process_list) > 0:
         print "\n  Will add %s disk(s) to your system." %len(process_list)
 
-        dir_be_sg , dir_fe_sg = prompt_sg(dir_be_sg,dir_fe_sg)
+        dir_sg = prompt_sg(dir_sg)
         if prompt_to_continue(process_list) == True:
             write_known_drive_list(system_drive_list)
             disk_num = last_disk_num()
@@ -690,10 +662,8 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
                 i.mount_disk(no_mount)
                 #if destruction == True:
 
-                if dir_fe_sg == True:
-                    i.mkdirs(FS_LIST_FE)
-                if dir_be_sg == True:
-                    i.mkdirs(FS_LIST_BE)
+                if dir_sg == True:
+                    i.mkdirs(FS_LIST)
 
                 i.set_disk_num(disk_num)
                 i.write_config()
@@ -702,17 +672,15 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
 
                 i.symlink_disk()
 
-                if dir_fe_sg == True:
-                    i.add_sg(DB,host,SG_MAP_FE)
-                if dir_be_sg == True:
-                        i.add_sg(DB,host,SG_MAP_BE)
+                if dir_sg == True:
+                    i.add_sg(DB,host,SG_MAP)
 
                 print "-----"
             cmd = "systemconfig.py -m fileshare"
             runcmd(cmd)
         #i.add_sg(DB,host,SG_MAP)
 
-def myth_main(no_mount,install_call,dir_fe_sg):
+def myth_main(no_mount,install_call,dir_sg):
     global bus
     bus = dbus.SystemBus()
     #search for root
@@ -767,10 +735,8 @@ def myth_main(no_mount,install_call,dir_fe_sg):
     i.mount_disk(no_mount)
     i.write_config()
     #no need to make the sub directories because the install process has taken care of it.
-    if dir_fe_sg == True:
-        i.add_sg(DB,host,SG_MAP_FE,'99',install_call)
-    if dir_be_sg == True:
-        i.add_sg(DB,host,SG_MAP_BE,'99',install_call)
+    if dir_sg == True:
+        i.add_sg(DB,host,SG_MAP,'99',install_call)
 
     i.symlink()
     cmd = "systemconfig.py -m fileshare"
@@ -979,16 +945,17 @@ def usage():
         Add disk to /etc/fstab
         Mount the disk
         Create the directories
+            (if user enables MythTV Storage Groups)
         Write out the disk config file to /etc/storage.d/
         Create disk# symlink at /data/storage/
         Create /myth symlink (if applicable)
-        Add new locations to MythTV storage groups
+        Create MythTV Storage Group paths in MythTV database
+            (if user enables MythTV Storage Groups)
 
     Options:
-    --add_be_sg:        Create the storage group directories for backup,
-                           tv and streaming. Excludes artwork and video.
-    --add_fe_sg:        Create the storage group directories for artwork
-                           and video. Excludes backup, tv and streaming.
+    --add_sg:           Create the MythTV Storage Group directories and 
+                           database entries for database backups, TV
+                           recordings, music, streaming, videos and artwork.
     -h, --help:         Show this help message.
     --new_init:         Erase the list of known disks and rescan.
     --no_destruction:   Will not partition or format the disk.
@@ -998,8 +965,8 @@ def usage():
                            All other normal operations will be performed.
     --reconstruct:      Recreate mount point, /myth symlink, fstab entry,
                            /data/storage/disk# symlink, and mount the disk.
-                           no_mount is the only option that works with
-                           reconstruct.
+                           --no_mount is the only option that works with
+                           --reconstruct.
     --report:           Scan disks and print new found disks.
     '''
     print help
@@ -1014,8 +981,7 @@ if __name__ == "__main__":
     no_mount = False
     destruction = True
     install_call = False
-    dir_fe_sg = False
-    dir_be_sg = False
+    dir_sg = False
     reconstruct = False
     try:
         os.remove("/tmp/scan_report")
@@ -1043,18 +1009,23 @@ if __name__ == "__main__":
     if "--report" in sys.argv :
         scan_only = True
 
+    if "--add_sg" in sys.argv:
+        dir_sg = True
+
+       #there is no distinction between FE and BE sg anymore
+       #but leaving these for backwards compatibility
     if "--add_fe_sg" in sys.argv:
-        dir_fe_sg = True
+        dir_sg = True
 
     if "--add_be_sg" in sys.argv:
-        dir_be_sg = True
+        dir_sg = True
 
     if "--reconstruct" in sys.argv:
         reconstruct = True
 
     if "--double_myth" in sys.argv:
-        myth_main(no_mount,install_call,dir_fe_sg)
+        myth_main(no_mount, install_call, dir_sg)
     elif reconstruct == True:
         reconstruct_mounts(no_mount)
     else:
-        main(scan_only,destruction,no_mount, install_call, dir_fe_sg, dir_be_sg)
+        main(scan_only,destruction,no_mount, install_call, dir_sg)
-- 
cgit v0.12


From 5149cbad92c9d8b3aa5e7ab67f40577683b1a7d8 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 20 Nov 2013 16:13:42 -0600
Subject: LinHES-config: mv_config.py: add music dir to NFS_SKIP. refs #941.

mv_install.py: update sg option to --add_sg
---
 abs/core/LinHES-config/PKGBUILD      | 6 +++---
 abs/core/LinHES-config/mv_config.py  | 2 +-
 abs/core/LinHES-config/mv_install.py | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 00b3885..f567c67 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -133,9 +133,9 @@ package() {
     install -o root -g root  -D -m 0755 blacklist_nouveau.conf $pkgdir/etc/modprobe.d/blacklist_nouveau.conf
 }
 
-md5sums=('c832059cd635359d39a2ac3166ff463c'
+md5sums=('8ee14247b04ab4152d4919d4d4b8d869'
          '3f6855b7bb860a44f96a972c2e80f497'
-         'febc2b6caaf6e79277fc0b5bcac806c9'
+         'f6e9dd7bc6cf0aaa3bd203dab4cb79b9'
          '2596460462cf6c889cf8f95485537b20'
          '985891a43f7c4c983eb2a362162f1a0f'
          'fda01259a4bc74d83c9092d338bd247a'
diff --git a/abs/core/LinHES-config/mv_config.py b/abs/core/LinHES-config/mv_config.py
index 18a7144..e2c3b83 100755
--- a/abs/core/LinHES-config/mv_config.py
+++ b/abs/core/LinHES-config/mv_config.py
@@ -13,7 +13,7 @@ NOOPDEBUG="FALSE"
 TEMP_TEMPLATES="/tmp/templates"
 share_exclude_dir=['mysql','srv']
 
-SG_MAP_AUTONFS_SKIP=['media/tv','media/video','media/artwork','media/streaming']
+SG_MAP_AUTONFS_SKIP=['media/tv','media/music','media/video','media/artwork','media/streaming']
 
 MAP_AUTONFS_SKIP=['lost+found','media','backup']
 nfs_options="hard,intr,actimeo=0"
diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py
index 57b784b..ba88ade 100755
--- a/abs/core/LinHES-config/mv_install.py
+++ b/abs/core/LinHES-config/mv_install.py
@@ -1255,7 +1255,7 @@ def double_mount(fe_only=False, upgrade=False):
                 cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --no_mount"
             else:
                 #cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --no_mount"
-                cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --add_fe_sg --add_be_sg "
+                cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --add_sg"
 
         if runcmd(cmd)[0] == 0:
             logging.debug("    Add storage worked, breaking out of loop")
-- 
cgit v0.12


From 897051449a9bd6636e1d247152ce37760a7b1497 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 21 Nov 2013 16:12:22 -0600
Subject: linhes-theme: add Tux bubble for menu descriptions. refs #940.

Move menu to top of screen. Change size of popup menu to match size of video osd popup menu. Widen clock field to avoid trunkation.
---
 abs/core/linhes-theme/PKGBUILD          |  17 +--
 abs/core/linhes-theme/base.xml.patch    | 176 +++++++++++++++++++++++++++++++-
 abs/core/linhes-theme/menu-ui.xml.patch |  67 ++++++++++++
 abs/core/linhes-theme/tux_thoughts.png  | Bin 0 -> 50666 bytes
 4 files changed, 253 insertions(+), 7 deletions(-)
 create mode 100644 abs/core/linhes-theme/menu-ui.xml.patch
 create mode 100755 abs/core/linhes-theme/tux_thoughts.png

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 4424d21..7f58de5 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,17 +1,18 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
-patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch')
+patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
+         'menu-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git"
         `echo ${patches[@]:0}` 'themeinfo.xml'
-        'background.png' 'qt-background.png')
+        'background.png' 'qt-background.png' 'tux_thoughts.png')
 
 package() {
     THEMEROOT=usr/share/mythtv/themes
@@ -31,10 +32,12 @@ package() {
     cd $startdir
     msg "--------------------------done applying patches-------------------------"
 
-    msg "Copy themeinfo.xml and adding backgrounds for LinHES"
+    msg "Copy themeinfo.xml and adding backgrounds and images for LinHES"
     rsync -pL $srcdir/themeinfo.xml $pkgdir/$THEMEROOT/LinHES/
     rm -r $pkgdir/$THEMEROOT/LinHES/images/backgrounds/*
     rsync -pL $srcdir/*background.png $pkgdir/$THEMEROOT/LinHES/images/backgrounds/
+    #tux_thoughts.png is the thought bubble for the menu descriptions
+    rsync -pL $srcdir/tux_thoughts.png $pkgdir/$THEMEROOT/LinHES/images/
 
     msg "Modifying yellows and blue to LinHES yellow and blue"
     #yellow
@@ -48,7 +51,9 @@ package() {
 md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          '15b4462932b7be0e56b2e69e0214823a'
-         'fce30678cb5903aada8466ce7004abea'
+         '2fb0990e8fef2c70e9bd8cfb36689b2b'
+         '83b03852c6f46bc791bfa6e8c894ca01'
          '7d7bc458a8f4af408700609f3e1f412e'
          'cbe5f663ebb5d51abe811f81dafec303'
-         '12d26a786fde397348653128a6d7676a')
+         '12d26a786fde397348653128a6d7676a'
+         '2bd09b8049aaf5ba21db5baf3a0ce077')
diff --git a/abs/core/linhes-theme/base.xml.patch b/abs/core/linhes-theme/base.xml.patch
index d230f05..5dde5ea 100644
--- a/abs/core/linhes-theme/base.xml.patch
+++ b/abs/core/linhes-theme/base.xml.patch
@@ -1,5 +1,62 @@
 --- base.xml.orig	2013-11-19 01:06:47.555458106 +0000
-+++ base.xml	2013-11-19 01:29:11.310340235 +0000
++++ base.xml	2013-11-21 21:56:09.218085998 +0000
+@@ -431,19 +431,19 @@
+     <group name="base_heading_group">
+         <area>0,0,1280,720</area>
+         <shape name="base_heading_backdrop" from="base_backdrop">
+-            <area>500,-7,280,32</area>
++            <area>490,-7,300,32</area>
+         </shape>
+         <shape name="base_heading_backdrop_line" from="base_backdrop_line">
+-            <area>500,-7,280,32</area>
++            <area>490,-7,300,32</area>
+         </shape>
+         <shape name="heading-left-line" from="base_highlight_vertical_line">
+-            <area>501,0,2,22</area>
++            <area>491,0,2,22</area>
+         </shape>
+         <shape name="heading-right-line" from="base_highlight_vertical_line">
+-            <area>777,0,2,22</area>
++            <area>787,0,2,22</area>
+         </shape>
+         <shape name="heading-bottom-line" from="base_highlight_line">
+-            <area>501,22,278,2</area>
++            <area>491,22,298,2</area>
+         </shape>
+     </group>
+ 
+@@ -463,25 +463,25 @@
+     <!-- Base definition of a clock  group -->
+     <group name="base_clock_backdrop_group">
+         <shape name="base_clock_backdrop" from="base_backdrop">
+-            <area>500,695,280,32</area>
++            <area>490,695,300,32</area>
+         </shape>
+         <shape name="base_clock_backdrop_line" from="base_backdrop_line">
+-            <area>500,695,280,32</area>
++            <area>490,695,300,32</area>
+         </shape>
+         <shape name="base_clock_backdrop_top_line" from="base_highlight_line">
+-            <area>501,696,278,2</area>
++            <area>491,696,298,2</area>
+         </shape>
+         <shape name="base_clock_backdrop_left_line" from="base_highlight_vertical_line">
+-            <area>501,698,2,22</area>
++            <area>491,698,2,22</area>
+         </shape>
+         <shape name="clock_right_line" from="base_highlight_vertical_line">
+-            <area>777,698,2,22</area>
++            <area>787,698,2,22</area>
+         </shape>
+     </group>
+ 
+     <!-- Base denfinition of a clock -->
+     <clock name="base_clock">
+-        <area>529,698,219,22</area>
++        <area>499,698,282,22</area>
+         <font>baseextrasmall</font>
+         <template>%DATE%, %TIME%</template>
+         <align>allcenter</align>
 @@ -539,8 +539,8 @@
  
      <!-- Base definition of a active button list background -->
@@ -20,3 +77,120 @@
                      <cutdown>yes</cutdown>
                      <align>allcenter</align>
                  </textarea>
+@@ -1235,15 +1235,13 @@
+ 
+         <group name="clock-backdrop-group" from="base_clock_backdrop_group" />
+ 
+-	<clock name="time" from="base_clock">
+-            <area>529,698,219,22</area>
+-        </clock>
++	<clock name="time" from="base_clock" />
+ 
+     </window>
+ 
+     <!-- Popup Dialogue Box -->
+     <window name="MythPopupBox">
+-        <area>-1,-1,400,463</area>
++        <area>-1,-1,602,488</area>
+ 
+         <animation trigger="AboutToShow">
+             <section>
+@@ -1260,76 +1258,77 @@
+         </animation>
+ 
+         <shape name="popup-backdrop" from="base_popup_backdrop">
+-            <area>0,0,400,463</area>
++            <area>0,0,602,488</area>
++            <fill color="#0a0a0e" alpha="235" />
+         </shape>
+ 
+         <shape name="popup-backdrop-line" from="base_backdrop_line">
+-            <area>1,1,398,461</area>
++            <area>1,1,600,486</area>
+         </shape>
+ 
+         <shape name="popup-first-line" from="base_highlight_line">
+-            <area>2,2,396,2</area>
++            <area>2,2,596,2</area>
+         </shape>
+ 
+         <shape name="popup-second-line" from="base_line">
+-            <area>23,174,354,2</area>
++            <area>23,212,552,2</area>
+         </shape>
+ 
+         <shape name="popup-third-line" from="base_highlight_line">
+-            <area>2,459,396,2</area>
++            <area>2,484,596,2</area>
+         </shape>
+ 
+         <shape name="popup-left-line" from="base_highlight_vertical_line">
+-            <area>2,4,2,455</area>
++            <area>2,4,2,480</area>
+         </shape>
+ 
+         <shape name="popup-right-line" from="base_highlight_vertical_line">
+-            <area>396,4,2,455</area>
++            <area>598,4,2,480</area>
+         </shape>
+ 
+         <textarea name="messagearea" from="basetextarea">
+-            <area>16,8,368,162</area>
+-            <font>basesmalldarkyellow</font>
++            <area>10,8,582,196</area>
++            <font>basesmall</font>
+             <multiline>yes</multiline>
+             <align>allcenter</align>     
+         </textarea>
+ 
+         <buttonlist name="list" from="base_button_list">
+-            <area>15,191,370,264</area>
++            <area>15,222,570,252</area>
+             <statetype name="buttonitem">
+                 <state name="active">
+-                    <area>0,0,370,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>8,0,354,40</area>
++                        <area>8,0,570,34</area>
+                     </textarea>
+                     <imagetype name="buttonarrow">
+-                        <position>347,11</position>
++                        <position>544,8</position>
+                     </imagetype>
+                 </state>
+                 <state name="selectedactive">
+-                    <area>0,0,370,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>8,0,354,40</area>
++                        <area>8,0,570,34</area>
+                     </textarea>
+                     <imagetype name="buttonarrow">
+-                        <position>347,11</position>
++                        <position>544,8</position>
+                     </imagetype>
+                 </state>
+                 <state name="selectedinactive">
+-                    <area>0,0,370,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>8,0,354,40</area>
++                        <area>8,0,570,34</area>
+                     </textarea>
+                     <imagetype name="buttonarrow">
+-                        <position>347,11</position>
++                        <position>544,8</position>
+                     </imagetype>
+                 </state>
+             </statetype>
+         <statetype name="upscrollarrow">
+-            <position>0,255</position>
++            <position>0,251</position>
+         </statetype>
+         <statetype name="downscrollarrow">
+-            <position>20,255</position>
++            <position>20,251</position>
+         </statetype>
+         </buttonlist>
+     </window>
diff --git a/abs/core/linhes-theme/menu-ui.xml.patch b/abs/core/linhes-theme/menu-ui.xml.patch
new file mode 100644
index 0000000..c099db6
--- /dev/null
+++ b/abs/core/linhes-theme/menu-ui.xml.patch
@@ -0,0 +1,67 @@
+--- menu-ui.xml.orig	2013-11-21 19:05:04.920817617 +0000
++++ menu-ui.xml	2013-11-21 20:03:45.474172898 +0000
+@@ -9,16 +9,16 @@
+         </textarea>
+ 
+         <shape name="menuscroll-background" from="base_backdrop">
+-            <area>0,525,1280,70</area>
++            <area>0,94,1280,70</area>
+             <type>box</type>
+         </shape>
+ 
+         <shape name="menuscroll-top-line" from="base_line">
+-            <area>0,526,1280,2</area>
++            <area>0,95,1280,2</area>
+         </shape>
+ 
+         <shape name="menuscroll-bottom-line" from="base_line">
+-            <area>0,592,1280,2</area>
++            <area>0,161,1280,2</area>
+         </shape>
+ 
+         <statetype name="titles">
+@@ -135,7 +135,7 @@
+         </statetype>
+ 
+         <buttonlist name="menu">
+-            <area>20,528,1240,64</area>
++            <area>20,98,1240,64</area>
+             <layout>horizontal</layout>
+             <spacing>20</spacing>
+             <scrollstyle>center</scrollstyle>
+@@ -157,6 +157,14 @@
+                 <state name="selectedactive"> 
+                     <area>0,0,232,64</area>
+                     <imagetype name="background" />
++
++                    <shape name="menu-left-line" from="base_highlight_vertical_line">
++                        <area>-10,-2,2,66</area>
++                    </shape>
++                    <shape name="menu-right-line" from="base_highlight_vertical_line">
++                        <area>240,-2,2,66</area>
++                    </shape>
++
+                     <textarea name="buttontext">
+                         <area>0,0,232,64</area>
+                         <font>basemediumlargerdarkyellow</font>
+@@ -168,6 +176,20 @@
+                         <cutdown>yes</cutdown>
+                         <case>upper</case>
+                     </textarea>
++
++                    <imagetype name="description_background">
++                        <area>-100,100,410,180</area>
++                        <filename>images/tux_thoughts.png</filename>
++                    </imagetype>
++                    
++                    <textarea name="description">
++                        <area>12,87,210,130</area>
++                        <align>allcenter</align>
++                        <font>basesmallyellow</font>
++                        <alpha>225</alpha>
++                        <multiline>yes</multiline>
++                    </textarea>
++
+                 </state>
+             </statetype>
+         </buttonlist>
diff --git a/abs/core/linhes-theme/tux_thoughts.png b/abs/core/linhes-theme/tux_thoughts.png
new file mode 100755
index 0000000..c36c7a6
Binary files /dev/null and b/abs/core/linhes-theme/tux_thoughts.png differ
-- 
cgit v0.12


From 74764ddb511bf2fc7e5b74eda7145a9cdd0497c0 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 22 Nov 2013 13:42:36 -0600
Subject: xymon:  fix hobbit_myth_data.py so that higher alerts do not get
 overwritten by lower level alerts during the various tests.

---
 abs/core/xymon/hobbit_myth_data.py | 80 ++++++++++++++++++++++++++++++--------
 1 file changed, 63 insertions(+), 17 deletions(-)
 mode change 100644 => 100755 abs/core/xymon/hobbit_myth_data.py

diff --git a/abs/core/xymon/hobbit_myth_data.py b/abs/core/xymon/hobbit_myth_data.py
old mode 100644
new mode 100755
index 8b38fc6..52d6a6b
--- a/abs/core/xymon/hobbit_myth_data.py
+++ b/abs/core/xymon/hobbit_myth_data.py
@@ -10,6 +10,12 @@ import sys,os
 from MythTV import MythBE,MythDB,MythLog
 
 
+#0=green
+#1=yellow
+#2=red
+
+
+
 BBLINE = ''
 BBCOLOR="green"
 DATE = time.strftime("%a %b %d %H:%M:%S %Z %Y", time.localtime(time.time()))
@@ -25,6 +31,30 @@ if os.environ['MACHINE']:
     #print os.environ['MACHINE']
     MACHINE=os.environ['MACHINE']
 
+#MACHINE='a'
+#BB='b'
+#BBDISP='12'
+
+
+def set_color_code (current_color, new_color):
+    if new_color > current_color:
+        color = new_color
+    else:
+        color = current_color
+    return color
+
+def set_color(color_code):
+    color = "unknown"
+    if color_code == 0 :
+        color = "green"
+    elif color_code == 1 :
+        color = "yellow"
+    elif color_code == 2 :
+        color = "red"
+    
+    return color
+    
+    
 
 
 
@@ -60,7 +90,7 @@ def find_data_left():
         results=cursor.fetchall()[0][0]
         days_left = (results - today).days
     except:
-        days_left = "Undetermined "
+        days_left = "Undetermined"
     return days_left
 
 
@@ -72,44 +102,60 @@ mtc=check_mtc(mtc_file)
 num_days=find_data_left()
 
 
-
+current_color=0
 
 if mtc:
-    BBCOLOR="green"
-    msg="\n Maintenance script ran ok \n %s \n " %mtc_file
+    current_color = set_color_code(current_color,0)
+    msg="\n Maintenance script was successful \n       Log file: %s\n    " %mtc_file
 else:
-    BBCOLOR ="yellow"
-    msg="\n * Maintenance script didn't run. \n %s  \n" %mtc_file
+    current_color = set_color_code(current_color,2)
+    msg='''
+ ** Maintenance script did not run. **
+    BACKUP FILE WAS NOT CREATED
+    
+    The system may have been busy
+    Log file: %s  \n''' %mtc_file
 
 if num_days ==  1 :
-    BBCOLOR="yellow"
-    msg+="\n * Only 1 day of guide data left"
+    current_color = set_color_code(current_color,1)
+    msg+="\n ** Only 1 day of guide data left **"
 elif num_days == 0 :
-    BBCOLOR="red "
-    msg+="\n * No guide data available"
+    current_color = set_color_code(current_color,2)
+    msg+="\n ** No guide data available **"
 
 elif num_days == -100 :
-    BBCOLOR="red"
-    msg+="\n ** Could not connect to database!"
+    current_color = set_color_code(current_color,2)
+    msg+="\n ** Could not connect to database ** "
+
+elif num_days == "Undetermined" :
+    current_color = set_color_code(current_color,1)
+    msg+="\n ** Could not determine how many days of guide data are available ** "    
+
 else:
     data_check = True
-    BBCOLOR="green"
+    current_color = set_color_code(current_color,0)
     msg+="\n %s days of guide data" %(num_days)
 
 if os.path.isfile("/data/storage/disk0/backup/system_backups/remote_backup_failed.txt"):
-    if BBCOLOR == "green":
-        BBCOLOR="yellow"
-    msg+="\n\n * Remote backup jobs are queued"
+    current_color = set_color_code(current_color,1)
+    msg+="\n\n ** Remote backup jobs are queued **"
 else:
     msg+="\n\n No remote backup jobs queued"
 
 
 
 
-BBLINE=msg
+BBLINE = msg
+BBCOLOR = set_color(current_color)
+
 LINE = "status " + MACHINE  + ".myth_mtc" + " " + BBCOLOR +  " " + DATE + " " + BBLINE
 cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
 os.system(cmd)
+#print cmd
+#print BBLINE
+#print BBCOLOR
+
+
 
 sys.exit(0)
 
-- 
cgit v0.12


From 1503b7e35c4b1b511010c8ebcba1110a37e28528 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 22 Nov 2013 15:12:26 -0600
Subject: linhes-theme: add progdetails files with LH colors. ref #940

Add install-ui.xml to theme mythinstall. Patch schedule-ui.xml Schedule Filter Editor to match wider popup.
---
 abs/core/linhes-theme/PKGBUILD               |  25 ++++--
 abs/core/linhes-theme/install-ui.xml         |  76 +++++++++++++++++
 abs/core/linhes-theme/progdetails_page1.html |  30 +++++++
 abs/core/linhes-theme/progdetails_page2.html |  49 +++++++++++
 abs/core/linhes-theme/schedule-ui.xml.patch  | 121 +++++++++++++++++++++++++++
 5 files changed, 293 insertions(+), 8 deletions(-)
 create mode 100755 abs/core/linhes-theme/install-ui.xml
 create mode 100644 abs/core/linhes-theme/progdetails_page1.html
 create mode 100644 abs/core/linhes-theme/progdetails_page2.html
 create mode 100644 abs/core/linhes-theme/schedule-ui.xml.patch

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 7f58de5..f261ac0 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,18 +1,19 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=2
+pkgrel=3
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
 patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
-         'menu-ui.xml.patch')
+         'menu-ui.xml.patch' 'schedule-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git"
-        `echo ${patches[@]:0}` 'themeinfo.xml'
-        'background.png' 'qt-background.png' 'tux_thoughts.png')
+        `echo ${patches[@]:0}` 'themeinfo.xml' 'install-ui.xml'
+        'background.png' 'qt-background.png' 'tux_thoughts.png'
+        'progdetails_page1.html' 'progdetails_page2.html')
 
 package() {
     THEMEROOT=usr/share/mythtv/themes
@@ -32,13 +33,18 @@ package() {
     cd $startdir
     msg "--------------------------done applying patches-------------------------"
 
-    msg "Copy themeinfo.xml and adding backgrounds and images for LinHES"
-    rsync -pL $srcdir/themeinfo.xml $pkgdir/$THEMEROOT/LinHES/
+    msg "Copy *.xml and adding backgrounds and images for LinHES"
+    rsync -pL $srcdir/*.xml $pkgdir/$THEMEROOT/LinHES/
     rm -r $pkgdir/$THEMEROOT/LinHES/images/backgrounds/*
     rsync -pL $srcdir/*background.png $pkgdir/$THEMEROOT/LinHES/images/backgrounds/
+
     #tux_thoughts.png is the thought bubble for the menu descriptions
     rsync -pL $srcdir/tux_thoughts.png $pkgdir/$THEMEROOT/LinHES/images/
 
+    #copy in progdetails
+    mkdir -p $pkgdir/$THEMEROOT/LinHES/htmls
+    rsync -pL $srcdir/progdetails_page*.html $pkgdir/$THEMEROOT/LinHES/htmls/
+
     msg "Modifying yellows and blue to LinHES yellow and blue"
     #yellow
     grep -lr '#d9d900' $pkgdir/$THEMEROOT/LinHES/ | xargs sed -i "s/\#d9d900/\#ebb81c/g"
@@ -47,13 +53,16 @@ package() {
     #blue
     grep -lr '#3a9ade' $pkgdir/$THEMEROOT/LinHES/ | xargs sed -i "s/\#3a9ade/\#0072bc/g"
 }
-
 md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          '15b4462932b7be0e56b2e69e0214823a'
          '2fb0990e8fef2c70e9bd8cfb36689b2b'
          '83b03852c6f46bc791bfa6e8c894ca01'
+         '45d2f265218ab951eefe76adff38c54b'
          '7d7bc458a8f4af408700609f3e1f412e'
+         'eb94abdc196051db708e4a9eb938923a'
          'cbe5f663ebb5d51abe811f81dafec303'
          '12d26a786fde397348653128a6d7676a'
-         '2bd09b8049aaf5ba21db5baf3a0ce077')
+         '2bd09b8049aaf5ba21db5baf3a0ce077'
+         'cc2b5da9ad34704d773f3235bf686835'
+         'be7853c2c9598481368c10f0eb5ad43f')
diff --git a/abs/core/linhes-theme/install-ui.xml b/abs/core/linhes-theme/install-ui.xml
new file mode 100755
index 0000000..4d10d0f
--- /dev/null
+++ b/abs/core/linhes-theme/install-ui.xml
@@ -0,0 +1,76 @@
+<mythuitheme>
+
+    <window name="welcome_screen">
+        <textarea name="title" from="base_heading">
+            <value>Welcome to LinHES!</value>
+        </textarea>
+
+        <!--not used by mythinstall-->
+        <textarea name="time_text" from="basetextarea"/>
+
+        <!--version info-->
+        <textarea name="date_text" from="basetextarea">
+            <multiline>yes</multiline>
+            <font>basemedium</font>
+            <area>20,22,1240,100</area>
+            <value></value>
+            <align>allcenter</align>
+        </textarea>
+
+        <!--not used by mythinstall-->
+        <textarea name="status_text" from="basetextarea">
+            <multiline>yes</multiline>
+            <font>basemediumyellow</font>
+            <area>20,140,1240,60</area>
+            <value></value>
+        </textarea>
+
+        <!--not used by mythinstall-->
+        <textarea name="recording_label" from="basetextarea">
+            <font>baselarge</font>
+            <area>20,140,1240,30</area>
+            <value></value>
+        </textarea>
+
+        <textarea name="recording_text" from="basetextarea">
+            <multiline>yes</multiline>
+            <font>basemediumyellow</font>
+            <area>20,140,1240,60</area>
+            <value>Press MENU for options</value>
+            <align>allcenter</align>
+        </textarea>
+
+        <!--not used by mythinstall-->
+        <textarea name="scheduled_label" from="basetextarea">
+            <font>baselarge</font>
+            <area>20,320,1240,30</area>
+            <value></value>
+        </textarea>
+
+        <textarea name="scheduled_text">
+            <font>basemediumyellow</font>
+            <area>20,210,1240,120</area>
+            <value></value>
+            <align>allcenter</align>
+        </textarea>
+
+        <textarea name="mythvantage_text">
+            <multiline>no</multiline>
+            <font>basesmallyellow</font>
+            <area>20,660,1240,30</area>
+            <value></value>
+            <align>right</align>
+            <cutdown>yes</cutdown>
+        </textarea>
+
+        <imagetype name="logo">
+            <position>565,490</position>
+            <preserveaspect>true</preserveaspect>
+            <!--<crop>x,y,w,h</crop>-->
+            <filepattern low="0" high="30">/usr/MythVantage/logos/logo-%1.png</filepattern>
+            <delay>5000</delay>
+        </imagetype>
+
+    </window>
+
+</mythuitheme>
diff --git a/abs/core/linhes-theme/progdetails_page1.html b/abs/core/linhes-theme/progdetails_page1.html
new file mode 100644
index 0000000..57b5a52
--- /dev/null
+++ b/abs/core/linhes-theme/progdetails_page1.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <style type="text/css">
+        body {background-color:#1a1a1a;}
+        h1 {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ebb81c;margin-top: -5pt}
+        p  {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ffffff;margin-top: -10pt}
+    </style>
+</head>
+
+<body>
+    <h1>%TITLE_LABEL% & %DESCRIPTION_LABEL%</h1> <p>%TITLE%:  %DESCRIPTION%</p>
+    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
+    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
+    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
+    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
+    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
+    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
+    <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
+    <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
+    <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
+    <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
+    <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
+    <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
+    <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
+    <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
+</body>
+
+</html>
diff --git a/abs/core/linhes-theme/progdetails_page2.html b/abs/core/linhes-theme/progdetails_page2.html
new file mode 100644
index 0000000..c499557
--- /dev/null
+++ b/abs/core/linhes-theme/progdetails_page2.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <style type="text/css">
+        body {background-color:#1a1a1a;}
+        h1 {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ebb81c;margin-top: -5pt}
+        p  {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ffffff;margin-top: -10pt}
+    </style>
+</head>
+
+body>
+    <h1>%TITLE_LABEL% & %DESCRIPTION_LABEL%</h1> <p>%TITLE%:  %DESCRIPTION%</p>
+    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
+    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
+    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
+    <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
+    <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
+    <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
+    <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
+    <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
+    <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
+    <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
+    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
+    <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
+    <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
+    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
+    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
+    <h1>%CATEGORY_TYPE_LABEL%</h1> <p>%CATEGORY_TYPE%</p>
+    <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
+    <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
+    <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
+    <h1>%LAST_RECORDED_LABEL%</h1> <p>%LAST_RECORDED%</p>
+    <h1>%NEXT_RECORDING_LABEL%</h1> <p>%NEXT_RECORDING%</p>
+    <h1>%AVERAGE_TIME_SHIFT_LABEL%</h1> <p>%AVERAGE_TIME_SHIFT%</p>
+    <h1>%WATCH_LIST_SCORE_LABEL%</h1> <p>%WATCH_LIST_SCORE%</p>
+    <h1>%WATCH_LIST_STATUS_LABEL%</h1> <p>%WATCH_LIST_STATUS%</p>
+    <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
+    <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p>
+    <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p>
+    <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
+    <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
+    <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
+    <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
+    <h1>%STORAGE_GROUP_LABEL%</h1> <p>%STORAGE_GROUP%</p>
+    <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
+</body>
+
+</html>
diff --git a/abs/core/linhes-theme/schedule-ui.xml.patch b/abs/core/linhes-theme/schedule-ui.xml.patch
new file mode 100644
index 0000000..88e643b
--- /dev/null
+++ b/abs/core/linhes-theme/schedule-ui.xml.patch
@@ -0,0 +1,121 @@
+--- schedule-ui.xml.orig	2013-11-22 19:35:05.125862862 +0000
++++ schedule-ui.xml	2013-11-22 19:34:04.307006412 +0000
+@@ -3225,7 +3225,7 @@
+     </window>
+ 
+     <window name="schedulefiltereditor">
+-        <area>-1,-1,500,500</area>
++        <area>-1,-1,602,488</area>
+ 
+         <animation trigger="AboutToShow">
+             <section>
+@@ -3242,85 +3242,85 @@
+         </animation>
+ 
+         <shape name="schedule-filter-editor-backdrop" from="base_popup_backdrop">
+-            <area>0,0,500,500</area>
++            <area>0,0,602,488</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-backdrop-line" from="base_backdrop_line">
+-            <area>1,1,498,498</area>
++            <area>1,1,600,486</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-top-line" from="base_highlight_line">
+-            <area>2,2,496,2</area>
++            <area>2,2,596,2</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-bottom-line" from="base_highlight_line">
+-            <area>2,496,496,2</area>
++            <area>2,484,596,2</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-left-line" from="base_highlight_vertical_line">
+-            <area>2,4,2,492</area>
++            <area>2,4,2,480</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-right-line" from="base_highlight_vertical_line">
+-            <area>496,4,2,492</area>
++            <area>598,4,2,480</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-seperator-first-line" from="base_line">
+-            <area>23,50,454,2</area>
++            <area>23,50,552,2</area>
+         </shape>
+ 
+         <shape name="schedule-filter-editor-seperator-second-line" from="base_line">
+-            <area>23,435,454,2</area>
++            <area>23,435,552,2</area>
+         </shape>
+ 
+         <textarea name="title_text" from="basetextarea">
+-            <area>10,4,480,46</area>
+-            <font>basemediumlargerdarkyellow</font>
++            <area>10,4,582,46</area>
++            <font>basemediumlarger</font>
+             <align>allcenter</align>
+             <value>Schedule Filter Editor</value>
+         </textarea>
+ 
+         <buttonlist name="filters" from="base_button_list">
+-            <area>20,75,460,360</area>
++            <area>15,60,570,360</area>
+             <statetype name="buttonitem">
+                 <state name="active">
+-                    <area>0,0,460,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>40,0,380,40</area>                     
++                        <area>40,0,490,34</area>                     
+                     </textarea>
+                     <statetype name="buttoncheck">
+-                        <position>15,10</position>
++                        <position>15,7</position>
+                     </statetype>
+                 </state>
+                 <state name="selectedactive">
+-                    <area>0,0,460,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>40,0,380,40</area>
++                        <area>40,0,490,34</area>
+                     </textarea>
+                     <statetype name="buttoncheck">
+-                        <position>15,10</position>
++                        <position>15,7</position>
+                     </statetype>
+                 </state>
+                 <state name="selectedinactive">
+-                    <area>0,0,460,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>40,0,380,40</area>
++                        <area>40,0,490,34</area>
+                     </textarea>
+                     <statetype name="buttoncheck">
+-                        <position>15,10</position>
++                        <position>15,7</position>
+                     </statetype>
+                 </state>
+             </statetype>
+             <statetype name="upscrollarrow">
+-                <position>0,343</position>
++                <position>0,359</position>
+             </statetype>
+             <statetype name="downscrollarrow">
+-                <position>20,343</position>
++                <position>20,359</position>
+             </statetype>
+         </buttonlist>
+ 
+-        <button name="back" from="base_medium_button">
+-            <position>75,447</position>
++        <button name="back" from="base_wide_button">
++            <position>60,440</position>
+             <value>Back</value>
+         </button>
+ 
-- 
cgit v0.12


From 08d567f3ecaa54fe0a52c703bec510ecb32e6011 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 23 Nov 2013 11:34:10 -0600
Subject: linhes-theme: rearrange progdetails_page1.html. page2 isn't needed
 anymore. refs #940.

---
 abs/core/linhes-theme/PKGBUILD               |  9 ++--
 abs/core/linhes-theme/progdetails_page1.html | 63 +++++++++++++++++++++-------
 abs/core/linhes-theme/progdetails_page2.html | 49 ----------------------
 3 files changed, 51 insertions(+), 70 deletions(-)
 delete mode 100644 abs/core/linhes-theme/progdetails_page2.html

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index f261ac0..cb2f5a4 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=3
+pkgrel=4
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -13,7 +13,7 @@ patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
 source=("git://github.com/MythTV-Themes/TintedGlass.git"
         `echo ${patches[@]:0}` 'themeinfo.xml' 'install-ui.xml'
         'background.png' 'qt-background.png' 'tux_thoughts.png'
-        'progdetails_page1.html' 'progdetails_page2.html')
+        'progdetails_page1.html')
 
 package() {
     THEMEROOT=usr/share/mythtv/themes
@@ -43,7 +43,7 @@ package() {
 
     #copy in progdetails
     mkdir -p $pkgdir/$THEMEROOT/LinHES/htmls
-    rsync -pL $srcdir/progdetails_page*.html $pkgdir/$THEMEROOT/LinHES/htmls/
+    rsync -pL $srcdir/progdetails_page1.html $pkgdir/$THEMEROOT/LinHES/htmls/
 
     msg "Modifying yellows and blue to LinHES yellow and blue"
     #yellow
@@ -64,5 +64,4 @@ md5sums=('SKIP'
          'cbe5f663ebb5d51abe811f81dafec303'
          '12d26a786fde397348653128a6d7676a'
          '2bd09b8049aaf5ba21db5baf3a0ce077'
-         'cc2b5da9ad34704d773f3235bf686835'
-         'be7853c2c9598481368c10f0eb5ad43f')
+         '93db934881cb438fc76ae544d4eee432')
diff --git a/abs/core/linhes-theme/progdetails_page1.html b/abs/core/linhes-theme/progdetails_page1.html
index 57b5a52..2f904c8 100644
--- a/abs/core/linhes-theme/progdetails_page1.html
+++ b/abs/core/linhes-theme/progdetails_page1.html
@@ -4,27 +4,58 @@
     <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
     <style type="text/css">
         body {background-color:#1a1a1a;}
-        h1 {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ebb81c;margin-top: -5pt}
-        p  {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ffffff;margin-top: -10pt}
+        h1 {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ebb81c;margin-top: -5pt;text-align: center;}
+        p  {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ffffff;margin-top: -10pt;text-align: center;}
+        hr {border:1px solid #1a1a1a;background-color:#e6e6e6;height:3px;margin-top: -10pt;margin-bottom: 13pt}
+        #wrap {width:100%;margin:0px auto;}
+        .col {float:left;width:33%;}
     </style>
 </head>
 
 <body>
-    <h1>%TITLE_LABEL% & %DESCRIPTION_LABEL%</h1> <p>%TITLE%:  %DESCRIPTION%</p>
+    <h1>%TITLE%</h1><p>%DESCRIPTION%</p>
     <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
-    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
-    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
-    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
-    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
-    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
-    <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
-    <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
-    <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
-    <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
-    <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
-    <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
-    <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
-    <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
+    <hr />
+    <div id="wrap">
+        <div class="col">
+            <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
+            <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
+            <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
+            <h1>%CATEGORY_TYPE_LABEL%</h1> <p>%CATEGORY_TYPE%</p>
+            <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
+            <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
+            <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
+            <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
+            <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
+            <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
+        </div>
+        <div class="col">
+            <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
+            <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
+            <h1>%STORAGE_GROUP_LABEL%</h1> <p>%STORAGE_GROUP%</p>
+            <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
+            <h1>%LAST_RECORDED_LABEL%</h1> <p>%LAST_RECORDED%</p>
+            <h1>%NEXT_RECORDING_LABEL%</h1> <p>%NEXT_RECORDING%</p>
+            <h1>%AVERAGE_TIME_SHIFT_LABEL%</h1> <p>%AVERAGE_TIME_SHIFT%</p>
+            <h1>%WATCH_LIST_SCORE_LABEL%</h1> <p>%WATCH_LIST_SCORE%</p>
+            <h1>%WATCH_LIST_STATUS_LABEL%</h1> <p>%WATCH_LIST_STATUS%</p>
+            <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p>
+            <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p>
+        </div>
+        <div class="col">
+            <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
+            <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
+            <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
+            <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
+            <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
+            <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
+            <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
+            <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
+            <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
+            <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
+            <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
+        </div>
+    </div>
 </body>
 
 </html>
diff --git a/abs/core/linhes-theme/progdetails_page2.html b/abs/core/linhes-theme/progdetails_page2.html
deleted file mode 100644
index c499557..0000000
--- a/abs/core/linhes-theme/progdetails_page2.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <style type="text/css">
-        body {background-color:#1a1a1a;}
-        h1 {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ebb81c;margin-top: -5pt}
-        p  {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ffffff;margin-top: -10pt}
-    </style>
-</head>
-
-body>
-    <h1>%TITLE_LABEL% & %DESCRIPTION_LABEL%</h1> <p>%TITLE%:  %DESCRIPTION%</p>
-    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
-    <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
-    <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
-    <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
-    <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
-    <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
-    <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
-    <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
-    <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
-    <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
-    <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
-    <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
-    <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
-    <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
-    <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
-    <h1>%CATEGORY_TYPE_LABEL%</h1> <p>%CATEGORY_TYPE%</p>
-    <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
-    <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
-    <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
-    <h1>%LAST_RECORDED_LABEL%</h1> <p>%LAST_RECORDED%</p>
-    <h1>%NEXT_RECORDING_LABEL%</h1> <p>%NEXT_RECORDING%</p>
-    <h1>%AVERAGE_TIME_SHIFT_LABEL%</h1> <p>%AVERAGE_TIME_SHIFT%</p>
-    <h1>%WATCH_LIST_SCORE_LABEL%</h1> <p>%WATCH_LIST_SCORE%</p>
-    <h1>%WATCH_LIST_STATUS_LABEL%</h1> <p>%WATCH_LIST_STATUS%</p>
-    <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
-    <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p>
-    <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p>
-    <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
-    <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
-    <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
-    <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
-    <h1>%STORAGE_GROUP_LABEL%</h1> <p>%STORAGE_GROUP%</p>
-    <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
-</body>
-
-</html>
-- 
cgit v0.12


From 96c196f3f3c2f163bda3ae30643d7839a2be1caa Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 23 Nov 2013 15:19:33 -0600
Subject: linhes-theme: progdetails_page2.html is needed or we get default.
 refs #940

---
 abs/core/linhes-theme/PKGBUILD | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index cb2f5a4..e330354 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=4
+pkgrel=5
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -44,6 +44,7 @@ package() {
     #copy in progdetails
     mkdir -p $pkgdir/$THEMEROOT/LinHES/htmls
     rsync -pL $srcdir/progdetails_page1.html $pkgdir/$THEMEROOT/LinHES/htmls/
+    rsync -pL $srcdir/progdetails_page1.html $pkgdir/$THEMEROOT/LinHES/htmls/progdetails_page2.html
 
     msg "Modifying yellows and blue to LinHES yellow and blue"
     #yellow
-- 
cgit v0.12


From 67a4f4e69e692b2f0fa6ad045236b5c70147cf4b Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 23 Nov 2013 17:59:26 -0600
Subject: mythtv: add back some deps; refs #933.

Add item descriptions. Change update to push back to main menu so user doesn't need to manually exit Service Menu
---
 abs/core/mythtv/stable-0.27/git_src/git_hash       |  2 +-
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD        | 15 ++--
 .../stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml  | 92 +++++++++++++---------
 .../mythtv/stable-0.27/mythtv/menu-xml/linhes.xml  | 11 ++-
 .../stable-0.27/mythtv/menu-xml/mythbackup.xml     |  8 +-
 .../stable-0.27/mythtv/menu-xml/mythrestore.xml    | 11 ++-
 .../mythtv/stable-0.27/mythtv/menu-xml/update.xml  |  4 +-
 .../mythtv/stable-0.27/mythtv/menu-xml/update2.xml |  6 +-
 8 files changed, 90 insertions(+), 59 deletions(-)

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index aa97d7b..31427cb 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-a6c1d5336502a97f25b747e0a036fde4d25fd2ee
+552fdc0e1eb538db847f2aedd54a12764b609a76
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index 6ec4e55..c4e0f40 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,17 +1,18 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=3
+pkgrel=4
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org/"
 license=('GPL')
-depends=('avahi' 'fftw' 'glew' 'lame' 'libass' 'libavc1394' 'libcdio'
-         'libcec' 'libiec61883' 'libva' 'libvpx' 'libxinerama' 'libxml2'
-         'lirc-utils' 'mysql-clients' 'mysql-python' 'openssl'
-         'perl-dbd-mysql' 'perl-io-socket-inet6' 'perl-libwww'
-         'perl-net-upnp' 'python2-lxml' 'qtwebkit' 'taglib' 'urlgrabber'
-         'x264' 'xmltv')
+depends=('avahi' 'faad2' 'fftw' 'glew' 'lame' 'libass' 'libavc1394' 'libcdio'
+         'libcec' 'libcrystalhd-git' 'libiec61883' 'libva' 'libvdpau' 'libvpx'
+         'libxinerama' 'libxrandr' 'libxml2' 'lirc-utils' 'mysql-clients'
+         'mysql-python' 'openssl' 'perl-date-manip' 'perl-dbd-mysql'
+         'perl-io-socket-inet6' 'perl-libwww' 'perl-math-round'
+         'perl-net-upnp' 'perl-soap-lite' 'perl-xml-sax' 'python-pycurl'
+         'python2-lxml' 'qt' 'qtwebkit' 'taglib' 'urlgrabber' 'x264' 'xmltv')
 makedepends=('mesa' 'libgl' 'yasm' 'git' 'rsync')
 replaces=()
 groups=('pvr')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
index b1fa6b5..644e2a3 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -1,98 +1,114 @@
 <mythmenu name="HOST_SETTINGS">
     <button>
         <type>MV_ACCESS_SETUP_MENU</type>
-        <text>Access Control</text>
+        <text>Access</text>
+        <description>Manage which LinHES Settings can be used</description>
         <action>EXEC  mythinstall -s accesscontrol </action>
     </button>
 
     <button>
-        <type>MV_SOFTWARE_MENU</type>
-        <text>Add/Remove software</text>
-        <action>EXEC  mythinstall -s  plugins,software </action>
-    </button>
-
-    <button>
         <type>MV_ADVANCED_SETUP_MENU</type>
         <text>Advanced</text>
+        <description>Settings for Boot Screen, CallerID &amp; starting MythFrontend</description>
         <action>EXEC  mythinstall -s advanced</action>
     </button>
 
     <button>
         <type>MV_AUDIO_SETUP_MENU</type>
-        <text>Audio Settings</text>
+        <text>Audio</text>
+        <description>Settings for Audio drivers, cards &amp; devices</description>
         <action>EXEC  mythinstall -s sound </action>
     </button>
 
     <button>
         <type>MV_ADVANCED_X_SETUP_MENU</type>
         <text>Display</text>
+        <description>Set the display resolution</description>
         <action>EXEC  mythinstall -s advancedX</action>
     </button>
 
     <button>
         <type>MV_NETWORK_SETUP_MENU</type>
         <text>Dynamic DNS</text>
+        <description>Settings for your dyndns.com account</description>
         <action>EXEC  mythinstall -s ddns </action>
     </button>
 
    <button>
-       <type>MV_FILESHARES_MENU</type>
-       <text>File Shares</text>
-       <action>EXEC  mythinstall -s fileshare</action>
+        <type>MV_FILESHARES_MENU</type>
+        <text>File Sharing</text>
+        <description>Settings for file sharing via NFS or SMB</description>
+        <action>EXEC  mythinstall -s fileshare</action>
    </button>
 
    <button>
-       <type>MV_MISC_SETUP_MENU</type>
-       <text>Miscellanous</text>
-       <action>EXEC  mythinstall -s misc </action>
+        <type>MV_MISC_SETUP_MENU</type>
+        <text>Miscellanous</text>
+        <description>Set timezone, shortcuts &amp; automatic updates</description>
+        <action>EXEC  mythinstall -s misc </action>
    </button>
 
    <button>
-       <type>MV_NETWORK_SETUP_MENU</type>
-       <text>Network</text>
-       <action>EXEC  mythinstall -s network </action>
+        <type>MV_NETWORK_SETUP_MENU</type>
+        <text>Network</text>
+        <description>Settings for the network device &amp; hostname</description>
+        <action>EXEC  mythinstall -s network </action>
    </button>
 
+    <button>
+        <type>MV_SOFTWARE_MENU</type>
+        <text>Programs</text>
+        <description>Manage programs for the LinHES system</description>
+        <action>EXEC  mythinstall -s  plugins,software </action>
+    </button>
+
    <button>
-       <type>MV_IR_SETUP_MENU</type>
-       <text>Remotes</text>
-       <action>EXEC  mythinstall -s ir </action>
+        <type>MV_IR_SETUP_MENU</type>
+        <text>Remotes</text>
+        <description>Settings for remotes, receivers &amp; blasters</description>
+        <action>EXEC  mythinstall -s ir </action>
    </button>
 
    <button>
-       <type>MV_SCREENSAVER_SETUP_MENU</type>
-       <text>Screensaver</text>
-       <action>EXEC  mythinstall -s screensaver </action>
+        <type>MV_SCREENSAVER_SETUP_MENU</type>
+        <text>Screensaver</text>
+        <description>Set the Screensaver program and settings</description>
+        <action>EXEC  mythinstall -s screensaver </action>
    </button>
 
    <button>
-       <type>MV_SHUTDOWN_SETUP_MENU</type>
-       <text>Shutdown Settings</text>
-       <action>EXEC  mythinstall -s sleep </action>
+        <type>MV_VNC_SETUP_MENU</type>
+        <text>Screen Sharing</text>
+        <description>Settings for VNC and XVNC screen sharing</description>
+        <action>EXEC  mythinstall -s vnc </action>
    </button>
 
    <button>
-       <type>MV_SYSTEM_SETUP_MENU</type>
-       <text>System Type</text>
-       <action>EXEC  mythinstall -s hostype </action>
+        <type>MV_SHUTDOWN_SETUP_MENU</type>
+        <text>Shutdown</text>
+        <description>Set when to turn of the LinHES system</description>
+        <action>EXEC  mythinstall -s sleep </action>
    </button>
 
    <button>
-       <type>MV_USER_SETUP_MENU</type>
-       <text>User Accounts</text>
-       <action>EXEC  mythinstall -s user </action>
+        <type>MV_SYSTEM_SETUP_MENU</type>
+        <text>System Type</text>
+        <description>Settings for LinHES system type, pointer size &amp; MythWelcome</description>
+        <action>EXEC  mythinstall -s hostype </action>
    </button>
 
    <button>
-       <type>MV_VNC_SETUP_MENU</type>
-       <text>VNC Service</text>
-       <action>EXEC  mythinstall -s vnc </action>
+        <type>MV_USER_SETUP_MENU</type>
+        <text>User Accounts</text>
+        <description>Manage Users on the LinHES system</description>
+        <action>EXEC  mythinstall -s user </action>
    </button>
 
    <button>
-       <type>MV_WEBACCESS_SETUP_MENU</type>
-       <text>Web Security</text>
-       <action>EXEC  mythinstall -s webuser </action>
+        <type>MV_WEBACCESS_SETUP_MENU</type>
+        <text>Web Security</text>
+        <description>Manage the password for the local website</description>
+        <action>EXEC  mythinstall -s webuser </action>
    </button>
 
 </mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml
index 342766d..b661b23 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/linhes.xml
@@ -2,7 +2,7 @@
 
     <button>
         <type>SETUP_GENERAL</type>
-        <text>MythTV Configuration</text>
+        <text>MythTV Settings</text>
         <text lang="IT">Impostazioni</text>
         <text lang="ES">Configuración</text>
         <text lang="DE">Zubehör / Konfiguration</text>
@@ -26,27 +26,29 @@
         <alttext lang="ET">Sätted</alttext>
         <alttext lang="RU">�~]а�~A�~B�~@ойки</alttext>
         <alttext lang="AR">تضب�~Jطات</alttext>
-        <description>Configure MythTV and plugins</description>
+        <description>Configure MythTV and Plugins</description>
         <description lang="DE">MythTV und Plugins konfigurieren</description>
         <action>MENU util_menu.xml</action>
     </button>
 
    <button>
      <type>LINHES_SETUP</type>
-     <text>LinHES Configuration</text>
-     <description>Configure LinHES</description>
+     <text>LinHES Settings</text>
+     <description>Configure the LinHES System</description>
      <action>MENU HOST_SETTINGS.xml</action>
    </button>
 
    <button>
      <type>BACKUP</type>
      <text>Backup LinHES</text>
+     <description>Backup the LinHES System</description>
      <action>MENU mythbackup.xml</action>
    </button>
 
    <button>
      <type>RESTORE</type>
      <text>Restore LinHES</text>
+     <description>Restore the LinHES System</description>
      <action>MENU mythrestore.xml</action>
    </button>
 
@@ -54,6 +56,7 @@
    <button>
      <type>UPGRADE</type>
      <text>Update LinHES</text>
+     <description>Update the LinHES System</description>
      <action>MENU update.xml</action>
    </button>
 <!--#Check for updates-->
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml
index 7890d88..61dc4d3 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythbackup.xml
@@ -1,7 +1,7 @@
 <mythmenu name="LinHES">
    <button>
      <type>BACKUP</type>
-     <text>Do you wish to backup?</text>
+     <text>Backup Now?</text>
      <description></description>
      <action>NONE</action>
    </button>
@@ -9,12 +9,14 @@
    <button>
      <type>BACKUP</type>
      <text>Yes</text>
+     <description>Start Backup</description>
      <action>EXEC sudo /usr/LH/bin/lh_system_backup &amp;</action>
    </button>
 
    <button>
-     <type>BACKUP</type>
+     <type>JUMP_RELOAD_THEME</type>
      <text>No</text>
-     <action>UPMENU</action>
+     <description>Return to Main Menu</description>
+     <action>JUMP Reload Theme</action>
    </button>
 </mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml
index 161f13f..c4025c5 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/mythrestore.xml
@@ -2,20 +2,23 @@
 
    <button>
      <type>RESTORE</type>
-     <text>Do you wish to restore?</text>
-     <description>This will restore from most recent backup.</description>
+     <text>Restore Now?</text>
+     <description>This will restore from the most recent backup.</description>
      <action>NONE</action>
    </button>
 
    <button>
      <type>RESTORE</type>
      <text>Yes</text>
+     <description>Start Restore</description>
      <action>EXEC sudo /usr/LH/bin/lh_system_restore &amp;</action>
    </button>
 
    <button>
-     <type>BACKUP</type>
+     <type>JUMP_RELOAD_THEME</type>
      <text>No</text>
-     <action>UPMENU</action>
+     <description>Return to Main Menu</description>
+     <action>JUMP Reload Theme</action>
    </button>
+
 </mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml
index d2ac3fe..802774b 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update.xml
@@ -1,9 +1,11 @@
 <mythmenu name="LinHES">
 
    <button>
-     <type>UPGRADE</type>
+     <type>JUMP Reload Theme</type>
      <text>Check for Updates</text>
+     <description>Search for LinHES system updates</description>
      <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
+     <action>JUMP Reload Theme</action>
    </button>
 
 </mythmenu>
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml
index 64388cb..ed527fd 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/update2.xml
@@ -3,18 +3,22 @@
    <button>
      <type>UPGRADE</type>
      <text>Install Updates</text>
+     <description>Install updates for the LinHES system</description>
      <action>EXEC sudo /usr/LH/bin/linhes_update2.sh install</action>
    </button>
 
    <button>
-     <type>UPGRADE</type>
+     <type>JUMP_RELOAD_THEME</type>
      <text>Cancel Updates</text>
+     <description>Return to Main Menu</description>
      <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
+     <action>JUMP Reload Theme</action>
    </button>
 
    <button>
      <type>UPGRADE</type>
      <text>View Updates</text>
+     <description>Displays the packages to be updated</description>
      <action>MENU update3.xml</action>
    </button>
 </mythmenu>
-- 
cgit v0.12


From 5097ada4a8f48fcaadf132a1043b7ab74adca0be Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 23 Nov 2013 18:41:58 -0600
Subject: mythplugins: update to latest fixes. refs #933.

---
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index 0e11c4e..abc07e6 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=3
+pkgrel=4
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
-- 
cgit v0.12


From db7dcf4f7bf11e1923df097711aaf9ad6147077c Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 24 Nov 2013 14:47:59 -0600
Subject: LinHES-system: lh_system_backup_job: update sed to only change first
 match for status description

linhes_update: add some description texts and update some osd msgs
---
 abs/core/LinHES-system/PKGBUILD                               | 8 ++++----
 abs/core/LinHES-system/lh_system_backup_job                   | 6 +++---
 abs/core/LinHES-system/linhes_update.sh                       | 6 ++++--
 abs/core/LinHES-system/linhes_update2.sh                      | 1 +
 abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml | 2 +-
 5 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index c55ce7e..f7e3a55 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=2
+pkgrel=3
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -89,7 +89,7 @@ md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          '33fbebbd546672cedd3c5e7350ab414e'
          'c773d8caacba8fbd4968e8afe5137bc6'
          '3edef50a49a47694bf8add39cc160add'
-         'e8f178a913862e09dfd422a182f41f9e'
+         '95e586cdbf0bef7ec2d99463b47a9096'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
@@ -117,8 +117,8 @@ md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          '34fc1f58ad1eabf4eff4979d420760c0'
          'c3ada01d3a739abe3f920b02d4ea3f6e'
          'a94fe6d980f4b810f2e2ae5352084b39'
-         'e1011e0df090372cccc03ecf9d6805c7'
-         '5727da2f13541b0cde2aea0ab94d4960'
+         '1c71ff372978159f09342b18954500b3'
+         '3fc3d584fadd47f82c5cfe8ac0f4322a'
          '503df99218373dfc75e7e7f5e449a44e'
          '4a1fda884dcd7d65fb2690fbdbd92a83'
          '2b7fe3b57592823a4c7e3ec132dcb7f4'
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
index c3f4e72..9b878bd 100644
--- a/abs/core/LinHES-system/lh_system_backup_job
+++ b/abs/core/LinHES-system/lh_system_backup_job
@@ -121,9 +121,9 @@ function update_backup_status(){
     #if description not in the backup xml file, add it
     if [ $rc=0 ]
     then
-        COMPLETE_MSG="Last backup completed on `date '+%D @ %-I:%M %p'`"
+        COMPLETE_MSG="Last backup completed `date '+%D %-I:%M %p'`"
     else
-        COMPLETE_MSG="Last backup FAILED on `date '+%D @ %-I:%M %p'`"
+        COMPLETE_MSG="Last backup FAILED `date '+%D %-I:%M %p'`"
     fi
 
     xmlfile="/usr/share/mythtv/themes/defaultmenu/mythbackup.xml"
@@ -133,7 +133,7 @@ function update_backup_status(){
 
     if [ $desc_check = 0 ]
     then
-        sed -i "s_\<description\>.*\<description\>_description\>$COMPLETE_MSG\<\/description_" $xmlfile
+        sed -i "0,/\<description\>.*\<description\>/s//\<description\>$COMPLETE_MSG\<\/description/" $xmlfile
     else
         sed -i " /NONE/ i\     \<description\>$COMPLETE_MSG\<\/description\>" $xmlfile
     fi
diff --git a/abs/core/LinHES-system/linhes_update.sh b/abs/core/LinHES-system/linhes_update.sh
index 87ac8a1..aa80d41 100644
--- a/abs/core/LinHES-system/linhes_update.sh
+++ b/abs/core/LinHES-system/linhes_update.sh
@@ -6,7 +6,7 @@ dsply ()  {
     then
         msg_client.py --clear --tag "checkUpdates"
         msg_client.py --kill
-        msg_client.py --msg "Updates available!\nExit and re-enter Service Menu\nto install the updates.|middle"
+        msg_client.py --msg "Updates available!\nGo to the Service Menu to install the updates.|middle"
 		exit
     else
         msg_client.py --msg "Checking for updates...|middle" --timeout 600 --tag "checkUpdates"
@@ -20,7 +20,7 @@ chck ()  {
 	then
         msg_client.py --clear --tag "checkUpdates"
         msg_client.py --kill
-		msg_client.py --msg "No updates available.|middle"
+		msg_client.py --msg "No updates available.\nReturning to Main Menu.|middle"
 	else
 		mv /usr/share/mythtv/themes/defaultmenu/linhes.xml /tmp/linhes.xml.tmp
 		sed -e '/\#Check/,/\#Check/d' < /tmp/linhes.xml.tmp > /usr/share/mythtv/themes/defaultmenu/linhes.xml
@@ -30,6 +30,7 @@ chck ()  {
 		echo "   <button>" >> /tmp/linhes.xml.tmp
 		echo "     <type>UPGRADE</type>" >> /tmp/linhes.xml.tmp
 		echo "     <text>Updates Available</text>" >> /tmp/linhes.xml.tmp
+		echo "     <description>Updates for the LinHES system</description>" >> /tmp/linhes.xml.tmp
 		echo "     <action>MENU update2.xml</action>" >> /tmp/linhes.xml.tmp
 		echo "   </button>" >> /tmp/linhes.xml.tmp
 		echo "<!--#UpdatesAvailable-->" >> /tmp/linhes.xml.tmp
@@ -45,6 +46,7 @@ chck ()  {
             echo "   <button>" >> /tmp/update3.xml.tmp
             echo "     <type>UPGRADE</type>" >> /tmp/update3.xml.tmp
             echo "     <text>REBOOT REQUIRED</text>" >> /tmp/update3.xml.tmp
+            echo "     <description>Some packages require a reboot</description>" >> /tmp/update3.xml.tmp
             echo "     <action>NONE</action>" >> /tmp/update3.xml.tmp
             echo "   </button>" >> /tmp/update3.xml.tmp
 		fi
diff --git a/abs/core/LinHES-system/linhes_update2.sh b/abs/core/LinHES-system/linhes_update2.sh
index fbdd36b..b26e762 100644
--- a/abs/core/LinHES-system/linhes_update2.sh
+++ b/abs/core/LinHES-system/linhes_update2.sh
@@ -28,6 +28,7 @@ then
 	echo "   <button>" >> /tmp/linhes.xml.tmp
 	echo "     <type>UPGRADE</type>" >> /tmp/linhes.xml.tmp
 	echo "     <text>Update LinHES</text>" >> /tmp/linhes.xml.tmp
+	echo "     <description>Update the LinHES System</description>" >> /tmp/linhes.xml.tmp
 	echo "     <action>MENU update.xml</action>" >> /tmp/linhes.xml.tmp
 	echo "   </button>" >> /tmp/linhes.xml.tmp
 	echo "<!--#Check for updates-->" >> /tmp/linhes.xml.tmp
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
index 644e2a3..5c3d7cc 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -9,7 +9,7 @@
     <button>
         <type>MV_ADVANCED_SETUP_MENU</type>
         <text>Advanced</text>
-        <description>Settings for Boot Screen, CallerID &amp; starting MythFrontend</description>
+        <description>Settings for Boot Screen, CallerID &amp; MythFrontend</description>
         <action>EXEC  mythinstall -s advanced</action>
     </button>
 
-- 
cgit v0.12


From 71f5e03765a12af17b9c023d5cb2e9eabe749e38 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 24 Nov 2013 15:24:04 -0600
Subject: xbmc: add menu description

---
 abs/extra/xbmc/PKGBUILD      | 4 ++--
 abs/extra/xbmc/xbmc_lib.conf | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/abs/extra/xbmc/PKGBUILD b/abs/extra/xbmc/PKGBUILD
index e496886..6134074 100644
--- a/abs/extra/xbmc/PKGBUILD
+++ b/abs/extra/xbmc/PKGBUILD
@@ -9,7 +9,7 @@ _prefix=/usr
 
 pkgname=xbmc
 pkgver=12.2
-pkgrel=6
+pkgrel=7
 pkgdesc="A software media player and entertainment hub for digital media"
 arch=('i686' 'x86_64')
 url="http://xbmc.org"
@@ -115,4 +115,4 @@ package() {
 md5sums=('489f3877decae4e265ece54f9eaef0ba'
          '76fae229ebc3bcfaab7e7f27e4fb51f5'
          'e48a3d87984669ef206e902bc8290ff9'
-         '8c5cd1b5e7660a49ccd2f99967180a82')
+         '71176cb0e5aaa230d7c9634c37245bfb')
diff --git a/abs/extra/xbmc/xbmc_lib.conf b/abs/extra/xbmc/xbmc_lib.conf
index 2dbb10f..e3f4243 100644
--- a/abs/extra/xbmc/xbmc_lib.conf
+++ b/abs/extra/xbmc/xbmc_lib.conf
@@ -2,6 +2,7 @@
     <button>
        <type>MENU_XBMC</type>
        <text>Launch XBMC</text>
+       <description>Open XBMC Media Center</description>
        <action>EXEC /usr/LH/bin/xbmc.sh</action>
     </button>
 <!--#XBMC--> 
-- 
cgit v0.12


From 50b07d2839b355b9f74d08120cbd64c1e83d5eb8 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 25 Nov 2013 11:53:02 -0600
Subject: e16_theme_settings: update default background.

Hide Enlighting startup progress
---
 abs/core/e16_theme_settings/PKGBUILD               |   4 ++--
 .../artwork/backgrounds/lh-mv-bg-0.gradient.png    | Bin 0 -> 497904 bytes
 .../Summer/artwork/backgrounds/lh-mv-bg-0.png      | Bin 497904 -> 382508 bytes
 .../Summer/artwork/backgrounds/lh-mv-bg-0.spot.png | Bin 0 -> 781602 bytes
 .../e16_config_dir/themes/Summer/init.cfg          |  22 ++++++++++-----------
 5 files changed, 13 insertions(+), 13 deletions(-)
 create mode 100644 abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.gradient.png
 mode change 100644 => 100755 abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.png
 create mode 100644 abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.spot.png

diff --git a/abs/core/e16_theme_settings/PKGBUILD b/abs/core/e16_theme_settings/PKGBUILD
index 4526103..31c3dfb 100644
--- a/abs/core/e16_theme_settings/PKGBUILD
+++ b/abs/core/e16_theme_settings/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=e16_theme_settings
-pkgver=1.0
-pkgrel=16
+pkgver=8.1
+pkgrel=1
 pkgdesc="Default settings for e16"
 depends=('enlightenment')
 source=()
diff --git a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.gradient.png b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.gradient.png
new file mode 100644
index 0000000..8e41368
Binary files /dev/null and b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.gradient.png differ
diff --git a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.png b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.png
old mode 100644
new mode 100755
index 8e41368..112b46d
Binary files a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.png and b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.png differ
diff --git a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.spot.png b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.spot.png
new file mode 100644
index 0000000..86c18bd
Binary files /dev/null and b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/artwork/backgrounds/lh-mv-bg-0.spot.png differ
diff --git a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg
index 037d1c8..a49abae 100644
--- a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg
+++ b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg
@@ -4,7 +4,7 @@ __E_CFG_VERSION 1
 /* Maintained at themes.effx.us
    $Id: init.cfg 46 2009-04-13 05:25:03Z don $ */
 
-BEGIN_BACKGROUND(STARTUP_BACKGROUND)
+BEGIN_BACKGROUND("STARTUP_BACKGROUND")
   SET_SOLID("0 114 188")
   //ADD_BACKGROUND_TILED_SCALED_VERTICALLY("artwork/backgrounds/back-startup.png")
   ADD_OVERLAY_IMAGE_ASPECT("graphics/startup-overlay.png")
@@ -13,21 +13,21 @@ END_BACKGROUND
 __ICLASS __BGN
   __NAME STARTUP_BAR
   __NORMAL "artwork/init/init-basebar.png"
-  __EDGE_SCALING 1 1 1 1
+  __EDGE_SCALING 0 0 0 0
 __END
 
 __ICLASS __BGN
   __NAME PROGRESS_BAR
 /* normal used for text background */
-  __NORMAL "artwork/init/init-textbar.png"
-  __EDGE_SCALING 6 22 1 1
+  __NORMAL "artwork/init/init-basebar.png"
+  __EDGE_SCALING 0 0 0 0
 /* used for numeric bg */
-  __CLICKED "artwork/init/init-textbar.png"
-  __EDGE_SCALING 6 22 1 1
+  __CLICKED "artwork/init/init-basebar.png"
+  __EDGE_SCALING 0 0 0 0
 /* used for bar itself */
-  __NORMAL_ACTIVE "artwork/init/init-progbar.png"
-  __EDGE_SCALING 6 22 1 1
-  __PADDING 6 22 1 1
+  __NORMAL_ACTIVE "artwork/init/init-basebar.png"
+  __EDGE_SCALING 0 0 0 0
+  __PADDING 0 0 0 0
 __END
 
 /* text class for text above progress bar */
@@ -35,7 +35,7 @@ __TCLASS __BGN
   __NAME PROGRESS_TEXT
   __JUSTIFICATION 0
   __NORMAL "*font-init"
-  __FORGROUND_COLOR 0 0 0
+  __FORGROUND_COLOR 0 114 188
 __END
 
 /* number in % displayed next to text */
@@ -43,6 +43,6 @@ __TCLASS __BGN
   __NAME PROGRESS_TEXT_NUMBER
   __JUSTIFICATION 512
   __NORMAL "*font-init"
-  __FORGROUND_COLOR 0 0 0
+  __FORGROUND_COLOR  114 188
 __END
 
-- 
cgit v0.12


From b076f534f15ffbbbdeaa9f6b7d32fe96fc6a5bb6 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 25 Nov 2013 12:21:59 -0600
Subject: e16_theme_settings: fix missing 0 to make percent text blue.

---
 abs/core/e16_theme_settings/PKGBUILD                              | 2 +-
 abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core/e16_theme_settings/PKGBUILD b/abs/core/e16_theme_settings/PKGBUILD
index 31c3dfb..c6cd7a9 100644
--- a/abs/core/e16_theme_settings/PKGBUILD
+++ b/abs/core/e16_theme_settings/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=e16_theme_settings
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 pkgdesc="Default settings for e16"
 depends=('enlightenment')
 source=()
diff --git a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg
index a49abae..68455b1 100644
--- a/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg
+++ b/abs/core/e16_theme_settings/e16_config_dir/themes/Summer/init.cfg
@@ -43,6 +43,6 @@ __TCLASS __BGN
   __NAME PROGRESS_TEXT_NUMBER
   __JUSTIFICATION 512
   __NORMAL "*font-init"
-  __FORGROUND_COLOR  114 188
+  __FORGROUND_COLOR 0 114 188
 __END
 
-- 
cgit v0.12


From 30a8e1e93e87a9e88aa1f0ad9d46ea972a71ed68 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 25 Nov 2013 14:03:04 -0600
Subject: mythtv: update some help text

---
 .../stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml    | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
index 5c3d7cc..283a9ea 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -9,14 +9,14 @@
     <button>
         <type>MV_ADVANCED_SETUP_MENU</type>
         <text>Advanced</text>
-        <description>Settings for Boot Screen, CallerID &amp; MythFrontend</description>
+        <description>Manage Boot Screen, CallerID &amp; MythFrontend</description>
         <action>EXEC  mythinstall -s advanced</action>
     </button>
 
     <button>
         <type>MV_AUDIO_SETUP_MENU</type>
         <text>Audio</text>
-        <description>Settings for Audio drivers, cards &amp; devices</description>
+        <description>Manage Audio drivers, cards &amp; devices</description>
         <action>EXEC  mythinstall -s sound </action>
     </button>
 
@@ -30,28 +30,28 @@
     <button>
         <type>MV_NETWORK_SETUP_MENU</type>
         <text>Dynamic DNS</text>
-        <description>Settings for your dyndns.com account</description>
+        <description>Manage your dyndns.com account</description>
         <action>EXEC  mythinstall -s ddns </action>
     </button>
 
    <button>
         <type>MV_FILESHARES_MENU</type>
         <text>File Sharing</text>
-        <description>Settings for file sharing via NFS or SMB</description>
+        <description>Manage file sharing via NFS or SMB</description>
         <action>EXEC  mythinstall -s fileshare</action>
    </button>
 
    <button>
         <type>MV_MISC_SETUP_MENU</type>
         <text>Miscellanous</text>
-        <description>Set timezone, shortcuts &amp; automatic updates</description>
+        <description>Set timezone, shortcuts &amp; auto updates</description>
         <action>EXEC  mythinstall -s misc </action>
    </button>
 
    <button>
         <type>MV_NETWORK_SETUP_MENU</type>
         <text>Network</text>
-        <description>Settings for the network device &amp; hostname</description>
+        <description>Manage network devices &amp; hostname</description>
         <action>EXEC  mythinstall -s network </action>
    </button>
 
@@ -65,21 +65,21 @@
    <button>
         <type>MV_IR_SETUP_MENU</type>
         <text>Remotes</text>
-        <description>Settings for remotes, receivers &amp; blasters</description>
+        <description>Manage remotes, receivers &amp; blasters</description>
         <action>EXEC  mythinstall -s ir </action>
    </button>
 
    <button>
         <type>MV_SCREENSAVER_SETUP_MENU</type>
         <text>Screensaver</text>
-        <description>Set the Screensaver program and settings</description>
+        <description>Manage the Screensaver</description>
         <action>EXEC  mythinstall -s screensaver </action>
    </button>
 
    <button>
         <type>MV_VNC_SETUP_MENU</type>
         <text>Screen Sharing</text>
-        <description>Settings for VNC and XVNC screen sharing</description>
+        <description>Manage VNC and XVNC screen sharing</description>
         <action>EXEC  mythinstall -s vnc </action>
    </button>
 
@@ -93,7 +93,7 @@
    <button>
         <type>MV_SYSTEM_SETUP_MENU</type>
         <text>System Type</text>
-        <description>Settings for LinHES system type, pointer size &amp; MythWelcome</description>
+        <description>Manage LinHES system type, pointer size &amp; MythWelcome</description>
         <action>EXEC  mythinstall -s hostype </action>
    </button>
 
-- 
cgit v0.12


From 61cc4ae8ccf443e5f3d839db7051ed8298a7ec64 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 25 Nov 2013 15:01:41 -0600
Subject: LinHES-system:linhes_update.sh: add pkg name to help text

---
 abs/core/LinHES-system/linhes_update.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/abs/core/LinHES-system/linhes_update.sh b/abs/core/LinHES-system/linhes_update.sh
index aa80d41..76501fb 100644
--- a/abs/core/LinHES-system/linhes_update.sh
+++ b/abs/core/LinHES-system/linhes_update.sh
@@ -57,6 +57,7 @@ chck ()  {
             echo "   <button>" >> /tmp/update3.xml.tmp
             echo "     <type>UPGRADE</type>" >> /tmp/update3.xml.tmp
             echo "     <text>$line</text>" >> /tmp/update3.xml.tmp
+            echo "     <description>$line</description>" >> /tmp/update3.xml.tmp
             echo "     <action>NONE</action>" >> /tmp/update3.xml.tmp
             echo "   </button>" >> /tmp/update3.xml.tmp
         done < "/tmp/to_be_upgraded"
-- 
cgit v0.12


From c686ac72e3f81c94dcbc1c1996b83fe33161b7a4 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 25 Nov 2013 20:58:51 -0600
Subject: xymon-server:  hook up xymon alerts to the osd. System will push out
 alerts via func to all hosts for any red conditions excluding the ping test.
 Test must be red for 4hours with repeat notifications every 12 hours

refs #943
---
 abs/core/xymon/alerts.cfg       | 128 +++++++++++++++++++++++++++++++++++++++-
 abs/core/xymon/hobbit_notify.sh |  67 +++++++++++++++------
 2 files changed, 174 insertions(+), 21 deletions(-)
 mode change 100644 => 100755 abs/core/xymon/alerts.cfg

diff --git a/abs/core/xymon/alerts.cfg b/abs/core/xymon/alerts.cfg
old mode 100644
new mode 100755
index e458655..4f97f18
--- a/abs/core/xymon/alerts.cfg
+++ b/abs/core/xymon/alerts.cfg
@@ -1,6 +1,128 @@
+#
+# The alerts.cfg file controls who receives alerts
+# when a status in the XYmon system goes into a critical
+# state (usually: red, yellow or purple).
+#
+# This file is made up from RULES and RECIPIENTS.
+#
+# A RULE is a filter made from the PAGE where a host
+# is located in XYmon; the HOST name, the SERVICE name,
+# the COLOR of the status, the TIME of day, and the
+# DURATION of the event.
+#
+# A RECIPIENT can be a MAIL address, or a SCRIPT.
+#
+# Recipients can also have rules associated with them,
+# that modify the rules for a single recipient, e.g.
+# you can define a rule for alerting, then add an
+# extra criteria e.g. so a single recipient does not get
+# alerted until after 20 minutes.
+#
+# A sample rule:
+#
+# HOST=www.foo.com SERVICE=http
+#      MAIL webadmin@foo.com REPEAT=20 RECOVERED
+#      MAIL cio@foo.com DURATION>60 COLOR=red
+#      SCRIPT /usr/local/bin/sendsms 1234567890 FORMAT=SMS
+#
+# The first line sets up a rule that catches alerts
+# for the host "www.foo.com" and the "http" service.
+# There are three recipients for these alerts: The first
+# one is the "webadmin@foo.com" - they get alerted 
+# immediately when the status goes into an alert state,
+# and the alert is repeated every 20 minutes until it
+# recovers. When it recovers, a message is sent about
+# the recovery.
+#
+# The second recipient is "cio@foo.com". He gets alerted
+# only when the service goes "red" for more than 60 minutes.
+#
+# The third recipient is a script, "/usr/local/bin/sendsms".
+# The real recipient is "1234567890", but it is handled
+# by the script - the script receives a set of environment
+# variables with the details about the alert, including the
+# real recipient. The alert message is preformatted for 
+# an SMS recipient.
+#
+# You can use Perl-compatible "regular expressions" for
+# the PAGE, HOST and SERVICE definitions, by putting a "%"
+# in front of the regex. E.g.
+#
+# HOST=%^www.*
+#      MAIL webadmin@foo.com EXHOST=www.testsite.foo.com
+#
+# This sets up a rule so that alerts from any hostname 
+# beginning with "www" goes to "webadmin@foo.com", EXCEPT
+# alerts from "www.testsite.foo.com"
+#
+# The following keywords are recognized:
+#    PAGE      - rule matching an alert by the name of the
+#                page in XYmon. This is the name following
+#                the "page", "subpage" or "subparent" keyword
+#                in the hosts.cfg file.
+#    EXPAGE    - rule excluding an alert if the pagename matches.
+#    HOST      - rule matching an alert by the hostname.
+#    EXHOST    - rule excluding an alert by matching the hostname.
+#    SERVICE   - rule matching an alert by the service name.
+#    EXSERVICE - rule excluding an alert by matching the hostname.
+#    GROUP     - rule matching an alert by the group ID.
+#                (Group ID's are associated with a status through the
+#                 analysis.cfg configuration).
+#    EXGROUP   - rule excluding an alert by matching the group ID.
+#    COLOR     - rule matching an alert by color. Can be "red",
+#                "yellow", or "purple".
+#    TIME      - rule matching an alert by the time-of-day. This
+#                is specified as the DOWNTIME timespecification
+#                in the hosts.cfg file (see hosts.cfg(5)).
+#    DURATION  - Rule matcing an alert if the event has lasted
+#                longer/shorter than the given duration. E.g.
+#                DURATION>10 (lasted longer than 10 minutes) or
+#                DURARION<30 (only sends alerts the first 30 minutes).
+#    RECOVERED - Rule matches if the alert has recovered from an 
+#                alert state.
+#    NOTICE    - Rule matches if the message is a "notify" message
+#                (typically sent when a status is enabled or disabled).
+#    MAIL      - Recipient who receives an e-mail alert. This takes
+#                one parameter, the e-mail address.
+#    SCRIPT    - Recipient that invokes a script. This takes two
+#                parameters: The script filename, and the recipient
+#                that gets passed to the script.
+#    FORMAT    - format of the text message with the alert. Default
+#                is "TEXT" (suitable for e-mail alerts). "SMS" is
+#                a short message with no subject for SMS alerts.
+#                "SCRIPT" is a brief message template for scripts.
+#    REPEAT    - How often an alert gets repeated, in minutes.
+#    STOP      - Valid for a recipient: If this recipient gets an
+#                alert, recipients further down in alerts.cfg
+#                are ignored.
+#    UNMATCHED - Matches if no alerts have been sent so far.
+#
+#
+# Script get the following environment variables pre-defined so
+# that they can send a meaningful alert:
+#
+#    BBCOLORLEVEL  - The color of the alert: "red", "yellow" or "purple"
+#    BBALPHAMSG    - The full text of the status log triggering the alert
+#    ACKCODE       - The "cookie" that can be used to acknowledge the alert
+#    RCPT          - The recipient, from the SCRIPT entry
+#    BBHOSTNAME    - The name of the host that the alert is about
+#    MACHIP        - The IP-address of the host that has a problem
+#    BBSVCNAME     - The name of the service that the alert is about
+#    BBSVCNUM      - The numeric code for the service. From SVCCODES definition.
+#    BBHOSTSVC     - HOSTNAME.SERVICE that the alert is about.
+#    BBHOSTSVCCOMMAS - As BBHOSTSVC, but dots in the hostname replaced with commas
+#    BBNUMERIC     - A 22-digit number made by BBSVCNUM, MACHIP and ACKCODE.
+#    RECOVERED     - Is "1" if the service has recovered.
+#    DOWNSECS      - Number of seconds the service has been down.
+#    DOWNSECSMSG   - When recovered, holds the text "Event duration : N" where
+#                    N is the DOWNSECS value.
 
-HOST=* SERVICE=disk
-      SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS REPEAT=10h COLOR=yellow
-      SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS REPEAT=1h COLOR=red
+
+HOST=* SERVICE=func
+    SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS DURATION=4h REPEAT=48h COLOR=red 
+
+HOST=* SERVICE=* EXSERVICE=conn
+    SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS DURATION=4h REPEAT=12h COLOR=red 
+#      SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS DURATION=4H REPEAT=12H COLOR=yellow
 
 
diff --git a/abs/core/xymon/hobbit_notify.sh b/abs/core/xymon/hobbit_notify.sh
index 7569e2a..742b3db 100644
--- a/abs/core/xymon/hobbit_notify.sh
+++ b/abs/core/xymon/hobbit_notify.sh
@@ -1,4 +1,5 @@
 #!/bin/bash
+. /etc/systemconfig
 #
 #    BBCOLORLEVEL  - The color of the alert: "red", "yellow" or "purple"
 #    BBALPHAMSG    - The full text of the status log triggering the alert
@@ -14,35 +15,65 @@
 #    RECOVERED     - Is "1" if the service has recovered.
 #    DOWNSECS      - Number of seconds the service has been down.
 #    DOWNSECSMSG   - When recovered, holds the text "Event duration : N" where
-echo $BBCOLORLEVEL  > /tmp/hobbitout
-echo $BBALPHAMSG >>/tmp/hobbitout
-echo $RCPT >>/tmp/hobbitout
-echo $BBHOSTNAME >>/tmp/hobbitout
-echo $BBSVCNAME >>/tmp/hobbitout
-echo $BBHOSTSVC >>/tmp/hobbitout
+
+
+# echo $BBCOLORLEVEL  > /tmp/hobbitout
+# echo $BBALPHAMSG >>/tmp/hobbitout
+# echo $RCPT >>/tmp/hobbitout
+# echo $BBHOSTNAME >>/tmp/hobbitout
+# echo $BBSVCNAME >>/tmp/hobbitout
+# echo $BBHOSTSVC >>/tmp/hobbitout
 
 #BBCOLORLEVEL=red
 #BBCOLORLEVEL=yellow
 #BBALPHAMSG="vmtest:disk red [751147]"
-#BBHOSTNAME="vmtest"
+#BBHOSTNAME="testcraa"
 #BBSVCNAME="disk"
+#BBSVCNAME="func"
 #BBHOSTSVC="vmtest.disk"
 
-if  [ x$BBSVCNAME = xdisk ]
-then
-	case $BBCOLORLEVEL in 
-		red )	
-			/usr/bin/notify.py ALT "$BBHOSTNAME disk is full"
-		;;
-		yellow )
+#/usr/LH/bin/msg_client.py --msg "$BBCOLORLEVEL\n$BBHOSTSVC"
+#/usr/bin/func "*" call msg display
+
+function msg_func_out() {
+    /usr/bin/func "*" call msg display "${1}"
+}
+
+function msg_local_out() {
+    
+    /usr/LH/bin/msg_client.py --msg "${1}"
+    
+    }
+
 
-			/usr/bin/notify.py PHN "$BBHOSTNAME disk almost full "
-		;;
-	esac
-fi
 
+case x$BBSVCNAME in
 
+  xdisk)
+    case $BBCOLORLEVEL in 
+        red )
+            msg_func_out "$BBHOSTNAME disk is at 95% full or greater|alert"
+            ;;
+        yellow )
+            msg_func_out "$BBHOSTNAME disk is almost full"
+            ;;
+    esac
+    ;;
+    
+   xfunc)
+        if [ "x$hostname" = "x$BBHOSTNAME" ] 
+        then
+            msg_local_out "System can not communicate with itself (func) |alert"
+        else
+            msg_func_out "$hostname can not communicate with $BBHOSTNAME (func)|alert"
+        fi
+    ;;
 
+ *)
+    #catch all for everything else
+    msg_func_out "Condition $BBCOLORLEVEL\n$BBHOSTNAME  $BBSVCNAME\n Please check the system health webpage|alert"
+    ;;
+esac
 
 
 
-- 
cgit v0.12


From 653c9fdd68704738da04d233dd7bdc8f25e0eaf8 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 26 Nov 2013 15:53:44 -0600
Subject: xymon-server:  ignore /cdrom /mnt /media for disk checks. Modify
 hbnotes.py so that it adds hosts to analysis.cfg.  This is needed to define
 the proper checks per host type.

refs #943
---
 abs/core/xymon/PKGBUILD     |  12 ++--
 abs/core/xymon/analysis.cfg | 145 +++++++++++++++++++++++++-------------------
 abs/core/xymon/hbnotes.py   | 130 ++++++++++++++++++++-------------------
 3 files changed, 155 insertions(+), 132 deletions(-)

diff --git a/abs/core/xymon/PKGBUILD b/abs/core/xymon/PKGBUILD
index 0c797ee..a0c603b 100755
--- a/abs/core/xymon/PKGBUILD
+++ b/abs/core/xymon/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=xymon
 pkgname=(xymonserver xymonclient)
 pkgver=4.3.5
-pkgrel=49
+pkgrel=50
 pkgdesc="Hobbit is a system for monitoring servers and networks. "
 license="GPL"
 arch=('i686' 'x86_64')
@@ -128,17 +128,17 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          '758cdd9f1ba5ae3e1b42e811172806f3'
          'ee608dcafc050d790e28647a670f6b60'
          'b2f98ac0df013332deedc1efae0a270d'
-         'c31bcb503a227ed5ff7b218581793bfc'
+         '1141fc6f846e91f380bbcdb212b44f7d'
          '0f70e76a164f648f0a4a01110137cb20'
-         'f6921f0413215ae174e81306be80d37f'
+         'b0664f3b38717dce911f59bcbd84e7a4'
          '80d9cfac86c6d96836e6f406e35e7cf5'
          'd210c43fb9ee9ad6cd7648e0c2e0efea'
          '0c808fa12672289f86b0651545381308'
          '0469d775db9fdd18ea95dd41937ada82'
          '0757294eec13771f8e63da23cf066796'
-         '622f400fd098cbc43c203e3210a6694e'
-         '84442377c6e914b65519076bda4e17a4'
-         'd7116dc59319b893e90a26e6beb83994'
+         '6baa410da1dfb86435191f4805186ea7'
+         '81715c58ae495812da0e0f18e2f74c76'
+         '77a542c2fd13468791ef23057ba8e77d'
          'b4e8641e97e6b689dbc634af785e6799'
          'e2844513e2c92e8b5084818f3b2a478d'
          '98e9242ae346f729b14cb195786571f2'
diff --git a/abs/core/xymon/analysis.cfg b/abs/core/xymon/analysis.cfg
index 0de317b..da833e1 100644
--- a/abs/core/xymon/analysis.cfg
+++ b/abs/core/xymon/analysis.cfg
@@ -348,81 +348,98 @@
 
 
 HOST=_MASTERBACKEND_
-	PROC sshd 1 
-	PROC lighttpd  
-	PROC hobbitd
-   	PROC crond
-	PROC mysql
-	PROC mythbackend
-        DISK  *  95 99
-        PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http
-	PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
+    PROC sshd 1 
+    PROC lighttpd  
+    PROC xymond
+    PROC crond
+    PROC mysql
+    PROC mythbackend
+    PROC msg_daemon.py
+    DISK    %^/cdrom.* IGNORE
+    DISK    %^/mnt.* IGNORE
+    DISK    %^/media.* IGNORE
+    DISK  *  95 99
+    PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http
+    PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi
+    PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
 
 HOST=_MASTERFRONTEND_
-	PROC mythfrontend
-	PROC sshd 1 
-	PROC lighttpd  
-	PROC hobbitd
-   	PROC crond
-	PROC mysql
-	PROC mythbackend
-       DISK  *  95 99
-        PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http
-	PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
-        PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd
-        PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd
+    PROC mythfrontend
+    PROC sshd 1 
+    PROC lighttpd  
+    PROC xymond
+    PROC crond
+    PROC mysql
+    PROC mythbackend
+    PROC msg_daemon.py
+    DISK    %^/cdrom.* IGNORE
+    DISK    %^/mnt.* IGNORE
+    DISK    %^/media.* IGNORE
+    DISK  *  95 99
+    PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http
+    PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi
+    PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
+    
 
 
 HOST=_FRONTEND_
-	PROC sshd 1 
-   	PROC crond
-	PROC mythfrontend
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
-        PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd
-        PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd
+    PROC sshd 1 
+    PROC crond
+    PROC mythfrontend
+    PROC msg_daemon.py
+    PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
 
 HOST=_SLAVEBACKEND_
-	PROC sshd 1 
-	PROC crond
-	PROC mythbackend
-       DISK  *  95 99
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
+    PROC sshd 1 
+    PROC crond
+    PROC mythbackend
+    DISK    %^/cdrom.* IGNORE
+    DISK    %^/mnt.* IGNORE
+    DISK    %^/media.* IGNORE
+    DISK  *  95 99
+    PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
 
 HOST=_SLAVEFRONTEND_
-	PROC sshd 1 
-	PROC lighttpd  
-	PROC hobbitd
-   	PROC crond
-	PROC mythbackend
-	PROC mythfrontend
-       DISK  *  95 99
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
-        PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd
-        PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd
+    PROC sshd 1 
+    PROC lighttpd  
+    PROC hobbitd
+    PROC crond
+    PROC mythbackend
+    PROC mythfrontend
+    PROC msg_daemon.py
+    DISK    %^/cdrom.* IGNORE
+    DISK    %^/mnt.* IGNORE
+    DISK    %^/media.* IGNORE
+    DISK  *  95 99
+    PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
+
 
 HOST=_STANDALONE_
-	PROC sshd 1 
-	PROC lighttpd  
-	PROC hobbitd
-   	PROC crond
-	PROC mysql
-	PROC mythbackend
-       DISK  *  95 99
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
-        PORT "LOCAL=%([.:]5000)$" state=LISTEN TEXT=ghosd
-        PORT "LOCAL=%([.:]5001)$" state=LISTEN TEXT=ghosd
-        PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http
-	PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi
-        PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
+    PROC mythfrontend
+    PROC sshd 1 
+    PROC lighttpd  
+    PROC xymond
+    PROC crond
+    PROC mysql
+    PROC mythbackend
+    PROC msg_daemon.py
+    DISK    %^/cdrom.* IGNORE
+    DISK    %^/mnt.* IGNORE
+    DISK    %^/media.* IGNORE
+    DISK  *  95 99
+    PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=http
+    PORT "LOCAL=%([.:]1337)$" state=LISTEN TEXT=cgi
+    PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
 
 DEFAULT
-	# These are the built-in defaults.
-	UP      1h
-	LOAD    5.0 10.0
-	DISK    * 99 100
-	MEMPHYS 100 101
-	MEMSWAP 50 80
-	MEMACT  90 97
+    # These are the built-in defaults.
+    UP      1h
+    LOAD    5.0 10.0
+    DISK    %^/cdrom.* IGNORE
+    DISK    %^/mnt.* IGNORE
+    DISK    %^/media.* IGNORE
+    DISK    * 99 100
+    MEMPHYS 100 101
+    MEMSWAP 50 80
+    MEMACT  90 97
 
diff --git a/abs/core/xymon/hbnotes.py b/abs/core/xymon/hbnotes.py
index d643044..b5ad72a 100644
--- a/abs/core/xymon/hbnotes.py
+++ b/abs/core/xymon/hbnotes.py
@@ -28,7 +28,7 @@ def create_dot_file():
     result = cursor.fetchall()
     frontonly="_FRONTEND_"
     masterbackend="_MASTERBACKEND_"
-    masterbacked_w_fe="_MASTERFE_"
+    masterbacked_w_fe="_MASTERFRONTEND_"
     slave_w_fe="_SLAVEFE_"
     slave="_SLAVEBACKEND_"
     stand_alone="_STANDALONE_"
@@ -166,7 +166,8 @@ def create_dot_file():
  #   cmd="/usr/bin/circo -Tpng  -o/data/srv/httpd/htdocs/xymon/gifs/network.png " + dotfilename
 
     results=os.popen(cmd,'r')
-
+    return frontonly,masterbackend,masterbacked_w_fe,slave_w_fe,slave,stand_alone
+    
 
 
 
@@ -458,68 +459,73 @@ function Do_it ()
        file.write(string)
 
 
-def main(argv):
-    create_dot_file()
-    create_notes()
-
+def create_hobbit_analysis(frontonly,
+                           masterbackend,
+                           masterbacked_w_fe,
+                           slave_w_fe,
+                           slave,
+                           stand_alone):
 
-#------------------------------write client-config------------------------------------------------
-
-
- #--------------------------------------------------
-    #hobbitfile="/home/xymon/server/etc/hobbit-clients.cfg"
-
-    ###WHY WAS THIS HERE??
-    #hobbitfile="/home/xymon/server/etc/tasks.cfg"
-    #hobbitf=open(hobbitfile,'r')
-    #hobbitconfig=hobbitf.readlines()
-    #hobbitf.close()
-    #hobbitf=open(hobbitfile,'w')
-    #print "FE",frontonly
-    #print "MBE",masterbackend
-    #print "MBEwFW",masterbacked_w_fe
-    #print "SLAVEwFW",slave_w_fe
-    #print "SLAVE",slave
-    #print "STD",stand_alone
-
-    #for line in hobbitconfig:
-        #if line.startswith("HOST"):
-            #cline=line.split("=")
-            #if cline[1].startswith("_FRONTEND_"):
-                #pline="HOST="
-                #pline+=frontonly.strip()
-                #hobbitf.write(pline + "\n")
-            #elif cline[1].startswith("_MASTERBACKEND_"):
-                #pline="HOST="
-                #pline+=masterbackend.strip()
-                ##print pline
-                #hobbitf.write(pline+ "\n")
-            #elif cline[1].startswith("_MASTERFRONTEND_"):
-                #pline="HOST="
-                #pline+=masterbacked_w_fe.strip()
-                ##print pline
-                #hobbitf.write(pline+ "\n")
-            #elif cline[1].startswith("_SLAVEBACKEND_"):
-                #pline="HOST="
-                #pline+=slave.strip()
-                ##print pline
-                #hobbitf.write(pline+ "\n")
-            #elif cline[1].startswith("_SLAVEFE_"):
-                #pline="HOST="
-                #pline+=slave_w_fe.strip()
-                ##print pline
-                #hobbitf.write(pline+ "\n")
-            #else:
-                ##print line
-                #hobbitf.write(line)
-        #else:
-            ##print line
-            #hobbitf.write(line)
-
-#-----------------------------------------------------------END CLIENT CONFIG
-
-    # execute SQL statement
+    hobbitfile="/home/xymon/server/etc/analysis.cfg"
+    hobbitf=open(hobbitfile,'r')
+    hobbitconfig=hobbitf.readlines()
+    hobbitf.close()
+    try:
+        hobbitf=open(hobbitfile,'w')
+        print "FE",frontonly
+        print "MBE",masterbackend
+        print "MBEwFW",masterbacked_w_fe
+        print "SLAVEwFW",slave_w_fe
+        print "SLAVE",slave
+        print "STD",stand_alone
+
+        for line in hobbitconfig:
+            if line.startswith("HOST"):
+                cline=line.split("=")
+                if cline[1].startswith("_FRONTEND_"):
+                    pline="HOST="
+                    pline+=frontonly.strip()
+                    hobbitf.write(pline + "\n")
+                elif cline[1].startswith("_MASTERBACKEND_"):
+                    pline="HOST="
+                    pline+=masterbackend.strip()
+                    #print pline
+                    hobbitf.write(pline+ "\n")
+                elif cline[1].startswith("_MASTERFRONTEND_"):
+                    pline="HOST="
+                    pline+=masterbacked_w_fe.strip()
+                    #print pline
+                    hobbitf.write(pline+ "\n")
+                elif cline[1].startswith("_SLAVEBACKEND_"):
+                    pline="HOST="
+                    pline+=slave.strip()
+                    #print pline
+                    hobbitf.write(pline+ "\n")
+                elif cline[1].startswith("_SLAVEFE_"):
+                    pline="HOST="
+                    pline+=slave_w_fe.strip()
+                    #print pline
+                    hobbitf.write(pline+ "\n")
+                else:
+                    #print line
+                    hobbitf.write(line)
+            else:
+                #print line
+                hobbitf.write(line)
+        hobbitf.close()
+    except:
+        print "problem writing analysis.cfg"
 
+def main(argv):
+    frontonly,masterbackend,masterbacked_w_fe,slave_w_fe,slave,stand_alone = create_dot_file()
+    create_notes()
+    create_hobbit_analysis(frontonly,
+                           masterbackend,
+                           masterbacked_w_fe,
+                           slave_w_fe,
+                           slave,
+                           stand_alone)
+    
 
 if __name__ == "__main__":
     main(sys.argv[1:])
-- 
cgit v0.12


From 9f21e0cd8f7b16213e1170f17ec76fe4c97effb9 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 26 Nov 2013 15:54:33 -0600
Subject: linhes-theme: install-ui.xml adjust some alignments

base.xml and schedule.xml: adjust a some colors and transparency.
---
 abs/core/linhes-theme/PKGBUILD              | 10 ++--
 abs/core/linhes-theme/base.xml.patch        | 80 +++++++++++++++++++++++++++--
 abs/core/linhes-theme/install-ui.xml        | 22 ++++----
 abs/core/linhes-theme/schedule-ui.xml.patch | 29 ++++++++++-
 4 files changed, 119 insertions(+), 22 deletions(-)
 mode change 100755 => 100644 abs/core/linhes-theme/install-ui.xml

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index e330354..3e85367 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=5
+pkgrel=6
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -10,7 +10,7 @@ patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
          'menu-ui.xml.patch' 'schedule-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
-source=("git://github.com/MythTV-Themes/TintedGlass.git"
+source=("git://github.com/MythTV-Themes/TintedGlass.git#branch=fixes/0.27"
         `echo ${patches[@]:0}` 'themeinfo.xml' 'install-ui.xml'
         'background.png' 'qt-background.png' 'tux_thoughts.png'
         'progdetails_page1.html')
@@ -57,11 +57,11 @@ package() {
 md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          '15b4462932b7be0e56b2e69e0214823a'
-         '2fb0990e8fef2c70e9bd8cfb36689b2b'
+         '18dc450e33aaa9a21f4c293cf883b16b'
          '83b03852c6f46bc791bfa6e8c894ca01'
-         '45d2f265218ab951eefe76adff38c54b'
+         'aff82cf901edc4baa058013d93610cfc'
          '7d7bc458a8f4af408700609f3e1f412e'
-         'eb94abdc196051db708e4a9eb938923a'
+         '909d7a8114436dcfc28a01d0d97ec11f'
          'cbe5f663ebb5d51abe811f81dafec303'
          '12d26a786fde397348653128a6d7676a'
          '2bd09b8049aaf5ba21db5baf3a0ce077'
diff --git a/abs/core/linhes-theme/base.xml.patch b/abs/core/linhes-theme/base.xml.patch
index 5dde5ea..43205a8 100644
--- a/abs/core/linhes-theme/base.xml.patch
+++ b/abs/core/linhes-theme/base.xml.patch
@@ -1,6 +1,14 @@
---- base.xml.orig	2013-11-19 01:06:47.555458106 +0000
-+++ base.xml	2013-11-21 21:56:09.218085998 +0000
-@@ -431,19 +431,19 @@
+--- base.xml.orig	2013-11-22 18:52:58.956295819 +0000
++++ base.xml	2013-11-26 21:11:40.854761920 +0000
+@@ -424,26 +424,26 @@
+ 
+     <!-- Base definition of a base popup backdrop -->
+     <shape name="base_popup_backdrop" from="base_backdrop">
+-        <fill color="#0a0a0e" alpha="255" />
++        <fill color="#0a0a0e" alpha="235" />
+     </shape>
+ 
+     <!-- Base definition of a heading group -->
      <group name="base_heading_group">
          <area>0,0,1280,720</area>
          <shape name="base_heading_backdrop" from="base_backdrop">
@@ -95,13 +103,12 @@
  
          <animation trigger="AboutToShow">
              <section>
-@@ -1260,76 +1258,77 @@
+@@ -1260,76 +1258,76 @@
          </animation>
  
          <shape name="popup-backdrop" from="base_popup_backdrop">
 -            <area>0,0,400,463</area>
 +            <area>0,0,602,488</area>
-+            <fill color="#0a0a0e" alpha="235" />
          </shape>
  
          <shape name="popup-backdrop-line" from="base_backdrop_line">
@@ -194,3 +201,66 @@
          </statetype>
          </buttonlist>
      </window>
+@@ -1384,7 +1382,7 @@
+         <textarea name="messagearea" from="basetextarea">
+             <area>15,10,785,282</area>
+             <multiline>yes</multiline>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <align>allcenter</align>
+         </textarea>
+ 
+@@ -1458,7 +1456,7 @@
+ 
+         <textarea name="message" from="basetextarea">
+             <area>6,86,590,51</area>
+-            <font>basesmalleryellow</font>
++            <font>basesmaller</font>
+             <multiline>true</multiline>
+             <align>allcenter</align>
+         </textarea>
+@@ -1507,7 +1505,7 @@
+ 
+         <textarea name="message" from="basetextarea">
+             <area>14,14,552,66</area>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <align>allcenter</align>
+         </textarea>
+ 
+@@ -1569,7 +1567,7 @@
+ 
+         <textarea name="message" from="basetextarea">
+             <area>8,8,571,127</area>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <align>allcenter</align>
+             <multiline>yes</multiline>
+             <cutdown>no</cutdown>
+@@ -1713,7 +1711,7 @@
+ 
+         <textarea name="message" from="basetextarea">
+             <area>10,14,567,36</area>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <align>allcenter</align>
+         </textarea>
+ 
+@@ -1770,7 +1768,7 @@
+ 
+         <textarea name="message" from="basetextarea">
+             <area>0,7,580,50</area>
+-            <font>basemediumdarkyellow</font>
++            <font>basemedium</font>
+             <align>allcenter</align>
+             <value>Select Time &amp; Date</value>
+             <multiline>true</multiline>
+@@ -1863,7 +1861,7 @@
+ 
+         <textarea name="title" from="basetextarea">
+             <area>18,4,484,66</area>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <multiline>yes</multiline>
+             <align>allcenter</align>
+         </textarea>
diff --git a/abs/core/linhes-theme/install-ui.xml b/abs/core/linhes-theme/install-ui.xml
old mode 100755
new mode 100644
index 4d10d0f..a521256
--- a/abs/core/linhes-theme/install-ui.xml
+++ b/abs/core/linhes-theme/install-ui.xml
@@ -11,7 +11,7 @@
         <!--version info-->
         <textarea name="date_text" from="basetextarea">
             <multiline>yes</multiline>
-            <font>basemedium</font>
+            <font>baselarge</font>
             <area>20,22,1240,100</area>
             <value></value>
             <align>allcenter</align>
@@ -34,10 +34,10 @@
 
         <textarea name="recording_text" from="basetextarea">
             <multiline>yes</multiline>
-            <font>basemediumyellow</font>
-            <area>20,140,1240,60</area>
+            <font>basemedium</font>
+            <area>20,170,1240,60</area>
             <value>Press MENU for options</value>
-            <align>allcenter</align>
+            <align>center</align>
         </textarea>
 
         <!--not used by mythinstall-->
@@ -48,23 +48,23 @@
         </textarea>
 
         <textarea name="scheduled_text">
-            <font>basemediumyellow</font>
-            <area>20,210,1240,120</area>
+            <font>basemedium</font>
+            <area>20,230,1240,30</area>
             <value></value>
-            <align>allcenter</align>
+            <align>center</align>
         </textarea>
 
         <textarea name="mythvantage_text">
             <multiline>no</multiline>
-            <font>basesmallyellow</font>
-            <area>20,660,1240,30</area>
+            <font>basesmall</font>
+            <area>20,660,1240,20</area>
             <value></value>
-            <align>right</align>
+            <align>center</align>
             <cutdown>yes</cutdown>
         </textarea>
 
         <imagetype name="logo">
-            <position>565,490</position>
+            <position>565,500</position>
             <preserveaspect>true</preserveaspect>
             <!--<crop>x,y,w,h</crop>-->
             <filepattern low="0" high="30">/usr/MythVantage/logos/logo-%1.png</filepattern>
diff --git a/abs/core/linhes-theme/schedule-ui.xml.patch b/abs/core/linhes-theme/schedule-ui.xml.patch
index 88e643b..7032a67 100644
--- a/abs/core/linhes-theme/schedule-ui.xml.patch
+++ b/abs/core/linhes-theme/schedule-ui.xml.patch
@@ -1,5 +1,32 @@
 --- schedule-ui.xml.orig	2013-11-22 19:35:05.125862862 +0000
-+++ schedule-ui.xml	2013-11-22 19:34:04.307006412 +0000
++++ schedule-ui.xml	2013-11-25 22:17:02.323240208 +0000
+@@ -1471,7 +1471,7 @@
+ 
+         <textarea name="title_text" from="basetextarea">
+             <area>10,4,480,46</area>
+-            <font>basemediumlargerdarkyellow</font>
++            <font>basemediumlarger</font>
+             <align>allcenter</align>
+             <value>Search Term</value>
+         </textarea>
+@@ -1578,7 +1578,7 @@
+ 
+         <textarea name="title_text" from="basetextarea">
+             <area>10,4,480,46</area>
+-            <font>basemediumlargerdarkyellow</font>
++            <font>basemediumlarger</font>
+             <align>allcenter</align>
+             <value>Select Search</value>
+         </textarea>
+@@ -1681,7 +1681,7 @@
+ 
+         <textarea name="title_text" from="basetextarea">
+             <area>10,4,480,46</area>
+-            <font>basemediumlargerdarkyellow</font>
++            <font>basemediumlarger</font>
+             <align>allcenter</align>
+             <value>Edit Power Search Fields</value>
+         </textarea>
 @@ -3225,7 +3225,7 @@
      </window>
  
-- 
cgit v0.12


From dd201aab9ad641b9cbfe202a8730787a7125d198 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 26 Nov 2013 16:25:29 -0600
Subject: linhes-theme: add some color changes to video-ui.xml

---
 abs/core/linhes-theme/PKGBUILD           |  5 +++--
 abs/core/linhes-theme/video-ui.xml.patch | 29 +++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)
 create mode 100644 abs/core/linhes-theme/video-ui.xml.patch

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 3e85367..18ed3cb 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,13 +1,13 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=6
+pkgrel=7
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
 patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
-         'menu-ui.xml.patch' 'schedule-ui.xml.patch')
+         'menu-ui.xml.patch' 'schedule-ui.xml.patch' 'video-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git#branch=fixes/0.27"
@@ -60,6 +60,7 @@ md5sums=('SKIP'
          '18dc450e33aaa9a21f4c293cf883b16b'
          '83b03852c6f46bc791bfa6e8c894ca01'
          'aff82cf901edc4baa058013d93610cfc'
+         'ea05a00840b22004f6240913fdc7038d'
          '7d7bc458a8f4af408700609f3e1f412e'
          '909d7a8114436dcfc28a01d0d97ec11f'
          'cbe5f663ebb5d51abe811f81dafec303'
diff --git a/abs/core/linhes-theme/video-ui.xml.patch b/abs/core/linhes-theme/video-ui.xml.patch
new file mode 100644
index 0000000..cdb4a41
--- /dev/null
+++ b/abs/core/linhes-theme/video-ui.xml.patch
@@ -0,0 +1,29 @@
+--- video-ui.xml.orig	2013-11-26 22:18:54.421966293 +0000
++++ video-ui.xml	2013-11-25 22:17:14.998291698 +0000
+@@ -58,7 +58,7 @@
+         <textarea name="label" from="basetextarea">
+             <area>10,4,543,48</area>
+             <align>allcenter</align>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <value>Cast Members</value>
+         </textarea>
+ 
+@@ -169,7 +169,7 @@
+         <textarea name="label" from="basetextarea">
+             <area>24,4,515,41</area>
+             <align>allcenter</align>
+-            <font>basesmalldarkyellow</font>
++            <font>basesmall</font>
+             <value>Full Plot</value>
+         </textarea>
+ 
+@@ -2757,7 +2757,7 @@
+ 
+         <textarea name="title" from="basetextarea">
+             <area>10,4,780,46</area>
+-            <font>basemediumlargerdarkyellow</font>
++            <font>basemediumlarger</font>
+             <value>Filter Display</value>
+             <align>allcenter</align>
+         </textarea>
-- 
cgit v0.12


From 4576070372969ee1635826af943e41bf3e92d096 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 26 Nov 2013 22:02:44 -0600
Subject: LinHES-config:  install_proxy, suppress running of myth_status every
 5 seconds.

---
 abs/core/LinHES-config/PKGBUILD         | 6 +++---
 abs/core/LinHES-config/install_proxy.sh | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index f567c67..5ce1e1b 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.1
-pkgrel=2
+pkgrel=3
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -138,7 +138,7 @@ md5sums=('8ee14247b04ab4152d4919d4d4b8d869'
          'f6e9dd7bc6cf0aaa3bd203dab4cb79b9'
          '2596460462cf6c889cf8f95485537b20'
          '985891a43f7c4c983eb2a362162f1a0f'
-         'fda01259a4bc74d83c9092d338bd247a'
+         '261ba62515edd7a13d46cbeb1b0eadca'
          '768504ef10ecd11a22875ccea9fcf62b'
          'f73d6d6f98839e900cb6685bf5dc4eae'
          'b8becf69d4309b938ceba3178c799270'
@@ -171,7 +171,7 @@ md5sums=('8ee14247b04ab4152d4919d4d4b8d869'
          '299c24c0820fc9c483c820db2595e3cb'
          'cf51cb22e23218ae7e9b55cac1ba3a7f'
          '781f161a79c3188a31c8615b8258b241'
-         '540a5b7f63a83ad53d6924c637bfd1c7'
+         '70749be12c98d4b8fd283bd5dd9182bb'
          '2596460462cf6c889cf8f95485537b20'
          'dc3c5270691a62600475705f4cb78b56'
          '4804aa93aaad3dfcfff08cd9ffd68836'
diff --git a/abs/core/LinHES-config/install_proxy.sh b/abs/core/LinHES-config/install_proxy.sh
index 99609cc..7d987f5 100755
--- a/abs/core/LinHES-config/install_proxy.sh
+++ b/abs/core/LinHES-config/install_proxy.sh
@@ -1,6 +1,7 @@
 #!/bin/bash
 export TERM=vt100
 MVHOSTNAME=apheleia
+export MYTH_RUN_STATUS="1"
 . /etc/profile
 TEMP_TEMPLATES=/tmp/templates
 disk=$2
-- 
cgit v0.12


From 2b52309f78a508f9385cb847ba88179558f9a038 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 26 Nov 2013 22:03:43 -0600
Subject: LinHES-config:  systemconfig.py  update config.xml for the .27 format

---
 abs/core/LinHES-config/systemconfig.py | 51 ++++++++++++++++++++++++++--------
 1 file changed, 39 insertions(+), 12 deletions(-)

diff --git a/abs/core/LinHES-config/systemconfig.py b/abs/core/LinHES-config/systemconfig.py
index 07b2820..1af9daf 100755
--- a/abs/core/LinHES-config/systemconfig.py
+++ b/abs/core/LinHES-config/systemconfig.py
@@ -53,25 +53,52 @@ def setup_x(systemconfig):
 
 
 def generate_config_xml(uuid,dbhost):
-    configxml_t ='''
-<Configuration>
+    #configxml_t ='''
+#<Configuration>
+  #<UPnP>
+    #<UDN>
+      #<MediaRenderer>%s</MediaRenderer>
+    #</UDN>
+    #<MythFrontend>
+      #<DefaultBackend>
+        #<DBHostName>%s</DBHostName>
+        #<DBUserName>mythtv</DBUserName>
+        #<DBPassword>mythtv</DBPassword>
+        #<DBName>mythconverg</DBName>
+        #<DBPort>0</DBPort>
+      #</DefaultBackend>
+    #</MythFrontend>
+  #</UPnP>
+#</Configuration>
+    #'''
+    configxml_t='''
+    <Configuration>
+  <LocalHostName>my-unique-identifier-goes-here</LocalHostName>
+  <Database>
+    <PingHost>1</PingHost>
+    <Host>%s</Host>
+    <UserName>mythtv</UserName>
+    <Password>mythtv</Password>
+    <DatabaseName>mythconverg</DatabaseName>
+    <Port>3306</Port>
+  </Database>
+  <WakeOnLAN>
+    <Enabled>0</Enabled>
+    <SQLReconnectWaitTime>0</SQLReconnectWaitTime>
+    <SQLConnectRetry>5</SQLConnectRetry>
+    <Command>echo 'WOLsqlServerCommand not set'</Command>
+  </WakeOnLAN>
   <UPnP>
     <UDN>
       <MediaRenderer>%s</MediaRenderer>
     </UDN>
-    <MythFrontend>
-      <DefaultBackend>
-        <DBHostName>%s</DBHostName>
-        <DBUserName>mythtv</DBUserName>
-        <DBPassword>mythtv</DBPassword>
-        <DBName>mythconverg</DBName>
-        <DBPort>0</DBPort>
-      </DefaultBackend>
-    </MythFrontend>
   </UPnP>
 </Configuration>
     '''
-    configxml= configxml_t %(uuid,dbhost)
+    
+    
+    
+    configxml= configxml_t %(dbhost,uuid)
     return configxml
 
 def gen_uuid():
-- 
cgit v0.12


From ee77f0a92a8a5e5eff25fa7bf03abb396e49fa61 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 26 Nov 2013 22:05:30 -0600
Subject: mythdb-initial:  update initial db to .27 schema This was nothing
 more then loading mc.sql and running through setup taking all the defaults

refs #942
---
 abs/core/mythdb-initial/PKGBUILD |   4 +-
 abs/core/mythdb-initial/mc.sql   | 218 +++++++++++++++++++++++----------------
 2 files changed, 129 insertions(+), 93 deletions(-)

diff --git a/abs/core/mythdb-initial/PKGBUILD b/abs/core/mythdb-initial/PKGBUILD
index 6efcea7..54b5912 100755
--- a/abs/core/mythdb-initial/PKGBUILD
+++ b/abs/core/mythdb-initial/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythdb-initial
 pkgver=8
-pkgrel=2
+pkgrel=3
 pkgdesc="setup the initial mythtv database for linhes"
 url=""
 license=""
@@ -20,6 +20,6 @@ package() {
   cp $srcdir/custom.sql  $pkgdir/data/database/custom.sql
 }
 
-md5sums=('9dcf8c574e69fde6b1b2fa1eed95ded4'
+md5sums=('366c1fe7668739d2d5c1123f9f4ee110'
          'ad0e57ac5e7c3677808a670e16634bba'
          '6c7fd1877f45b604be14d58d068f6d08')
diff --git a/abs/core/mythdb-initial/mc.sql b/abs/core/mythdb-initial/mc.sql
index d3b1679..2174eda 100644
--- a/abs/core/mythdb-initial/mc.sql
+++ b/abs/core/mythdb-initial/mc.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13  Distrib 5.1.59, for unknown-linux-gnu (x86_64)
+-- MySQL dump 10.13  Distrib 5.5.28, for Linux (x86_64)
 --
 -- Host: localhost    Database: mythconverg
 -- ------------------------------------------------------
--- Server version	5.1.59
+-- Server version	5.5.28
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -16,31 +16,6 @@
 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 
 --
--- Table structure for table `callsignnetworkmap`
---
-
-DROP TABLE IF EXISTS `callsignnetworkmap`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `callsignnetworkmap` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `callsign` varchar(20) NOT NULL DEFAULT '',
-  `network` varchar(20) NOT NULL DEFAULT '',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `callsign` (`callsign`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `callsignnetworkmap`
---
-
-LOCK TABLES `callsignnetworkmap` WRITE;
-/*!40000 ALTER TABLE `callsignnetworkmap` DISABLE KEYS */;
-/*!40000 ALTER TABLE `callsignnetworkmap` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
 -- Table structure for table `capturecard`
 --
 
@@ -75,7 +50,7 @@ CREATE TABLE `capturecard` (
   `diseqcid` int(10) unsigned DEFAULT NULL,
   `dvb_eitscan` tinyint(1) NOT NULL DEFAULT '1',
   PRIMARY KEY (`cardid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -137,7 +112,7 @@ CREATE TABLE `channel` (
   `sourceid` int(10) unsigned DEFAULT NULL,
   `callsign` varchar(20) NOT NULL DEFAULT '',
   `name` varchar(64) NOT NULL DEFAULT '',
-  `icon` varchar(255) NOT NULL DEFAULT 'none',
+  `icon` varchar(255) NOT NULL DEFAULT '',
   `finetune` int(11) DEFAULT NULL,
   `videofilters` varchar(255) NOT NULL DEFAULT '',
   `xmltvid` varchar(255) NOT NULL DEFAULT '',
@@ -158,6 +133,7 @@ CREATE TABLE `channel` (
   `last_record` datetime NOT NULL,
   `default_authority` varchar(32) NOT NULL DEFAULT '',
   `commmethod` int(11) NOT NULL DEFAULT '-1',
+  `iptvid` smallint(6) unsigned DEFAULT NULL,
   PRIMARY KEY (`chanid`),
   KEY `channel_src` (`channum`,`sourceid`),
   KEY `sourceid` (`sourceid`,`xmltvid`,`chanid`),
@@ -218,7 +194,7 @@ CREATE TABLE `channelgroupnames` (
 
 LOCK TABLES `channelgroupnames` WRITE;
 /*!40000 ALTER TABLE `channelgroupnames` DISABLE KEYS */;
-INSERT INTO `channelgroupnames` (`grpid`, `name`) VALUES (1,'Favorites');
+INSERT INTO `channelgroupnames` VALUES (1,'Favorites');
 /*!40000 ALTER TABLE `channelgroupnames` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -419,7 +395,7 @@ CREATE TABLE `customexample` (
 
 LOCK TABLES `customexample` WRITE;
 /*!40000 ALTER TABLE `customexample` DISABLE KEYS */;
-INSERT INTO `customexample` (`rulename`, `fromclause`, `whereclause`, `search`) VALUES ('New Flix','','program.category_type = \'movie\' AND program.airdate >= \n     YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) \nAND program.stars > 0.5 ',1);
+INSERT INTO `customexample` VALUES ('New Flix','','program.category_type = \'movie\' AND program.airdate >= \n     YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) \nAND program.stars > 0.5 ',1);
 /*!40000 ALTER TABLE `customexample` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -603,7 +579,7 @@ CREATE TABLE `dtv_privatetypes` (
 
 LOCK TABLES `dtv_privatetypes` WRITE;
 /*!40000 ALTER TABLE `dtv_privatetypes` DISABLE KEYS */;
-INSERT INTO `dtv_privatetypes` (`sitype`, `networkid`, `private_type`, `private_value`) VALUES ('dvb',9018,'channel_numbers','131'),('dvb',9018,'guide_fixup','2'),('dvb',256,'guide_fixup','1'),('dvb',257,'guide_fixup','1'),('dvb',256,'tv_types','1,150,134,133'),('dvb',257,'tv_types','1,150,134,133'),('dvb',4100,'sdt_mapping','1'),('dvb',4101,'sdt_mapping','1'),('dvb',4102,'sdt_mapping','1'),('dvb',4103,'sdt_mapping','1'),('dvb',4104,'sdt_mapping','1'),('dvb',4105,'sdt_mapping','1'),('dvb',4106,'sdt_mapping','1'),('dvb',4107,'sdt_mapping','1'),('dvb',4097,'sdt_mapping','1'),('dvb',4098,'sdt_mapping','1'),('dvb',4100,'tv_types','1,145,154'),('dvb',4101,'tv_types','1,145,154'),('dvb',4102,'tv_types','1,145,154'),('dvb',4103,'tv_types','1,145,154'),('dvb',4104,'tv_types','1,145,154'),('dvb',4105,'tv_types','1,145,154'),('dvb',4106,'tv_types','1,145,154'),('dvb',4107,'tv_types','1,145,154'),('dvb',4097,'tv_types','1,145,154'),('dvb',4098,'tv_types','1,145,154'),('dvb',4100,'guide_fixup','1'),('dvb',4101,'guide_fixup','1'),('dvb',4102,'guide_fixup','1'),('dvb',4103,'guide_fixup','1'),('dvb',4104,'guide_fixup','1'),('dvb',4105,'guide_fixup','1'),('dvb',4106,'guide_fixup','1'),('dvb',4107,'guide_fixup','1'),('dvb',4096,'guide_fixup','5'),('dvb',4097,'guide_fixup','1'),('dvb',4098,'guide_fixup','1'),('dvb',94,'tv_types','1,128'),('atsc',1793,'guide_fixup','3'),('dvb',40999,'guide_fixup','4'),('dvb',70,'force_guide_present','yes'),('dvb',70,'guide_ranges','80,80,96,96'),('dvb',4112,'channel_numbers','131'),('dvb',4115,'channel_numbers','131'),('dvb',4116,'channel_numbers','131'),('dvb',12802,'channel_numbers','131'),('dvb',12803,'channel_numbers','131'),('dvb',12829,'channel_numbers','131'),('dvb',40999,'parse_subtitle_list','1070,1308,1041,1306,1307,1030,1016,1131,1068,1069'),('dvb',4096,'guide_fixup','5');
+INSERT INTO `dtv_privatetypes` VALUES ('dvb',9018,'channel_numbers','131'),('dvb',9018,'guide_fixup','2'),('dvb',256,'guide_fixup','1'),('dvb',257,'guide_fixup','1'),('dvb',256,'tv_types','1,150,134,133'),('dvb',257,'tv_types','1,150,134,133'),('dvb',4100,'sdt_mapping','1'),('dvb',4101,'sdt_mapping','1'),('dvb',4102,'sdt_mapping','1'),('dvb',4103,'sdt_mapping','1'),('dvb',4104,'sdt_mapping','1'),('dvb',4105,'sdt_mapping','1'),('dvb',4106,'sdt_mapping','1'),('dvb',4107,'sdt_mapping','1'),('dvb',4097,'sdt_mapping','1'),('dvb',4098,'sdt_mapping','1'),('dvb',4100,'tv_types','1,145,154'),('dvb',4101,'tv_types','1,145,154'),('dvb',4102,'tv_types','1,145,154'),('dvb',4103,'tv_types','1,145,154'),('dvb',4104,'tv_types','1,145,154'),('dvb',4105,'tv_types','1,145,154'),('dvb',4106,'tv_types','1,145,154'),('dvb',4107,'tv_types','1,145,154'),('dvb',4097,'tv_types','1,145,154'),('dvb',4098,'tv_types','1,145,154'),('dvb',4100,'guide_fixup','1'),('dvb',4101,'guide_fixup','1'),('dvb',4102,'guide_fixup','1'),('dvb',4103,'guide_fixup','1'),('dvb',4104,'guide_fixup','1'),('dvb',4105,'guide_fixup','1'),('dvb',4106,'guide_fixup','1'),('dvb',4107,'guide_fixup','1'),('dvb',4096,'guide_fixup','5'),('dvb',4097,'guide_fixup','1'),('dvb',4098,'guide_fixup','1'),('dvb',94,'tv_types','1,128'),('atsc',1793,'guide_fixup','3'),('dvb',40999,'guide_fixup','4'),('dvb',70,'force_guide_present','yes'),('dvb',70,'guide_ranges','80,80,96,96'),('dvb',4112,'channel_numbers','131'),('dvb',4115,'channel_numbers','131'),('dvb',4116,'channel_numbers','131'),('dvb',12802,'channel_numbers','131'),('dvb',12803,'channel_numbers','131'),('dvb',12829,'channel_numbers','131'),('dvb',40999,'parse_subtitle_list','1070,1308,1041,1306,1307,1030,1016,1131,1068,1069'),('dvb',4096,'guide_fixup','5');
 /*!40000 ALTER TABLE `dtv_privatetypes` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -622,6 +598,7 @@ CREATE TABLE `dvdbookmark` (
   `subtitlenum` tinyint(4) NOT NULL DEFAULT '-1',
   `framenum` bigint(20) NOT NULL DEFAULT '0',
   `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `dvdstate` varchar(1024) NOT NULL DEFAULT '',
   PRIMARY KEY (`serialid`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
@@ -661,7 +638,7 @@ CREATE TABLE `dvdinput` (
 
 LOCK TABLES `dvdinput` WRITE;
 /*!40000 ALTER TABLE `dvdinput` DISABLE KEYS */;
-INSERT INTO `dvdinput` (`intid`, `hsize`, `vsize`, `ar_num`, `ar_denom`, `fr_code`, `letterbox`, `v_format`) VALUES (1,720,480,16,9,1,1,'ntsc'),(2,720,480,16,9,1,0,'ntsc'),(3,720,480,4,3,1,1,'ntsc'),(4,720,480,4,3,1,0,'ntsc'),(5,720,576,16,9,3,1,'pal'),(6,720,576,16,9,3,0,'pal'),(7,720,576,4,3,3,1,'pal'),(8,720,576,4,3,3,0,'pal');
+INSERT INTO `dvdinput` VALUES (1,720,480,16,9,1,1,'ntsc'),(2,720,480,16,9,1,0,'ntsc'),(3,720,480,4,3,1,1,'ntsc'),(4,720,480,4,3,1,0,'ntsc'),(5,720,576,16,9,3,1,'pal'),(6,720,576,16,9,3,0,'pal'),(7,720,576,4,3,3,1,'pal'),(8,720,576,4,3,3,0,'pal');
 /*!40000 ALTER TABLE `dvdinput` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -709,7 +686,7 @@ CREATE TABLE `dvdtranscode` (
 
 LOCK TABLES `dvdtranscode` WRITE;
 /*!40000 ALTER TABLE `dvdtranscode` DISABLE KEYS */;
-INSERT INTO `dvdtranscode` (`intid`, `input`, `name`, `sync_mode`, `use_yv12`, `cliptop`, `clipbottom`, `clipleft`, `clipright`, `f_resize_h`, `f_resize_w`, `hq_resize_h`, `hq_resize_w`, `grow_h`, `grow_w`, `clip2top`, `clip2bottom`, `clip2left`, `clip2right`, `codec`, `codec_param`, `bitrate`, `a_sample_r`, `a_bitrate`, `two_pass`, `tc_param`) VALUES (1,1,'Good',2,1,16,16,0,0,2,0,0,0,0,0,32,32,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(2,2,'Excellent',2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(3,2,'Good',2,1,0,0,8,8,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(4,2,'Medium',2,1,0,0,8,8,5,5,0,0,0,0,0,0,0,0,'divx5',NULL,1200,NULL,NULL,0,NULL),(5,3,'Good',2,1,0,0,0,0,0,0,0,0,2,0,80,80,8,8,'divx5',NULL,0,NULL,NULL,0,NULL),(6,4,'Excellent',2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(7,4,'Good',2,1,0,0,8,8,0,2,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(8,5,'Good',1,1,16,16,0,0,5,0,0,0,0,0,40,40,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(9,6,'Good',1,1,0,0,16,16,5,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(10,7,'Good',1,1,0,0,0,0,1,0,0,0,0,0,76,76,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(11,8,'Good',1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);
+INSERT INTO `dvdtranscode` VALUES (1,1,'Good',2,1,16,16,0,0,2,0,0,0,0,0,32,32,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(2,2,'Excellent',2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(3,2,'Good',2,1,0,0,8,8,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(4,2,'Medium',2,1,0,0,8,8,5,5,0,0,0,0,0,0,0,0,'divx5',NULL,1200,NULL,NULL,0,NULL),(5,3,'Good',2,1,0,0,0,0,0,0,0,0,2,0,80,80,8,8,'divx5',NULL,0,NULL,NULL,0,NULL),(6,4,'Excellent',2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(7,4,'Good',2,1,0,0,8,8,0,2,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(8,5,'Good',1,1,16,16,0,0,5,0,0,0,0,0,40,40,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(9,6,'Good',1,1,0,0,16,16,5,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(10,7,'Good',1,1,0,0,0,0,1,0,0,0,0,0,76,76,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(11,8,'Good',1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);
 /*!40000 ALTER TABLE `dvdtranscode` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -773,9 +750,10 @@ DROP TABLE IF EXISTS `housekeeping`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `housekeeping` (
-  `tag` varchar(64) NOT NULL DEFAULT '',
+  `tag` varchar(64) NOT NULL,
+  `hostname` varchar(64) DEFAULT NULL,
   `lastrun` datetime DEFAULT NULL,
-  PRIMARY KEY (`tag`)
+  UNIQUE KEY `task` (`tag`,`hostname`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
@@ -785,6 +763,7 @@ CREATE TABLE `housekeeping` (
 
 LOCK TABLES `housekeeping` WRITE;
 /*!40000 ALTER TABLE `housekeeping` DISABLE KEYS */;
+INSERT INTO `housekeeping` VALUES ('BackupDB',NULL,'2013-11-25 09:32:43');
 /*!40000 ALTER TABLE `housekeeping` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -922,6 +901,32 @@ LOCK TABLES `inuseprograms` WRITE;
 UNLOCK TABLES;
 
 --
+-- Table structure for table `iptv_channel`
+--
+
+DROP TABLE IF EXISTS `iptv_channel`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `iptv_channel` (
+  `iptvid` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
+  `chanid` int(10) unsigned NOT NULL,
+  `url` text NOT NULL,
+  `type` set('data','rfc2733-1','rfc2733-2','rfc5109-1','rfc5109-2','smpte2022-1','smpte2022-2') DEFAULT NULL,
+  `bitrate` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`iptvid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `iptv_channel`
+--
+
+LOCK TABLES `iptv_channel` WRITE;
+/*!40000 ALTER TABLE `iptv_channel` DISABLE KEYS */;
+/*!40000 ALTER TABLE `iptv_channel` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
 -- Table structure for table `jobqueue`
 --
 
@@ -1004,7 +1009,7 @@ CREATE TABLE `keybindings` (
 
 LOCK TABLES `keybindings` WRITE;
 /*!40000 ALTER TABLE `keybindings` DISABLE KEYS */;
-INSERT INTO `keybindings` (`context`, `action`, `description`, `keylist`, `hostname`) VALUES ('Global','UP','Up Arrow','Up','apheleia'),('Global','DOWN','Down Arrow','Down','apheleia'),('Global','LEFT','Left Arrow','Left','apheleia'),('Global','RIGHT','Right Arrow','Right','apheleia'),('Global','NEXT','Move to next widget','Tab','apheleia'),('Global','PREVIOUS','Move to preview widget','Backtab','apheleia'),('Global','SELECT','Select','Return,Enter,Space','apheleia'),('Global','BACKSPACE','Backspace','Backspace','apheleia'),('Global','ESCAPE','Escape','Esc','apheleia'),('Global','MENU','Pop-up menu','M','apheleia'),('Global','INFO','More information','I','apheleia'),('Global','DELETE','Delete','D','apheleia'),('Global','EDIT','Edit','E','apheleia'),('Global','SCREENSHOT','Save screenshot','','apheleia'),('Global','HANDLEMEDIA','Play a media resource','','apheleia'),('Global','PAGEUP','Page Up','PgUp','apheleia'),('Global','PAGEDOWN','Page Down','PgDown','apheleia'),('Global','PAGETOP','Page to top of list','','apheleia'),('Global','PAGEMIDDLE','Page to middle of list','','apheleia'),('Global','PAGEBOTTOM','Page to bottom of list','','apheleia'),('Global','PREVVIEW','Previous View','Home','apheleia'),('Global','NEXTVIEW','Next View','End','apheleia'),('Global','HELP','Help','F1','apheleia'),('Global','EJECT','Eject Removable Media','','apheleia'),('Global','CUT','Cut text from textedit','Ctrl+X','apheleia'),('Global','COPY','Copy text from textedit','Ctrl+C','apheleia'),('Global','PASTE','Paste text into textedit','Ctrl+V','apheleia'),('Global','UNDO','Undo','Ctrl+Z','apheleia'),('Global','REDO','Redo','Ctrl+Y','apheleia'),('Global','SEARCH','Show incremental search dialog','Ctrl+S','apheleia'),('Global','0','0','0','apheleia'),('Global','1','1','1','apheleia'),('Global','2','2','2','apheleia'),('Global','3','3','3','apheleia'),('Global','4','4','4','apheleia'),('Global','5','5','5','apheleia'),('Global','6','6','6','apheleia'),('Global','7','7','7','apheleia'),('Global','8','8','8','apheleia'),('Global','9','9','9','apheleia'),('Global','TVPOWERON','Turn the display on','','apheleia'),('Global','TVPOWEROFF','Turn the display off','','apheleia'),('Global','SYSEVENT01','Trigger System Key Event #1','','apheleia'),('Global','SYSEVENT02','Trigger System Key Event #2','','apheleia'),('Global','SYSEVENT03','Trigger System Key Event #3','','apheleia'),('Global','SYSEVENT04','Trigger System Key Event #4','','apheleia'),('Global','SYSEVENT05','Trigger System Key Event #5','','apheleia'),('Global','SYSEVENT06','Trigger System Key Event #6','','apheleia'),('Global','SYSEVENT07','Trigger System Key Event #7','','apheleia'),('Global','SYSEVENT08','Trigger System Key Event #8','','apheleia'),('Global','SYSEVENT09','Trigger System Key Event #9','','apheleia'),('Global','SYSEVENT10','Trigger System Key Event #10','','apheleia'),('Browser','ZOOMIN','Zoom in on browser window','.,>','apheleia'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','apheleia'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','apheleia'),('Browser','MOUSEUP','Move mouse pointer up','2','apheleia'),('Browser','MOUSEDOWN','Move mouse pointer down','8','apheleia'),('Browser','MOUSELEFT','Move mouse pointer left','4','apheleia'),('Browser','MOUSERIGHT','Move mouse pointer right','6','apheleia'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','apheleia'),('Browser','PAGEDOWN','Scroll down half a page','9','apheleia'),('Browser','PAGEUP','Scroll up half a page','3','apheleia'),('Browser','PAGELEFT','Scroll left half a page','7','apheleia'),('Browser','PAGERIGHT','Scroll right half a page','1','apheleia'),('Browser','NEXTLINK','Move selection to next link','Z','apheleia'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','apheleia'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','apheleia'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','apheleia'),('Browser','HISTORYFORWARD','Go forward to previous page','F','apheleia'),('Main Menu','EXITPROMPT','Display System Exit Prompt','Esc','apheleia'),('Main Menu','EXIT','System Exit','','apheleia');
+INSERT INTO `keybindings` VALUES ('Global','UP','Up Arrow','Up','apheleia'),('Global','DOWN','Down Arrow','Down','apheleia'),('Global','LEFT','Left Arrow','Left','apheleia'),('Global','RIGHT','Right Arrow','Right','apheleia'),('Global','NEXT','Move to next widget','Tab','apheleia'),('Global','PREVIOUS','Move to preview widget','Backtab','apheleia'),('Global','SELECT','Select','Return,Enter,Space','apheleia'),('Global','BACKSPACE','Backspace','Backspace','apheleia'),('Global','ESCAPE','Escape','Esc','apheleia'),('Global','MENU','Pop-up menu','M','apheleia'),('Global','INFO','More information','I','apheleia'),('Global','DELETE','Delete','D','apheleia'),('Global','EDIT','Edit','E','apheleia'),('Global','SCREENSHOT','Save screenshot','','apheleia'),('Global','HANDLEMEDIA','Play a media resource','','apheleia'),('Global','PAGEUP','Page Up','PgUp','apheleia'),('Global','PAGEDOWN','Page Down','PgDown','apheleia'),('Global','PAGETOP','Page to top of list','','apheleia'),('Global','PAGEMIDDLE','Page to middle of list','','apheleia'),('Global','PAGEBOTTOM','Page to bottom of list','','apheleia'),('Global','PREVVIEW','Previous View','Home','apheleia'),('Global','NEXTVIEW','Next View','End','apheleia'),('Global','HELP','Help','F1','apheleia'),('Global','EJECT','Eject Removable Media','','apheleia'),('Global','CUT','Cut text from textedit','Ctrl+X','apheleia'),('Global','COPY','Copy text from textedit','Ctrl+C','apheleia'),('Global','PASTE','Paste text into textedit','Ctrl+V','apheleia'),('Global','NEWLINE','Insert newline into textedit','Ctrl+Return','apheleia'),('Global','UNDO','Undo','Ctrl+Z','apheleia'),('Global','REDO','Redo','Ctrl+Y','apheleia'),('Global','SEARCH','Show incremental search dialog','Ctrl+S','apheleia'),('Global','0','0','0','apheleia'),('Global','1','1','1','apheleia'),('Global','2','2','2','apheleia'),('Global','3','3','3','apheleia'),('Global','4','4','4','apheleia'),('Global','5','5','5','apheleia'),('Global','6','6','6','apheleia'),('Global','7','7','7','apheleia'),('Global','8','8','8','apheleia'),('Global','9','9','9','apheleia'),('Global','TVPOWERON','Turn the display on','','apheleia'),('Global','TVPOWEROFF','Turn the display off','','apheleia'),('Global','SYSEVENT01','Trigger System Key Event #1','','apheleia'),('Global','SYSEVENT02','Trigger System Key Event #2','','apheleia'),('Global','SYSEVENT03','Trigger System Key Event #3','','apheleia'),('Global','SYSEVENT04','Trigger System Key Event #4','','apheleia'),('Global','SYSEVENT05','Trigger System Key Event #5','','apheleia'),('Global','SYSEVENT06','Trigger System Key Event #6','','apheleia'),('Global','SYSEVENT07','Trigger System Key Event #7','','apheleia'),('Global','SYSEVENT08','Trigger System Key Event #8','','apheleia'),('Global','SYSEVENT09','Trigger System Key Event #9','','apheleia'),('Global','SYSEVENT10','Trigger System Key Event #10','','apheleia'),('Browser','ZOOMIN','Zoom in on browser window','.,>','apheleia'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','apheleia'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','apheleia'),('Browser','MOUSEUP','Move mouse pointer up','2','apheleia'),('Browser','MOUSEDOWN','Move mouse pointer down','8','apheleia'),('Browser','MOUSELEFT','Move mouse pointer left','4','apheleia'),('Browser','MOUSERIGHT','Move mouse pointer right','6','apheleia'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','apheleia'),('Browser','PAGEDOWN','Scroll down half a page','9','apheleia'),('Browser','PAGEUP','Scroll up half a page','3','apheleia'),('Browser','PAGELEFT','Scroll left half a page','7','apheleia'),('Browser','PAGERIGHT','Scroll right half a page','1','apheleia'),('Browser','NEXTLINK','Move selection to next link','Z','apheleia'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','apheleia'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','apheleia'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','apheleia'),('Browser','HISTORYFORWARD','Go forward to previous page','F','apheleia'),('Main Menu','EXITPROMPT','Display System Exit Prompt','Esc','apheleia'),('Main Menu','EXIT','System Exit','','apheleia');
 /*!40000 ALTER TABLE `keybindings` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1101,7 +1106,7 @@ CREATE TABLE `logging` (
   KEY `host` (`host`,`application`,`pid`,`msgtime`),
   KEY `msgtime` (`msgtime`),
   KEY `level` (`level`)
-) ENGINE=MyISAM AUTO_INCREMENT=61 DEFAULT CHARSET=utf8;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1110,7 +1115,6 @@ CREATE TABLE `logging` (
 
 LOCK TABLES `logging` WRITE;
 /*!40000 ALTER TABLE `logging` DISABLE KEYS */;
-INSERT INTO `logging` (`id`, `host`, `application`, `pid`, `tid`, `thread`, `filename`, `line`, `function`, `msgtime`, `level`, `message`) VALUES (1,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcommandlineparser.cpp',2534,'ConfigureLogging','2012-08-22 15:20:42',2,'mythtv-setup version: fixes/0.25 [v0.25.2-15-g46cab93] www.mythtv.org'),(2,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcommandlineparser.cpp',2536,'ConfigureLogging','2012-08-22 15:20:42',2,'Qt version: compile: 4.8.2, runtime: 4.8.2'),(3,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcommandlineparser.cpp',2538,'ConfigureLogging','2012-08-22 15:20:42',5,'Enabled verbose msgs:  general'),(4,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',1176,'logStart','2012-08-22 15:20:42',5,'Setting Log Level to LOG_INFO'),(5,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',229,'FileLogger','2012-08-22 15:20:42',6,'Added logging to the console'),(6,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',425,'DatabaseLogger','2012-08-22 15:20:42',6,'Added database logging to table logging'),(7,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',1215,'logStart','2012-08-22 15:20:42',5,'Setting up SIGHUP handler'),(8,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythdirs.cpp',51,'InitializeMythDirs','2012-08-22 15:20:42',5,'Using runtime prefix = /usr'),(9,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythdirs.cpp',64,'InitializeMythDirs','2012-08-22 15:20:42',5,'Using configuration directory = /root/.mythtv'),(10,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcorecontext.cpp',227,'Init','2012-08-22 15:20:42',6,'Assumed character encoding: en_US.UTF-8'),(11,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythdb.cpp',866,'LoadDatabaseParamsFromDisk','2012-08-22 15:20:42',3,'Unable to read configuration file mysql.txt'),(12,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcontext.cpp',477,'LoadDatabaseSettings','2012-08-22 15:20:42',5,'Empty LocalHostName.'),(13,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcontext.cpp',481,'LoadDatabaseSettings','2012-08-22 15:20:42',6,'Using localhost value of apheleia'),(14,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcorecontext.cpp',1354,'InitLocale','2012-08-22 15:20:42',5,'Setting QT default locale to en_US'),(15,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcorecontext.cpp',1387,'SaveLocaleDefaults','2012-08-22 15:20:42',6,'Current locale en_US'),(16,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythlocale.cpp',121,'LoadDefaultsFromXML','2012-08-22 15:20:42',5,'Reading locale defaults from /usr/share/mythtv//locales/en_us.xml'),(17,'apheleia','mythtv-setup',1971,1978,'SystemIOHandlerW','system-unix.cpp',90,'run','2012-08-22 15:20:42',6,'Starting IO manager (write)'),(18,'apheleia','mythtv-setup',1971,1977,'SystemIOHandlerR','system-unix.cpp',90,'run','2012-08-22 15:20:42',6,'Starting IO manager (read)'),(19,'apheleia','mythtv-setup',1971,1976,'SystemSignalManager','system-unix.cpp',485,'run','2012-08-22 15:20:42',6,'Starting process signal handler'),(20,'apheleia','mythtv-setup',1971,1975,'SystemManager','system-unix.cpp',263,'run','2012-08-22 15:20:42',6,'Starting process manager'),(21,'apheleia','mythtv-setup',1971,1971,'CoreContext','screensaver-x11.cpp',82,'ScreenSaverX11Private','2012-08-22 15:20:42',6,'ScreenSaverX11Private: DPMS is disabled.'),(22,'apheleia','mythtv-setup',1971,1971,'CoreContext','DisplayRes.cpp',64,'Initialize','2012-08-22 15:20:42',5,'Desktop video mode: 800x600 60.000 Hz'),(23,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythtranslation.cpp',66,'load','2012-08-22 15:20:42',6,'Loading en_us translation for module mythfrontend'),(24,'apheleia','mythtv-setup',1971,1971,'CoreContext','lirc.cpp',208,'Init','2012-08-22 15:20:42',3,'LIRC: Failed to connect to Unix socket \'/var/run/lirc/lircd\'\n			eno: No such file or directory (2)'),(25,'apheleia','mythtv-setup',1971,1971,'CoreContext','jsmenu.cpp',91,'Init','2012-08-22 15:20:42',3,'JoystickMenuThread: Joystick disabled - Failed to read /root/.mythtv/joystickmenurc'),(26,'apheleia','mythtv-setup',1971,1971,'CoreContext','cecadapter.cpp',146,'Open','2012-08-22 15:20:42',3,'CECAdapter: Failed to find any CEC devices.'),(27,'apheleia','mythtv-setup',1971,1971,'CoreContext','cecadapter.cpp',216,'Close','2012-08-22 15:20:42',6,'CECAdapter: Closing down CEC.'),(28,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP 127.0.0.1:0'),(29,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP 192.168.1.244:0'),(30,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP [::1]:0'),(31,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP [fe80::20c:29ff:feb1:f445%eth0]:0'),(32,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP 192.168.1.255:0'),(33,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythmainwindow.cpp',948,'Init','2012-08-22 15:20:42',6,'Using Frameless Window'),(34,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythmainwindow.cpp',961,'Init','2012-08-22 15:20:42',6,'Using Full Screen Window'),(35,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythmainwindow.cpp',1051,'Init','2012-08-22 15:20:42',6,'Using the Qt painter'),(36,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 6\n			Name: \'basesmall\'	Type: \'fontdef\''),(37,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 11\n			Name: \'basemedium\'	Type: \'fontdef\''),(38,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 15\n			Name: \'baselarge\'	Type: \'fontdef\''),(39,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 19\n			Name: \'baseextralarge\'	Type: \'fontdef\''),(40,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 28\n			Name: \'basesmallbrown\'	Type: \'fontdef\''),(41,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 32\n			Name: \'basesmallgrey\'	Type: \'fontdef\''),(42,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 36\n			Name: \'basesmallpurple\'	Type: \'fontdef\''),(43,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 40\n			Name: \'basesmallblack\'	Type: \'fontdef\''),(44,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 44\n			Name: \'basesmallyellow\'	Type: \'fontdef\''),(45,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 48\n			Name: \'basesmallgreen\'	Type: \'fontdef\''),(46,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 52\n			Name: \'basesmallblue\'	Type: \'fontdef\''),(47,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 56\n			Name: \'basesmallred\'	Type: \'fontdef\''),(48,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 60\n			Name: \'basemediumgrey\'	Type: \'fontdef\''),(49,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 64\n			Name: \'basemediumgreen\'	Type: \'fontdef\''),(50,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 68\n			Name: \'basemediumred\'	Type: \'fontdef\''),(51,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 72\n			Name: \'basemediumpurple\'	Type: \'fontdef\''),(52,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 76\n			Name: \'basemediumbrown\'	Type: \'fontdef\''),(53,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 80\n			Name: \'baselargebrown\'	Type: \'fontdef\''),(54,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 666\n			Name: \'datefont\'	Type: \'fontdef\''),(55,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 670\n			Name: \'timefont\'	Type: \'fontdef\''),(56,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/default/base.xml @ 11\n			Name: \'basetiny\'	Type: \'fontdef\''),(57,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/default/base.xml @ 36\n			Name: \'basetinyred\'	Type: \'fontdef\''),(58,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/default/base.xml @ 80\n			Name: \'basemediumyellow\'	Type: \'fontdef\''),(59,'apheleia','mythtv-setup',1971,1971,'CoreContext','schemawizard.cpp',117,'Compare','2012-08-22 15:20:42',6,'Current MythTV Schema Version (DBSchemaVer): 1299'),(60,'apheleia','mythtv-setup',1971,1971,'CoreContext','checksetup.cpp',68,'checkStoragePaths','2012-08-22 15:21:00',3,'No Storage Group directories are defined.  You must add at least one directory to the Default Storage Group where new recordings will be stored.');
 /*!40000 ALTER TABLE `logging` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1145,31 +1149,6 @@ LOCK TABLES `mythlog` WRITE;
 UNLOCK TABLES;
 
 --
--- Table structure for table `networkiconmap`
---
-
-DROP TABLE IF EXISTS `networkiconmap`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `networkiconmap` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `network` varchar(20) NOT NULL DEFAULT '',
-  `url` varchar(255) NOT NULL DEFAULT '',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `network` (`network`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `networkiconmap`
---
-
-LOCK TABLES `networkiconmap` WRITE;
-/*!40000 ALTER TABLE `networkiconmap` DISABLE KEYS */;
-/*!40000 ALTER TABLE `networkiconmap` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
 -- Table structure for table `oldfind`
 --
 
@@ -1232,8 +1211,8 @@ CREATE TABLE `oldrecorded` (
   `season` smallint(5) NOT NULL,
   `episode` smallint(5) NOT NULL,
   `category` varchar(64) NOT NULL DEFAULT '',
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
+  `seriesid` varchar(64) DEFAULT NULL,
+  `programid` varchar(64) DEFAULT NULL,
   `inetref` varchar(40) NOT NULL,
   `findid` int(11) NOT NULL DEFAULT '0',
   `recordid` int(11) NOT NULL DEFAULT '0',
@@ -1340,7 +1319,7 @@ CREATE TABLE `playgroup` (
 
 LOCK TABLES `playgroup` WRITE;
 /*!40000 ALTER TABLE `playgroup` DISABLE KEYS */;
-INSERT INTO `playgroup` (`name`, `titlematch`, `skipahead`, `skipback`, `timestretch`, `jump`) VALUES ('Default','',30,5,100,0);
+INSERT INTO `playgroup` VALUES ('Default','',30,5,100,0);
 /*!40000 ALTER TABLE `playgroup` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1393,7 +1372,7 @@ CREATE TABLE `profilegroups` (
 
 LOCK TABLES `profilegroups` WRITE;
 /*!40000 ALTER TABLE `profilegroups` DISABLE KEYS */;
-INSERT INTO `profilegroups` (`id`, `name`, `cardtype`, `is_default`, `hostname`) VALUES (1,'Software Encoders (v4l based)','V4L',1,NULL),(2,'IVTV MPEG-2 Encoders','MPEG',1,NULL),(3,'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)','MJPEG',1,NULL),(4,'Hardware HDTV','HDTV',1,NULL),(5,'Hardware DVB Encoders','DVB',1,NULL),(6,'Transcoders','TRANSCODE',1,NULL),(7,'FireWire Input','FIREWIRE',1,NULL),(8,'USB Mpeg-4 Encoder (Plextor ConvertX, etc)','GO7007',1,NULL),(14,'Import Recorder','IMPORT',1,NULL),(10,'Freebox Input','Freebox',1,NULL),(11,'HDHomeRun Recorders','HDHOMERUN',1,NULL),(12,'CRC IP Recorders','CRC_IP',1,NULL),(13,'HD-PVR Recorders','HDPVR',1,NULL),(15,'ASI Recorder (DVEO)','ASI',1,NULL),(16,'OCUR Recorder (CableLabs)','OCUR',1,NULL),(17,'Ceton Recorder','CETON',1,NULL);
+INSERT INTO `profilegroups` VALUES (1,'Software Encoders (v4l based)','V4L',1,NULL),(2,'IVTV MPEG-2 Encoders','MPEG',1,NULL),(3,'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)','MJPEG',1,NULL),(4,'Hardware HDTV','HDTV',1,NULL),(5,'Hardware DVB Encoders','DVB',1,NULL),(6,'Transcoders','TRANSCODE',1,NULL),(7,'FireWire Input','FIREWIRE',1,NULL),(8,'USB Mpeg-4 Encoder (Plextor ConvertX, etc)','GO7007',1,NULL),(14,'Import Recorder','IMPORT',1,NULL),(10,'Freebox Input','Freebox',1,NULL),(11,'HDHomeRun Recorders','HDHOMERUN',1,NULL),(12,'CRC IP Recorders','CRC_IP',1,NULL),(13,'HD-PVR Recorders','HDPVR',1,NULL),(15,'ASI Recorder (DVEO)','ASI',1,NULL),(16,'OCUR Recorder (CableLabs)','OCUR',1,NULL),(17,'Ceton Recorder','CETON',1,NULL);
 /*!40000 ALTER TABLE `profilegroups` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1439,7 +1418,6 @@ CREATE TABLE `program` (
   `videoprop` set('HDTV','WIDESCREEN','AVC') NOT NULL,
   PRIMARY KEY (`chanid`,`starttime`,`manualid`),
   KEY `endtime` (`endtime`),
-  KEY `title` (`title`),
   KEY `title_pronounce` (`title_pronounce`),
   KEY `seriesid` (`seriesid`),
   KEY `id_start_end` (`chanid`,`starttime`,`endtime`),
@@ -1448,7 +1426,8 @@ CREATE TABLE `program` (
   KEY `programid` (`programid`,`starttime`),
   KEY `starttime` (`starttime`),
   KEY `subtitle` (`subtitle`),
-  KEY `description` (`description`(255))
+  KEY `description` (`description`(255)),
+  KEY `title_subtitle_start` (`title`,`subtitle`,`starttime`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
@@ -1568,8 +1547,8 @@ CREATE TABLE `record` (
   `dupmethod` int(11) NOT NULL DEFAULT '6',
   `dupin` int(11) NOT NULL DEFAULT '15',
   `station` varchar(20) NOT NULL DEFAULT '',
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
+  `seriesid` varchar(64) DEFAULT NULL,
+  `programid` varchar(64) DEFAULT NULL,
   `inetref` varchar(40) NOT NULL,
   `search` int(10) unsigned NOT NULL DEFAULT '0',
   `autotranscode` tinyint(1) NOT NULL DEFAULT '0',
@@ -1601,7 +1580,7 @@ CREATE TABLE `record` (
   KEY `maxepisodes` (`maxepisodes`),
   KEY `search` (`search`),
   KEY `type` (`type`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1610,6 +1589,7 @@ CREATE TABLE `record` (
 
 LOCK TABLES `record` WRITE;
 /*!40000 ALTER TABLE `record` DISABLE KEYS */;
+INSERT INTO `record` VALUES (1,11,0,'21:57:44','2012-08-11','21:57:44','2012-08-11','Default (Template)','','',0,0,'Default','Default',0,0,0,0,0,0,'Default',6,15,'','','','',0,0,1,0,0,0,0,1,-1,'00:00:00',735091,0,0,0,'Default',0,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','Default',100,0);
 /*!40000 ALTER TABLE `record` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1638,8 +1618,8 @@ CREATE TABLE `recorded` (
   `commflagged` int(10) unsigned NOT NULL DEFAULT '0',
   `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
   `recordid` int(11) DEFAULT NULL,
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
+  `seriesid` varchar(64) DEFAULT NULL,
+  `programid` varchar(64) DEFAULT NULL,
   `inetref` varchar(40) NOT NULL,
   `lastmodified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   `filesize` bigint(20) NOT NULL DEFAULT '0',
@@ -1826,12 +1806,12 @@ CREATE TABLE `recordedprogram` (
   `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
   `partnumber` int(11) NOT NULL DEFAULT '0',
   `parttotal` int(11) NOT NULL DEFAULT '0',
-  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `seriesid` varchar(64) DEFAULT NULL,
   `originalairdate` date DEFAULT NULL,
   `showtype` varchar(30) NOT NULL DEFAULT '',
   `colorcode` varchar(20) NOT NULL DEFAULT '',
   `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
-  `programid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(64) DEFAULT NULL,
   `manualid` int(10) unsigned NOT NULL DEFAULT '0',
   `generic` tinyint(1) DEFAULT '0',
   `listingsource` int(11) NOT NULL DEFAULT '0',
@@ -1933,7 +1913,7 @@ CREATE TABLE `recordfilter` (
 
 LOCK TABLES `recordfilter` WRITE;
 /*!40000 ALTER TABLE `recordfilter` DISABLE KEYS */;
-INSERT INTO `recordfilter` (`filterid`, `description`, `clause`, `newruledefault`) VALUES (0,'New episode','program.previouslyshown = 0',0),(1,'Identifiable episode','program.generic = 0',0),(2,'First showing','program.first > 0',0),(3,'Prime time','HOUR(program.starttime) >= 19 AND HOUR(program.starttime) < 23',0),(4,'Commercial free','channel.commmethod = -2',0),(5,'High definition','program.hdtv > 0',0),(6,'This episode','(RECTABLE.programid <> \'\' AND program.programid = RECTABLE.programid) OR (RECTABLE.programid = \'\' AND program.subtitle = RECTABLE.subtitle AND program.description = RECTABLE.description)',0),(7,'This series','(RECTABLE.seriesid <> \'\' AND program.seriesid = RECTABLE.seriesid)',0);
+INSERT INTO `recordfilter` VALUES (0,'New episode','program.previouslyshown = 0',0),(1,'Identifiable episode','program.generic = 0',0),(2,'First showing','program.first > 0',0),(3,'Prime time','HOUR(CONVERT_TZ(program.starttime, \'Etc/UTC\', \'SYSTEM\')) >= 19 AND HOUR(CONVERT_TZ(program.starttime, \'Etc/UTC\', \'SYSTEM\')) < 22',0),(4,'Commercial free','channel.commmethod = -2',0),(5,'High definition','program.hdtv > 0',0),(6,'This episode','(RECTABLE.programid <> \'\' AND program.programid = RECTABLE.programid) OR (RECTABLE.programid = \'\' AND program.subtitle = RECTABLE.subtitle AND program.description = RECTABLE.description)',0),(7,'This series','(RECTABLE.seriesid <> \'\' AND program.seriesid = RECTABLE.seriesid)',0),(8,'This time','ABS(TIMESTAMPDIFF(MINUTE, CONVERT_TZ(  ADDTIME(RECTABLE.startdate, RECTABLE.starttime), \'Etc/UTC\', \'SYSTEM\'),   CONVERT_TZ(program.starttime, \'Etc/UTC\', \'SYSTEM\'))) MOD 1440 <= 10',0),(9,'This day and time','ABS(TIMESTAMPDIFF(MINUTE, CONVERT_TZ(  ADDTIME(RECTABLE.startdate, RECTABLE.starttime), \'Etc/UTC\', \'SYSTEM\'),   CONVERT_TZ(program.starttime, \'Etc/UTC\', \'SYSTEM\'))) MOD 10080 <= 10',0),(10,'This channel','channel.callsign = RECTABLE.station',0);
 /*!40000 ALTER TABLE `recordfilter` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1961,7 +1941,7 @@ CREATE TABLE `recordingprofiles` (
 
 LOCK TABLES `recordingprofiles` WRITE;
 /*!40000 ALTER TABLE `recordingprofiles` DISABLE KEYS */;
-INSERT INTO `recordingprofiles` (`id`, `name`, `videocodec`, `audiocodec`, `profilegroup`) VALUES (1,'Default',NULL,NULL,1),(2,'Live TV',NULL,NULL,1),(3,'High Quality',NULL,NULL,1),(4,'Low Quality',NULL,NULL,1),(5,'Default',NULL,NULL,2),(6,'Live TV',NULL,NULL,2),(7,'High Quality',NULL,NULL,2),(8,'Low Quality',NULL,NULL,2),(9,'Default',NULL,NULL,3),(10,'Live TV',NULL,NULL,3),(11,'High Quality',NULL,NULL,3),(12,'Low Quality',NULL,NULL,3),(13,'Default',NULL,NULL,4),(14,'Live TV',NULL,NULL,4),(15,'High Quality',NULL,NULL,4),(16,'Low Quality',NULL,NULL,4),(17,'Default',NULL,NULL,5),(18,'Live TV',NULL,NULL,5),(19,'High Quality',NULL,NULL,5),(20,'Low Quality',NULL,NULL,5),(21,'RTjpeg/MPEG4',NULL,NULL,6),(22,'MPEG2',NULL,NULL,6),(23,'Default',NULL,NULL,8),(24,'Live TV',NULL,NULL,8),(25,'High Quality',NULL,NULL,8),(26,'Low Quality',NULL,NULL,8),(27,'High Quality',NULL,NULL,6),(28,'Medium Quality',NULL,NULL,6),(29,'Low Quality',NULL,NULL,6),(30,'Default',NULL,NULL,10),(31,'Live TV',NULL,NULL,10),(32,'High Quality',NULL,NULL,10),(33,'Low Quality',NULL,NULL,10),(34,'Default',NULL,NULL,11),(35,'Live TV',NULL,NULL,11),(36,'High Quality',NULL,NULL,11),(37,'Low Quality',NULL,NULL,11),(38,'Default',NULL,NULL,12),(39,'Live TV',NULL,NULL,12),(40,'High Quality',NULL,NULL,12),(41,'Low Quality',NULL,NULL,12),(42,'Default',NULL,NULL,7),(43,'Live TV',NULL,NULL,7),(44,'High Quality',NULL,NULL,7),(45,'Low Quality',NULL,NULL,7),(46,'Default',NULL,NULL,9),(47,'Live TV',NULL,NULL,9),(48,'High Quality',NULL,NULL,9),(49,'Low Quality',NULL,NULL,9),(50,'Default',NULL,NULL,13),(51,'Live TV',NULL,NULL,13),(52,'High Quality',NULL,NULL,13),(53,'Low Quality',NULL,NULL,13),(54,'Default',NULL,NULL,14),(55,'Live TV',NULL,NULL,14),(56,'High Quality',NULL,NULL,14),(57,'Low Quality',NULL,NULL,14),(58,'Default',NULL,NULL,15),(59,'Live TV',NULL,NULL,15),(60,'High Quality',NULL,NULL,15),(61,'Low Quality',NULL,NULL,15),(62,'Default',NULL,NULL,16),(63,'Live TV',NULL,NULL,16),(64,'High Quality',NULL,NULL,16),(65,'Low Quality',NULL,NULL,16),(66,'Default',NULL,NULL,17),(67,'Live TV',NULL,NULL,17),(68,'High Quality',NULL,NULL,17),(69,'Low Quality',NULL,NULL,17);
+INSERT INTO `recordingprofiles` VALUES (1,'Default',NULL,NULL,1),(2,'Live TV',NULL,NULL,1),(3,'High Quality',NULL,NULL,1),(4,'Low Quality',NULL,NULL,1),(5,'Default',NULL,NULL,2),(6,'Live TV',NULL,NULL,2),(7,'High Quality',NULL,NULL,2),(8,'Low Quality',NULL,NULL,2),(9,'Default',NULL,NULL,3),(10,'Live TV',NULL,NULL,3),(11,'High Quality',NULL,NULL,3),(12,'Low Quality',NULL,NULL,3),(13,'Default',NULL,NULL,4),(14,'Live TV',NULL,NULL,4),(15,'High Quality',NULL,NULL,4),(16,'Low Quality',NULL,NULL,4),(17,'Default',NULL,NULL,5),(18,'Live TV',NULL,NULL,5),(19,'High Quality',NULL,NULL,5),(20,'Low Quality',NULL,NULL,5),(21,'RTjpeg/MPEG4',NULL,NULL,6),(22,'MPEG2',NULL,NULL,6),(23,'Default',NULL,NULL,8),(24,'Live TV',NULL,NULL,8),(25,'High Quality',NULL,NULL,8),(26,'Low Quality',NULL,NULL,8),(27,'High Quality',NULL,NULL,6),(28,'Medium Quality',NULL,NULL,6),(29,'Low Quality',NULL,NULL,6),(30,'Default',NULL,NULL,10),(31,'Live TV',NULL,NULL,10),(32,'High Quality',NULL,NULL,10),(33,'Low Quality',NULL,NULL,10),(34,'Default',NULL,NULL,11),(35,'Live TV',NULL,NULL,11),(36,'High Quality',NULL,NULL,11),(37,'Low Quality',NULL,NULL,11),(38,'Default',NULL,NULL,12),(39,'Live TV',NULL,NULL,12),(40,'High Quality',NULL,NULL,12),(41,'Low Quality',NULL,NULL,12),(42,'Default',NULL,NULL,7),(43,'Live TV',NULL,NULL,7),(44,'High Quality',NULL,NULL,7),(45,'Low Quality',NULL,NULL,7),(46,'Default',NULL,NULL,9),(47,'Live TV',NULL,NULL,9),(48,'High Quality',NULL,NULL,9),(49,'Low Quality',NULL,NULL,9),(50,'Default',NULL,NULL,13),(51,'Live TV',NULL,NULL,13),(52,'High Quality',NULL,NULL,13),(53,'Low Quality',NULL,NULL,13),(54,'Default',NULL,NULL,14),(55,'Live TV',NULL,NULL,14),(56,'High Quality',NULL,NULL,14),(57,'Low Quality',NULL,NULL,14),(58,'Default',NULL,NULL,15),(59,'Live TV',NULL,NULL,15),(60,'High Quality',NULL,NULL,15),(61,'Low Quality',NULL,NULL,15),(62,'Default',NULL,NULL,16),(63,'Live TV',NULL,NULL,16),(64,'High Quality',NULL,NULL,16),(65,'Low Quality',NULL,NULL,16),(66,'Default',NULL,NULL,17),(67,'Live TV',NULL,NULL,17),(68,'High Quality',NULL,NULL,17),(69,'Low Quality',NULL,NULL,17);
 /*!40000 ALTER TABLE `recordingprofiles` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1981,8 +1961,10 @@ CREATE TABLE `recordmatch` (
   `recduplicate` tinyint(1) DEFAULT NULL,
   `findduplicate` tinyint(1) DEFAULT NULL,
   `oldrecstatus` int(11) DEFAULT NULL,
+  `findid` int(11) NOT NULL DEFAULT '0',
   UNIQUE KEY `recordid` (`recordid`,`chanid`,`starttime`),
-  KEY `chanid` (`chanid`,`starttime`,`manualid`)
+  KEY `chanid` (`chanid`,`starttime`,`manualid`),
+  KEY `recordid_2` (`recordid`,`findid`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
@@ -1996,24 +1978,54 @@ LOCK TABLES `recordmatch` WRITE;
 UNLOCK TABLES;
 
 --
--- Table structure for table `schemalock`
+-- Table structure for table `scannerfile`
+--
+
+DROP TABLE IF EXISTS `scannerfile`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `scannerfile` (
+  `fileid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `filesize` bigint(20) unsigned NOT NULL DEFAULT '0',
+  `filehash` varchar(64) NOT NULL DEFAULT '',
+  `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`fileid`),
+  UNIQUE KEY `filehash` (`filehash`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `scannerfile`
+--
+
+LOCK TABLES `scannerfile` WRITE;
+/*!40000 ALTER TABLE `scannerfile` DISABLE KEYS */;
+/*!40000 ALTER TABLE `scannerfile` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `scannerpath`
 --
 
-DROP TABLE IF EXISTS `schemalock`;
+DROP TABLE IF EXISTS `scannerpath`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `schemalock` (
-  `schemalock` int(1) DEFAULT NULL
+CREATE TABLE `scannerpath` (
+  `fileid` bigint(20) unsigned NOT NULL,
+  `hostname` varchar(64) NOT NULL DEFAULT 'localhost',
+  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `filename` varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (`fileid`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
--- Dumping data for table `schemalock`
+-- Dumping data for table `scannerpath`
 --
 
-LOCK TABLES `schemalock` WRITE;
-/*!40000 ALTER TABLE `schemalock` DISABLE KEYS */;
-/*!40000 ALTER TABLE `schemalock` ENABLE KEYS */;
+LOCK TABLES `scannerpath` WRITE;
+/*!40000 ALTER TABLE `scannerpath` DISABLE KEYS */;
+/*!40000 ALTER TABLE `scannerpath` ENABLE KEYS */;
 UNLOCK TABLES;
 
 --
@@ -2037,7 +2049,7 @@ CREATE TABLE `settings` (
 
 LOCK TABLES `settings` WRITE;
 /*!40000 ALTER TABLE `settings` DISABLE KEYS */;
-INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1299',NULL),('DefaultTranscoder','0',NULL),('FreqTable','us-bcast',NULL),('ISO639Language0','eng',NULL),('ISO639Language1','eng',NULL),('TVFormat','NTSC',NULL),('VbiFormat','NTSC Closed Caption',NULL),('Country','US','apheleia'),('DateFormat','ddd MMM d yyyy','apheleia'),('Language','en_US','apheleia'),('MythArchiveDateFormat','%a %b %d %Y','apheleia'),('MythArchiveTimeFormat','%I:%M %p','apheleia'),('MythArchiveVideoFormat','NTSC','apheleia'),('ShortDateFormat','M/d','apheleia'),('TimeFormat','h:mm AP','apheleia'),('BackendServerIP','127.0.0.1','apheleia'),('BackendServerIP6','::1','apheleia'),('BackendServerPort','6543','apheleia'),('BackendStatusPort','6544','apheleia'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('TimeOffset','None',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','0',NULL),('TruncateDeletesSlowly','0','apheleia'),('HDRingbufferSize','9400',NULL),('StorageScheduler','BalancedFreeSpace',NULL),('UPnP/WMPSource','0',NULL),('DisableAutomaticBackup','0',NULL),('DisableFirewireReset','0','apheleia'),('EITTransportTimeout','5',NULL),('EITCrawIdleStart','60',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('WOLbackendConnectRetry','5',NULL),('BackendStopCommand','killall mythbackend',NULL),('BackendStartCommand','mythbackend',NULL),('JobQueueMaxSimultaneousJobs','1','apheleia'),('JobQueueCheckFrequency','60','apheleia'),('JobQueueWindowStart','00:00','apheleia'),('JobQueueWindowEnd','23:59','apheleia'),('JobQueueCPU','0','apheleia'),('JobAllowMetadata','1','apheleia'),('JobAllowCommFlag','1','apheleia'),('JobAllowTranscode','1','apheleia'),('JobAllowUserJob1','0','apheleia'),('JobAllowUserJob2','0','apheleia'),('JobAllowUserJob3','0','apheleia'),('JobAllowUserJob4','0','apheleia'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJobDesc2','User Job #2',NULL),('UserJobDesc3','User Job #3',NULL),('UserJobDesc4','User Job #4',NULL),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillMaxHour','23',NULL),('MythFillGrabberSuggestsTime','1',NULL),('WOLbackendReconnectWaitTime','5',NULL);
+INSERT INTO `settings` VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1317',NULL),('DefaultTranscoder','0',NULL),('WebBrowserZoomLevel','1','apheleia'),('Language','en_US',NULL),('Country','US',NULL),('FreqTable','us-bcast',NULL),('ISO639Language0','eng',NULL),('ISO639Language1','eng',NULL),('TVFormat','NTSC',NULL),('VbiFormat','NTSC Closed Caption',NULL),('DateFormat','ddd MMM d yyyy','apheleia'),('MythArchiveDateFormat','%a %b %d %Y','apheleia'),('MythArchiveTimeFormat','%I:%M %p','apheleia'),('MythArchiveVideoFormat','NTSC','apheleia'),('ShortDateFormat','M/d','apheleia'),('TimeFormat','h:mm AP','apheleia'),('BackupDBLastRunStart','2013-11-25 09:32:42',NULL),('BackupDBLastRunEnd','2013-11-25 09:32:43',NULL),('HardwareProfileEnabled','0',NULL),('BackendServerIP','127.0.0.1','apheleia'),('BackendServerIP6','::1','apheleia'),('AllowLinkLocal','1','apheleia'),('BackendServerPort','6543','apheleia'),('BackendStatusPort','6544','apheleia'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','0',NULL),('TruncateDeletesSlowly','0','apheleia'),('HDRingbufferSize','9400',NULL),('StorageScheduler','BalancedFreeSpace',NULL),('UPnP/WMPSource','0',NULL),('DisableAutomaticBackup','0',NULL),('DisableFirewireReset','0','apheleia'),('EITTransportTimeout','5',NULL),('EITCrawIdleStart','60',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('WOLbackendConnectRetry','5',NULL),('BackendStopCommand','killall mythbackend',NULL),('BackendStartCommand','mythbackend',NULL),('JobQueueMaxSimultaneousJobs','1','apheleia'),('JobQueueCheckFrequency','60','apheleia'),('JobQueueWindowStart','00:00','apheleia'),('JobQueueWindowEnd','23:59','apheleia'),('JobQueueCPU','0','apheleia'),('JobAllowMetadata','1','apheleia'),('JobAllowCommFlag','1','apheleia'),('JobAllowTranscode','1','apheleia'),('JobAllowUserJob1','0','apheleia'),('JobAllowUserJob2','0','apheleia'),('JobAllowUserJob3','0','apheleia'),('JobAllowUserJob4','0','apheleia'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJobDesc2','User Job #2',NULL),('UserJobDesc3','User Job #3',NULL),('UserJobDesc4','User Job #4',NULL),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillMaxHour','23',NULL),('MythFillGrabberSuggestsTime','1',NULL);
 /*!40000 ALTER TABLE `settings` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2423,6 +2435,30 @@ LOCK TABLES `videometadatagenre` WRITE;
 UNLOCK TABLES;
 
 --
+-- Table structure for table `videopart`
+--
+
+DROP TABLE IF EXISTS `videopart`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videopart` (
+  `fileid` bigint(20) unsigned NOT NULL,
+  `videoid` int(10) unsigned NOT NULL,
+  `order` smallint(5) unsigned NOT NULL DEFAULT '1',
+  PRIMARY KEY (`videoid`,`order`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videopart`
+--
+
+LOCK TABLES `videopart` WRITE;
+/*!40000 ALTER TABLE `videopart` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videopart` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
 -- Table structure for table `videopathinfo`
 --
 
@@ -2503,7 +2539,7 @@ CREATE TABLE `videotypes` (
 
 LOCK TABLES `videotypes` WRITE;
 /*!40000 ALTER TABLE `videotypes` DISABLE KEYS */;
-INSERT INTO `videotypes` (`intid`, `extension`, `playcommand`, `f_ignore`, `use_default`) VALUES (1,'txt','',1,0),(2,'log','',1,0),(3,'mpg','Internal',0,0),(4,'avi','',0,1),(5,'vob','Internal',0,0),(6,'mpeg','Internal',0,0),(8,'iso','Internal',0,0),(9,'img','Internal',0,0),(10,'mkv','Internal',0,0),(11,'mp4','Internal',0,0),(12,'m2ts','Internal',0,0),(13,'evo','Internal',0,0),(14,'divx','Internal',0,0),(15,'mov','Internal',0,0),(16,'qt','Internal',0,0),(17,'wmv','Internal',0,0),(18,'3gp','Internal',0,0),(19,'asf','Internal',0,0),(20,'ogg','Internal',0,0),(21,'ogm','Internal',0,0),(22,'flv','Internal',0,0),(23,'ogv','Internal',0,0),(25,'nut','Internal',0,0),(26,'mxf','Internal',0,0),(27,'m4v','Internal',0,0),(28,'rm','Internal',0,0),(29,'ts','Internal',0,0),(30,'swf','Internal',0,0),(31,'f4v','Internal',0,0),(32,'nuv','Internal',0,0);
+INSERT INTO `videotypes` VALUES (1,'txt','',1,0),(2,'log','',1,0),(3,'mpg','Internal',0,0),(4,'avi','',0,1),(5,'vob','Internal',0,0),(6,'mpeg','Internal',0,0),(8,'iso','Internal',0,0),(9,'img','Internal',0,0),(10,'mkv','Internal',0,0),(11,'mp4','Internal',0,0),(12,'m2ts','Internal',0,0),(13,'evo','Internal',0,0),(14,'divx','Internal',0,0),(15,'mov','Internal',0,0),(16,'qt','Internal',0,0),(17,'wmv','Internal',0,0),(18,'3gp','Internal',0,0),(19,'asf','Internal',0,0),(20,'ogg','Internal',0,0),(21,'ogm','Internal',0,0),(22,'flv','Internal',0,0),(23,'ogv','Internal',0,0),(25,'nut','Internal',0,0),(26,'mxf','Internal',0,0),(27,'m4v','Internal',0,0),(28,'rm','Internal',0,0),(29,'ts','Internal',0,0),(30,'swf','Internal',0,0),(31,'f4v','Internal',0,0),(32,'nuv','Internal',0,0);
 /*!40000 ALTER TABLE `videotypes` ENABLE KEYS */;
 UNLOCK TABLES;
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@@ -2516,4 +2552,4 @@ UNLOCK TABLES;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2012-08-22 15:37:35
+-- Dump completed on 2013-11-25  9:33:39
-- 
cgit v0.12


From 50febebef4996733d7319593003881ab878b21a0 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 26 Nov 2013 22:05:55 -0600
Subject: mythinstall: recompile, no change

---
 abs/core/mythinstall/PKGBUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index 82ffb3b..6351e4e 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Jams
 pkgname=mythinstall
 pkgver=8.1
-pkgrel=2
+pkgrel=3
 pkgdesc="LinHES installer/systemconfig GUI."
 arch=('i686'  'x86_64')
 depends=('mythtv>=0.27')
-- 
cgit v0.12


From eaf688c196267efe08ce7b39203988275e83e8ba Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 27 Nov 2013 16:34:37 -0600
Subject: func/LinHES-system:  Move msg.cfg from the func package to
 LinHES-system. This was done because msg.cfg is used by msg_daemon which is
 in LinHES-system. msg.cfg is also used by the func module msg.py, but msg.py
 calls msg_client/msg_deamon.

---
 abs/core/LinHES-system/PKGBUILD | 14 +++++++++-----
 abs/core/LinHES-system/msg.cfg  | 23 +++++++++++++++++++++++
 abs/core/func/PKGBUILD          | 34 ++++++++++++++++------------------
 abs/core/func/msg.cfg           | 23 -----------------------
 4 files changed, 48 insertions(+), 46 deletions(-)
 create mode 100644 abs/core/LinHES-system/msg.cfg
 delete mode 100644 abs/core/func/msg.cfg

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index f7e3a55..0a0d5f1 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=3
+pkgrel=4
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -30,7 +30,7 @@ binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh
 source=(LinHES-session LinHES-profile.sh $binfiles
     alsa-base diskspace.cron cacheclean.cron xfs_defrag.cron
     readme_is_xml readme_light add_storage.readme
-    system-sudo.rules )
+    system-sudo.rules msg.cfg)
 
 package() {
     cd $srcdir
@@ -70,6 +70,9 @@ package() {
     chown -R root:root $pkgdir/etc/sudoers.d
     install -o root -g root -m 0750 $srcdir/system-sudo.rules $pkgdir/etc/sudoers.d/system_sudo
 
+    #config file of msg_daemon
+    install -m755 -D $srcdir/msg.cfg $pkgdir/usr/MythVantage/etc/msg.cfg
+
 }
 
 md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
@@ -83,7 +86,7 @@ md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          '542e670e78d117657f93141e9689f54d'
          '8da6a7f1703a002f84e66629e847d8a6'
          'bb72ab230c7a71706285bd0f31a4fb1f'
-         'a8c79014423a95b41908fbe74ba83a6e'
+         '07fc64580cc98aa28561730ac7695eca'
          '962a3e9eaba2d1466251b7ab0956705d'
          '1758aed160de64abfafb28a3a8f3390e'
          '33fbebbd546672cedd3c5e7350ab414e'
@@ -117,7 +120,7 @@ md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          '34fc1f58ad1eabf4eff4979d420760c0'
          'c3ada01d3a739abe3f920b02d4ea3f6e'
          'a94fe6d980f4b810f2e2ae5352084b39'
-         '1c71ff372978159f09342b18954500b3'
+         'f808e8614246913a7f633b51c7169c85'
          '3fc3d584fadd47f82c5cfe8ac0f4322a'
          '503df99218373dfc75e7e7f5e449a44e'
          '4a1fda884dcd7d65fb2690fbdbd92a83'
@@ -132,4 +135,5 @@ md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
          '36bdfa8d877cea20ca3870faf08e08d5'
          '59d0602bac7e06f11abba1894acc8bb0'
          'da432d68962e109e09beb2b71c8c8571'
-         '366ccb097d1c221389709485c3b2d159')
+         '366ccb097d1c221389709485c3b2d159'
+         'bdd37627c9effd745a051fd2d279975b')
diff --git a/abs/core/LinHES-system/msg.cfg b/abs/core/LinHES-system/msg.cfg
new file mode 100644
index 0000000..0d687c5
--- /dev/null
+++ b/abs/core/LinHES-system/msg.cfg
@@ -0,0 +1,23 @@
+[default]
+font_color=#ebb81c
+display_time=5000
+position=1
+font_type=Overlock SC 40
+
+[middle]
+font_color=#ebb81c
+display_time=5000
+position=4
+font_type=Overlock SC 40
+
+[bottom]
+font_color=#ebb81c
+display_time=5000
+position=7
+font_type=Overlock SC 40
+
+[alert]
+font_color=red
+display_time=5000
+position=4
+font_type=Overlock SC 40
diff --git a/abs/core/func/PKGBUILD b/abs/core/func/PKGBUILD
index a4844cb..1b7b000 100644
--- a/abs/core/func/PKGBUILD
+++ b/abs/core/func/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=func
 pkgver=0.25
-pkgrel=16
+pkgrel=17
 pkgdesc="fedora unifed network controller"
 url=""
 license="gpl"
@@ -10,27 +10,26 @@ conflicts=()
 replaces=()
 backup=('etc/func/minion.conf')
 install=func.install
-source=($pkgname-$pkgver.tar.gz  minion.conf power.py pacman.py failed_func fe_restart.py msg.py msg.cfg func_ssl_patch logrotate-func.conf)
+source=($pkgname-$pkgver.tar.gz  minion.conf power.py pacman.py failed_func fe_restart.py msg.py func_ssl_patch logrotate-func.conf)
 arch=('i686' 'x86_64')
 
 package() {
     moddir="$pkgdir/usr/lib/python2.7/site-packages/func/minion/modules/"
-	cd $srcdir/$pkgname-${pkgver}
+    cd $srcdir/$pkgname-${pkgver}
         patch -Np1 < $srcdir/func_ssl_patch
-	python2 setup.py build
-	python2 setup.py install --prefix=$pkgdir/usr
-	cd $srcdir
-	install -m755 -D minion.conf $pkgdir/etc/func/minion.conf
-	install -m755 -D $srcdir/$pkgname-$pkgver/etc/async_methods.conf $pkgdir/etc/func/async_methods.conf
-	install -m755 -D $srcdir/$pkgname-${pkgver}/etc/sample.acl $pkgdir/etc/func/minion-acl.d/sample.acl
-	install -m755 -D $srcdir/$pkgname-${pkgver}/etc/Test.conf $pkgdir/etc/func/modules/Test.conf
-	install -m755 -D $srcdir/power.py ${moddir}/power.py
-	install -m755 -D $srcdir/pacman.py ${moddir}/pacman.py
-	install -m755 -D $srcdir/msg.py ${moddir}/msg.py
-	install -m755 -D $srcdir/msg.cfg $pkgdir/usr/MythVantage/etc/msg.cfg
-	install -m755 -D $srcdir/fe_restart.py ${moddir}/fe_restart.py
-	install -m755 -D $srcdir/failed_func $pkgdir/usr/MythVantage/bin/failed_func
-	mkdir -p  $pkgdir/var/log/func
+    python2 setup.py build
+    python2 setup.py install --prefix=$pkgdir/usr
+    cd $srcdir
+    install -m755 -D minion.conf $pkgdir/etc/func/minion.conf
+    install -m755 -D $srcdir/$pkgname-$pkgver/etc/async_methods.conf $pkgdir/etc/func/async_methods.conf
+    install -m755 -D $srcdir/$pkgname-${pkgver}/etc/sample.acl $pkgdir/etc/func/minion-acl.d/sample.acl
+    install -m755 -D $srcdir/$pkgname-${pkgver}/etc/Test.conf $pkgdir/etc/func/modules/Test.conf
+    install -m755 -D $srcdir/power.py ${moddir}/power.py
+    install -m755 -D $srcdir/pacman.py ${moddir}/pacman.py
+    install -m755 -D $srcdir/msg.py ${moddir}/msg.py
+    install -m755 -D $srcdir/fe_restart.py ${moddir}/fe_restart.py
+    install -m755 -D $srcdir/failed_func $pkgdir/usr/MythVantage/bin/failed_func
+    mkdir -p  $pkgdir/var/log/func
         install -m644 -D ../logrotate-func.conf $pkgdir/etc/logrotate.d/func
 
         cd $pkgdir
@@ -44,6 +43,5 @@ md5sums=('892252004f122c61bb58bb4607553ffe'
          'c30f420c01628a08061270e8502115c5'
          'b02a733b7a74569e57521bc3708724a5'
          '7b4266a8031cf7de485bf6b74e57bd74'
-         'bdd37627c9effd745a051fd2d279975b'
          'b816bdb222e646a7801b218c3a626b0e'
          '7d7c8a334f6b46ae1e5e483854b93924')
diff --git a/abs/core/func/msg.cfg b/abs/core/func/msg.cfg
deleted file mode 100644
index 0d687c5..0000000
--- a/abs/core/func/msg.cfg
+++ /dev/null
@@ -1,23 +0,0 @@
-[default]
-font_color=#ebb81c
-display_time=5000
-position=1
-font_type=Overlock SC 40
-
-[middle]
-font_color=#ebb81c
-display_time=5000
-position=4
-font_type=Overlock SC 40
-
-[bottom]
-font_color=#ebb81c
-display_time=5000
-position=7
-font_type=Overlock SC 40
-
-[alert]
-font_color=red
-display_time=5000
-position=4
-font_type=Overlock SC 40
-- 
cgit v0.12


From 82e79deb33a3e21737fa28d15cea63b4ae151037 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 27 Nov 2013 16:37:56 -0600
Subject: LinHES-system:  myth_status.py  Add in the ability to pick up system
 alerts which are generated by xymon. The program will look for files placed
 in /home/xymon/var/login_notify and parse as needed. Files are generated by
 xymon by the file login_notify.py  which is called via alerts.cfg

Also myth_status got a bit of rearranging.  Now the tuner & recording status info is in a class.

refs #943
refs #945
---
 abs/core/LinHES-system/myth_status.py | 302 +++++++++++++++++++++++++---------
 1 file changed, 220 insertions(+), 82 deletions(-)

diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index f0e41f3..0f2edfb 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -1,21 +1,12 @@
 #!/usr/bin/python2
+#This program is called on login to display the status of mythtv tuners & recording status
+#Also will display alerts generated by xymon.  If the location of xymon changes, this script needs to be updated.
+
 from MythTV import MythBE,MythDB,MythLog
 import datetime,time,sys,subprocess,re
-try:
-    be = MythBE()
-    db = MythDB()
-except:
-    print "\nCouldn't connect to MythTV service for status"
-    sys.exit(1)
-
-cursor = db.cursor()
-now = datetime.datetime.now()
-farout=99999999
-next_start_diff=datetime.timedelta(farout)
-num_upcoming=12
+import os,glob
 
 def formatTD(td):
-    #print td
     days = td.days
     hours = td.seconds // 3600
     minutes = (td.seconds % 3600) // 60
@@ -46,76 +37,223 @@ def formatTD(td):
     return_string = '%s%s%s%s' % (day_string, hour_string, minute_string, second_string)
     return return_string
 
+def print_alerts():
+    dir_name = "/home/xymon/var/login_alerts"
+    out_alert=""
+    try:
+        os.chdir(dir_name)
+    except:
+        pass
+        #print "    myth_status: Couldn't change dir to %s" %dir_name
 
+    file_list=glob.glob("*")
+    
+    if len(file_list) == 0:
+        #print "    myth_status:  no alert files found"
+        pass
+    else:
+        for alert_file in file_list:
+            out_line=''
+            datahost = ''
+            dataservice = ''
+            datadown = ''
+            try:
+                #print "    myth_staus: reading in %s" %alert_file
+                f=open(alert_file,'r')
+                lines=f.readlines()
+                f.close()
+            except:
+                #print "    myth_status: Couldn't open %s for reading" %alert_file
+                continue
+            
+            for line in lines:
+                try:
+                    data,value=line.split(":")
+                except:
+                    continue  #exception occured try the next line
+                
+                if data == 'HOST':
+                    datahost = value.strip()
+                elif data == 'SERVICE':
+                    dataservice = value.strip()
+                elif data == 'DOWN':
+                    datadown = value.strip()
+                    sec=int(datadown)
+                    td_sec = datetime.timedelta(seconds=sec)
+                    td_sec_formated = formatTD(td_sec)
+            
+            out_line ="    %s on %s  down for %s \n" %(dataservice,
+                                                           datahost,
+                                                           td_sec_formated)
+            out_alert += out_line
+                
+        print "System Alerts:"
+        print "---------------"
+        if len(out_alert) > 0:
+            print out_alert 
+            print "    Please see the system health webpage for more information"
+        else:
+            print "    All systems OK"
 
-a=be.getRecorderList()
-header="#"*60
-print header
-print ""
-print "Tuner Status:"
-print "-------------"
-for i in a:
-    cmd="select cardtype,hostname  from capturecard where cardid=%s;" %i
+    return 
 
-    cursor.execute(cmd)
-    results=cursor.fetchall()
-    type = results[0][0]
-    hostname = results[0][1]
-    id = i
-    try:
-        c=be.getCurrentRecording(i)
-        if c.title ==  None:
-            current_recording = "Idle"
+
+#-------------------------------------------
+
+
+class tuner_recording_status:
+    def __init__ (self,num_upcoming):
+        
+        self.now = datetime.datetime.now()
+        self.farout=99999999
+        self.next_start_diff=datetime.timedelta(self.farout)
+        self.num_upcoming=num_upcoming
+        self.tuner_status_list=[]
+        self.conflict_list=[]
+        self.upcoming_list=[]
+        self.ur=0
+        self.db_connection_status = self.check_database_connection()
+        if self.db_connection_status == 0:
+            self.tuner_status()
+            self.conflicts()
+            self.upcoming_recordings()
+
+    def get_db_check_status(self):
+        return self.db_connection_status
+        
+    def check_database_connection(self):
+        rc=0
+        try:
+            self.be = MythBE()
+            self.db = MythDB()
+            self.cursor = self.db.cursor()
+        except:
+            print "\nCouldn't connect to MythTV service for status"
+            rc=1
+        return rc
+#-----
+    def tuner_status(self):
+        a=self.be.getRecorderList()
+        for i in a:
+            outline=''
+            cmd="select cardtype,hostname  from capturecard where cardid=%s;" %i
+            self.cursor.execute(cmd)
+            results=self.cursor.fetchall()
+            type = results[0][0]
+            hostname = results[0][1]
+            id = i
+            try:
+                c=self.be.getCurrentRecording(i)
+                if c.title ==  None:
+                    current_recording = "Idle"
+                else:
+                    current_recording = "Recording %s" %c.title
+                outline = "    Tuner %s (%s) on %s : %s " %(id, type, hostname, current_recording)
+                self.tuner_status_list.append(outline)
+            except:
+                outline = "    Tuner %s (%s) on %s : %s " %(id, type, hostname, "Tuner Error")
+                self.tuner_status_list.append(outline)
+
+    def get_tuner_status(self):
+        return self.tuner_status
+    
+    def print_tuner_status(self):
+        print "Tuner Status:"
+        print "-------------"
+        if len(self.tuner_status_list) > 0 :
+            for line in self.tuner_status_list:
+                print line
         else:
-            current_recording = "Recording %s" %c.title
-        print "    Tuner %s (%s) on %s : %s " %(id, type, hostname, current_recording)
-    except:
-        print "    Tuner %s (%s) on %s : %s " %(id, type, hostname, "Tuner Error")
-
-print ""
-print "Upcoming Recordings (Next %s Scheduled):" %(num_upcoming)
-print "----------------------------------------"
-a=be.getUpcomingRecordings()
-r=0
-for i in a:
-    r += 1
-    if r > num_upcoming:
-        break
-
-    title_chan="%s (%s)" %(i.title, i.channame)
-    #remove timezone
-    start_time=re.split("[-+]\d\d:\d\d",str(i.starttime))[0]
-    start_time_struct=datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
-    start_time_out=start_time_struct.strftime("%a %b %d %I:%M%p")
-    print "    %s - %s - %s" %(start_time_out,i.hostname, title_chan)
-    diff = start_time_struct - now
-    if diff < next_start_diff :
-        next_start_diff = diff
-
-
-print ""
-print "Recording Conflicts:"
-print "----------------------"
-a=be.getConflictedRecordings()
-c=0
-for i in a:
-    title_chan="%s (%s)" %(i.title, i.channame)
-    print "    %s -  %-50s " %(i.starttime,title_chan)
-    c=c+1
-
-if c == 0:
-    print "    No Conflicts"
-
-print ""
-
-if next_start_diff == datetime.timedelta(farout):
-   ur="No recordings are scheduled"
-else:
-    ur=formatTD(next_start_diff)
-print "The next recording starts in:"
-print "-----------------------------"
-print "    %s" %(ur)
-print ""
-subprocess.call("/usr/LH/bin/diskspace.sh",shell=True)
-print ""
-print header
+            print "    No tuners found"
+            
+#--------
+    def upcoming_recordings(self):
+        
+        a=self.be.getUpcomingRecordings()
+        r=0
+        for i in a:
+            r += 1
+            if r > self.num_upcoming:
+                break
+            
+            title_chan="%s (%s)" %(i.title, i.channame)
+            #remove timezone
+            start_time=re.split("[-+]\d\d:\d\d",str(i.starttime))[0]
+            start_time_struct=datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
+            start_time_out=start_time_struct.strftime("%a %b %d %I:%M%p")
+            self.upcoming_list.append([start_time_out,i.hostname, title_chan])
+            #print "    %s - %s - %s" %(start_time_out,i.hostname, title_chan)
+            diff = start_time_struct - self.now
+            if diff < self.next_start_diff :
+                self.next_start_diff = diff
+
+        if self.next_start_diff == datetime.timedelta(self.farout):
+            self.ur="No recordings are scheduled"
+        else:
+            self.ur=formatTD(self.next_start_diff)
+            
+
+    def get_upcoming_recordings(self):
+        return self.upcoming_list
+    
+    def print_upcoming_recordings(self):
+        #print self.get_upcoming_recordings()
+        print ""
+        print "Upcoming Recordings (Next %s Scheduled):" %(self.num_upcoming)
+        print "----------------------------------------"
+        if len(self.get_upcoming_recordings()) > 0:
+            for i in self.get_upcoming_recordings():
+                #print "    %s - %s - %s" %(start_time_out,i.hostname, title_chan)
+                print "    %s - %s - %s" %(i[0],i[1],i[2])
+        else:
+            print "    No upcoming recordings"
+        pass
+
+    def get_next_start_time(self):
+        return self.ur
+    
+    def print_next_start_time(self):
+        print ""
+        print "The next recording starts in:"
+        print "-----------------------------"
+        print "    %s" %(self.get_next_start_time())
+        print ""
+    
+#-----
+
+    def conflicts(self):
+        a=self.be.getConflictedRecordings()
+        for i in a:
+            out_line=''
+            title_chan="%s (%s)" %(i.title, i.channame)
+            out_line=(i.starttime,title_chan)
+            self.conflict_list.append(out_line)
+
+    def get_conflict_list(self):
+        return self.conflict_list
+    
+    def print_conflict_list(self):
+        print ""
+        print "Recording Conflicts:"
+        print "----------------------"
+        if len(self.get_conflict_list()) > 0:
+            for i in self.get_conflict_list():
+                print "    %s -  %-50s " %(i[0],i[1])
+        else:
+            print "    No conflicts"
+
+#header="#"*60
+
+
+def go():
+    tuner = tuner_recording_status(12)
+    if tuner.get_db_check_status() == 0:
+        tuner.print_tuner_status()
+        tuner.print_upcoming_recordings()
+        tuner.print_conflict_list()
+        tuner.print_next_start_time()
+    print_alerts()
+
+
+if __name__ == "__main__":
+    go()
-- 
cgit v0.12


From 83df5fbd0c9dcfbb4ea943fd317df153cebb0097 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 27 Nov 2013 16:39:54 -0600
Subject: xymon:  add login_notify.sh.  This will write out and remove alert
 files to be parsed by myth_status

refs #943
refs #945
---
 abs/core/xymon/PKGBUILD        | 13 +++++++--
 abs/core/xymon/alerts.cfg      |  8 +++---
 abs/core/xymon/login_notify.sh | 64 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 78 insertions(+), 7 deletions(-)
 create mode 100644 abs/core/xymon/login_notify.sh

diff --git a/abs/core/xymon/PKGBUILD b/abs/core/xymon/PKGBUILD
index a0c603b..96aa82f 100755
--- a/abs/core/xymon/PKGBUILD
+++ b/abs/core/xymon/PKGBUILD
@@ -1,14 +1,14 @@
 pkgbase=xymon
 pkgname=(xymonserver xymonclient)
 pkgver=4.3.5
-pkgrel=50
+pkgrel=51
 pkgdesc="Hobbit is a system for monitoring servers and networks. "
 license="GPL"
 arch=('i686' 'x86_64')
 
 url="http://www.xymon.com/"
 
-source=(http://hivelocity.dl.sourceforge.net/project/xymon/Xymon/4.3.5/xymon-4.3.5.tar.gz  hobbitadd.py xymon_ghost_check graph.cfg.diff xymonserver.cfg.diff tasks.d.mv clientlaunch.cfg.patch hobbitstorage.py  hbnotes.py hobbit-myth-orphan.sh  analysis.cfg hbfunc.py be.png tuner.png tv.png  hobbit-mem-myth.sh hobbit_notify.sh alerts.cfg hobbit_myth_data.py logrotate-server.xymon logrotate-client.xymon log_list.sh client-local.cfg.patch led_themes.tar.gz xymon-server.rules hosts.cfg.patch)
+source=(http://hivelocity.dl.sourceforge.net/project/xymon/Xymon/4.3.5/xymon-4.3.5.tar.gz  hobbitadd.py xymon_ghost_check graph.cfg.diff xymonserver.cfg.diff tasks.d.mv clientlaunch.cfg.patch hobbitstorage.py  hbnotes.py hobbit-myth-orphan.sh  analysis.cfg hbfunc.py be.png tuner.png tv.png  hobbit-mem-myth.sh hobbit_notify.sh login_notify.sh alerts.cfg hobbit_myth_data.py logrotate-server.xymon logrotate-client.xymon log_list.sh client-local.cfg.patch led_themes.tar.gz xymon-server.rules hosts.cfg.patch)
 
 depends=('rrdtool' 'fping' 'pcre' 'python2' 'graphviz' 'LinHES-system>=8.0-5')
 
@@ -67,6 +67,7 @@ package_xymonserver(){
       cat alerts.cfg >> $startdir/pkg/xymonserver/home/xymon/etc/alerts.cfg
 
       install  -m755 hobbit_notify.sh $startdir/pkg/xymonserver/home/xymon/server/bin/hobbit_notify.sh
+      install  -m755 login_notify.sh $startdir/pkg/xymonserver/home/xymon/server/bin/login_notify.sh
       install  -m755 $startdir/src/tv.png  $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/gifs/tv.png
       install  -m755 $startdir/src/tuner.png  $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/gifs/tuner.png
       install  -m755 $startdir/src/be.png  $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/gifs/be.png
@@ -91,6 +92,9 @@ package_xymonserver(){
       patch -p3 < $startdir/src/client-local.cfg.patch || return 1
       patch -p3 < $startdir/src/hosts.cfg.patch || return 1
 
+      #make dir for login alerts
+      mkdir $startdir/pkg/xymonserver/home/xymon/var/login_alerts
+
       #fix permissions
       chmod 775 $startdir/pkg/xymonserver/data/srv/httpd/htdocs/
       chmod 775 $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/
@@ -99,6 +103,8 @@ package_xymonserver(){
       chmod 775 $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/snap/
       chmod 775 $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/rep/
       chmod 750 $startdir/pkg/xymonserver/etc/sudoers.d
+      chmod 775 $startdir/pkg/xymonserver/home/xymon/var/login_alerts
+      
 
     }
 
@@ -137,7 +143,8 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          '0469d775db9fdd18ea95dd41937ada82'
          '0757294eec13771f8e63da23cf066796'
          '6baa410da1dfb86435191f4805186ea7'
-         '81715c58ae495812da0e0f18e2f74c76'
+         'a834dd134b6d640d753b1e26609d37df'
+         '9b5f3079c461f1e0a1b5fb805d073665'
          '77a542c2fd13468791ef23057ba8e77d'
          'b4e8641e97e6b689dbc634af785e6799'
          'e2844513e2c92e8b5084818f3b2a478d'
diff --git a/abs/core/xymon/alerts.cfg b/abs/core/xymon/alerts.cfg
index 4f97f18..3ba26bd 100755
--- a/abs/core/xymon/alerts.cfg
+++ b/abs/core/xymon/alerts.cfg
@@ -119,10 +119,10 @@
 
 
 HOST=* SERVICE=func
-    SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS DURATION=4h REPEAT=48h COLOR=red 
+    SCRIPT /home/xymon/server/bin/hobbit_notify.sh  dummy_notice FORMAT=plain DURATION>4h REPEAT=48h COLOR=red 
 
 HOST=* SERVICE=* EXSERVICE=conn
-    SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS DURATION=4h REPEAT=12h COLOR=red 
-#      SCRIPT /home/xymon/server/bin/hobbit_notify.sh  1234567890 FORMAT=SMS DURATION=4H REPEAT=12H COLOR=yellow
-
+    SCRIPT /home/xymon/server/bin/hobbit_notify.sh dummy_notice FORMAT=plain DURATION>4h REPEAT=12h COLOR=red 
+    SCRIPT /home/xymon/server/bin/login_notify.sh  dummy_notice FORMAT=plain DURATION>5m REPEAT=5m COLOR=red RECOVERED
+    
 
diff --git a/abs/core/xymon/login_notify.sh b/abs/core/xymon/login_notify.sh
new file mode 100644
index 0000000..6696165
--- /dev/null
+++ b/abs/core/xymon/login_notify.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+. /etc/systemconfig
+#
+#    BBCOLORLEVEL  - The color of the alert: "red", "yellow" or "purple"
+#    BBALPHAMSG    - The full text of the status log triggering the alert
+#    ACKCODE       - The "cookie" that can be used to acknowledge the alert
+#    RCPT          - The recipient, from the SCRIPT entry
+#    BBHOSTNAME    - The name of the host that the alert is about
+#    MACHIP        - The IP-address of the host that has a problem
+#    BBSVCNAME     - The name of the service that the alert is about
+#    BBSVCNUM      - The numeric code for the service. From SVCCODES definition.
+#    BBHOSTSVC     - HOSTNAME.SERVICE that the alert is about.
+#    BBHOSTSVCCOMMAS - As BBHOSTSVC, but dots in the hostname replaced with commas
+#    BBNUMERIC     - A 22-digit number made by BBSVCNUM, MACHIP and ACKCODE.
+#    RECOVERED     - Is "1" if the service has recovered.
+#    DOWNSECS      - Number of seconds the service has been down.
+#    DOWNSECSMSG   - When recovered, holds the text "Event duration : N" where
+
+#  LOGIN_OUT=/tmp/login_out
+#  echo $BBCOLORLEVEL  >> $LOGIN_OUT
+#  echo $BBALPHAMSG >>$LOGIN_OUT
+#  echo $RCPT >>$LOGIN_OUT
+#  echo $BBHOSTNAME >>$LOGIN_OUT
+#  echo $BBSVCNAME >>$LOGIN_OUT
+#  echo $BBHOSTSVC >>$LOGIN_OUT
+#  echo $BBHOME  >> $LOGIN_OUT
+#  echo $DOWNSECS >> $LOGIN_OUT
+#  echo $RECOVERED >> $LOGIN_OUT
+#  echo "----------" >> $LOGIN_OUT
+
+#BBCOLORLEVEL=red
+#BBCOLORLEVEL=yellow
+#BBALPHAMSG="vmtest:disk red [751147]"
+#BBHOSTNAME="testcraa"
+#BBSVCNAME="disk"
+#BBSVCNAME="func"
+#BBHOSTSVC="vmtest.disk"
+
+#bbhome ends up as /home/xymon/server  which is why I didn't use it here
+NOTICE_DIR="/home/xymon/var/login_alerts"
+if [ ! -d $NOTICE_DIR ]
+then
+    mkdir $NOTICE_DIR
+fi
+
+if [ "x$RECOVERED" == "x1" ]
+then
+    if [ -f $NOTICE_DIR/$BBHOSTSVC ]
+    then
+        rm -f $NOTICE_DIR/$BBHOSTSVC
+    else
+        echo "$NOTICE_DIR/$BBHOSTSVC is not present, didn't remove it"
+    fi
+else
+   echo "DOWN: $DOWNSECS" > $NOTICE_DIR/$BBHOSTSVC
+   echo "SERVICE: $BBSVCNAME" >> $NOTICE_DIR/$BBHOSTSVC
+   echo "HOST: $BBHOSTNAME" >> $NOTICE_DIR/$BBHOSTSVC
+   echo "ACKCODE: $ACKCODE" >> $NOTICE_DIR/$BBHOSTSVC
+   echo "MSG $BBALPHAMSG" >> $NOTICE_DIR/$BBHOSTSVC
+   
+fi
+
+
+
-- 
cgit v0.12


From 13329fa498c6a12fd1bcd81ec6168a443a705f8d Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 27 Nov 2013 16:47:14 -0600
Subject: supplemental-web:  move xymon from a submenu to the main menu.

---
 abs/core/supplemental-web/PKGBUILD             | 2 +-
 abs/core/supplemental-web/contents/header.html | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/abs/core/supplemental-web/PKGBUILD b/abs/core/supplemental-web/PKGBUILD
index 5448bcc..90d2370 100644
--- a/abs/core/supplemental-web/PKGBUILD
+++ b/abs/core/supplemental-web/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=supplemental-web
 pkgname=('supplemental-web' 'supplemental-web-slave')
 pkgver=8.0
-pkgrel=12
+pkgrel=13
 arch=('i686' 'x86_64')
 license=('GPL')
 backup=('data/srv/httpd/cgi/extra.cfg.txt')
diff --git a/abs/core/supplemental-web/contents/header.html b/abs/core/supplemental-web/contents/header.html
index d972bfa..5f4bb14 100644
--- a/abs/core/supplemental-web/contents/header.html
+++ b/abs/core/supplemental-web/contents/header.html
@@ -43,9 +43,11 @@ function beStatus()
 
 <li><a id="modify-me">MythBackend Status</a></li>
 
+<li><a href="xymon/">Health & Maintenance</a></li>
+
 <li><a href="xymon" >System &#187;</a>
     <ul>
-        <li><a href="/xymon"  >Health</a></li>
+    <!--    <li><a href="/xymon"  >Health</a></li>-->
         <li><a href="/logs/"  >Logs</a></li>
         <li><a href="/exports.shtml"  >File Shares</a></li>
         <li><a href="/cardmap.shtml"  >Tuners</a></li>
-- 
cgit v0.12


From ca24846abef286bd1eabe2be7e252a2b59878ab7 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 27 Nov 2013 17:04:44 -0600
Subject: perl: update to 5.18.1. refs #944

---
 ...GS-and-LDFLAGS-to-their-Config.pm-counter.patch |  83 ----------------
 abs/core/perl/ChangeLog                            |  66 -------------
 abs/core/perl/PKGBUILD                             |  46 ++++-----
 abs/core/perl/digest_eval_hole.diff                |  61 ------------
 abs/core/perl/fix-h2ph-and-tests.patch             | 104 ---------------------
 abs/core/perl/perlbin.sh                           |   0
 6 files changed, 25 insertions(+), 335 deletions(-)
 delete mode 100644 abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch
 delete mode 100644 abs/core/perl/ChangeLog
 delete mode 100644 abs/core/perl/digest_eval_hole.diff
 delete mode 100644 abs/core/perl/fix-h2ph-and-tests.patch
 mode change 100755 => 100644 abs/core/perl/perlbin.sh

diff --git a/abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch b/abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch
deleted file mode 100644
index 1404460..0000000
--- a/abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From bb249b0b26c2e79a6f55355ef94889070f07fd21 Mon Sep 17 00:00:00 2001
-From: Niko Tyni <ntyni@debian.org>
-Date: Thu, 28 Apr 2011 09:18:54 +0300
-Subject: [PATCH] Append CFLAGS and LDFLAGS to their Config.pm counterparts in
- EU::CBuilder
-
-Since ExtUtils::CBuilder 0.27_04 (bleadperl commit 06e8058f27e4),
-CFLAGS and LDFLAGS from the environment have overridden the Config.pm
-ccflags and ldflags settings. This can cause binary incompatibilities
-between the core Perl and extensions built with EU::CBuilder.
-
-Append to the Config.pm values rather than overriding them.
----
- .../lib/ExtUtils/CBuilder/Base.pm                  |    6 +++-
- dist/ExtUtils-CBuilder/t/04-base.t                 |   25 +++++++++++++++++++-
- 2 files changed, 28 insertions(+), 3 deletions(-)
-
-diff --git a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
-index b572312..2255c51 100644
---- a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
-+++ b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
-@@ -40,11 +40,13 @@ sub new {
-     $self->{config}{$k} = $v unless exists $self->{config}{$k};
-   }
-   $self->{config}{cc} = $ENV{CC} if defined $ENV{CC};
--  $self->{config}{ccflags} = $ENV{CFLAGS} if defined $ENV{CFLAGS};
-+  $self->{config}{ccflags} = join(" ", $self->{config}{ccflags}, $ENV{CFLAGS})
-+     if defined $ENV{CFLAGS};
-   $self->{config}{cxx} = $ENV{CXX} if defined $ENV{CXX};
-   $self->{config}{cxxflags} = $ENV{CXXFLAGS} if defined $ENV{CXXFLAGS};
-   $self->{config}{ld} = $ENV{LD} if defined $ENV{LD};
--  $self->{config}{ldflags} = $ENV{LDFLAGS} if defined $ENV{LDFLAGS};
-+  $self->{config}{ldflags} = join(" ", $self->{config}{ldflags}, $ENV{LDFLAGS})
-+     if defined $ENV{LDFLAGS};
- 
-   unless ( exists $self->{config}{cxx} ) {
-     my ($ccpath, $ccbase, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);
-diff --git a/dist/ExtUtils-CBuilder/t/04-base.t b/dist/ExtUtils-CBuilder/t/04-base.t
-index c3bf6b5..1bb15aa 100644
---- a/dist/ExtUtils-CBuilder/t/04-base.t
-+++ b/dist/ExtUtils-CBuilder/t/04-base.t
-@@ -1,7 +1,7 @@
- #! perl -w
- 
- use strict;
--use Test::More tests => 50;
-+use Test::More tests => 64;
- use Config;
- use Cwd;
- use File::Path qw( mkpath );
-@@ -326,6 +326,29 @@ is_deeply( $mksymlists_args,
-     "_prepare_mksymlists_args(): got expected arguments for Mksymlists",
- );
- 
-+my %testvars = (
-+    CFLAGS  => 'ccflags',
-+    LDFLAGS => 'ldflags',
-+);
-+
-+while (my ($VAR, $var) = each %testvars) {
-+    local $ENV{$VAR};
-+    $base = ExtUtils::CBuilder::Base->new( quiet => 1 );
-+    ok( $base, "ExtUtils::CBuilder::Base->new() returned true value" );
-+    isa_ok( $base, 'ExtUtils::CBuilder::Base' );
-+    like($base->{config}{$var}, qr/\Q$Config{$var}/,
-+        "honours $var from Config.pm");
-+
-+    $ENV{$VAR} = "-foo -bar";
-+    $base = ExtUtils::CBuilder::Base->new( quiet => 1 );
-+    ok( $base, "ExtUtils::CBuilder::Base->new() returned true value" );
-+    isa_ok( $base, 'ExtUtils::CBuilder::Base' );
-+    like($base->{config}{$var}, qr/\Q$ENV{$VAR}/,
-+        "honours $VAR from the environment");
-+    like($base->{config}{$var}, qr/\Q$Config{$var}/,
-+        "doesn't override $var from Config.pm with $VAR from the environment");
-+}
-+
- #####
- 
- for ($source_file, $object_file, $lib_file) {
--- 
-1.7.4.4
-
diff --git a/abs/core/perl/ChangeLog b/abs/core/perl/ChangeLog
deleted file mode 100644
index 9add39e..0000000
--- a/abs/core/perl/ChangeLog
+++ /dev/null
@@ -1,66 +0,0 @@
-2011-06-22 Angel Velasquez <angvp@archlinux.org>
-    * Added a patch for ExtUtils doesnt overwrite CFLAGS and LDFLAGS
-    * Fixed #FS22197, FS#22441, FS#24767
-    * Rebuilt perl 5.14.1-2 against db 5.2.28
-
-2011-06-16 Angel Velasquez <angvp@archlinux.org>
-    * Fixed #FS24660
-    * Rebuilt against db 5.2.28
-
-2011-05-16  Angel Velasquez <angvp@archlinux.org>
-    * perl 5.14.0
-    * Removed patch for h2ph warning from 5.12.3
-    * Removed provides array, you can use corelist -v 5.14.0 to know the
-    modules included with the perl core, through Module::CoreList (thx j3nnn1
-    for the tip)
-
-2010-11-07  kevin  <kevin@archlinux.org>
-
-    * perl 5.12.2-1
-    - Using /usr/bin/*_perl for script directories
-
-2010-11-06  kevin  <kevin@archlinux.org>
-
-    - Removed otherlibdirs directive from Configure
-    - Removed /usr/*/perl5/site_perl/5.10.1 from INC
-    - Finally removed legacy dirs /usr/lib/perl5/current and
-      /usr/lib/perl5/site_perl/current from @INC
-
-2010-05-23  kevin  <kevin@archlinux.org>
-
-    * perl 5.12.1-2
-    - Francois updated the provides array.
-
-2010-05-23  kevin  <kevin@archlinux.org>
-
-    * perl 5.12.1-1
-
-2010-05-16  kevin  <kevin@archlinux.org>
-
-    * perl 5.12.0-2
-
-2010-05-12  kevin  <kevin@archlinux.org>
-
-    - FS#19411.  Removed the for loop in perlbin.sh which didn't work on zsh.
-      This makes the loop variables unnecessary so the script no longer
-      pollutes the user's environment.
-    - FS#19427.  Added /usr/*/perl5/site_perl/5.10.1 to otherlibdirs to support
-      user built modules.
-
-2010-05-09  kevin  <kevin@archlinux.org>
-
-    * perl 5.12.0-1
-    - Modified perlbin.sh to only add existing dirs to PATH.  Fixes FS#17402,
-      path points to non-existant directories 
-
-2010-05-07  kevin  <kevin@archlinux.org>
-
-    - Added this changelog.
-    - Added -Dinc_version_list=none to fix FS#19136, double entry in @INC.
-      This removes the duplicates and versioned directory entries.
-    - Change scriptdirs to /usr/lib/perl5/{core,vendor,site}_perl/bin to fix
-      Fix FS#13808, binaries don't follow FHS.
-    - Stopped using versioned directories in sitelib and sitearch.
-
-
-# vim: set ft=changelog ts=4 sw=4 et:
diff --git a/abs/core/perl/PKGBUILD b/abs/core/perl/PKGBUILD
index 58b94e7..0dd8177 100644
--- a/abs/core/perl/PKGBUILD
+++ b/abs/core/perl/PKGBUILD
@@ -1,25 +1,26 @@
-# $Id: PKGBUILD 160587 2012-06-02 10:54:59Z bluewind $
-# Maintainer: Angel Velasquez <angvp@archlinux.org> 
+# $Id$
+# Maintainer: Florian Pritz <bluewind@xinu.at>
+# Contributor: Angel Velasquez <angvp@archlinux.org>
 # Contributor: kevin <kevin.archlinux.org>
 # Contributor: judd <jvinet.zeroflux.org>
-# Contributor: francois <francois.archlinux.org> 
+# Contributor: francois <francois.archlinux.org>
+
 pkgname=perl
-pkgver=5.16.0
-pkgrel=2
+pkgver=5.18.1
+pkgrel=1
 pkgdesc="A highly capable, feature-rich programming language"
 arch=(i686 x86_64)
 license=('GPL' 'PerlArtistic')
 url="http://www.perl.org"
 groups=('base')
 depends=('gdbm' 'db' 'coreutils' 'glibc' 'sh')
-changelog=ChangeLog
-source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2 
-perlbin.sh
-perlbin.csh
-provides.pl)
+source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2
+        perlbin.sh
+        perlbin.csh
+        provides.pl)
 install=perl.install
 options=('makeflags' '!purge')
-md5sums=('15a2f95fb27231e10998240f13acf961'
+md5sums=('4ec1a3f3824674552e749ae420c5e68c'
          '5ed2542fdb9a60682f215bd33701e61a'
          '1f0cbbee783e8a6d32f01be5118e0d5e'
          '999c3eea6464860704abbb055a0f0896')
@@ -29,19 +30,23 @@ if [[ ${0##*/} = "parse_pkgbuilds.sh" ]]; then
 	true && provides=($(bsdtar -q -O -xf "/srv/ftp/pool/packages/$pkgname-$pkgver-$pkgrel-$CARCH.pkg.tar.xz" .PKGINFO | sed -rn 's#^provides = (.*)#\1#p'))
 fi
 
+prepare() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+}
+
 build() {
   cd ${srcdir}/${pkgname}-${pkgver}
 
   if [ "${CARCH}" = "x86_64" ]; then
     # for x86_64
     arch_opts="-Dcccdlflags='-fPIC'"
-  else 
+  else
     # for i686
     arch_opts=""
   fi
 
   ./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
-    -Dprefix=/usr -Dinstallprefix=${pkgdir}/usr -Dvendorprefix=/usr \
+    -Dprefix=/usr -Dvendorprefix=/usr \
     -Dprivlib=/usr/share/perl5/core_perl \
     -Darchlib=/usr/lib/perl5/core_perl \
     -Dsitelib=/usr/share/perl5/site_perl \
@@ -59,7 +64,7 @@ build() {
 
 check() {
   cd ${srcdir}/${pkgname}-${pkgver}
-  TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
+  TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness || true
 #  make test
 }
 
@@ -69,14 +74,15 @@ package() {
   provides=(${new_provides[@]})
 
   cd ${srcdir}/${pkgname}-${pkgver}
-  make install
+  make DESTDIR="$pkgdir" install
 
   ### Perl Settings ###
   # Change man page extensions for site and vendor module builds.
-  # Use archlinux email address instead of my own.
+  # Set no mail address since bug reports should go to the bug tracker
+  # and not someone's email.
   sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
-      -e "/^cf_email=/ s/'.*'/'kevin@archlinux.org'/" \
-      -e "/^perladmin=/ s/'.*'/'kevin@archlinux.org'/" \
+      -e "/^cf_email=/ s/'.*'/''/" \
+      -e "/^perladmin=/ s/'.*'/''/" \
       -i ${pkgdir}/usr/lib/perl5/core_perl/Config_heavy.pl
 
   ### CPAN Settings ###
@@ -94,14 +100,12 @@ package() {
   # Profile script to set paths to perl scripts.
   install -D -m755 ${srcdir}/perlbin.sh \
                    ${pkgdir}/etc/profile.d/perlbin.sh
-  # Profile script to set paths to perl scripts on csh. (FS#22441) 
+  # Profile script to set paths to perl scripts on csh. (FS#22441)
   install -D -m755 ${srcdir}/perlbin.csh \
                   ${pkgdir}/etc/profile.d/perlbin.csh
 
   (cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
   (cd ${pkgdir}/usr/bin/core_perl;  ln -sf c2ph pstruct; ln -sf s2p psed)
-  grep -Rl "${pkgdir}" ${pkgdir}/usr | \
-      xargs sed -i "s^${pkgdir}^^g"
 
   # Remove all pod files *except* those under /usr/share/perl5/core_perl/pod/
   # (FS#16488)
diff --git a/abs/core/perl/digest_eval_hole.diff b/abs/core/perl/digest_eval_hole.diff
deleted file mode 100644
index 4790413..0000000
--- a/abs/core/perl/digest_eval_hole.diff
+++ /dev/null
@@ -1,61 +0,0 @@
-From 4b6a7324284e7435a361c58f7ddb32fc0c635bd0 Mon Sep 17 00:00:00 2001
-From: "Michael G. Schwern" <schwern@pobox.com>
-Date: Mon, 3 Oct 2011 19:05:29 +0100
-Subject: Close the eval "require $module" security hole in
- Digest->new($algorithm)
-
-Also the filter was incomplete.
-
-Bug-Debian: http://bugs.debian.org/644108
-
-Patch-Name: fixes/digest_eval_hole.diff
----
- cpan/Digest/Digest.pm    |    6 ++++--
- cpan/Digest/t/security.t |   14 ++++++++++++++
- 2 files changed, 18 insertions(+), 2 deletions(-)
- create mode 100644 cpan/Digest/t/security.t
-
-diff --git a/cpan/Digest/Digest.pm b/cpan/Digest/Digest.pm
-index 384dfc8..d714434 100644
---- a/cpan/Digest/Digest.pm
-+++ b/cpan/Digest/Digest.pm
-@@ -24,7 +24,7 @@ sub new
-     shift;  # class ignored
-     my $algorithm = shift;
-     my $impl = $MMAP{$algorithm} || do {
--	$algorithm =~ s/\W+//;
-+	$algorithm =~ s/\W+//g;
- 	"Digest::$algorithm";
-     };
-     $impl = [$impl] unless ref($impl);
-@@ -35,7 +35,9 @@ sub new
- 	($class, @args) = @$class if ref($class);
- 	no strict 'refs';
- 	unless (exists ${"$class\::"}{"VERSION"}) {
--	    eval "require $class";
-+	    my $pm_file = $class . ".pm";
-+	    $pm_file =~ s{::}{/}g;
-+	    eval { require $pm_file };
- 	    if ($@) {
- 		$err ||= $@;
- 		next;
-diff --git a/cpan/Digest/t/security.t b/cpan/Digest/t/security.t
-new file mode 100644
-index 0000000..5cba122
---- /dev/null
-+++ b/cpan/Digest/t/security.t
-@@ -0,0 +1,14 @@
-+#!/usr/bin/env perl
-+
-+# Digest->new() had an exploitable eval
-+
-+use strict;
-+use warnings;
-+
-+use Test::More tests => 1;
-+
-+use Digest;
-+
-+$LOL::PWNED = 0;
-+eval { Digest->new(q[MD;5;$LOL::PWNED = 42]) };
-+is $LOL::PWNED, 0;
diff --git a/abs/core/perl/fix-h2ph-and-tests.patch b/abs/core/perl/fix-h2ph-and-tests.patch
deleted file mode 100644
index a2d176e..0000000
--- a/abs/core/perl/fix-h2ph-and-tests.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 8d66b3f930dc6d88b524d103e304308ae73a46e7 Mon Sep 17 00:00:00 2001
-From: Robin Barker <rmbarker@cpan.org>
-Date: Thu, 22 Apr 2010 11:51:20 +0100
-Subject: [PATCH 1/1] Fix h2ph and test
-
----
- lib/h2ph.t    |   12 ++++++++++--
- utils/h2ph.PL |   28 +++++++++++++++++++++++-----
- 2 files changed, 33 insertions(+), 7 deletions(-)
-
-diff --git a/lib/h2ph.t b/lib/h2ph.t
-index 27dd7b9..8d62d46 100644
---- a/lib/h2ph.t
-+++ b/lib/h2ph.t
-@@ -18,7 +18,7 @@ if (!(-e $extracted_program)) {
-     exit 0;
- }
- 
--plan(4);
-+plan(5);
- 
- # quickly compare two text files
- sub txt_compare {
-@@ -41,8 +41,16 @@ $result = runperl( progfile => 'lib/h2ph.pht',
-                    stderr => 1 );
- like( $result, qr/syntax OK$/, "output compiles");
- 
-+$result = runperl( progfile => '_h2ph_pre.ph',
-+                   switches => ['-c'],
-+                   stderr => 1 );
-+like( $result, qr/syntax OK$/, "preamble compiles");
-+
- $result = runperl( switches => ["-w"], 
--                   prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);');
-+                   stderr => 1,
-+                   prog => <<'PROG' );
-+$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);
-+PROG
- is( $result, '', "output free of warnings" );
- 
- # cleanup
-diff --git a/utils/h2ph.PL b/utils/h2ph.PL
-index 8f56db4..1255807 100644
---- a/utils/h2ph.PL
-+++ b/utils/h2ph.PL
-@@ -401,7 +401,10 @@ if ($opt_e && (scalar(keys %bad_file) > 0)) {
- exit $Exit;
- 
- sub expr {
--    $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out.
-+    if (/\b__asm__\b/) {	# freak out
-+	$new = '"(assembly code)"';
-+	return
-+    }
-     my $joined_args;
-     if(keys(%curargs)) {
- 	$joined_args = join('|', keys(%curargs));
-@@ -770,7 +773,7 @@ sub inc_dirs
- sub build_preamble_if_necessary
- {
-     # Increment $VERSION every time this function is modified:
--    my $VERSION     = 2;
-+    my $VERSION     = 3;
-     my $preamble    = "$Dest_dir/_h2ph_pre.ph";
- 
-     # Can we skip building the preamble file?
-@@ -798,7 +801,16 @@ sub build_preamble_if_necessary
- 		# parenthesized value:  d=(v)
- 		$define{$_} = $1;
- 	    }
--	    if ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
-+	    if (/^(\w+)\((\w)\)$/) {
-+		my($macro, $arg) = ($1, $2);
-+		my $def = $define{$_};
-+		$def =~ s/$arg/\$\{$arg\}/g;
-+		print PREAMBLE <<DEFINE;
-+unless (defined &$macro) { sub $macro(\$) { my (\$$arg) = \@_; \"$def\" } }
-+
-+DEFINE
-+	    } elsif
-+		($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
- 		# float:
- 		print PREAMBLE
- 		    "unless (defined &$_) { sub $_() { $1 } }\n\n";
-@@ -807,8 +819,14 @@ sub build_preamble_if_necessary
- 		print PREAMBLE
- 		    "unless (defined &$_) { sub $_() { $1 } }\n\n";
- 	    } elsif ($define{$_} =~ /^\w+$/) {
--		print PREAMBLE
--		    "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n";
-+		my $def = $define{$_};
-+		if ($isatype{$def}) {
-+		  print PREAMBLE
-+		    "unless (defined &$_) { sub $_() { \"$def\" } }\n\n";
-+		} else {
-+		  print PREAMBLE
-+		    "unless (defined &$_) { sub $_() { &$def } }\n\n";
-+	        }
- 	    } else {
- 		print PREAMBLE
- 		    "unless (defined &$_) { sub $_() { \"",
--- 
-1.6.5.2.74.g610f9.dirty
-
diff --git a/abs/core/perl/perlbin.sh b/abs/core/perl/perlbin.sh
old mode 100755
new mode 100644
-- 
cgit v0.12


From 5f089a293712100ad1b1ef07248a65baa7449171 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 27 Nov 2013 17:11:38 -0600
Subject: mplayer-wrapper: change location of Shell. closes #944

---
 abs/core/mplayer-wrapper/PKGBUILD                | 14 ++++-----
 abs/core/mplayer-wrapper/mplayer-wrapper.install | 38 ------------------------
 abs/core/mplayer-wrapper/mplayer-wrapper.pl      |  2 +-
 3 files changed, 6 insertions(+), 48 deletions(-)
 delete mode 100644 abs/core/mplayer-wrapper/mplayer-wrapper.install

diff --git a/abs/core/mplayer-wrapper/PKGBUILD b/abs/core/mplayer-wrapper/PKGBUILD
index 6dad202..5fa1f99 100644
--- a/abs/core/mplayer-wrapper/PKGBUILD
+++ b/abs/core/mplayer-wrapper/PKGBUILD
@@ -1,21 +1,17 @@
 pkgname=mplayer-wrapper
 pkgver=1	
-pkgrel=10
+pkgrel=11
 pkgdesc="wrapper for mplayer and mplayer derivatives"
 arch=('i686' 'x86_64')
-
 depends=('perl' 'vdpauinfo') 
-
 source=(mplayer-wrapper.pl)
-
 license=('GPL2')
 
-build() {
+package() {
    LH_ROOT=/usr/LH
-   mkdir -p $startdir/pkg/$LH_ROOT/bin/
+   mkdir -p $pkgdir/$LH_ROOT/bin/
 
-   cd $startdir
    # executables
-   install -m0755 -D *.pl  $startdir/pkg/$LH_ROOT/bin/
+   install -m0755 -D $srcdir/*.pl  $pkgdir/$LH_ROOT/bin/
 }
-md5sums=('4ba1c0ed16d2331e9d86ab34f4c9eeb1')
+md5sums=('da888009e5937e7e3046f5adcb2a604c')
diff --git a/abs/core/mplayer-wrapper/mplayer-wrapper.install b/abs/core/mplayer-wrapper/mplayer-wrapper.install
deleted file mode 100644
index 18f1b75..0000000
--- a/abs/core/mplayer-wrapper/mplayer-wrapper.install
+++ /dev/null
@@ -1,38 +0,0 @@
-# This is a default template for a post-install scriptlet.  You can
-# remove any functions you don't need (and this header).
-
-# arg 1:  the new package version
-pre_install() {
-/bin/true
-}
-
-# arg 1:  the new package version
-post_install() {
-/bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-pre_upgrade() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-post_upgrade() {
-  /bin/true
-}
-
-# arg 1:  the old package version
-pre_remove() {
-  /bin/true
-}
-
-# arg 1:  the old package version
-post_remove() {
-  /bin/true
-}
-
-op=$1
-shift
-$op $*
diff --git a/abs/core/mplayer-wrapper/mplayer-wrapper.pl b/abs/core/mplayer-wrapper/mplayer-wrapper.pl
index a4c9d64..d938fbf 100644
--- a/abs/core/mplayer-wrapper/mplayer-wrapper.pl
+++ b/abs/core/mplayer-wrapper/mplayer-wrapper.pl
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-use Shell;
+use CPAN::Shell;
 use strict;
 use POSIX qw(floor);
 
-- 
cgit v0.12


From 67a3968380d4d58feec0a39c379bc5747891578b Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 27 Nov 2013 17:26:35 -0600
Subject: supplemental-web:  fix system submenu, so clicking on it takes you to
 logs (the first thing in the menu)

---
 abs/core/supplemental-web/PKGBUILD             | 2 +-
 abs/core/supplemental-web/contents/header.html | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core/supplemental-web/PKGBUILD b/abs/core/supplemental-web/PKGBUILD
index 90d2370..0ac38a4 100644
--- a/abs/core/supplemental-web/PKGBUILD
+++ b/abs/core/supplemental-web/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=supplemental-web
 pkgname=('supplemental-web' 'supplemental-web-slave')
 pkgver=8.0
-pkgrel=13
+pkgrel=14
 arch=('i686' 'x86_64')
 license=('GPL')
 backup=('data/srv/httpd/cgi/extra.cfg.txt')
diff --git a/abs/core/supplemental-web/contents/header.html b/abs/core/supplemental-web/contents/header.html
index 5f4bb14..032acd1 100644
--- a/abs/core/supplemental-web/contents/header.html
+++ b/abs/core/supplemental-web/contents/header.html
@@ -45,7 +45,7 @@ function beStatus()
 
 <li><a href="xymon/">Health & Maintenance</a></li>
 
-<li><a href="xymon" >System &#187;</a>
+<li><a href="/logs/" >System &#187;</a>
     <ul>
     <!--    <li><a href="/xymon"  >Health</a></li>-->
         <li><a href="/logs/"  >Logs</a></li>
-- 
cgit v0.12


From d4f87c26be94acfef50c606440fab2dd3f04c167 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 29 Nov 2013 12:05:06 -0600
Subject: plymouth-theme-linhes: adjust log image aspect to be right on
 widescreen.

change background to black to avoid black borders on 1080 displays
---
 abs/core/plymouth-theme-linhes/PKGBUILD            |   17 +-
 abs/core/plymouth-theme-linhes/lh-logo.orig.png    |  Bin 0 -> 98127 bytes
 abs/core/plymouth-theme-linhes/lh-logo.png         |  Bin 0 -> 89125 bytes
 .../plymouth-theme-linhes/linhes-logo.plymouth     |    8 +
 abs/core/plymouth-theme-linhes/linhes-logo.script  | 1051 ++++++++++++++++++++
 abs/core/plymouth-theme-linhes/linhes-logo.tar.gz  |  Bin 143360 -> 0 bytes
 abs/core/plymouth-theme-linhes/password_field.png  |  Bin 0 -> 1101 bytes
 .../plymouth-theme-linhes/plymouth-linhes.install  |    4 +
 .../plymouth-theme-linhes/progress_dot_off.png     |  Bin 0 -> 421 bytes
 abs/core/plymouth-theme-linhes/progress_dot_on.png |  Bin 0 -> 469 bytes
 10 files changed, 1075 insertions(+), 5 deletions(-)
 create mode 100755 abs/core/plymouth-theme-linhes/lh-logo.orig.png
 create mode 100755 abs/core/plymouth-theme-linhes/lh-logo.png
 create mode 100644 abs/core/plymouth-theme-linhes/linhes-logo.plymouth
 create mode 100644 abs/core/plymouth-theme-linhes/linhes-logo.script
 delete mode 100644 abs/core/plymouth-theme-linhes/linhes-logo.tar.gz
 create mode 100644 abs/core/plymouth-theme-linhes/password_field.png
 create mode 100644 abs/core/plymouth-theme-linhes/progress_dot_off.png
 create mode 100644 abs/core/plymouth-theme-linhes/progress_dot_on.png

diff --git a/abs/core/plymouth-theme-linhes/PKGBUILD b/abs/core/plymouth-theme-linhes/PKGBUILD
index 45d41be..4d1a8cf 100644
--- a/abs/core/plymouth-theme-linhes/PKGBUILD
+++ b/abs/core/plymouth-theme-linhes/PKGBUILD
@@ -1,17 +1,24 @@
 #
 pkgname="plymouth-theme-linhes-logo"
 pkgver=1
-pkgrel=1
-pkgdesc="linhes logo theme for plymouth"
+pkgrel=2
+pkgdesc="LinHES theme for plymouth"
 arch=('any')
 license=('GPL')
 depends=('plymouth')
 options=('')
-source=("linhes-logo.tar.gz")
+source=('lh-logo.png' 'linhes-logo.plymouth' 'linhes-logo.script' 'password_field.png'
+        'progress_dot_off.png' 'progress_dot_on.png')
 install=plymouth-linhes.install
+
 package() {
-    cd $srcdir/linhes-logo
+    cd $srcdir
     mkdir -p $pkgdir/usr/share/plymouth/themes/linhes-logo
     install -Dm644 * $pkgdir/usr/share/plymouth/themes/linhes-logo
 }
-md5sums=('ec26e16177210f616765e3848b1bf5e4')
+md5sums=('1f8d343587e12f36df5d995034e278a1'
+         'ce896cdeb403f5d0f3df5886e88b4ac5'
+         'c13aad1b1d821160dfafeaeb827a925c'
+         '1ebfd289a00fcd6ed973eb4576ef22ab'
+         '28321edbf593e7d9c7ad1edc70e00224'
+         'f3d3f9c4eb33cdbeec16c2d6745e9f73')
diff --git a/abs/core/plymouth-theme-linhes/lh-logo.orig.png b/abs/core/plymouth-theme-linhes/lh-logo.orig.png
new file mode 100755
index 0000000..c3696e4
Binary files /dev/null and b/abs/core/plymouth-theme-linhes/lh-logo.orig.png differ
diff --git a/abs/core/plymouth-theme-linhes/lh-logo.png b/abs/core/plymouth-theme-linhes/lh-logo.png
new file mode 100755
index 0000000..dbd0b25
Binary files /dev/null and b/abs/core/plymouth-theme-linhes/lh-logo.png differ
diff --git a/abs/core/plymouth-theme-linhes/linhes-logo.plymouth b/abs/core/plymouth-theme-linhes/linhes-logo.plymouth
new file mode 100644
index 0000000..08d0707
--- /dev/null
+++ b/abs/core/plymouth-theme-linhes/linhes-logo.plymouth
@@ -0,0 +1,8 @@
+[Plymouth Theme]
+Name=linhes-logo
+Description=A theme that features a blank background with a logo.
+ModuleName=script
+
+[script]
+ImageDir=/usr/share/plymouth/themes/linhes-logo
+ScriptFile=/usr/share/plymouth/themes/linhes-logo/linhes-logo.script
diff --git a/abs/core/plymouth-theme-linhes/linhes-logo.script b/abs/core/plymouth-theme-linhes/linhes-logo.script
new file mode 100644
index 0000000..6e6853e
--- /dev/null
+++ b/abs/core/plymouth-theme-linhes/linhes-logo.script
@@ -0,0 +1,1051 @@
+#  arch-logo.script - boot splash plugin
+# 
+#  Copyright (C) 2009 Canonical Ltd.
+# 
+#  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, 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., 59 Temple Place - Suite 330, Boston, MA
+#  02111-1307, USA.
+# 
+# Re-written by Rafael Laguna <rafaellaguna@gmail.com> based from
+#  original by Alberto Milone <alberto.milone@canonical.com>
+#
+#  Based on the example provided with the "script plugin" written by:
+#              Charlie Brej   <cbrej@cs.man.ac.uk>
+# 
+
+# Set the text colour in (rgb / 256)
+text_colour.red = 1.0;
+text_colour.green = 1.0;
+text_colour.blue = 1.0;
+
+# Tinted text #988592
+tinted_text_colour.red = 0.59;
+tinted_text_colour.green = 0.52;
+tinted_text_colour.blue = 0.57;
+
+# Action Text - #ffffff - RGB 255 255 255
+action_text_colour.red = 1.0;
+action_text_colour.green = 1.0;
+action_text_colour.blue = 1.0;
+
+# Orange - #ff4012 - RGB 255 64 18
+debugsprite = Sprite();
+debugsprite_bottom = Sprite();
+debugsprite_medium = Sprite();
+
+# are we currently prompting for a password?
+prompt_active = 0;
+
+# General purpose function to create text
+fun WriteText (text, colour) {
+    image = Image.Text (text, colour.red, colour.green, colour.blue);
+    return image;
+}
+
+fun ImageToText (text) {
+    image = WriteText (text, text_colour);
+    return image;
+}
+
+fun ImageToTintedText (text) {
+    image = WriteText (text, tinted_text_colour);
+    return image;
+}
+
+fun ImageToActionText (text) {
+    image = WriteText (text, action_text_colour);
+    return image;
+}
+
+fun Debug(text) {
+    debugsprite.SetImage(ImageToText (text));
+}
+
+fun DebugBottom(text) {
+    debugsprite_bottom.SetImage(ImageToText (text));
+    debugsprite_bottom.SetPosition(0, (Window.GetHeight (0) - 20), 1);
+}
+
+fun DebugMedium(text) {
+    debugsprite_medium.SetImage(ImageToText (text));
+    debugsprite_medium.SetPosition(0, (Window.GetHeight (0) - 60), 1);
+}
+
+fun TextYOffset() {
+    local.y;
+    local.text_height;
+    local.min_height;
+
+    # Put the 1st line below the logo + some spacing 
+    y = logo.y + logo.height + (progress_indicator.bullet_height * 7 ); # + logo_spacing;
+
+    text_height = first_line_height * 7.5;
+
+    min_height = Window.GetHeight();
+    if (y + text_height > min_height)
+        y = min_height - text_height;
+
+    if (y < progress_indicator.y + progress_indicator.height)
+        return progress_indicator.y + progress_indicator.height;
+    return y;
+}
+
+#------------------------------String functions-------------------------------
+
+# This is the equivalent for strstr()
+fun StringString(string, substring) {
+    start = 0;
+    while (String(string).CharAt (start)) {
+        walk = 0;
+        while (String(substring).CharAt (walk) == String(string).CharAt (start + walk) ) {
+            walk++;
+            if (!String(substring).CharAt (walk)) return start;
+        }
+        start++;
+    }
+    
+    return NULL;
+}
+
+fun StringLength (string) {
+    index = 0;
+    while (String(string).CharAt(index)) index++;
+    return index;
+}
+
+fun StringCopy (source, beginning, end) {
+    local.destination = "";
+    for (index = beginning; ( ( (end == NULL) || (index <= end) ) && (String(source).CharAt(index)) ); index++) {
+        local.destination += String(source).CharAt(index);
+    }
+    
+    return local.destination;
+}
+
+fun StringReplace (source, pattern, replacement) {
+    local.found = StringString(source, pattern);
+    if (local.found == NULL)
+        return source;
+
+    local.new_string = StringCopy (source, 0, local.found - 1) +
+                       replacement +
+                       StringCopy (source, local.found + StringLength(pattern), NULL);
+
+    return local.new_string;
+}
+
+# it makes sense to use it only for
+# numbers up to 100
+fun StringToInteger (str) {
+    int = -1;
+    for (i=0; i<=100; i++) {
+        if (i+"" == str) {
+            int = i;
+            break;
+        }
+    }
+    return int;
+}
+
+#-----------------------------------------------------------------------------
+# Previous background colour
+# #300a24 --> 0.19, 0.04, 0.14
+# New background colour
+# #2c001e --> 0.16, 0.00, 0.12
+#
+# New arch background, it's just black
+# 0.00, 0.00, 0.00
+
+Window.SetBackgroundTopColor (0.00, 0.00, 0.00);     # Nice colour on top of the screen fading to
+Window.SetBackgroundBottomColor (0.00, 0.00, 0.00);  # an equally nice colour on the bottom
+
+logo.image = Image ("lh-logo.png"); # "special://logo" is a special keyword which finds the logo image
+#logo.image = Image ("arch_logo.png"); # "special://logo" is a special keyword which finds the logo image
+logo.sprite = Sprite ();
+logo.sprite.SetImage (logo.image);
+logo.width = logo.image.GetWidth ();
+logo.height = logo.image.GetHeight ();
+logo.x = Window.GetX () + Window.GetWidth () / 2 - logo.width /2 ;
+logo.y = Window.GetY () + Window.GetHeight () / 2 - logo.height /2;
+logo.z = 1000;
+logo.sprite.SetX (logo.x);
+logo.sprite.SetY (logo.y);
+logo.sprite.SetZ (logo.z);
+logo.sprite.SetOpacity (1);
+
+# Spacing below the logo - in pixels
+logo_spacing = logo.height * 4;
+
+message_notification[0].image = ImageToTintedText ("");
+message_notification[1].image = ImageToTintedText ("");
+fsck_notification.image = ImageToActionText ("");
+
+status = "normal";
+
+progress_indicator.bullet_off = Image ("progress_dot_off.png");
+progress_indicator.bullet_on = Image ("progress_dot_on.png");
+progress_indicator.bullet_width = progress_indicator.bullet_off.GetWidth ();
+progress_indicator.bullet_height = progress_indicator.bullet_off.GetHeight ();
+progress_indicator.bullet_hspacing = progress_indicator.bullet_width * 1.1;
+progress_indicator.width = progress_indicator.bullet_width * 5;
+progress_indicator.height = progress_indicator.bullet_height;
+#progress_indicator.y = logo.y + logo.height + (logo.height / 4);
+progress_indicator.y = logo.y + logo.height +  4;
+progress_indicator.x = Window.GetX () + Window.GetWidth () / 2 - progress_indicator.width / 2; # logo.x + 26;
+
+# use a fixed string with ascending and descending stems to calibrate the
+# bounding box for the first message, so the messages below don't move up
+# and down according to *their* height.
+first_line_height = ImageToTintedText ("AfpqtM").GetHeight();
+
+# if the user has a 640x480 or 800x600 display, we can't quite fit everything
+# (including passphrase prompts) with the target spacing, so scoot the text up
+# a bit if needed.
+top_of_the_text = TextYOffset();
+
+#-----------------------------------------Logo functions------------------------------
+
+# Call this when updating the screen
+fun draw_logo () {
+    logo.sprite.SetX (logo.x);
+    logo.sprite.SetY (logo.y);
+    logo.sprite.SetZ (logo.z);
+    logo.sprite.SetOpacity (1);
+}
+
+
+#-----------------------------------------Progress Indicator--------------------------
+fun set_progress_indicator () {
+    
+    
+    # Here we assume that we can store half bullets on each half of the screen
+    # together with some spacing
+    local.x = progress_indicator.x;
+    
+    for (index = 0; index <= 4; index++) {
+        # Set the "off" bullets
+        progress_indicator.bullets_off[index].sprite = Sprite (progress_indicator.bullet_off);
+        progress_indicator.bullets_off[index].sprite.SetPosition (local.x, progress_indicator.y, 1000);
+        progress_indicator.bullets_off[index].x = local.x;
+        progress_indicator.bullets_off[index].y = progress_indicator.y;
+        progress_indicator.bullets_off[index].sprite.SetOpacity (1);
+        
+        #local.debug_medium_string = "Progress indicator " + index + ": x = " + progress_indicator.bullets_off[index].x +
+        #                  ", y = " + progress_indicator.bullets_off[index].y  + ", logo width = " + logo.width +
+        #                  ", logo height = " + logo.height + " " + screen_width + " " + screen_height;
+        #   
+        #(index % 2) && DebugMedium (local.debug_medium_string) || DebugBottom (local.debug_medium_string);
+
+        # Set the "on" bullets on top of the "off" bullets and make them transparent
+        progress_indicator.bullets_on[index].sprite = Sprite (progress_indicator.bullet_on);
+        progress_indicator.bullets_on[index].x = progress_indicator.bullets_off[index].x;
+        progress_indicator.bullets_on[index].y = progress_indicator.bullets_off[index].y;
+        progress_indicator.bullets_on[index].sprite.SetPosition (progress_indicator.bullets_on[index].x, progress_indicator.bullets_on[index].y, 10000);
+
+        progress_indicator.bullets_on[index].sprite.SetOpacity (0);
+        
+        local.x += progress_indicator.bullet_hspacing;
+    }
+    #local.debug_string = "Progress indicator: x1 = " + progress_indicator.x + ", x2 = " + local.x + ", y = " + progress_indicator.y +
+    #                      ", x logo = " + logo.x + ", y logo = " + logo.y + ", indicator width = " + progress_indicator.width;
+    #Debug(progress_indicator.bullets_off[0].x);
+}
+
+
+# We have 2 bullets, one on top of the other:
+# The white one is on top of the red one and the former should
+# slowly fade so as to get a nice transition effect.
+fun switch_on_bullet (bullets_off, bullets_on, bullet_number, opacity) {
+    local.x = bullets_on[bullet_number].x;
+    local.y = bullets_on[bullet_number].y;
+    local.z = bullets_on[bullet_number].z;
+    
+    # Hide the bullets which are off
+    bullets_off[bullet_number].sprite.SetOpacity (0);
+    
+    # Show the bullets which are on
+    bullets_on[bullet_number].sprite.SetPosition (local.x, local.y, local.z);
+    bullets_on[bullet_number].sprite.SetOpacity (opacity);
+    
+    # Bump the number of times we have switched on bullets
+    global.times_bullets_switched++;
+}
+
+fun switch_off_bullets () {
+    # Debug("Switching off progress indicator");
+    
+    set_progress_indicator ();
+    global.times_bullets_switched = 0;
+    global.on_off = 1;
+}
+
+# This is something that we can call when we exit
+fun switch_on_bullets () {
+    # Debug("Switching off progress indicator");
+    if (!global.progress_indicator.bullets_on) set_progress_indicator ();
+    local = global.progress_indicator;
+
+    for (index = 0; bullets_on[index]; index++) {
+        switch_on_bullet (bullets_off, bullets_on, index, 1.0);
+    }
+}
+
+
+# Implement in boot progress callback
+fun animate_progress_indicator (progress, time) {
+    if (global.progress_time == NULL) {
+        global.progress_time = progress;  #time;
+        switch_off_bullets ();
+    }
+
+#    Debug ("progress = " + progress + ", time = " + time + " times switched = " + global.times_bullets_switched + " on_off " + global.on_off);
+
+#    if (global.times_bullets_switched == NULL)
+#        global.times_bullets_switched = 5;
+
+#    if (global.on_off == NULL)
+#        global.on_off = 0;
+
+    if ((progress - global.progress_time) >= 1.0) {
+        global.progress_time = progress;
+        
+        if (global.times_bullets_switched == 5) {
+            # Change which bullets are switched on
+            # and which ones are switched off
+            global.on_off = !global.on_off;
+            global.times_bullets_switched = 0;
+        }
+        
+        if (global.on_off) {
+            switch_on_bullet (progress_indicator.bullets_off, progress_indicator.bullets_on,
+                              global.times_bullets_switched, 1.0);
+        }
+        else {
+            switch_on_bullet (progress_indicator.bullets_on, progress_indicator.bullets_off,
+                              global.times_bullets_switched, 1.0);
+        }
+    }
+    
+    
+    # Start setting bullets to "on" with translucency
+#    for (index = 0; index <= 5; index++) {
+#        opacity = 0.0;
+#        while (opacity <= 1.0) {
+#            switch_on_bullet (progress_indicator.bullets_off, progress_indicator.bullets_on,
+#                              index, opacity);
+#            opacity += 0.1;
+#        }
+#    }
+}
+
+
+#-----------------------------------------Label utility functions---------------------
+
+# label should be either a string or NULL
+# Images for n lines will be created and returned as items of the
+# message_label array
+#
+fun get_message_label (label, is_fake, is_action_line) {
+    # Debug("Get Label position");
+    local.message_label;
+    
+    if (is_fake)
+        # Create a fake label so as to get the y coordinate of
+        # a standard-length label.
+        local.message_image = ImageToTintedText ("This is a fake message");
+    else
+        local.message_image = (is_action_line) && ImageToActionText (label) || ImageToTintedText (label);
+        
+    message_label.width = message_image.GetWidth ();
+    message_label.height = message_image.GetHeight ();
+
+    # Center the line horizontally
+    message_label.x = Window.GetX () + Window.GetWidth () / 2 - message_label.width / 2;
+
+    message_label.y = top_of_the_text;
+
+    # Put the 2nd line below the fsck line
+    if (is_action_line) {
+        local.fsck_label.y = message_label.y + (first_line_height + first_line_height / 2);
+        message_label.y = local.fsck_label.y + (first_line_height * 2);
+    }
+
+    # Debug("action label x = " + message_label.x + " y = " + message_label.y );
+
+#    message_debug = "msg_x = " + message_label.x + " msg_y = " + message_label.y +
+#                    "msg_width = " + message_label.width + " msg_height = " +
+#                    message_label.height + " message = " + label;
+#    Debug(message_debug);
+    
+    return message_label;
+
+}
+
+# Create an fsck label and/or get its position
+fun get_fsck_label (label, is_fake) {
+    # Debug("Get Label position");
+    local.fsck_label = global.progress_label;
+    
+    if (is_fake)
+        fsck_label.image = ImageToTintedText ("This is a fake message");
+    else
+        fsck_label.image = ImageToTintedText (label);
+    
+    fsck_label.width = fsck_label.image.GetWidth ();
+    fsck_label.height = fsck_label.image.GetHeight ();
+    
+    # Centre the label horizontally
+    fsck_label.x = Window.GetX () + Window.GetWidth () / 2 - fsck_label.width / 2;
+    
+    local.first_label = get_message_label (label, 1, 0);
+    
+    # Place the label below the 1st message line
+    fsck_label.y = local.first_label.y + local.first_label.height + (local.first_label.height / 2);
+    
+#    message_debug = "msg_x = " + fsck_label.x + " msg_y = " + fsck_label.y +
+#                    "msg_width = " + fsck_label.width + " msg_height = " +
+#                    fsck_label.height + " message = " + label;
+#    Debug(message_debug);
+    
+    return fsck_label;
+}
+
+#-----------------------------------------Message stuff --------------------------------
+#
+
+# Set up a message label
+#
+# NOTE: this is called when doing something like 'plymouth message "hello world"'
+#
+fun setup_message (message_text, x, y, z, index) {
+    # Debug("Message setup");
+    global.message_notification[index].image = (index) && ImageToActionText (message_text) || ImageToTintedText (message_text);
+
+    # Set up the text message, if any
+    message_notification[index].x = x;
+    message_notification[index].y = y;
+    message_notification[index].z = z;
+    
+    message_notification[index].sprite = Sprite ();
+    message_notification[index].sprite.SetImage (message_notification[index].image);
+    message_notification[index].sprite.SetX (message_notification[index].x);
+    message_notification[index].sprite.SetY (message_notification[index].y);
+    message_notification[index].sprite.SetZ (message_notification[index].z);
+
+}
+
+fun show_message (index) {
+    if (global.message_notification[index].sprite) global.message_notification[index].sprite.SetOpacity(1);
+}
+
+fun hide_message (index) {
+    if (global.message_notification[index].sprite) global.message_notification[index].sprite.SetOpacity(0);
+}
+
+
+
+
+# the callback function is called when new message should be displayed.
+# First arg is message to display.
+fun message_callback (message)
+{
+    # Debug("Message callback");
+    is_fake = 0;
+    if (!message || (message == "")) is_fake = 1;
+    
+    local.substring = "keys:";
+    
+    # Look for the "keys:" prefix
+    local.keys = StringString(message, local.substring);
+    
+    local.is_action_line = (keys != NULL);
+    #Debug("keys " + local.keys + " substring length = " + StringLength(local.substring));
+
+    # Get the message without the "keys:" prefix
+    if (keys != NULL)
+        message = StringCopy (message, keys + StringLength(local.substring), NULL);
+
+    local.label.is_fake = is_fake;
+    label = get_message_label(message, is_fake, is_action_line);
+    label.z = 10000;
+    
+    setup_message (message, label.x, label.y, label.z, is_action_line);
+    if (prompt_active && local.is_action_line)
+        hide_message (is_action_line);
+    else
+        show_message (is_action_line);
+
+}
+
+
+#-----------------------------------------Display Password stuff -----------------------
+#
+
+fun password_dialogue_setup (message_label) {
+    # Debug("Password dialog setup");
+    
+    local.entry;
+    local.bullet_image;
+    
+    bullet_image = Image ("progress_dot_off.png");
+    entry.image = Image ("password_field.png");
+    
+    # Hide the normal labels
+    prompt_active = 1;
+    if (message_notification[1].sprite) hide_message (1);
+    
+    # Set the prompt label
+    label = get_message_label(message_label, 0, 1);
+    label.z = 10000;
+    
+    setup_message (message_label, label.x, label.y, label.z, 2);
+    show_message (2);
+
+    # Set up the text entry which contains the bullets
+    entry.sprite = Sprite ();
+    entry.sprite.SetImage (entry.image);
+    
+    # Centre the box horizontally
+    entry.x = Window.GetX () + Window.GetWidth () / 2 - entry.image.GetWidth () / 2;
+
+    # Put the entry below the second label.
+    entry.y = message_notification[2].y + label.height;
+
+    #Debug ("entry x = " + entry.x + ", y = " + entry.y);
+    entry.z = 10000;
+    entry.sprite.SetX (entry.x);
+    entry.sprite.SetY (entry.y);
+    entry.sprite.SetZ (entry.z);
+
+    global.password_dialogue = local;
+}
+
+fun password_dialogue_opacity (opacity) {
+    # Debug("Password dialog opacity");
+    global.password_dialogue.opacity = opacity;
+    local = global.password_dialogue;
+
+    # You can make the box translucent with a float
+    # entry.sprite.SetOpacity (0.3);
+    entry.sprite.SetOpacity (opacity);
+    label.sprite.SetOpacity (opacity);
+    
+    if (bullets) {
+        for (index = 0; bullets[index]; index++) {
+            bullets[index].sprite.SetOpacity (opacity);
+        }
+    }
+}
+
+
+# The callback function is called when the display should display a password dialogue.
+# First arg is prompt string, the second is the number of bullets.
+fun display_password_callback (prompt, bullets) {
+    # Debug("Password dialog setup");
+    
+    global.status = "password";
+    if (!global.password_dialogue) password_dialogue_setup(prompt);
+    password_dialogue_opacity (1);
+    bullet_width = password_dialogue.bullet_image.GetWidth();
+    bullet_y = password_dialogue.entry.y +
+               password_dialogue.entry.image.GetHeight () / 2 -
+               password_dialogue.bullet_image.GetHeight () / 2;
+    margin = bullet_width;
+    spaces = Math.Int( (password_dialogue.entry.image.GetWidth () - (margin * 2)) / (bullet_width / 2 ) );
+    #Debug ("spaces = " + spaces + ", bullets = " + bullets);
+    bullets_area.width = margin + spaces * (bullet_width / 2);
+    bullets_area.x = Window.GetX () + Window.GetWidth () / 2 - bullets_area.width / 2;
+    #DebugBottom ("pwd_entry x = " + password_dialogue.entry.x + ", bullets_area.x = " + bullets_area.x + ", bullets_area.width = " + bullets_area.width);
+    if (bullets > spaces)
+        bullets = spaces;
+    for (index = 0; password_dialogue.bullets[index] || index < bullets; index++){
+        if (!password_dialogue.bullets[index]) {
+            password_dialogue.bullets[index].sprite = Sprite ();
+            password_dialogue.bullets[index].sprite.SetImage (password_dialogue.bullet_image);
+            password_dialogue.bullets[index].x = bullets_area.x + # password_dialogue.entry.x + margin +
+                                                 index * bullet_width / 2;
+            password_dialogue.bullets[index].sprite.SetX (password_dialogue.bullets[index].x);
+            password_dialogue.bullets[index].y = bullet_y;
+            password_dialogue.bullets[index].sprite.SetY (password_dialogue.bullets[index].y);
+            password_dialogue.bullets[index].z = password_dialogue.entry.z + 1;
+            password_dialogue.bullets[index].sprite.SetZ (password_dialogue.bullets[index].z);
+        }
+
+        password_dialogue.bullets[index].sprite.SetOpacity (0);
+
+        if (index < bullets) {
+            password_dialogue.bullets[index].sprite.SetOpacity (1);
+        }
+    }
+}
+
+Plymouth.SetDisplayPasswordFunction (display_password_callback); 
+
+Plymouth.SetMessageFunction (message_callback);
+
+Plymouth.SetBootProgressFunction (animate_progress_indicator);
+
+# Plymouth.SetBootProgressFunction: the callback function is called with two numbers, the progress (between 0 and 1) and the time spent booting so far
+# Plymouth.SetRootMountedFunction: the callback function is called when a new root is mounted
+# Plymouth.SetKeyboardInputFunction: the callback function is called with a string containing a new character entered on the keyboard
+
+#----------------------------------------- FSCK Counter --------------------------------
+
+# Initialise the counter
+fun init_fsck_count () {
+    # The number of fsck checks in this cycle
+    global.counter.total = 0;
+    # The number of fsck checks already performed + the current one
+    global.counter.current = 1;
+    # The previous fsck
+    global.counter.last = 0;
+}
+
+# Increase the total counter
+fun increase_fsck_count () {
+    global.counter.total++;
+}
+
+fun increase_current_fsck_count () {
+    global.counter.last = global.counter.current++;
+}
+
+# Clear the counter
+fun clear_fsck_count () {
+    global.counter = NULL;
+    init_fsck_count ();
+}
+
+#----------------------------------------- Progress Label ------------------------------
+
+
+# Change the opacity level of a progress label
+#
+# opacity = 1 -> show
+# opacity = 0 -> hide
+# opacity = 0.3 (or any other float) -> translucent
+#
+fun set_progress_label_opacity (opacity) {
+    # the label
+    progress_label.sprite.SetOpacity (opacity);
+    
+    # Make the slot available again when hiding the bar
+    # So that another bar can take its place
+    if (opacity == 0) {
+        progress_label.is_available = 1;
+        progress_label.device = "";
+    }
+}
+
+# Set up a new Progress Bar
+#
+# TODO: Make it possible to reuse (rather than recreate) a bar
+#       if .is_available = 1. Ideally this would just reset the
+#       label, the associated
+#       device and the image size of the sprite.
+
+fun init_progress_label (device, status_string) {
+    # Make the slot unavailable
+    global.progress_label.is_available = 0;
+    progress_label.progress = 0;
+    progress_label.device = device;
+    progress_label.status_string = status_string;
+}
+
+# See if the progress label is keeping track of the fsck
+# of "device"
+#
+fun device_has_progress_label (device) {
+    #DebugBottom ("label device = " + progress_label.device + " checking device " + device);
+    return (progress_label.device == device);
+}
+
+# Update the Progress bar which corresponds to index
+#
+fun update_progress_label (progress) {
+    # If progress is NULL then we just refresh the label.
+    # This happens when only counter.total has changed.
+    if (progress != NULL) {
+        progress_label.progress = progress;
+    
+        #Debug("device " + progress_label.device + " progress " + progress);
+    
+        # If progress >= 100% hide the label and make it available again
+        if (progress >= 100) {
+            set_progress_label_opacity (0);
+        
+            # See if we any other fsck check is complete
+            # and, if so, hide the progress bars and the labels
+            on_fsck_completed ();
+        
+            return 0;
+        }
+    }    
+    # Update progress label here
+    #
+    # FIXME: the queue logic from this theme should really be moved into mountall
+    # instead of using string replacement to deal with localised strings.
+    label = StringReplace (progress_label.status_string[0], "%1$d", global.counter.current);
+    label = StringReplace (label, "%2$d",  global.counter.total);
+    label = StringReplace (label, "%3$d",  progress_label.progress);
+    label = StringReplace (label, "%%",  "%");
+
+    progress_label = get_fsck_label (label, 0);
+    #progress_label.progress = progress;
+
+    progress_label.sprite = Sprite (progress_label.image);
+    
+    # Set up the bar
+    progress_label.sprite.SetPosition(progress_label.x, progress_label.y, 1);
+
+    set_progress_label_opacity (1);
+
+}
+
+# Refresh the label so as to update counters
+fun refresh_progress_label () {
+    update_progress_label (NULL);
+}
+
+#----------------------------------------- FSCK Queue ----------------------------------
+
+# Initialise the fsck queue
+fun init_queue () {
+    global.fsck_queue[0].device;
+    global.fsck_queue[0].progress;
+    global.fsck_queue.counter = 0;
+    global.fsck_queue.biggest_item = 0;    
+}
+
+fun clear_queue () {
+    global.fsck_queue = NULL;
+    init_queue ();
+}
+
+# Return either the device index in the queue or -1
+fun queue_look_up_by_device (device) {
+    for (i=0; i <= fsck_queue.biggest_item; i++) {
+        if ((fsck_queue[i]) && (fsck_queue[i].device == device))
+            return i;
+    }
+    return -1;
+}
+
+# Keep track of an fsck process in the queue
+fun add_fsck_to_queue (device, progress) {
+    # Look for an empty slot in the queue
+    for (i=0; global.fsck_queue[i].device; i++) {
+        continue;
+    }
+    local.index = i;
+    
+    # Set device and progress
+    global.fsck_queue[local.index].device = device;
+    global.fsck_queue[local.index].progress = progress;
+    
+    # Increase the queue counter
+    global.fsck_queue.counter++;
+    
+    # Update the max index of the array for iterations
+    if (local.index > global.fsck_queue.biggest_item)
+        global.fsck_queue.biggest_item = local.index;
+    
+    #DebugMedium ("Adding " + device + " at " + local.index);
+}
+
+fun is_queue_empty () {
+    return (fsck_queue.counter == 0);
+}
+
+fun is_progress_label_available () {
+    return (progress_label.is_available == 1);
+}
+
+
+# This should cover the case in which the fsck checks in
+# the queue are completed before the ones showed in the
+# progress label
+fun on_queued_fsck_completed () {
+    if (!is_queue_empty ())
+        return;
+    
+    # Hide the extra label, if any
+    #if (progress_bar.extra_label.sprite)
+    #    progress_bar.extra_label.sprite.SetOpacity(0);
+}
+
+fun remove_fsck_from_queue (index) {
+    # Free memory which was previously allocated for
+    # device and progress
+    global.fsck_queue[index].device = NULL;
+    global.fsck_queue[index].progress = NULL;
+
+    # Decrease the queue counter
+    global.fsck_queue.counter--;
+    
+    # See if there are other processes in the queue
+    # if not, clear the extra_label
+    on_queued_fsck_completed ();
+}
+
+fun on_fsck_completed () {
+    # We have moved on to tracking the next fsck
+    increase_current_fsck_count ();
+
+    if (!is_progress_label_available ())
+        return;
+    
+    if (!is_queue_empty ())
+        return;
+    
+    # Hide the progress label
+    if (progress_label.sprite)
+        progress_label.sprite.SetOpacity (0);
+    
+    # Clear the queue
+    clear_queue ();
+
+    # Clear the fsck counter
+    clear_fsck_count ();
+}
+
+# Update an fsck process that we keep track of in the queue
+fun update_progress_in_queue (index, device, progress) {
+    # If the fsck is complete, remove it from the queue
+    if (progress >= 100) {
+        remove_fsck_from_queue (index);
+        on_queued_fsck_completed ();
+        return;
+    }
+    
+    global.fsck_queue[index].device = device;
+    global.fsck_queue[index].progress = progress;
+    
+}
+
+# TODO: Move it to some function
+# Create an empty queue
+#init_queue ();
+
+
+#----------------------------------------- FSCK Functions ------------------------------
+
+
+# Either add a new bar for fsck checks or update an existing bar
+#
+# NOTE: no more than "progress_bar.max_number" bars are allowed
+#
+fun fsck_check (device, progress, status_string) {
+
+    # The 1st time this will take place
+    if (!global.progress_label) {
+        # Increase the fsck counter
+        increase_fsck_count ();
+
+        # Set up a new label for the check
+        init_progress_label (device, status_string);
+        update_progress_label (progress);
+
+        return;
+    }
+
+    
+    if (device_has_progress_label (device)) {
+        # Update the progress of the existing label
+        update_progress_label (progress);
+    }
+    else {
+        # See if there's already a slot in the queue for the device
+        local.queue_device_index = queue_look_up_by_device(device);
+
+        # See if the progress_label is available
+        if (progress_label.is_available) {
+            
+#            local.my_string = "available index " + local.available_index + " progress_bar counter is " + progress_bar.counter;
+#            Debug(local.my_string);
+            
+                
+            # If the fsck check for the device was in the queue, then
+            # remove it from the queue
+            if (local.queue_device_index >= 0) {
+                remove_fsck_from_queue (index);
+            }
+            else {
+                # Increase the fsck counter
+                increase_fsck_count ();
+            }
+            
+#            local.my_string += local.message;
+            #Debug("setting new label for device " + device + " progress " + progress);
+
+            # Set up a new label for the check
+            init_progress_label (device, status_string);
+            update_progress_label (progress);
+            
+        }
+        # If the progress_label is not available
+        else {
+            
+            # If the fsck check for the device is already in the queue
+            # just update its progress in the queue
+            if (local.queue_device_index >= 0) {
+                #DebugMedium("Updating queue at " + local.queue_device_index + " for device " + device);
+                update_progress_in_queue (local.queue_device_index, device, progress);
+            }
+            # Otherwise add the check to the queue
+            else {
+                #DebugMedium("Adding device " + device + " to queue at " + local.queue_device_index);
+                add_fsck_to_queue (device, progress);
+
+                # Increase the fsck counter
+                increase_fsck_count ();
+
+                refresh_progress_label ();
+            }
+            
+        }
+    }
+    
+#    if (!is_queue_empty ()) {
+#        DebugBottom("Extra label for "+ device);
+    #}
+#    else {
+#        DebugBottom("No extra label for " + device + ". 1st Device in the queue "+ fsck_queue[0].device + " counter = " + global.fsck_queue.counter);
+#    }
+}
+
+
+#-----------------------------------------Update Status stuff --------------------------
+#
+# The update_status_callback is what we can use to pass plymouth whatever we want so
+# as to make use of features which are available only in this program (as opposed to
+# being available for any theme for the script plugin).
+#
+# Example:
+#
+#   Thanks to the current implementation, some scripts can call "plymouth --update=fsck:sda1:40"
+#   and this program will know that 1) we're performing and fsck check, 2) we're checking sda1,
+#   3) the program should set the label progress to 40%
+#
+# Other features can be easily added by parsing the string that we pass plymouth with "--update"
+#
+fun update_status_callback (status) {
+#    Debug(status);
+    if (!status) return;
+    
+    string_it = 0;
+    update_strings[string_it] = "";
+    
+    for (i=0; (String(status).CharAt(i) != ""); i++) {
+        local.temp_char = String(status).CharAt(i);
+        if (temp_char != ":")
+            update_strings[string_it] += temp_char;
+        else
+            update_strings[++string_it] = "";
+    }
+    
+#    my_string = update_strings[0] + " " + update_strings[1] + " " + update_strings[2];
+#    Debug(my_string);
+    # Let's assume that we're dealing with these strings fsck:sda1:40
+    if ((string_it >= 2) && (update_strings[0] == "fsck")) {
+        
+        device = update_strings[1];
+        progress = update_strings[2];
+        status_string[0] = update_strings[3]; # "Checking disk %1$d of %2$d (%3$d %% complete)"
+        if (!status_string[0])
+            status_string[0] = "Checking disk %1$d of %2$d (%3$d %% complete)";
+        
+        if ((device != "") && (progress != "")) {
+            progress = StringToInteger (progress);
+        
+            # Make sure that the fsck_queue is initialised
+            if (!global.fsck_queue)
+                init_queue ();
+
+            # Make sure that the fsck counter is initialised
+            if (!global.counter)
+                init_fsck_count ();
+
+#            if (!global.progress_bar.extra_label.sprite)
+#                create_extra_fsck_label ();
+            
+            # Keep track of the fsck check
+            fsck_check (device, progress, status_string);
+        }
+        
+    }
+
+}
+Plymouth.SetUpdateStatusFunction (update_status_callback); 
+
+#-----------------------------------------Display Question stuff -----------------------
+#
+# TODO: Implement this if needed
+#
+# The callback function is called when the display should display a question dialogue.
+# First arg is prompt string, the second is the entry contents.
+#fun display_question_callback (prompt_string, entry_contents)
+#{
+# time++;
+#}
+#
+#Plymouth.SetDisplayQuestionFunction (display_question_callback); 
+
+#-----------------------------------------Refresh stuff --------------------------------
+#
+# Calling Plymouth.SetRefreshFunction with a function will set that function to be
+# called up to 50 times every second, e.g.
+#
+# NOTE: if a refresh function is not set, Plymouth doesn't seem to be able to update
+#       the screen correctly
+#
+fun refresh_callback ()
+{
+    draw_logo ();
+}
+Plymouth.SetRefreshFunction (refresh_callback);
+
+
+#-----------------------------------------Display Normal stuff -----------------------
+#
+# The callback function is called when the display should return to normal
+fun display_normal_callback ()
+{
+    global.status = "normal";
+    if (global.password_dialogue) {
+        password_dialogue_opacity (0);
+        global.password_dialogue = NULL;
+        if (message_notification[2].sprite) hide_message(2);
+        prompt_active = 0;
+    }
+    
+    if (message_notification[1].sprite) show_message (1);
+    
+    
+}
+
+Plymouth.SetDisplayNormalFunction (display_normal_callback);
+
+
+#----------------------------------------- Quit --------------------------------
+
+# TODO: Maybe we should also hide any other dialog
+# Show the logo and make the progress indicator look full when on exit
+fun quit_callback ()
+{
+    logo.sprite.SetOpacity (1);
+    switch_on_bullets (); 
+}
+
+Plymouth.SetQuitFunction(quit_callback);
diff --git a/abs/core/plymouth-theme-linhes/linhes-logo.tar.gz b/abs/core/plymouth-theme-linhes/linhes-logo.tar.gz
deleted file mode 100644
index 1c79f28..0000000
Binary files a/abs/core/plymouth-theme-linhes/linhes-logo.tar.gz and /dev/null differ
diff --git a/abs/core/plymouth-theme-linhes/password_field.png b/abs/core/plymouth-theme-linhes/password_field.png
new file mode 100644
index 0000000..5d2287b
Binary files /dev/null and b/abs/core/plymouth-theme-linhes/password_field.png differ
diff --git a/abs/core/plymouth-theme-linhes/plymouth-linhes.install b/abs/core/plymouth-theme-linhes/plymouth-linhes.install
index 1b43e42..62d2781 100644
--- a/abs/core/plymouth-theme-linhes/plymouth-linhes.install
+++ b/abs/core/plymouth-theme-linhes/plymouth-linhes.install
@@ -1,6 +1,10 @@
 post_install(){
 	/usr/sbin/plymouth-set-default-theme linhes-logo
 }
+
+post_upgrade(){
+    mkinitcpio -p linux
+}
 op=$1
 shift
 $op $*
diff --git a/abs/core/plymouth-theme-linhes/progress_dot_off.png b/abs/core/plymouth-theme-linhes/progress_dot_off.png
new file mode 100644
index 0000000..615a301
Binary files /dev/null and b/abs/core/plymouth-theme-linhes/progress_dot_off.png differ
diff --git a/abs/core/plymouth-theme-linhes/progress_dot_on.png b/abs/core/plymouth-theme-linhes/progress_dot_on.png
new file mode 100644
index 0000000..76d757f
Binary files /dev/null and b/abs/core/plymouth-theme-linhes/progress_dot_on.png differ
-- 
cgit v0.12


From d6516faa2bb58b90035609b16674cb86b75a7570 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 29 Nov 2013 12:39:06 -0600
Subject: update to 0.8.8.52.g37d2e40. refs #891

---
 abs/core/plymouth/PKGBUILD                         | 171 +++++++--------------
 abs/core/plymouth/arch-logo.png                    | Bin 46233 -> 11047 bytes
 abs/core/plymouth/encrypt_hook                     | 139 -----------------
 abs/core/plymouth/encrypt_hook.patch               |  19 ---
 abs/core/plymouth/encrypt_install                  |  44 ------
 abs/core/plymouth/encrypt_install.patch            |  15 --
 abs/core/plymouth/gdm-plymouth.service             |  13 --
 abs/core/plymouth/kdm-plymouth.service             |  13 --
 abs/core/plymouth/kdm-unpatched-plymouth.service   |  15 --
 abs/core/plymouth/lightdm-plymouth.service         |  14 --
 abs/core/plymouth/lxdm-plymouth.service            |  13 --
 abs/core/plymouth/plymouth-0.8.8.tar.bz2           | Bin 1143549 -> 0 bytes
 abs/core/plymouth/plymouth-pid.patch               |  33 ----
 abs/core/plymouth/plymouth-quit.service            |   9 --
 .../plymouth/plymouth-set-default-theme.in.patch   |  14 --
 abs/core/plymouth/plymouth-update-initrd.patch     |   8 -
 abs/core/plymouth/plymouth.functions               |  68 --------
 abs/core/plymouth/plymouth.initcpio_hook           |  16 --
 abs/core/plymouth/plymouth.initcpio_install        |  58 -------
 abs/core/plymouth/plymouth.install                 |  80 +++++-----
 abs/core/plymouth/plymouthd.conf                   |   3 -
 abs/core/plymouth/system-release                   |   1 -
 abs/core/plymouth/systemd-unit-dir.patch           |  11 --
 abs/core/plymouth/udevadm.patch                    |  11 --
 24 files changed, 96 insertions(+), 672 deletions(-)
 delete mode 100644 abs/core/plymouth/encrypt_hook
 delete mode 100644 abs/core/plymouth/encrypt_hook.patch
 delete mode 100644 abs/core/plymouth/encrypt_install
 delete mode 100644 abs/core/plymouth/encrypt_install.patch
 delete mode 100644 abs/core/plymouth/gdm-plymouth.service
 delete mode 100644 abs/core/plymouth/kdm-plymouth.service
 delete mode 100644 abs/core/plymouth/kdm-unpatched-plymouth.service
 delete mode 100644 abs/core/plymouth/lightdm-plymouth.service
 delete mode 100644 abs/core/plymouth/lxdm-plymouth.service
 delete mode 100644 abs/core/plymouth/plymouth-0.8.8.tar.bz2
 delete mode 100644 abs/core/plymouth/plymouth-pid.patch
 delete mode 100644 abs/core/plymouth/plymouth-quit.service
 delete mode 100644 abs/core/plymouth/plymouth-set-default-theme.in.patch
 delete mode 100644 abs/core/plymouth/plymouth-update-initrd.patch
 delete mode 100644 abs/core/plymouth/plymouth.functions
 delete mode 100644 abs/core/plymouth/plymouth.initcpio_hook
 delete mode 100644 abs/core/plymouth/plymouth.initcpio_install
 delete mode 100644 abs/core/plymouth/plymouthd.conf
 delete mode 100644 abs/core/plymouth/system-release
 delete mode 100644 abs/core/plymouth/systemd-unit-dir.patch
 delete mode 100644 abs/core/plymouth/udevadm.patch

diff --git a/abs/core/plymouth/PKGBUILD b/abs/core/plymouth/PKGBUILD
index 34c40c5..a9d1bde 100644
--- a/abs/core/plymouth/PKGBUILD
+++ b/abs/core/plymouth/PKGBUILD
@@ -1,130 +1,73 @@
-# Maintainer:  M0Rf30 <morfeo89@hotmail.it>
-# Contributor: PirateJonno <j@skurvy.no-ip.org>
-# Contributor: Det <nimetonmaili at gmail dot com>
-# Contributor: Biginoz <biginoz _at_ free _point_ fr>
-# Based on plymouth-git: http://aur.archlinux.org/packages.php?ID=26117
-
 pkgname=plymouth
-pkgver=0.8.8
-pkgrel=3
-pkgdesc="A graphical boot splash screen with kernel mode-setting support"
+pkgver=0.8.8.52.g37d2e40
+pkgrel=1
+pkgdesc="A graphical boot splash screen with kernel mode-setting support (Git verson for now)"
+url="http://cgit.freedesktop.org/cgit/plymouth/"
+
 arch=('i686' 'x86_64')
-url="http://freedesktop.org/wiki/Software/Plymouth"
 license=('GPL')
-depends=('libdrm' 'pango'  'gtk2')
-options=('!libtool' '!emptydirs')
-install=${pkgname}.install
+
+depends=('libdrm' 'pango')
+makedepends=('git' 'docbook-xsl')
+optdepends=('ttf-dejavu')
 backup=('etc/plymouth/plymouthd.conf')
-provides=('plymouth')
+options=('!emptydirs')
 conflicts=('plymouth-git')
-source=("http://www.freedesktop.org/software/$pkgname/releases/$pkgname-$pkgver.tar.bz2"
-	'arch-logo.png'
-        "http://projects.archlinux.org/svntogit/packages.git/plain/cryptsetup/repos/core-i686/encrypt_hook"
-        'encrypt_hook.patch'
-        "http://projects.archlinux.org/svntogit/packages.git/plain/cryptsetup/repos/core-i686/encrypt_install"
-        'encrypt_install.patch'
-        'gdm-plymouth.service'
-        'kdm-plymouth.service'
-        'kdm-unpatched-plymouth.service'
-        'lightdm-plymouth.service'
-        'lxdm-plymouth.service'
-        'plymouth.functions'
-        'plymouth.initcpio_hook'
-        'plymouth.initcpio_install'
-        'plymouth-pid.patch'
-        'plymouth-quit.service'
-        'plymouth-set-default-theme.in.patch'
-        'plymouth-update-initrd.patch'
-        'plymouthd.conf'
-        'system-release'
-        'systemd-unit-dir.patch'
-	'udevadm.patch'
+
+source=(
+'git://anongit.freedesktop.org/plymouth'
+'plymouth.hook'
+'plymouth.install'
+'plymouth-encrypt.hook'
+'plymouth-encrypt.install'
+'arch-logo.png'
 )
 
+md5sums=(
+'SKIP'
+'SKIP'
+'SKIP'
+'SKIP'
+'SKIP'
+'SKIP'
+)
+pkgver() {
+    cd "$srcdir"/plymouth
+    git describe --always | sed 's/-/./g'
+}
 
 build() {
-  
-  cd $srcdir 
-   msg "Applying Patches..."
-
-  msg2 "Fixing encrypt HOOK"
-  #patch -p0 -i encrypt_hook.patch --follow-symlinks
-  #patch -p0 -i encrypt_install.patch --follow-symlinks
-  
-  
-  cd $srcdir/$pkgname-$pkgver
-  msg2 "Setting a human-readable error for '# plymouth-set-default-theme -R'"
-  patch -p0 -i ../plymouth-set-default-theme.in.patch
-
-  msg2 "Fixing updating initrd"
-  patch -p0 -i ../plymouth-update-initrd.patch
-
-  msg2 "Changing PID file to /run/plymouth.pid"
-  patch -p1 -i ../plymouth-pid.patch
-
-  msg2 "Changing udevadm path"
-  patch -p1 -i ../udevadm.patch  
-
-  msg2 "Changing SYSTEMD_UNIT_DIR to /usr/lib/systemd/system/"
-  patch -p0 -i ../systemd-unit-dir.patch
-
-  sed -e 's:png_set_gray_1_2_4_to_8:png_set_expand_gray_1_2_4_to_8:g' \
-       -i src/libply-splash-graphics/ply-image.c
-
-  msg "Starting make..."
-
-    ./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --libexecdir=/usr/lib \
-    --enable-tracing \
-    --without-rhgb-compat-link \
-    --with-gdm-autostart-file=yes \
-    --with-logo=/usr/share/plymouth/arch-logo.png \
-    --with-background-start-color-stop=0x000000 \
-    --with-background-end-color-stop=0x4D4D4D \
-    --enable-systemd-integration \
-    --without-system-root-install
-
-  make
+    cd "$srcdir"/plymouth
+    ./autogen.sh --prefix=/usr \
+        --exec-prefix=/usr \
+        --sysconfdir=/etc \
+        --localstatedir=/var \
+        --libdir=/usr/lib \
+        --libexecdir=/usr/lib \
+        --sbindir=/usr/bin \
+        --enable-drm-renderer \
+        --enable-pango \
+        --with-logo=/usr/share/plymouth/arch-logo.png \
+        --with-boot-tty=/dev/tty7 \
+        --with-shutdown-tty=/dev/tty7 \
+        --without-system-root-install
+    make
 }
 
 package() {
-  cd $srcdir/$pkgname-$pkgver
+    cd "$srcdir"/plymouth
+    make DESTDIR="$pkgdir" install
 
-  make DESTDIR="$pkgdir" install
+    # logo
+    install -Dm644 "$srcdir"/arch-logo.png "$pkgdir/usr/share/plymouth/arch-logo.png"
 
-  install -Dm644 "$srcdir/arch-logo.png" "$pkgdir/usr/share/plymouth/arch-logo.png"
-  install -Dm644 ../../encrypt_hook "$pkgdir/usr/lib/initcpio/hooks/plymouth-encrypt"
-  install -Dm644 ../../encrypt_install "$pkgdir/usr/lib/initcpio/install/plymouth-encrypt"
-  install -Dm644 "$srcdir/plymouth.functions" "$pkgdir/etc/rc.d/functions.d/plymouth.functions"
-  install -Dm644 "$srcdir/plymouth.initcpio_hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth"
-  install -Dm644 "$srcdir/plymouth.initcpio_install" "$pkgdir/usr/lib/initcpio/install/plymouth"
-  install -Dm644 "$srcdir/plymouthd.conf" "$pkgdir/etc/plymouth/plymouthd.conf"
-  install -Dm644 "$srcdir/system-release" "$pkgdir/etc/system-release"
+    # remove non-arch script
+    rm "$pkgdir/usr/lib/plymouth/"*-initrd
+    rm "$pkgdir/usr/bin/plymouth-set-default-theme"
 
-  # Plymouth<->systemd integration, including units for DMs
-  for i in {{gdm,kdm{,-unpatched},lightdm,lxdm}-plymouth,plymouth-quit}.service; do
-    install -Dm644 "$srcdir/$i" "$pkgdir/usr/lib/systemd/system/$i"
-  done
+    # initcpio
+    install -Dm644 "$srcdir/plymouth.hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth"
+    install -Dm644 "$srcdir/plymouth.install" "$pkgdir/usr/lib/initcpio/install/plymouth"
+    install -Dm644 "$srcdir/plymouth-encrypt.hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth-encrypt"
+    install -Dm644 "$srcdir/plymouth-encrypt.install" "$pkgdir/usr/lib/initcpio/install/plymouth-encrypt"
 }
-
-md5sums=('38f5e613e5ab17806b950cee2d0d0d4e'
-         '65fa2763d5c9bb9f80973ea5e6e3db3e'
-         'c970831d733ca42e20415005967e7843'
-         '59f703eafd1aee4ca5782a523d412a46'
-         '21c45f9cab3e0b5165f68358884fbd0f'
-         'cdee5ae4c4087181e80fe14061b7d604'
-         '34d0ed7bbcb3d0ea498de24bc17b2ee9'
-         '75ec0ac73eb9a1e3f6104df64520d431'
-         'ceec65ce58accdb270f3eaa23d794b4a'
-         'e6d573b1913f3aa020cbde3863ee80f0'
-         '62c3b4e894330a2ca4c2b8fbcaba083c'
-         'a1763999bc3282771e712765c9427d77'
-         '4f3be343eea9956bbc94d615d5f41def'
-         'e606ce14ceace727c2f13758e371a4ed'
-         '761f5090dc999e50b4572138347c775b'
-         '3bb0b8008edfad9e23703674341766a0'
-         '42fddd683720dbacbe6e30b4b7892f3c'
-         'c2a0cf5a499d6c14723461166a24ede7'
-         '37479b134827dc307b3c55bfb2711e99'
-         'ab8a557d10f74bec5c94ed6cae34729c'
-         '30acbfc7722fb62ee464b8fec32b5cfd'
-         '89014b04513d61e0085e7a0c9924c183')
diff --git a/abs/core/plymouth/arch-logo.png b/abs/core/plymouth/arch-logo.png
index 9f8446b..e5f4055 100644
Binary files a/abs/core/plymouth/arch-logo.png and b/abs/core/plymouth/arch-logo.png differ
diff --git a/abs/core/plymouth/encrypt_hook b/abs/core/plymouth/encrypt_hook
deleted file mode 100644
index 11db344..0000000
--- a/abs/core/plymouth/encrypt_hook
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/ash
-
-run_hook() {
-    modprobe -a -q dm-crypt >/dev/null 2>&1
-    [ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
-
-    # Get keyfile if specified
-    ckeyfile="/crypto_keyfile.bin"
-    if [ -n "$cryptkey" ]; then
-        IFS=: read ckdev ckarg1 ckarg2 <<EOF
-$cryptkey
-EOF
-
-        if [ "$ckdev" = "rootfs" ]; then
-            ckeyfile=$ckarg1
-        elif resolved=$(resolve_device "${ckdev}" ${rootdelay}); then
-            case ${ckarg1} in
-                *[!0-9]*)
-                    # Use a file on the device
-                    # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
-                    mkdir /ckey
-                    mount -r -t "$ckarg1" "$resolved" /ckey
-                    dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
-                    umount /ckey
-                    ;;
-                *)
-                    # Read raw data from the block device
-                    # ckarg1 is numeric: ckarg1=offset, ckarg2=length
-                    dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
-                    ;;
-            esac
-        fi
-        [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
-    fi
-
-    if [ -n "${cryptdevice}" ]; then
-        DEPRECATED_CRYPT=0
-        IFS=: read cryptdev cryptname cryptoptions <<EOF
-$cryptdevice
-EOF
-    else
-        DEPRECATED_CRYPT=1
-        cryptdev="${root}"
-        cryptname="root"
-    fi
-
-    warn_deprecated() {
-        echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
-        echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
-    }
-
-    for cryptopt in ${cryptoptions//,/ }; do
-        case ${cryptopt} in
-            allow-discards)
-                cryptargs="${cryptargs} --allow-discards"
-                ;;
-            *)
-                echo "Encryption option '${cryptopt}' not known, ignoring." >&2
-                ;;
-        esac
-    done
-
-    if resolved=$(resolve_device "${cryptdev}" ${rootdelay}); then
-        if cryptsetup isLuks ${resolved} >/dev/null 2>&1; then
-            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
-            dopassphrase=1
-            # If keyfile exists, try to use that
-            if [ -f ${ckeyfile} ]; then
-                if eval cryptsetup --key-file ${ckeyfile} luksOpen ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; then
-                    dopassphrase=0
-                else
-                    echo "Invalid keyfile. Reverting to passphrase."
-                fi
-            fi
-            # Ask for a passphrase
-            if [ ${dopassphrase} -gt 0 ]; then
-                echo ""
-                echo "A password is required to access the ${cryptname} volume:"
-
-                #loop until we get a real password
-                while ! eval cryptsetup luksOpen ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; do
-                    sleep 2;
-                done
-            fi
-            if [ -e "/dev/mapper/${cryptname}" ]; then
-                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
-                    export root="/dev/mapper/root"
-                fi
-            else
-                err "Password succeeded, but ${cryptname} creation failed, aborting..."
-                exit 1
-            fi
-        elif [ -n "${crypto}" ]; then
-            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
-            msg "Non-LUKS encrypted device found..."
-            if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
-                err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
-                err "Non-LUKS decryption not attempted..."
-                return 1
-            fi
-            exe="cryptsetup create $cryptname $resolved $cryptargs"
-            IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
-$crypto
-EOF
-            [ -n "$c_hash" ]    && exe="$exe --hash '$c_hash'"
-            [ -n "$c_cipher" ]  && exe="$exe --cipher '$c_cipher'"
-            [ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
-            [ -n "$c_offset" ]  && exe="$exe --offset '$c_offset'"
-            [ -n "$c_skip" ]    && exe="$exe --skip '$c_skip'"
-            if [ -f "$ckeyfile" ]; then
-                exe="$exe --key-file $ckeyfile"
-            else
-                exe="$exe --verify-passphrase"
-                echo ""
-                echo "A password is required to access the ${cryptname} volume:"
-            fi
-            eval "$exe $CSQUIET"
-
-            if [ $? -ne 0 ]; then
-                err "Non-LUKS device decryption failed. verify format: "
-                err "      crypto=hash:cipher:keysize:offset:skip"
-                exit 1
-            fi
-            if [ -e "/dev/mapper/${cryptname}" ]; then
-                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
-                    export root="/dev/mapper/root"
-                fi
-            else
-                err "Password succeeded, but ${cryptname} creation failed, aborting..."
-                exit 1
-            fi
-        else
-            err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
-        fi
-    fi
-    rm -f ${ckeyfile}
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/encrypt_hook.patch b/abs/core/plymouth/encrypt_hook.patch
deleted file mode 100644
index a00a160..0000000
--- a/abs/core/plymouth/encrypt_hook.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- encrypt_hooka	2012-07-15 11:17:04.000000000 +0300
-+++ encrypt_hook	2012-07-15 11:32:59.258648852 +0300
-@@ -73,13 +73,10 @@
-             fi
-             # Ask for a passphrase
-             if [ ${dopassphrase} -gt 0 ]; then
--                echo ""
-+                echo
-                 echo "A password is required to access the ${cryptname} volume:"
--
--                #loop until we get a real password
--                while ! eval cryptsetup luksOpen ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; do
--                    sleep 2;
--                done
-+                plymouth ask-for-password --prompt="Password for ${cryptname} volume" --dont-pause-progress --number-of-tries=5 --command="/sbin/cryptsetup luksOpen --key-file=- ${cryptdev} ${cryptname} ${CSQUIET}"
-+                sleep 2
-             fi
-             if [ -e "/dev/mapper/${cryptname}" ]; then
-                 if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
diff --git a/abs/core/plymouth/encrypt_install b/abs/core/plymouth/encrypt_install
deleted file mode 100644
index 38e5ddc..0000000
--- a/abs/core/plymouth/encrypt_install
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-
-build() {
-    local mod
-
-    add_module dm-crypt
-    if [[ $CRYPTO_MODULES ]]; then
-        for mod in $CRYPTO_MODULES; do
-            add_module "$mod"
-        done
-    else
-        add_all_modules '/crypto/'
-    fi
-
-    add_binary "cryptsetup"
-    add_binary "dmsetup"
-    add_file "/usr/lib/udev/rules.d/10-dm.rules"
-    add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
-    add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
-    add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
-
-    add_runscript
-}
-
-help() {
-    cat <<HELPEOF
-This hook allows for an encrypted root device. Users should specify the device
-to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
-where 'device' is the path to the raw device, and 'dmname' is the name given to
-the device after unlocking, and will be available as /dev/mapper/dmname.
-
-For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
-the kernel cmdline, where 'device' represents the raw block device where the key
-exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
-the absolute path of the keyfile within the device.
-
-Without specifying a keyfile, you will be prompted for the password at runtime.
-This means you must have a keyboard available to input it, and you may need
-the keymap hook as well to ensure that the keyboard is using the layout you
-expect.
-HELPEOF
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/encrypt_install.patch b/abs/core/plymouth/encrypt_install.patch
deleted file mode 100644
index d3a42b9..0000000
--- a/abs/core/plymouth/encrypt_install.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- encrypt_install	2012-07-15 11:45:14.644764564 +0300
-+++ encrypt_installnew	2012-07-15 11:46:29.239269291 +0300
-@@ -18,6 +18,12 @@
-     add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
-     add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
-     add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
-+    add_binary "/usr/lib/plymouth/label.so"
-+    add_binary "/usr/lib/plymouth/text.so"
-+    add_file "/usr/share/fonts/TTF/DejaVuSans.ttf"
-+    add_file "/etc/fonts/fonts.conf"
-+    add_file "/etc/fonts/conf.d/60-latin.conf"
-+    add_file "/usr/lib/pango/1.6.0/modules/pango-basic-x.so"
- 
-     add_runscript
- }
diff --git a/abs/core/plymouth/gdm-plymouth.service b/abs/core/plymouth/gdm-plymouth.service
deleted file mode 100644
index d58c0e9..0000000
--- a/abs/core/plymouth/gdm-plymouth.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=GNOME Display Manager
-After=systemd-user-sessions.service
-
-Conflicts=plymouth-quit.service
-After=plymouth-quit.service
-
-[Service]
-ExecStart=/usr/sbin/gdm -nodaemon
-StandardOutput=syslog
-
-[Install]
-Alias=display-manager.service
diff --git a/abs/core/plymouth/kdm-plymouth.service b/abs/core/plymouth/kdm-plymouth.service
deleted file mode 100644
index a9e9142..0000000
--- a/abs/core/plymouth/kdm-plymouth.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=K Display Manager
-After=systemd-user-sessions.service
-
-Conflicts=plymouth-quit.service
-After=plymouth-quit.service
-
-[Service]
-ExecStart=/usr/bin/kdm -nodaemon
-StandardOutput=syslog
-
-[Install]
-Alias=display-manager.service
diff --git a/abs/core/plymouth/kdm-unpatched-plymouth.service b/abs/core/plymouth/kdm-unpatched-plymouth.service
deleted file mode 100644
index 8a4c41d..0000000
--- a/abs/core/plymouth/kdm-unpatched-plymouth.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=K Display Manager
-After=systemd-user-sessions.service
-
-Conflicts=plymouth-quit.service
-After=plymouth-quit.service
-
-[Service]
-ExecStartPre=-/usr/bin/plymouth deactivate
-ExecStartPre=-/usr/bin/plymouth quit --retain-splash
-ExecStart=/usr/bin/kdm -nodaemon
-StandardOutput=syslog
-
-[Install]
-Alias=display-manager.service
diff --git a/abs/core/plymouth/lightdm-plymouth.service b/abs/core/plymouth/lightdm-plymouth.service
deleted file mode 100644
index 47ec47e..0000000
--- a/abs/core/plymouth/lightdm-plymouth.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=LightDM Display Manager
-After=systemd-user-sessions.service
-
-Conflicts=plymouth-quit.service
-After=plymouth-quit.service
-
-[Service]
-ExecStart=/usr/sbin/lightdm
-StandardOutput=syslog
-
-[Install]
-WantedBy=graphical.target
-Alias=display-manager.service
diff --git a/abs/core/plymouth/lxdm-plymouth.service b/abs/core/plymouth/lxdm-plymouth.service
deleted file mode 100644
index dc6b000..0000000
--- a/abs/core/plymouth/lxdm-plymouth.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=LXDE Display Manager
-After=systemd-user-sessions.service
-
-Conflicts=plymouth-quit.service
-After=plymouth-quit.service
-
-[Service]
-ExecStart=/usr/sbin/lxdm >/dev/null 2>&1 </dev/null
-StandardOutput=syslog
-
-[Install]
-Alias=display-manager.service
diff --git a/abs/core/plymouth/plymouth-0.8.8.tar.bz2 b/abs/core/plymouth/plymouth-0.8.8.tar.bz2
deleted file mode 100644
index bf8c051..0000000
Binary files a/abs/core/plymouth/plymouth-0.8.8.tar.bz2 and /dev/null differ
diff --git a/abs/core/plymouth/plymouth-pid.patch b/abs/core/plymouth/plymouth-pid.patch
deleted file mode 100644
index 3f141b0..0000000
--- a/abs/core/plymouth/plymouth-pid.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/systemd-units/systemd-ask-password-plymouth.service.in	2012-09-26 18:50:53.000000000 +0200
-+++ b/systemd-units/systemd-ask-password-plymouth.service.in	2012-10-28 23:12:04.295327564 +0100
-@@ -6,7 +6,7 @@
- After=plymouth-start.service
- Before=shutdown.target
- ConditionKernelCommandLine=!plymouth.enable=0
--ConditionPathExists=/run/plymouth/pid
-+ConditionPathExists=/run/plymouth.pid
- 
- [Service]
- ExecStart=/bin/systemd-tty-ask-password-agent --watch --plymouth
---- a/systemd-units/systemd-ask-password-plymouth.path.in	2012-09-26 18:50:53.000000000 +0200
-+++ b/systemd-units/systemd-ask-password-plymouth.path.in	2012-10-28 23:11:54.348555717 +0100
-@@ -6,7 +6,7 @@
- After=plymouth-start.service
- Before=basic.target shutdown.target
- ConditionKernelCommandLine=!plymouth.enable=0
--ConditionPathExists=/run/plymouth/pid
-+ConditionPathExists=/run/plymouth.pid
- 
- [Path]
- DirectoryNotEmpty=/run/systemd/ask-password
---- a/systemd-units/plymouth-start.service.in	2012-09-26 18:50:53.000000000 +0200
-+++ b/systemd-units/plymouth-start.service.in	2012-10-28 23:11:35.731982414 +0100
-@@ -7,7 +7,7 @@
- ConditionKernelCommandLine=!plymouth.enable=0
- 
- [Service]
--ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=boot --pid-file=@plymouthruntimedir@/pid --attach-to-session
-+ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=boot --pid-file=/run/plymouth.pid --attach-to-session
- ExecStartPost=-/bin/udevadm settle --timeout=30 --exit-if-exists=/sys/class/drm/card0/dev ; /bin/udevadm settle --timeout=30 --exit-if-exists=/sys/class/graphics/fb0/dev ; @PLYMOUTH_CLIENT_DIR@/plymouth show-splash
- Type=forking
- KillMode=none
diff --git a/abs/core/plymouth/plymouth-quit.service b/abs/core/plymouth/plymouth-quit.service
deleted file mode 100644
index 9d16a27..0000000
--- a/abs/core/plymouth/plymouth-quit.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Terminate Plymouth Boot Screen
-After=rc-local.service plymouth-start.service systemd-user-sessions.service
-Before=getty@tty1.service
-
-[Service]
-ExecStart=-/usr/bin/plymouth quit
-Type=oneshot
-TimeoutSec=20
\ No newline at end of file
diff --git a/abs/core/plymouth/plymouth-set-default-theme.in.patch b/abs/core/plymouth/plymouth-set-default-theme.in.patch
deleted file mode 100644
index 21f975d..0000000
--- a/abs/core/plymouth/plymouth-set-default-theme.in.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- scripts/plymouth-set-default-theme.ina	2012-07-15 12:16:53.083156390 +0300
-+++ scripts/plymouth-set-default-theme.in	2012-07-15 12:17:32.715893173 +0300
-@@ -173,7 +173,10 @@
-         exit $?
- fi
- 
--if [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
-+if [ -z ${THEME_NAME} ]; then
-+        echo "Please specify a theme name"
-+        exit 1
-+elif [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
-         echo "${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth does not exist" > /dev/stderr
-         exit 1
- fi
diff --git a/abs/core/plymouth/plymouth-update-initrd.patch b/abs/core/plymouth/plymouth-update-initrd.patch
deleted file mode 100644
index 648c874..0000000
--- a/abs/core/plymouth/plymouth-update-initrd.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- scripts/plymouth-update-initrd.old
-+++ scripts/plymouth-update-initrd
-@@ -1,2 +1,4 @@
- #!/bin/bash
--mkinitrd -f /boot/initrd-$(uname -r).img $(uname -r)
-+find /etc/mkinitcpio.d/ -name \*.preset  -a \! -name example.preset | while read p; do
-+  mkinitcpio -p $p
-+done
diff --git a/abs/core/plymouth/plymouth.functions b/abs/core/plymouth/plymouth.functions
deleted file mode 100644
index cfaa19b..0000000
--- a/abs/core/plymouth/plymouth.functions
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-if [[ -x /usr/bin/plymouth && -x /usr/sbin/plymouthd ]]; then
-
-	ply_client() { /usr/bin/plymouth --ping && /usr/bin/plymouth "$@"; }
-	ply_daemon() { /usr/sbin/plymouthd "$@"; }
-
-	# save a function under a new name
-	save_function() {
-		local ORIG=$(declare -f $1)
-		eval "$2${ORIG#$1}"
-	}
-
-	save_function stat_busy std_stat_busy
-	save_function stat_fail std_stat_fail
-
-	# overwrite status functions
-	stat_busy() {
-		ply_client --update="$1"
-		ply_client message --text="$1"
-		std_stat_busy  "$@"
-	}
-
-	stat_fail() {
-        #JM remove client quitting
-		#ply_client --quit
-		std_stat_fail "$@"
-	}
-
-	# update after local filesystems are mounted
-	ply_sysinit_postmount() { ply_client --sysinit; }
-	add_hook sysinit_postmount ply_sysinit_postmount
-
-	# stop plymouth after rc.multi
-	ply_quit_boot() {
-		ply_client quit --retain-splash
-	}
-	add_hook multi_end ply_quit_boot
-
-	# stop plymouth before shutdown
-	ply_quit_shutdown() {
-		ply_quit_boot
-		[[ $(ps h $(cat /tmp/plymouthd)) ]] && kill -9 $(cat /tmp/plymouthd)
-	}
-#	JM add_hook shutdown_poweroff ply_quit_shutdown
-
-	# start plymouth at the beginning of rc.shutdown
-	ply_shutdown_start(){
-		XPID=`pidof X`
-		if [ "$XPID" ]; then
-			if [ "`runlevel | cut -c 3`" != '5' ]; then
-				local DM
-				for DM in slim gdm kdm xdm entrance; do
-					ck_daemon "$DM" || stop_daemon "$DM"
-				done
-			fi
-			kill -9 $XPID &> /dev/null
-		fi
-		ply_daemon --mode=shutdown --pid-file=/tmp/plymouthd
-		ply_client --show-splash
-
-		# don't get killed by kill_all
-		add_omit_pids `cat /tmp/plymouthd`
-	}
-#remove shutdown hook so plymouth doesn't start
-#JM	add_hook shutdown_start ply_shutdown_start
-
-fi
-# vim: set ts=2 sw=2 ft=sh noet:
diff --git a/abs/core/plymouth/plymouth.initcpio_hook b/abs/core/plymouth/plymouth.initcpio_hook
deleted file mode 100644
index d527f24..0000000
--- a/abs/core/plymouth/plymouth.initcpio_hook
+++ /dev/null
@@ -1,16 +0,0 @@
-run_hook() {
-        msg -n ":: Loading plymouth..."
-
-        /bin/mknod /dev/fb c 29 0 &>/dev/null
-        #/bin/mount devpts /dev/pts -t devpts
-
-        # plymouth deamon
-        #/bin/mkdir -p /run/plymouth
-        /usr/sbin/plymouthd --mode=boot --pid-file=/run/plymouth.pid
-
-        # plymouth frontend
-        /usr/bin/plymouth --show-splash
-        msg "done."
-}
-
-# vim: set ft=sh:
diff --git a/abs/core/plymouth/plymouth.initcpio_install b/abs/core/plymouth/plymouth.initcpio_install
deleted file mode 100644
index 16048f1..0000000
--- a/abs/core/plymouth/plymouth.initcpio_install
+++ /dev/null
@@ -1,58 +0,0 @@
-build() {
-	add_dir /dev/pts
-	add_dir /usr/share/plymouth/themes
-
-	DATADIR="/usr/share"
-	PLYMOUTH_LOGO_FILE="${DATADIR}/plymouth/arch-logo.png"
-	PLYMOUTH_THEME_NAME="$(/usr/sbin/plymouth-set-default-theme)"
-	PLYMOUTH_MODULE_NAME="$(grep "ModuleName *= *" ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')"
-	PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)"
-
-	add_binary /usr/sbin/plymouthd
-	add_binary /usr/bin/plymouth
-
-	add_file ${DATADIR}/plymouth/themes/text/text.plymouth
-	add_binary ${PLYMOUTH_PLUGIN_PATH}/text.so
-	add_file ${DATADIR}/plymouth/themes/details/details.plymouth
-	add_binary ${PLYMOUTH_PLUGIN_PATH}/details.so
-
-
-	add_file "${PLYMOUTH_LOGO_FILE}"
-	add_file /etc/system-release /etc/system-release
-	add_file /etc/plymouth/plymouthd.conf
-        add_file ${DATADIR}/plymouth/plymouthd.defaults
-
-	if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then
-	    echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" > /dev/stderr
-	    exit 1
-	fi
-
-	add_binary ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so
-
-	add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so
-	#add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/x11.so
-	add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so
-
-	if [ -d ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then
-	    for x in ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/* ; do
-		[ ! -f "$x" ] && break
-		add_file $x
-	    done
-	fi
-
-	# suppress a warning in glib (which the label control uses)
-	# about uid 0 by building a dummy NSS stack (LP #649917)
-	add_file /etc/passwd
-	add_file /etc/nsswitch.conf
-	add_binary "$(readlink -e /lib/libnss_files.so.2)"
-	add_file /lib/libnss_files.so.2
-
-	SCRIPT='plymouth'
-}
-
-help() {
-	echo "This hook includes plymouth in the initramfs image."
-}
-
-# vim: set ft=sh:
-#EOF
diff --git a/abs/core/plymouth/plymouth.install b/abs/core/plymouth/plymouth.install
index aafcca8..9194805 100644
--- a/abs/core/plymouth/plymouth.install
+++ b/abs/core/plymouth/plymouth.install
@@ -1,45 +1,43 @@
-post_install() {
-cat <<EOT
-
-==================================================================================
-1. To make Plymouth work:
-     1.1. Add "plymouth" to HOOKS after "base" and "udev" in /etc/mkinitcpio.conf
-     1.2. Add 'quiet splash' to the grub command line
-     1.3. Rebuild your initrd image (# mkinitcpio -p [kernel preset name]).
-          E.g.: sudo mkinitcpio -p linux
-
-2. To enable encryption, replace "encrypt" with "plymouth-encrypt" in
-   mkinitcpio.conf and rebuild your initrd image.
-
-3. You will also need to rebuild your initrd image every time you change your theme
-   (the default is set as 'spinfinity').
-
-   To list all plymouth themes:
-       plymouth-set-default-theme -l
-
-   To change theme:
-       # plymouth-set-default-theme <theme>
-
-   To rebuild initrd image:
-       # mkinitcpio -p linux
-
-4. For Smooth Transition to Display Manager you have to:
-     4.1. See the Wiki Page (link in 5) to prepare your Display Manager
-     4.2. Disable your Display Manager Unit 
-          E.g. : systemctl disable kdm.service
-     4.3. Enable the respective DM-plymouth Unit (GDM,KDM,Lightdm,LXDM units provided)
-          E.g. : systemctl enable kdm-plymouth.service
-
-5. For more information please visit the Wiki page:
-   https://wiki.archlinux.org/index.php/Plymouth
-
-OBS. If you have any leftover "kill Plymouth" lines in /etc/rc.local or ~/.xinitrc
-     they are no longer required.
-==================================================================================
+build() {
+    theme="$(get_theme "/etc/plymouth/plymouthd.conf")"
+    if [[ "$theme" ]]; then
+        add_file /etc/plymouth/plymouthd.conf
+    else
+        # fallback
+        theme="$(get_theme "/usr/share/plymouth/plymouthd.defaults")"
+        if [[ ! "$theme" ]]; then
+            echo "no theme set for plymouth"
+            exit 1
+        fi
+        add_file /usr/share/plymouth/plymouthd.defaults
+    fi
+
+    if [[ ! -d "/usr/share/plymouth/themes/$theme" ]]; then
+        echo "invalid plymouth theme: $theme"
+        exit 1
+    fi
+
+    module="$(get_module "$theme")"
+    add_file /usr/share/plymouth/arch-logo.png
+
+    add_binary /usr/bin/plymouthd
+    add_binary /usr/bin/plymouth
+
+    add_binary /usr/lib/plymouth/renderers/drm.so
+    add_binary /usr/lib/plymouth/renderers/frame-buffer.so
+
+    add_binary /usr/lib/plymouth/$module.so
+    add_full_dir /usr/share/plymouth/themes/$theme
+
+    add_runscript
+}
 
-EOT
+# $1 = file
+get_theme() {
+    grep ^Theme= "$1" | cut -d = -f 2-
 }
 
-post_upgrade() {
-  post_install
+# $1 = theme
+get_module() {
+    grep ^ModuleName= "/usr/share/plymouth/themes/$1/$1.plymouth" | cut -d = -f 2-
 }
diff --git a/abs/core/plymouth/plymouthd.conf b/abs/core/plymouth/plymouthd.conf
deleted file mode 100644
index 50de7f8..0000000
--- a/abs/core/plymouth/plymouthd.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# Administrator customizations go in this file
-[Daemon]
-Theme=spinfinity
diff --git a/abs/core/plymouth/system-release b/abs/core/plymouth/system-release
deleted file mode 100644
index 850183e..0000000
--- a/abs/core/plymouth/system-release
+++ /dev/null
@@ -1 +0,0 @@
-Arch Linux
diff --git a/abs/core/plymouth/systemd-unit-dir.patch b/abs/core/plymouth/systemd-unit-dir.patch
deleted file mode 100644
index 7058c8f..0000000
--- a/abs/core/plymouth/systemd-unit-dir.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.ac.orig	2012-06-12 17:19:48.903409717 +0300
-+++ configure.ac	2012-06-12 17:20:01.916743217 +0300
-@@ -254,7 +254,7 @@
- 
- if test x$enable_systemd_integration = xyes; then
-   AC_DEFINE(PLY_ENABLE_SYSTEMD_INTEGRATION, 1, [Coordinate boot up with systemd])
--  SYSTEMD_UNIT_DIR=/lib/systemd/system
-+  SYSTEMD_UNIT_DIR=/usr/lib/systemd/system
-   AC_SUBST(SYSTEMD_UNIT_DIR)
- fi
- 
diff --git a/abs/core/plymouth/udevadm.patch b/abs/core/plymouth/udevadm.patch
deleted file mode 100644
index aa01e00..0000000
--- a/abs/core/plymouth/udevadm.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/systemd-units/plymouth-start.service.in	2012-09-26 18:50:53.000000000 +0200
-+++ b/systemd-units/plymouth-start.service.in	2012-11-01 00:12:35.186732840 +0100
-@@ -8,7 +8,7 @@
- 
- [Service]
- ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=boot --pid-file=/run/plymouth.pid --attach-to-session
--ExecStartPost=-/bin/udevadm settle --timeout=30 --exit-if-exists=/sys/class/drm/card0/dev ; /bin/udevadm settle --timeout=30 --exit-if-exists=/sys/class/graphics/fb0/dev ; @PLYMOUTH_CLIENT_DIR@/plymouth show-splash
-+ExecStartPost=-/usr/bin/udevadm settle --timeout=30 --exit-if-exists=/sys/class/drm/card0/dev ; /usr/bin/udevadm settle --timeout=30 --exit-if-exists=/sys/class/graphics/fb0/dev ; @PLYMOUTH_CLIENT_DIR@/plymouth show-splash
- Type=forking
- KillMode=none
- SendSIGKILL=no
-- 
cgit v0.12


From 6d3f149ab4808e3e2e53427a7d290a1b7f27f550 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 29 Nov 2013 14:03:49 -0600
Subject: plymouth: forgot to add some files. refs #891.

---
 abs/core/plymouth/plymouth-encrypt.hook    | 142 +++++++++++++++++++++++++++++
 abs/core/plymouth/plymouth-encrypt.install |  50 ++++++++++
 abs/core/plymouth/plymouth.hook            |   4 +
 3 files changed, 196 insertions(+)
 create mode 100644 abs/core/plymouth/plymouth-encrypt.hook
 create mode 100644 abs/core/plymouth/plymouth-encrypt.install
 create mode 100644 abs/core/plymouth/plymouth.hook

diff --git a/abs/core/plymouth/plymouth-encrypt.hook b/abs/core/plymouth/plymouth-encrypt.hook
new file mode 100644
index 0000000..7069eff
--- /dev/null
+++ b/abs/core/plymouth/plymouth-encrypt.hook
@@ -0,0 +1,142 @@
+#!/usr/bin/ash
+
+run_hook() {
+    modprobe -a -q dm-crypt >/dev/null 2>&1
+    [ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
+
+    # Get keyfile if specified
+    ckeyfile="/crypto_keyfile.bin"
+    if [ -n "$cryptkey" ]; then
+        IFS=: read ckdev ckarg1 ckarg2 <<EOF
+$cryptkey
+EOF
+
+        if [ "$ckdev" = "rootfs" ]; then
+            ckeyfile=$ckarg1
+        elif resolved=$(resolve_device "${ckdev}" ${rootdelay}); then
+            case ${ckarg1} in
+                *[!0-9]*)
+                    # Use a file on the device
+                    # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
+                    mkdir /ckey
+                    mount -r -t "$ckarg1" "$resolved" /ckey
+                    dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
+                    umount /ckey
+                    ;;
+                *)
+                    # Read raw data from the block device
+                    # ckarg1 is numeric: ckarg1=offset, ckarg2=length
+                    dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
+                    ;;
+            esac
+        fi
+        [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
+    fi
+
+    if [ -n "${cryptdevice}" ]; then
+        DEPRECATED_CRYPT=0
+        IFS=: read cryptdev cryptname cryptoptions <<EOF
+$cryptdevice
+EOF
+    else
+        DEPRECATED_CRYPT=1
+        cryptdev="${root}"
+        cryptname="root"
+    fi
+
+    warn_deprecated() {
+        echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
+        echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
+    }
+
+    for cryptopt in ${cryptoptions//,/ }; do
+        case ${cryptopt} in
+            allow-discards)
+                cryptargs="${cryptargs} --allow-discards"
+                ;;
+            *)
+                echo "Encryption option '${cryptopt}' not known, ignoring." >&2
+                ;;
+        esac
+    done
+
+    if resolved=$(resolve_device "${cryptdev}" ${rootdelay}); then
+        if cryptsetup isLuks ${resolved} >/dev/null 2>&1; then
+            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
+            dopassphrase=1
+            # If keyfile exists, try to use that
+            if [ -f ${ckeyfile} ]; then
+                if eval cryptsetup --key-file ${ckeyfile} open --type luks ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; then
+                    dopassphrase=0
+                else
+                    echo "Invalid keyfile. Reverting to passphrase."
+                fi
+            fi
+            # Ask for a passphrase
+            if [ ${dopassphrase} -gt 0 ]; then
+                echo ""
+                echo "A password is required to access the ${cryptname} volume:"
+
+###
+                plymouth ask-for-password \
+                    --prompt="Password for ${cryptname} volume" \
+                    --dont-pause-progress \
+                    --number-of-tries=3 \
+                    --command="cryptsetup open --type luks ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}"
+###
+            fi
+            if [ -e "/dev/mapper/${cryptname}" ]; then
+                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
+                    export root="/dev/mapper/root"
+                fi
+            else
+                err "Password succeeded, but ${cryptname} creation failed, aborting..."
+                exit 1
+            fi
+        elif [ -n "${crypto}" ]; then
+            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
+            msg "Non-LUKS encrypted device found..."
+            if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
+                err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
+                err "Non-LUKS decryption not attempted..."
+                return 1
+            fi
+            exe="cryptsetup open --type plain $resolved $cryptname $cryptargs"
+            IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
+$crypto
+EOF
+            [ -n "$c_hash" ]    && exe="$exe --hash '$c_hash'"
+            [ -n "$c_cipher" ]  && exe="$exe --cipher '$c_cipher'"
+            [ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
+            [ -n "$c_offset" ]  && exe="$exe --offset '$c_offset'"
+            [ -n "$c_skip" ]    && exe="$exe --skip '$c_skip'"
+            if [ -f "$ckeyfile" ]; then
+                exe="$exe --key-file $ckeyfile"
+            else
+                exe="$exe --verify-passphrase"
+                echo ""
+                echo "A password is required to access the ${cryptname} volume:"
+            fi
+            eval "$exe $CSQUIET"
+
+            if [ $? -ne 0 ]; then
+                err "Non-LUKS device decryption failed. verify format: "
+                err "      crypto=hash:cipher:keysize:offset:skip"
+                exit 1
+            fi
+            if [ -e "/dev/mapper/${cryptname}" ]; then
+                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
+                    export root="/dev/mapper/root"
+                fi
+            else
+                err "Password succeeded, but ${cryptname} creation failed, aborting..."
+                exit 1
+            fi
+        else
+            err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
+        fi
+    fi
+    rm -f ${ckeyfile}
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/plymouth-encrypt.install b/abs/core/plymouth/plymouth-encrypt.install
new file mode 100644
index 0000000..0ee8512
--- /dev/null
+++ b/abs/core/plymouth/plymouth-encrypt.install
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+build() {
+    local mod
+
+    add_module dm-crypt
+    if [[ $CRYPTO_MODULES ]]; then
+        for mod in $CRYPTO_MODULES; do
+            add_module "$mod"
+        done
+    else
+        add_all_modules '/crypto/'
+    fi
+
+    add_binary "cryptsetup"
+    add_binary "dmsetup"
+    add_file "/usr/lib/udev/rules.d/10-dm.rules"
+    add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
+    add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
+    add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
+
+###
+    add_file "/usr/share/fonts/TTF/DejaVuSans.ttf"
+    add_file "/etc/fonts/fonts.conf"
+    add_file "/etc/fonts/conf.d/60-latin.conf"
+###
+
+    add_runscript
+}
+
+help() {
+    cat <<HELPEOF
+This hook allows for an encrypted root device. Users should specify the device
+to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
+where 'device' is the path to the raw device, and 'dmname' is the name given to
+the device after unlocking, and will be available as /dev/mapper/dmname.
+
+For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
+the kernel cmdline, where 'device' represents the raw block device where the key
+exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
+the absolute path of the keyfile within the device.
+
+Without specifying a keyfile, you will be prompted for the password at runtime.
+This means you must have a keyboard available to input it, and you may need
+the keymap hook as well to ensure that the keyboard is using the layout you
+expect.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/plymouth.hook b/abs/core/plymouth/plymouth.hook
new file mode 100644
index 0000000..36a5e1b
--- /dev/null
+++ b/abs/core/plymouth/plymouth.hook
@@ -0,0 +1,4 @@
+run_hook() {
+    /usr/bin/plymouthd --mode=boot
+    /usr/bin/plymouth --show-splash
+}
-- 
cgit v0.12


From e8a0ffe9df951c0d3122fa1d3b8a24ab9577be02 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 29 Nov 2013 14:32:12 -0600
Subject: xbmc-pvr-addons: initial inclusion. closes #946

---
 abs/extra/xbmc-pvr-addons/PKGBUILD | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 abs/extra/xbmc-pvr-addons/PKGBUILD

diff --git a/abs/extra/xbmc-pvr-addons/PKGBUILD b/abs/extra/xbmc-pvr-addons/PKGBUILD
new file mode 100644
index 0000000..936ef39
--- /dev/null
+++ b/abs/extra/xbmc-pvr-addons/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id$
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+
+pkgname=xbmc-pvr-addons
+pkgver=20131106git
+pkgrel=1
+pkgdesc="XBMC PVR add-ons for current stable xbmc"
+arch=('i686' 'x86_64')
+url="https://github.com/opdenkamp/xbmc-pvr-addons"
+license=('GPL3')
+depends=('xbmc' 'libmysqlclient')
+makedepends=('git' 'libmysqlclient' 'boost')
+optdepends=('tvheadend-git: tvheadend backend' 'mythtv: mythtv backend')
+conflicts=('xbmc-pvr-addons-git')
+#source=("$pkgname-$pkgver.tar.gz::https://github.com/opdenkamp/xbmc-pvr-addons/archive/${pkgver/_/-}.tar.gz")
+#source=("git://github.com/opdenkamp/xbmc-pvr-addons.git")
+source=("git://github.com/fetzerch/xbmc-pvr-addons.git#branch=frodo")
+md5sums=('SKIP')
+
+build() {
+  cd "$srcdir/$pkgname"
+  ./bootstrap
+  ./configure --prefix=/usr --enable-addons-with-dependencies
+  make
+}
+
+package() {
+  cd "$srcdir/$pkgname"
+  make DESTDIR="$pkgdir/" install
+}
-- 
cgit v0.12


From 9900d56351b3beeeb004fc81ca00f810f0401192 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 30 Nov 2013 16:44:37 -0600
Subject: linhes-theme: some more menu adjustments. refs #940

go back to yellow in menu headers
---
 abs/core/linhes-theme/PKGBUILD                |  23 +--
 abs/core/linhes-theme/base.xml.patch          | 119 ++++++--------
 abs/core/linhes-theme/osd.xml.patch           |  25 ++-
 abs/core/linhes-theme/preview.png             | Bin 0 -> 339979 bytes
 abs/core/linhes-theme/progdetails_page1.html  |  61 -------
 abs/core/linhes-theme/recordings-ui.xml.patch | 228 ++++++++++++++++++++++++++
 abs/core/linhes-theme/video-ui.xml.patch      |  29 ----
 7 files changed, 312 insertions(+), 173 deletions(-)
 create mode 100644 abs/core/linhes-theme/preview.png
 delete mode 100644 abs/core/linhes-theme/progdetails_page1.html
 create mode 100644 abs/core/linhes-theme/recordings-ui.xml.patch
 delete mode 100644 abs/core/linhes-theme/video-ui.xml.patch

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 18ed3cb..1b035d4 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,19 +1,18 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=7
+pkgrel=8
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
 patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
-         'menu-ui.xml.patch' 'schedule-ui.xml.patch' 'video-ui.xml.patch')
+         'menu-ui.xml.patch' 'recordings-ui.xml.patch' 'schedule-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git#branch=fixes/0.27"
         `echo ${patches[@]:0}` 'themeinfo.xml' 'install-ui.xml'
-        'background.png' 'qt-background.png' 'tux_thoughts.png'
-        'progdetails_page1.html')
+        'background.png' 'preview.png' 'qt-background.png' 'tux_thoughts.png')
 
 package() {
     THEMEROOT=usr/share/mythtv/themes
@@ -37,15 +36,11 @@ package() {
     rsync -pL $srcdir/*.xml $pkgdir/$THEMEROOT/LinHES/
     rm -r $pkgdir/$THEMEROOT/LinHES/images/backgrounds/*
     rsync -pL $srcdir/*background.png $pkgdir/$THEMEROOT/LinHES/images/backgrounds/
+    rsync -pL $srcdir/preview.png $pkgdir/$THEMEROOT/LinHES/
 
     #tux_thoughts.png is the thought bubble for the menu descriptions
     rsync -pL $srcdir/tux_thoughts.png $pkgdir/$THEMEROOT/LinHES/images/
 
-    #copy in progdetails
-    mkdir -p $pkgdir/$THEMEROOT/LinHES/htmls
-    rsync -pL $srcdir/progdetails_page1.html $pkgdir/$THEMEROOT/LinHES/htmls/
-    rsync -pL $srcdir/progdetails_page1.html $pkgdir/$THEMEROOT/LinHES/htmls/progdetails_page2.html
-
     msg "Modifying yellows and blue to LinHES yellow and blue"
     #yellow
     grep -lr '#d9d900' $pkgdir/$THEMEROOT/LinHES/ | xargs sed -i "s/\#d9d900/\#ebb81c/g"
@@ -56,14 +51,14 @@ package() {
 }
 md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
-         '15b4462932b7be0e56b2e69e0214823a'
-         '18dc450e33aaa9a21f4c293cf883b16b'
+         'e061490fc869e0e14d4e144c17c3ec56'
+         'ed60c5b0b30b1ad1d051a070bfd2f8dd'
          '83b03852c6f46bc791bfa6e8c894ca01'
+         '603420c2771a6ed88e23d961ef40f1cc'
          'aff82cf901edc4baa058013d93610cfc'
-         'ea05a00840b22004f6240913fdc7038d'
          '7d7bc458a8f4af408700609f3e1f412e'
          '909d7a8114436dcfc28a01d0d97ec11f'
          'cbe5f663ebb5d51abe811f81dafec303'
+         'fac3ab2c1aeb3ddb691f2cab8b2aa82e'
          '12d26a786fde397348653128a6d7676a'
-         '2bd09b8049aaf5ba21db5baf3a0ce077'
-         '93db934881cb438fc76ae544d4eee432')
+         '2bd09b8049aaf5ba21db5baf3a0ce077')
diff --git a/abs/core/linhes-theme/base.xml.patch b/abs/core/linhes-theme/base.xml.patch
index 43205a8..5ecde61 100644
--- a/abs/core/linhes-theme/base.xml.patch
+++ b/abs/core/linhes-theme/base.xml.patch
@@ -1,5 +1,5 @@
 --- base.xml.orig	2013-11-22 18:52:58.956295819 +0000
-+++ base.xml	2013-11-26 21:11:40.854761920 +0000
++++ base.xml	2013-11-30 22:28:57.188884895 +0000
 @@ -424,26 +424,26 @@
  
      <!-- Base definition of a base popup backdrop -->
@@ -65,7 +65,14 @@
          <font>baseextrasmall</font>
          <template>%DATE%, %TIME%</template>
          <align>allcenter</align>
-@@ -539,8 +539,8 @@
+@@ -533,19 +533,19 @@
+ 
+     <!-- Base definition of a active button background -->
+     <shape name="base_button_background_active" from="base_button_background_selected">
+-        <fill color="#333333" alpha="175" />
++        <fill color="#000000" alpha="175" />
+         <line color="#454545" alpha="180" width="2" />
+     </shape>
  
      <!-- Base definition of a active button list background -->
      <shape name="base_button_list_background_active" from="base_button_background_selected">
@@ -76,6 +83,21 @@
      </shape>
  
      <!-- Base definition of a disabled button background -->
+     <shape name="base_button_background_disabled" from="base_button_background_selected">
+-        <fill color="#333333" alpha="175" />
++        <fill color="#000000" alpha="175" />
+         <line color="#454545" alpha="180" width="2" />    
+     </shape>
+ 
+@@ -563,7 +563,7 @@
+ 
+     <!-- Base definition of a inactve button background list style -->
+     <shape name="base_button_background_inactive_list_style" from="base_button_background_selected">
+-        <fill color="#333333" alpha="175" />
++        <fill color="#000000" alpha="175" />
+         <line color="#454545" alpha="180" width="2" />
+     </shape>
+ 
 @@ -579,7 +579,7 @@
                      <area>0,0,100%,100%</area>
                  </shape>
@@ -85,6 +107,33 @@
                      <cutdown>yes</cutdown>
                      <align>allcenter</align>
                  </textarea>
+@@ -997,7 +997,7 @@
+                 <shape name="buttonbackground">
+                     <area>0,0,100%,100%</area>
+                     <type>roundbox</type>
+-                    <fill color="#333333" alpha="175" />
++                    <fill color="#000000" alpha="175" />
+                     <line color="#454545" alpha="180" width="2" />
+                     <cornerradius>90</cornerradius>
+                 </shape>
+@@ -1064,7 +1064,7 @@
+                 <shape name="buttonbackground">
+                     <area>0,0,100%,100%</area>
+                     <type>roundbox</type>
+-                    <fill color="#333333" alpha="175" />
++                    <fill color="#000000" alpha="175" />
+                     <line color="#454545" alpha="180" width="2" />
+                     <cornerradius>90</cornerradius>
+                 </shape>
+@@ -1117,7 +1117,7 @@
+                <shape name="background">
+                     <area>0,0,100%,100%</area>
+                     <type>roundbox</type>
+-                    <fill color="#333333" alpha="175" />
++                    <fill color="#000000" alpha="175" />
+                     <line color="#454545" alpha="180" width="2" />
+                     <cornerradius>90</cornerradius>
+                 </shape>
 @@ -1235,15 +1235,13 @@
  
          <group name="clock-backdrop-group" from="base_clock_backdrop_group" />
@@ -143,9 +192,8 @@
  
          <textarea name="messagearea" from="basetextarea">
 -            <area>16,8,368,162</area>
--            <font>basesmalldarkyellow</font>
 +            <area>10,8,582,196</area>
-+            <font>basesmall</font>
+             <font>basesmalldarkyellow</font>
              <multiline>yes</multiline>
              <align>allcenter</align>     
          </textarea>
@@ -201,66 +249,3 @@
          </statetype>
          </buttonlist>
      </window>
-@@ -1384,7 +1382,7 @@
-         <textarea name="messagearea" from="basetextarea">
-             <area>15,10,785,282</area>
-             <multiline>yes</multiline>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <align>allcenter</align>
-         </textarea>
- 
-@@ -1458,7 +1456,7 @@
- 
-         <textarea name="message" from="basetextarea">
-             <area>6,86,590,51</area>
--            <font>basesmalleryellow</font>
-+            <font>basesmaller</font>
-             <multiline>true</multiline>
-             <align>allcenter</align>
-         </textarea>
-@@ -1507,7 +1505,7 @@
- 
-         <textarea name="message" from="basetextarea">
-             <area>14,14,552,66</area>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <align>allcenter</align>
-         </textarea>
- 
-@@ -1569,7 +1567,7 @@
- 
-         <textarea name="message" from="basetextarea">
-             <area>8,8,571,127</area>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <align>allcenter</align>
-             <multiline>yes</multiline>
-             <cutdown>no</cutdown>
-@@ -1713,7 +1711,7 @@
- 
-         <textarea name="message" from="basetextarea">
-             <area>10,14,567,36</area>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <align>allcenter</align>
-         </textarea>
- 
-@@ -1770,7 +1768,7 @@
- 
-         <textarea name="message" from="basetextarea">
-             <area>0,7,580,50</area>
--            <font>basemediumdarkyellow</font>
-+            <font>basemedium</font>
-             <align>allcenter</align>
-             <value>Select Time &amp; Date</value>
-             <multiline>true</multiline>
-@@ -1863,7 +1861,7 @@
- 
-         <textarea name="title" from="basetextarea">
-             <area>18,4,484,66</area>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <multiline>yes</multiline>
-             <align>allcenter</align>
-         </textarea>
diff --git a/abs/core/linhes-theme/osd.xml.patch b/abs/core/linhes-theme/osd.xml.patch
index 587f985..916e629 100644
--- a/abs/core/linhes-theme/osd.xml.patch
+++ b/abs/core/linhes-theme/osd.xml.patch
@@ -1,5 +1,5 @@
---- osd.xml.orig	2013-11-18 21:37:37.415954645 +0000
-+++ osd.xml	2013-11-18 22:57:08.390454672 +0000
+--- osd.xml.orig	2013-11-29 21:53:21.351030883 +0000
++++ osd.xml	2013-11-30 22:28:42.477439824 +0000
 @@ -440,7 +440,8 @@
              <area>90,658,1100,24</area>
              <font>small</font>
@@ -43,3 +43,24 @@
  
  	<textarea name="category">
              <font>supersmallblue</font>
+@@ -1604,6 +1605,11 @@
+             <color>#808080</color>
+         </fontdef>
+ 
++        <fontdef name="smallyellow" face="DejaVu Sans">
++            <color>#d9d900</color>
++            <pixelsize>21</pixelsize>
++        </fontdef>
++
+         <shape name="mythpopupbox-backdrop">
+             <area>339,116,602,488</area>
+             <type>roundbox</type>
+@@ -1665,7 +1671,7 @@
+ 
+         <textarea name="messagearea">
+             <area>349,126,582,196</area>
+-            <font>small</font>
++            <font>smallyellow</font>
+             <multiline>yes</multiline>
+             <align>allcenter</align>
+         </textarea>
diff --git a/abs/core/linhes-theme/preview.png b/abs/core/linhes-theme/preview.png
new file mode 100644
index 0000000..8fa1288
Binary files /dev/null and b/abs/core/linhes-theme/preview.png differ
diff --git a/abs/core/linhes-theme/progdetails_page1.html b/abs/core/linhes-theme/progdetails_page1.html
deleted file mode 100644
index 2f904c8..0000000
--- a/abs/core/linhes-theme/progdetails_page1.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <style type="text/css">
-        body {background-color:#1a1a1a;}
-        h1 {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ebb81c;margin-top: -5pt;text-align: center;}
-        p  {font-family:DejaVu Sans;font-size:1.6em;font-style: normal;color:#ffffff;margin-top: -10pt;text-align: center;}
-        hr {border:1px solid #1a1a1a;background-color:#e6e6e6;height:3px;margin-top: -10pt;margin-bottom: 13pt}
-        #wrap {width:100%;margin:0px auto;}
-        .col {float:left;width:33%;}
-    </style>
-</head>
-
-<body>
-    <h1>%TITLE%</h1><p>%DESCRIPTION%</p>
-    <h1>%TITLE_PRONOUNCE_LABEL%</h1> <p>%TITLE_PRONOUNCE%</p>
-    <hr />
-    <div id="wrap">
-        <div class="col">
-            <h1>%ORIGINAL_AIRDATE_LABEL%</h1> <p>%ORIGINAL_AIRDATE%</p>
-            <h1>%EPISODE_LABEL%</h1> <p>%EPISODE%</p>
-            <h1>%CATEGORY_LABEL%</h1> <p>%CATEGORY%</p>
-            <h1>%CATEGORY_TYPE_LABEL%</h1> <p>%CATEGORY_TYPE%</p>
-            <h1>%PROGRAMID_LABEL%</h1> <p>%PROGRAMID%</p>
-            <h1>%MYTHTV_STATUS_LABEL%</h1> <p>%MYTHTV_STATUS%</p>
-            <h1>%RECORDING_RULE_LABEL%</h1> <p>%RECORDING_RULE%</p>
-            <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p>
-            <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p>
-            <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p>
-        </div>
-        <div class="col">
-            <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p>
-            <h1>%RECORDING_GROUP_LABEL%</h1> <p>%RECORDING_GROUP%</p>
-            <h1>%STORAGE_GROUP_LABEL%</h1> <p>%STORAGE_GROUP%</p>
-            <h1>%PLAYBACK_GROUP_LABEL%</h1> <p>%PLAYBACK_GROUP%</p>
-            <h1>%LAST_RECORDED_LABEL%</h1> <p>%LAST_RECORDED%</p>
-            <h1>%NEXT_RECORDING_LABEL%</h1> <p>%NEXT_RECORDING%</p>
-            <h1>%AVERAGE_TIME_SHIFT_LABEL%</h1> <p>%AVERAGE_TIME_SHIFT%</p>
-            <h1>%WATCH_LIST_SCORE_LABEL%</h1> <p>%WATCH_LIST_SCORE%</p>
-            <h1>%WATCH_LIST_STATUS_LABEL%</h1> <p>%WATCH_LIST_STATUS%</p>
-            <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p>
-            <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p>
-        </div>
-        <div class="col">
-            <h1>%ACTORS_LABEL%</h1> <p>%ACTORS%</p>
-            <h1>%GUEST_STAR_LABEL%</h1> <p>%GUEST_STAR%</p>
-            <h1>%GUEST_LABEL%</h1> <p>%GUEST%</p>
-            <h1>%DIRECTOR_LABEL%</h1> <p>%DIRECTOR%</p>
-            <h1>%PRODUCER_LABEL%</h1> <p>%PRODUCER%</p>
-            <h1>%EXECUTIVE_PRODUCER_LABEL%</h1> <p>%EXECUTIVE_PRODUCER%</p>
-            <h1>%WRITER_LABEL%</h1> <p>%WRITER%</p>
-            <h1>%HOST_LABEL%</h1> <p>%HOST%</p>
-            <h1>%ADAPTER_LABEL%</h1> <p>%ADAPTER%</p>
-            <h1>%PRESENTER_LABEL%</h1> <p>%PRESENTER%</p>
-            <h1>%COMMENTATOR_LABEL%</h1> <p>%COMMENTATOR%</p>
-        </div>
-    </div>
-</body>
-
-</html>
diff --git a/abs/core/linhes-theme/recordings-ui.xml.patch b/abs/core/linhes-theme/recordings-ui.xml.patch
new file mode 100644
index 0000000..743b79c
--- /dev/null
+++ b/abs/core/linhes-theme/recordings-ui.xml.patch
@@ -0,0 +1,228 @@
+--- recordings-ui.xml.orig	2013-11-30 22:40:35.742466059 +0000
++++ recordings-ui.xml	2013-11-30 22:29:06.554349302 +0000
+@@ -700,7 +700,7 @@
+     </window>
+    
+     <window name="changeview">
+-        <area>-1,-1,380,463</area>
++        <area>-1,-1,602,488</area>
+ 
+         <animation trigger="AboutToShow">
+             <section>
+@@ -717,100 +717,100 @@
+         </animation>
+ 
+         <shape name="change-view-backdrop" from="base_popup_backdrop">
+-            <area>0,0,380,463</area>
++            <area>0,0,602,488</area>
+         </shape>
+ 
+         <shape name="change-view-backdrop-line" from="base_backdrop_line">
+-            <area>1,1,378,461</area>
++            <area>1,1,600,486</area>
+         </shape>
+ 
+         <shape name="change-view-top-line" from="base_highlight_line">
+-            <area>2,2,376,2</area>
++            <area>2,2,596,2</area>
+         </shape>
+ 
+         <shape name="change-view-bottom-line" from="base_highlight_line">
+-            <area>2,459,376,2</area>
++            <area>2,484,596,2</area>
+         </shape>
+ 
+         <shape name="change-view-left-line" from="base_highlight_vertical_line">
+-            <area>2,4,2,455</area>
++            <area>2,4,2,480</area>
+         </shape>
+ 
+         <shape name="change-view-right-line" from="base_highlight_vertical_line">
+-            <area>376,4,2,455</area>
++            <area>598,4,2,480</area>
+         </shape>
+ 
+         <shape name="change-view-seperator-top-line" from="base_line">
+-            <area>23,74,334,2</area>
++            <area>23,50,552,2</area>
+         </shape>
+ 
+         <shape name="change-view-seperator-bottom-line" from="base_line">
+-            <area>23,407,334,2</area>
++            <area>23,435,552,2</area>
+         </shape>
+ 
+         <textarea name="title" from="basetextarea">
+-            <area>4,4,372,70</area>
++            <area>10,4,582,46</area>
+             <align>allcenter</align>
+             <font>basesmallyellow</font>
+             <value>Change View</value>
+         </textarea>
+ 
+         <checkbox name="titles" from="base_checkbox">
+-            <position>60,102</position>
++            <position>150,102</position>
+         </checkbox>
+ 
+         <textarea name="titlelabel" from="basetextarea">
+-            <area>110,105,300,30</area>
++            <area>200,105,300,30</area>
+             <value>Show Titles</value>
+         </textarea>
+ 
+         <checkbox name="categories" from="base_checkbox">
+-            <position>60,152</position>
++            <position>150,152</position>
+         </checkbox>
+ 
+         <textarea name="catlabel" from="titlelabel">
+-            <position>110,155</position>
++            <position>200,155</position>
+             <value>Show Categories</value>
+         </textarea>
+ 
+         <checkbox name="recgroups" from="base_checkbox">
+-            <position>60,202</position>
++            <position>150,202</position>
+         </checkbox>
+ 
+         <textarea name="grouplabel" from="titlelabel">
+-            <position>110,205</position>
++            <position>200,205</position>
+             <value>Show Recording Groups</value>
+         </textarea>
+ 
+         <checkbox name="watchlist" from="base_checkbox">
+-            <position>60,252</position>
++            <position>150,252</position>
+         </checkbox>
+ 
+         <textarea name="watchlabel" from="titlelabel">
+-            <position>110,255</position>
++            <position>200,255</position>
+             <value>Show Watch List</value>
+         </textarea>
+ 
+         <checkbox name="searches" from="base_checkbox">
+-            <position>60,302</position>
++            <position>150,302</position>
+         </checkbox>
+ 
+         <textarea name="searchlabel" from="titlelabel">
+-            <position>110,305</position>
++            <position>200,305</position>
+             <value>Show Searches</value>
+         </textarea>
+ 
+         <checkbox name="livetv" from="base_checkbox">
+-            <position>60,352</position>
++            <position>150,352</position>
+         </checkbox>
+ 
+         <textarea name="livelabel" from="titlelabel">
+-            <position>110,355</position>
++            <position>200,355</position>
+             <value>Show LiveTV</value>
+         </textarea>
+ 
+-        <button name="save" from="base_medium_button">
+-            <position>15,414</position>
++        <button name="save" from="base_wide_button">
++            <position>60,440</position>
+             <value>Save</value>
+         </button>
+ 
+@@ -885,7 +885,7 @@
+     </window>
+ 
+     <window name="groupselector">
+-        <area>-1,-1,380,463</area>
++        <area>-1,-1,602,488</area>
+ 
+         <animation trigger="AboutToShow">
+             <section>
+@@ -902,67 +902,67 @@
+         </animation>
+ 
+         <shape name="group-selector-backdrop" from="base_popup_backdrop">
+-            <area>0,0,380,463</area>
++            <area>0,0,602,488</area>
+         </shape>
+ 
+         <shape name="group-selector-backdrop-line" from="base_backdrop_line">
+-            <area>1,1,378,461</area>
++            <area>1,1,600,486</area>
+         </shape>
+ 
+         <shape name="group-selector-top-line" from="base_highlight_line">
+-            <area>2,2,376,2</area>
++            <area>2,2,596,2</area>
+         </shape>
+ 
+         <shape name="group-selector-bottom-line" from="base_highlight_line">
+-            <area>2,459,376,2</area>
++            <area>2,484,596,2</area>
+         </shape>
+ 
+         <shape name="group-selector-left-line" from="base_highlight_vertical_line">
+-            <area>2,4,2,455</area>
++            <area>2,4,2,480</area>
+         </shape>
+ 
+         <shape name="group-selector-right-line" from="base_highlight_vertical_line">
+-            <area>376,4,2,455</area>
++            <area>598,4,2,480</area>
+         </shape>
+ 
+         <shape name="group-selector-seperator-first-line" from="base_line">
+-            <area>23,173,334,2</area>
++            <area>23,50,552,2</area>
+         </shape>
+ 
+         <textarea name="label" from="basetextarea">
+-            <area>14,8,352,161</area>
++            <area>10,4,582,46</area>
+             <align>allcenter</align>
+             <font>basesmalldarkyellow</font>
+         </textarea>
+ 
+         <buttonlist name="groups" from="base_button_list">
+-            <area>16,189,349,264</area>
++            <area>15,56,570,418</area>
+             <drawfrombottom>yes</drawfrombottom>
+             <statetype name="buttonitem">
+                 <state name="active">
+-                    <area>0,0,349,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>15,7,319,24</area>
++                        <area>8,0,570,34</area>
+                     </textarea>
+                 </state>
+                 <state name="selectedactive">
+-                    <area>0,0,349,40</area>
++                    <area>0,0,100%,34</area>
+                     <textarea name="buttontext">
+-                        <area>15,7,319,24</area>
++                        <area>8,0,570,34</area>
+                     </textarea>
+                 </state>
+                 <state name="selectedinactive">
+                     <area>0,0,349,40</area>
+                     <textarea name="buttontext">
+-                        <area>15,7,319,24</area>
++                        <area>8,0,570,34</area>
+                     </textarea>
+                 </state>
+             </statetype>
+             <statetype name="upscrollarrow">
+-                <position>0,256</position>
++                <position>0,418</position>
+             </statetype>
+             <statetype name="downscrollarrow">
+-                <position>20,256</position>
++                <position>20,418</position>
+             </statetype>
+         </buttonlist>
+ 
diff --git a/abs/core/linhes-theme/video-ui.xml.patch b/abs/core/linhes-theme/video-ui.xml.patch
deleted file mode 100644
index cdb4a41..0000000
--- a/abs/core/linhes-theme/video-ui.xml.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- video-ui.xml.orig	2013-11-26 22:18:54.421966293 +0000
-+++ video-ui.xml	2013-11-25 22:17:14.998291698 +0000
-@@ -58,7 +58,7 @@
-         <textarea name="label" from="basetextarea">
-             <area>10,4,543,48</area>
-             <align>allcenter</align>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <value>Cast Members</value>
-         </textarea>
- 
-@@ -169,7 +169,7 @@
-         <textarea name="label" from="basetextarea">
-             <area>24,4,515,41</area>
-             <align>allcenter</align>
--            <font>basesmalldarkyellow</font>
-+            <font>basesmall</font>
-             <value>Full Plot</value>
-         </textarea>
- 
-@@ -2757,7 +2757,7 @@
- 
-         <textarea name="title" from="basetextarea">
-             <area>10,4,780,46</area>
--            <font>basemediumlargerdarkyellow</font>
-+            <font>basemediumlarger</font>
-             <value>Filter Display</value>
-             <align>allcenter</align>
-         </textarea>
-- 
cgit v0.12


From b78e619c1141e989dd8af749550c8ecce8d607e6 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 1 Dec 2013 08:34:41 -0600
Subject: linhes-theme: group filter position tweak. refs #940

---
 abs/core/linhes-theme/PKGBUILD                | 4 ++--
 abs/core/linhes-theme/recordings-ui.xml.patch | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 1b035d4..2b8d462 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=8
+pkgrel=9
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -54,7 +54,7 @@ md5sums=('SKIP'
          'e061490fc869e0e14d4e144c17c3ec56'
          'ed60c5b0b30b1ad1d051a070bfd2f8dd'
          '83b03852c6f46bc791bfa6e8c894ca01'
-         '603420c2771a6ed88e23d961ef40f1cc'
+         '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
          '7d7bc458a8f4af408700609f3e1f412e'
          '909d7a8114436dcfc28a01d0d97ec11f'
diff --git a/abs/core/linhes-theme/recordings-ui.xml.patch b/abs/core/linhes-theme/recordings-ui.xml.patch
index 743b79c..7855e5a 100644
--- a/abs/core/linhes-theme/recordings-ui.xml.patch
+++ b/abs/core/linhes-theme/recordings-ui.xml.patch
@@ -189,7 +189,7 @@
  
          <buttonlist name="groups" from="base_button_list">
 -            <area>16,189,349,264</area>
-+            <area>15,56,570,418</area>
++            <area>15,76,570,398</area>
              <drawfrombottom>yes</drawfrombottom>
              <statetype name="buttonitem">
                  <state name="active">
@@ -218,11 +218,11 @@
              </statetype>
              <statetype name="upscrollarrow">
 -                <position>0,256</position>
-+                <position>0,418</position>
++                <position>0,397</position>
              </statetype>
              <statetype name="downscrollarrow">
 -                <position>20,256</position>
-+                <position>20,418</position>
++                <position>20,397</position>
              </statetype>
          </buttonlist>
  
-- 
cgit v0.12


From d058625e1fe675c8c604ba02170be84bc64a6053 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 2 Dec 2013 10:16:21 -0600
Subject: Revert "perl: update to 5.18.1. refs #944"

This reverts commit ca24846abef286bd1eabe2be7e252a2b59878ab7.
---
 ...GS-and-LDFLAGS-to-their-Config.pm-counter.patch |  83 ++++++++++++++++
 abs/core/perl/ChangeLog                            |  66 +++++++++++++
 abs/core/perl/PKGBUILD                             |  46 +++++----
 abs/core/perl/digest_eval_hole.diff                |  61 ++++++++++++
 abs/core/perl/fix-h2ph-and-tests.patch             | 104 +++++++++++++++++++++
 abs/core/perl/perlbin.sh                           |   0
 6 files changed, 335 insertions(+), 25 deletions(-)
 create mode 100644 abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch
 create mode 100644 abs/core/perl/ChangeLog
 create mode 100644 abs/core/perl/digest_eval_hole.diff
 create mode 100644 abs/core/perl/fix-h2ph-and-tests.patch
 mode change 100644 => 100755 abs/core/perl/perlbin.sh

diff --git a/abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch b/abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch
new file mode 100644
index 0000000..1404460
--- /dev/null
+++ b/abs/core/perl/0001-Append-CFLAGS-and-LDFLAGS-to-their-Config.pm-counter.patch
@@ -0,0 +1,83 @@
+From bb249b0b26c2e79a6f55355ef94889070f07fd21 Mon Sep 17 00:00:00 2001
+From: Niko Tyni <ntyni@debian.org>
+Date: Thu, 28 Apr 2011 09:18:54 +0300
+Subject: [PATCH] Append CFLAGS and LDFLAGS to their Config.pm counterparts in
+ EU::CBuilder
+
+Since ExtUtils::CBuilder 0.27_04 (bleadperl commit 06e8058f27e4),
+CFLAGS and LDFLAGS from the environment have overridden the Config.pm
+ccflags and ldflags settings. This can cause binary incompatibilities
+between the core Perl and extensions built with EU::CBuilder.
+
+Append to the Config.pm values rather than overriding them.
+---
+ .../lib/ExtUtils/CBuilder/Base.pm                  |    6 +++-
+ dist/ExtUtils-CBuilder/t/04-base.t                 |   25 +++++++++++++++++++-
+ 2 files changed, 28 insertions(+), 3 deletions(-)
+
+diff --git a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
+index b572312..2255c51 100644
+--- a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
++++ b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
+@@ -40,11 +40,13 @@ sub new {
+     $self->{config}{$k} = $v unless exists $self->{config}{$k};
+   }
+   $self->{config}{cc} = $ENV{CC} if defined $ENV{CC};
+-  $self->{config}{ccflags} = $ENV{CFLAGS} if defined $ENV{CFLAGS};
++  $self->{config}{ccflags} = join(" ", $self->{config}{ccflags}, $ENV{CFLAGS})
++     if defined $ENV{CFLAGS};
+   $self->{config}{cxx} = $ENV{CXX} if defined $ENV{CXX};
+   $self->{config}{cxxflags} = $ENV{CXXFLAGS} if defined $ENV{CXXFLAGS};
+   $self->{config}{ld} = $ENV{LD} if defined $ENV{LD};
+-  $self->{config}{ldflags} = $ENV{LDFLAGS} if defined $ENV{LDFLAGS};
++  $self->{config}{ldflags} = join(" ", $self->{config}{ldflags}, $ENV{LDFLAGS})
++     if defined $ENV{LDFLAGS};
+ 
+   unless ( exists $self->{config}{cxx} ) {
+     my ($ccpath, $ccbase, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);
+diff --git a/dist/ExtUtils-CBuilder/t/04-base.t b/dist/ExtUtils-CBuilder/t/04-base.t
+index c3bf6b5..1bb15aa 100644
+--- a/dist/ExtUtils-CBuilder/t/04-base.t
++++ b/dist/ExtUtils-CBuilder/t/04-base.t
+@@ -1,7 +1,7 @@
+ #! perl -w
+ 
+ use strict;
+-use Test::More tests => 50;
++use Test::More tests => 64;
+ use Config;
+ use Cwd;
+ use File::Path qw( mkpath );
+@@ -326,6 +326,29 @@ is_deeply( $mksymlists_args,
+     "_prepare_mksymlists_args(): got expected arguments for Mksymlists",
+ );
+ 
++my %testvars = (
++    CFLAGS  => 'ccflags',
++    LDFLAGS => 'ldflags',
++);
++
++while (my ($VAR, $var) = each %testvars) {
++    local $ENV{$VAR};
++    $base = ExtUtils::CBuilder::Base->new( quiet => 1 );
++    ok( $base, "ExtUtils::CBuilder::Base->new() returned true value" );
++    isa_ok( $base, 'ExtUtils::CBuilder::Base' );
++    like($base->{config}{$var}, qr/\Q$Config{$var}/,
++        "honours $var from Config.pm");
++
++    $ENV{$VAR} = "-foo -bar";
++    $base = ExtUtils::CBuilder::Base->new( quiet => 1 );
++    ok( $base, "ExtUtils::CBuilder::Base->new() returned true value" );
++    isa_ok( $base, 'ExtUtils::CBuilder::Base' );
++    like($base->{config}{$var}, qr/\Q$ENV{$VAR}/,
++        "honours $VAR from the environment");
++    like($base->{config}{$var}, qr/\Q$Config{$var}/,
++        "doesn't override $var from Config.pm with $VAR from the environment");
++}
++
+ #####
+ 
+ for ($source_file, $object_file, $lib_file) {
+-- 
+1.7.4.4
+
diff --git a/abs/core/perl/ChangeLog b/abs/core/perl/ChangeLog
new file mode 100644
index 0000000..9add39e
--- /dev/null
+++ b/abs/core/perl/ChangeLog
@@ -0,0 +1,66 @@
+2011-06-22 Angel Velasquez <angvp@archlinux.org>
+    * Added a patch for ExtUtils doesnt overwrite CFLAGS and LDFLAGS
+    * Fixed #FS22197, FS#22441, FS#24767
+    * Rebuilt perl 5.14.1-2 against db 5.2.28
+
+2011-06-16 Angel Velasquez <angvp@archlinux.org>
+    * Fixed #FS24660
+    * Rebuilt against db 5.2.28
+
+2011-05-16  Angel Velasquez <angvp@archlinux.org>
+    * perl 5.14.0
+    * Removed patch for h2ph warning from 5.12.3
+    * Removed provides array, you can use corelist -v 5.14.0 to know the
+    modules included with the perl core, through Module::CoreList (thx j3nnn1
+    for the tip)
+
+2010-11-07  kevin  <kevin@archlinux.org>
+
+    * perl 5.12.2-1
+    - Using /usr/bin/*_perl for script directories
+
+2010-11-06  kevin  <kevin@archlinux.org>
+
+    - Removed otherlibdirs directive from Configure
+    - Removed /usr/*/perl5/site_perl/5.10.1 from INC
+    - Finally removed legacy dirs /usr/lib/perl5/current and
+      /usr/lib/perl5/site_perl/current from @INC
+
+2010-05-23  kevin  <kevin@archlinux.org>
+
+    * perl 5.12.1-2
+    - Francois updated the provides array.
+
+2010-05-23  kevin  <kevin@archlinux.org>
+
+    * perl 5.12.1-1
+
+2010-05-16  kevin  <kevin@archlinux.org>
+
+    * perl 5.12.0-2
+
+2010-05-12  kevin  <kevin@archlinux.org>
+
+    - FS#19411.  Removed the for loop in perlbin.sh which didn't work on zsh.
+      This makes the loop variables unnecessary so the script no longer
+      pollutes the user's environment.
+    - FS#19427.  Added /usr/*/perl5/site_perl/5.10.1 to otherlibdirs to support
+      user built modules.
+
+2010-05-09  kevin  <kevin@archlinux.org>
+
+    * perl 5.12.0-1
+    - Modified perlbin.sh to only add existing dirs to PATH.  Fixes FS#17402,
+      path points to non-existant directories 
+
+2010-05-07  kevin  <kevin@archlinux.org>
+
+    - Added this changelog.
+    - Added -Dinc_version_list=none to fix FS#19136, double entry in @INC.
+      This removes the duplicates and versioned directory entries.
+    - Change scriptdirs to /usr/lib/perl5/{core,vendor,site}_perl/bin to fix
+      Fix FS#13808, binaries don't follow FHS.
+    - Stopped using versioned directories in sitelib and sitearch.
+
+
+# vim: set ft=changelog ts=4 sw=4 et:
diff --git a/abs/core/perl/PKGBUILD b/abs/core/perl/PKGBUILD
index 0dd8177..58b94e7 100644
--- a/abs/core/perl/PKGBUILD
+++ b/abs/core/perl/PKGBUILD
@@ -1,26 +1,25 @@
-# $Id$
-# Maintainer: Florian Pritz <bluewind@xinu.at>
-# Contributor: Angel Velasquez <angvp@archlinux.org>
+# $Id: PKGBUILD 160587 2012-06-02 10:54:59Z bluewind $
+# Maintainer: Angel Velasquez <angvp@archlinux.org> 
 # Contributor: kevin <kevin.archlinux.org>
 # Contributor: judd <jvinet.zeroflux.org>
-# Contributor: francois <francois.archlinux.org>
-
+# Contributor: francois <francois.archlinux.org> 
 pkgname=perl
-pkgver=5.18.1
-pkgrel=1
+pkgver=5.16.0
+pkgrel=2
 pkgdesc="A highly capable, feature-rich programming language"
 arch=(i686 x86_64)
 license=('GPL' 'PerlArtistic')
 url="http://www.perl.org"
 groups=('base')
 depends=('gdbm' 'db' 'coreutils' 'glibc' 'sh')
-source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2
-        perlbin.sh
-        perlbin.csh
-        provides.pl)
+changelog=ChangeLog
+source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2 
+perlbin.sh
+perlbin.csh
+provides.pl)
 install=perl.install
 options=('makeflags' '!purge')
-md5sums=('4ec1a3f3824674552e749ae420c5e68c'
+md5sums=('15a2f95fb27231e10998240f13acf961'
          '5ed2542fdb9a60682f215bd33701e61a'
          '1f0cbbee783e8a6d32f01be5118e0d5e'
          '999c3eea6464860704abbb055a0f0896')
@@ -30,23 +29,19 @@ if [[ ${0##*/} = "parse_pkgbuilds.sh" ]]; then
 	true && provides=($(bsdtar -q -O -xf "/srv/ftp/pool/packages/$pkgname-$pkgver-$pkgrel-$CARCH.pkg.tar.xz" .PKGINFO | sed -rn 's#^provides = (.*)#\1#p'))
 fi
 
-prepare() {
-  cd ${srcdir}/${pkgname}-${pkgver}
-}
-
 build() {
   cd ${srcdir}/${pkgname}-${pkgver}
 
   if [ "${CARCH}" = "x86_64" ]; then
     # for x86_64
     arch_opts="-Dcccdlflags='-fPIC'"
-  else
+  else 
     # for i686
     arch_opts=""
   fi
 
   ./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
-    -Dprefix=/usr -Dvendorprefix=/usr \
+    -Dprefix=/usr -Dinstallprefix=${pkgdir}/usr -Dvendorprefix=/usr \
     -Dprivlib=/usr/share/perl5/core_perl \
     -Darchlib=/usr/lib/perl5/core_perl \
     -Dsitelib=/usr/share/perl5/site_perl \
@@ -64,7 +59,7 @@ build() {
 
 check() {
   cd ${srcdir}/${pkgname}-${pkgver}
-  TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness || true
+  TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
 #  make test
 }
 
@@ -74,15 +69,14 @@ package() {
   provides=(${new_provides[@]})
 
   cd ${srcdir}/${pkgname}-${pkgver}
-  make DESTDIR="$pkgdir" install
+  make install
 
   ### Perl Settings ###
   # Change man page extensions for site and vendor module builds.
-  # Set no mail address since bug reports should go to the bug tracker
-  # and not someone's email.
+  # Use archlinux email address instead of my own.
   sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
-      -e "/^cf_email=/ s/'.*'/''/" \
-      -e "/^perladmin=/ s/'.*'/''/" \
+      -e "/^cf_email=/ s/'.*'/'kevin@archlinux.org'/" \
+      -e "/^perladmin=/ s/'.*'/'kevin@archlinux.org'/" \
       -i ${pkgdir}/usr/lib/perl5/core_perl/Config_heavy.pl
 
   ### CPAN Settings ###
@@ -100,12 +94,14 @@ package() {
   # Profile script to set paths to perl scripts.
   install -D -m755 ${srcdir}/perlbin.sh \
                    ${pkgdir}/etc/profile.d/perlbin.sh
-  # Profile script to set paths to perl scripts on csh. (FS#22441)
+  # Profile script to set paths to perl scripts on csh. (FS#22441) 
   install -D -m755 ${srcdir}/perlbin.csh \
                   ${pkgdir}/etc/profile.d/perlbin.csh
 
   (cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
   (cd ${pkgdir}/usr/bin/core_perl;  ln -sf c2ph pstruct; ln -sf s2p psed)
+  grep -Rl "${pkgdir}" ${pkgdir}/usr | \
+      xargs sed -i "s^${pkgdir}^^g"
 
   # Remove all pod files *except* those under /usr/share/perl5/core_perl/pod/
   # (FS#16488)
diff --git a/abs/core/perl/digest_eval_hole.diff b/abs/core/perl/digest_eval_hole.diff
new file mode 100644
index 0000000..4790413
--- /dev/null
+++ b/abs/core/perl/digest_eval_hole.diff
@@ -0,0 +1,61 @@
+From 4b6a7324284e7435a361c58f7ddb32fc0c635bd0 Mon Sep 17 00:00:00 2001
+From: "Michael G. Schwern" <schwern@pobox.com>
+Date: Mon, 3 Oct 2011 19:05:29 +0100
+Subject: Close the eval "require $module" security hole in
+ Digest->new($algorithm)
+
+Also the filter was incomplete.
+
+Bug-Debian: http://bugs.debian.org/644108
+
+Patch-Name: fixes/digest_eval_hole.diff
+---
+ cpan/Digest/Digest.pm    |    6 ++++--
+ cpan/Digest/t/security.t |   14 ++++++++++++++
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+ create mode 100644 cpan/Digest/t/security.t
+
+diff --git a/cpan/Digest/Digest.pm b/cpan/Digest/Digest.pm
+index 384dfc8..d714434 100644
+--- a/cpan/Digest/Digest.pm
++++ b/cpan/Digest/Digest.pm
+@@ -24,7 +24,7 @@ sub new
+     shift;  # class ignored
+     my $algorithm = shift;
+     my $impl = $MMAP{$algorithm} || do {
+-	$algorithm =~ s/\W+//;
++	$algorithm =~ s/\W+//g;
+ 	"Digest::$algorithm";
+     };
+     $impl = [$impl] unless ref($impl);
+@@ -35,7 +35,9 @@ sub new
+ 	($class, @args) = @$class if ref($class);
+ 	no strict 'refs';
+ 	unless (exists ${"$class\::"}{"VERSION"}) {
+-	    eval "require $class";
++	    my $pm_file = $class . ".pm";
++	    $pm_file =~ s{::}{/}g;
++	    eval { require $pm_file };
+ 	    if ($@) {
+ 		$err ||= $@;
+ 		next;
+diff --git a/cpan/Digest/t/security.t b/cpan/Digest/t/security.t
+new file mode 100644
+index 0000000..5cba122
+--- /dev/null
++++ b/cpan/Digest/t/security.t
+@@ -0,0 +1,14 @@
++#!/usr/bin/env perl
++
++# Digest->new() had an exploitable eval
++
++use strict;
++use warnings;
++
++use Test::More tests => 1;
++
++use Digest;
++
++$LOL::PWNED = 0;
++eval { Digest->new(q[MD;5;$LOL::PWNED = 42]) };
++is $LOL::PWNED, 0;
diff --git a/abs/core/perl/fix-h2ph-and-tests.patch b/abs/core/perl/fix-h2ph-and-tests.patch
new file mode 100644
index 0000000..a2d176e
--- /dev/null
+++ b/abs/core/perl/fix-h2ph-and-tests.patch
@@ -0,0 +1,104 @@
+From 8d66b3f930dc6d88b524d103e304308ae73a46e7 Mon Sep 17 00:00:00 2001
+From: Robin Barker <rmbarker@cpan.org>
+Date: Thu, 22 Apr 2010 11:51:20 +0100
+Subject: [PATCH 1/1] Fix h2ph and test
+
+---
+ lib/h2ph.t    |   12 ++++++++++--
+ utils/h2ph.PL |   28 +++++++++++++++++++++++-----
+ 2 files changed, 33 insertions(+), 7 deletions(-)
+
+diff --git a/lib/h2ph.t b/lib/h2ph.t
+index 27dd7b9..8d62d46 100644
+--- a/lib/h2ph.t
++++ b/lib/h2ph.t
+@@ -18,7 +18,7 @@ if (!(-e $extracted_program)) {
+     exit 0;
+ }
+ 
+-plan(4);
++plan(5);
+ 
+ # quickly compare two text files
+ sub txt_compare {
+@@ -41,8 +41,16 @@ $result = runperl( progfile => 'lib/h2ph.pht',
+                    stderr => 1 );
+ like( $result, qr/syntax OK$/, "output compiles");
+ 
++$result = runperl( progfile => '_h2ph_pre.ph',
++                   switches => ['-c'],
++                   stderr => 1 );
++like( $result, qr/syntax OK$/, "preamble compiles");
++
+ $result = runperl( switches => ["-w"], 
+-                   prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);');
++                   stderr => 1,
++                   prog => <<'PROG' );
++$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);
++PROG
+ is( $result, '', "output free of warnings" );
+ 
+ # cleanup
+diff --git a/utils/h2ph.PL b/utils/h2ph.PL
+index 8f56db4..1255807 100644
+--- a/utils/h2ph.PL
++++ b/utils/h2ph.PL
+@@ -401,7 +401,10 @@ if ($opt_e && (scalar(keys %bad_file) > 0)) {
+ exit $Exit;
+ 
+ sub expr {
+-    $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out.
++    if (/\b__asm__\b/) {	# freak out
++	$new = '"(assembly code)"';
++	return
++    }
+     my $joined_args;
+     if(keys(%curargs)) {
+ 	$joined_args = join('|', keys(%curargs));
+@@ -770,7 +773,7 @@ sub inc_dirs
+ sub build_preamble_if_necessary
+ {
+     # Increment $VERSION every time this function is modified:
+-    my $VERSION     = 2;
++    my $VERSION     = 3;
+     my $preamble    = "$Dest_dir/_h2ph_pre.ph";
+ 
+     # Can we skip building the preamble file?
+@@ -798,7 +801,16 @@ sub build_preamble_if_necessary
+ 		# parenthesized value:  d=(v)
+ 		$define{$_} = $1;
+ 	    }
+-	    if ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
++	    if (/^(\w+)\((\w)\)$/) {
++		my($macro, $arg) = ($1, $2);
++		my $def = $define{$_};
++		$def =~ s/$arg/\$\{$arg\}/g;
++		print PREAMBLE <<DEFINE;
++unless (defined &$macro) { sub $macro(\$) { my (\$$arg) = \@_; \"$def\" } }
++
++DEFINE
++	    } elsif
++		($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
+ 		# float:
+ 		print PREAMBLE
+ 		    "unless (defined &$_) { sub $_() { $1 } }\n\n";
+@@ -807,8 +819,14 @@ sub build_preamble_if_necessary
+ 		print PREAMBLE
+ 		    "unless (defined &$_) { sub $_() { $1 } }\n\n";
+ 	    } elsif ($define{$_} =~ /^\w+$/) {
+-		print PREAMBLE
+-		    "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n";
++		my $def = $define{$_};
++		if ($isatype{$def}) {
++		  print PREAMBLE
++		    "unless (defined &$_) { sub $_() { \"$def\" } }\n\n";
++		} else {
++		  print PREAMBLE
++		    "unless (defined &$_) { sub $_() { &$def } }\n\n";
++	        }
+ 	    } else {
+ 		print PREAMBLE
+ 		    "unless (defined &$_) { sub $_() { \"",
+-- 
+1.6.5.2.74.g610f9.dirty
+
diff --git a/abs/core/perl/perlbin.sh b/abs/core/perl/perlbin.sh
old mode 100644
new mode 100755
-- 
cgit v0.12


From 6fe5a15516d692233f0008f3230c89b95d1dba40 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 2 Dec 2013 11:06:16 -0600
Subject: mythtv & plugins: update to latest 0.27/fixes. refs #933

---
 abs/core/mythtv/stable-0.27/git_src/git_hash     | 2 +-
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD | 2 +-
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD      | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index 31427cb..04945da 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-552fdc0e1eb538db847f2aedd54a12764b609a76
+cb744f810c6133aa293ad95d65225890371951f0
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index abc07e6..00814e2 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=4
+pkgrel=5
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index c4e0f40..f98b3db 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=4
+pkgrel=5
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
-- 
cgit v0.12


From 07b64b9def749402103a731e9420cf56be910b2d Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 2 Dec 2013 19:39:42 -0600
Subject: LinHES-system:  fix for x11vnc  only sticking around for one session
 added -forever refs #948

---
 abs/core/LinHES-system/LinHES-session | 2 +-
 abs/core/LinHES-system/PKGBUILD       | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/LinHES-system/LinHES-session b/abs/core/LinHES-system/LinHES-session
index 6badfab..d7b70ea 100755
--- a/abs/core/LinHES-system/LinHES-session
+++ b/abs/core/LinHES-system/LinHES-session
@@ -75,7 +75,7 @@ function start_x11vnc(){
             . /etc/x11vnc.cfg
             x11vnc $x11vnc_options
         else
-            x11vnc -rfbport 5902 --passwd $xvncpassword
+            x11vnc -forever -rfbport 5902 --passwd $xvncpassword
         fi
     fi
 }
diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 0a0d5f1..5b714f6 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=4
+pkgrel=5
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -75,7 +75,7 @@ package() {
 
 }
 
-md5sums=('95720bd676d0b05e89e1f6ae6e0b4e2d'
+md5sums=('49e9847cedcf26a977d64fd44e460b11'
          'de32a1c50101265dd7f6ca5037f7a26a'
          'a875ee97f86e46f34a741c2bc455f894'
          '76b2637cac0452b3acdbeeb4e8a5474b'
-- 
cgit v0.12


From 3c3965def59d9015c1cee38ef9f3da66bb3dd10a Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 2 Dec 2013 19:39:58 -0600
Subject: LinHES-config: rebuild no change

---
 abs/core/LinHES-config/PKGBUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 5ce1e1b..f956642 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.1
-pkgrel=3
+pkgrel=5
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
-- 
cgit v0.12


From b1e1aee98b199446c5322507fd675dcd6301d846 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 2 Dec 2013 19:40:30 -0600
Subject: mythdb-initial:  sql file from R8.0

---
 abs/core/mythdb-initial/mc.sql.R8 | 2519 +++++++++++++++++++++++++++++++++++++
 1 file changed, 2519 insertions(+)
 create mode 100644 abs/core/mythdb-initial/mc.sql.R8

diff --git a/abs/core/mythdb-initial/mc.sql.R8 b/abs/core/mythdb-initial/mc.sql.R8
new file mode 100644
index 0000000..d3b1679
--- /dev/null
+++ b/abs/core/mythdb-initial/mc.sql.R8
@@ -0,0 +1,2519 @@
+-- MySQL dump 10.13  Distrib 5.1.59, for unknown-linux-gnu (x86_64)
+--
+-- Host: localhost    Database: mythconverg
+-- ------------------------------------------------------
+-- Server version	5.1.59
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `callsignnetworkmap`
+--
+
+DROP TABLE IF EXISTS `callsignnetworkmap`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `callsignnetworkmap` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `callsign` varchar(20) NOT NULL DEFAULT '',
+  `network` varchar(20) NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `callsign` (`callsign`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `callsignnetworkmap`
+--
+
+LOCK TABLES `callsignnetworkmap` WRITE;
+/*!40000 ALTER TABLE `callsignnetworkmap` DISABLE KEYS */;
+/*!40000 ALTER TABLE `callsignnetworkmap` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `capturecard`
+--
+
+DROP TABLE IF EXISTS `capturecard`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `capturecard` (
+  `cardid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `videodevice` varchar(128) DEFAULT NULL,
+  `audiodevice` varchar(128) DEFAULT NULL,
+  `vbidevice` varchar(128) DEFAULT NULL,
+  `cardtype` varchar(32) DEFAULT 'V4L',
+  `defaultinput` varchar(32) DEFAULT 'Television',
+  `audioratelimit` int(11) DEFAULT NULL,
+  `hostname` varchar(64) DEFAULT NULL,
+  `dvb_swfilter` int(11) DEFAULT '0',
+  `dvb_sat_type` int(11) NOT NULL DEFAULT '0',
+  `dvb_wait_for_seqstart` int(11) NOT NULL DEFAULT '1',
+  `skipbtaudio` tinyint(1) DEFAULT '0',
+  `dvb_on_demand` tinyint(4) NOT NULL DEFAULT '0',
+  `dvb_diseqc_type` smallint(6) DEFAULT NULL,
+  `firewire_speed` int(10) unsigned NOT NULL DEFAULT '0',
+  `firewire_model` varchar(32) DEFAULT NULL,
+  `firewire_connection` int(10) unsigned NOT NULL DEFAULT '0',
+  `signal_timeout` int(11) NOT NULL DEFAULT '1000',
+  `channel_timeout` int(11) NOT NULL DEFAULT '3000',
+  `dvb_tuning_delay` int(10) unsigned NOT NULL DEFAULT '0',
+  `contrast` int(11) NOT NULL DEFAULT '0',
+  `brightness` int(11) NOT NULL DEFAULT '0',
+  `colour` int(11) NOT NULL DEFAULT '0',
+  `hue` int(11) NOT NULL DEFAULT '0',
+  `diseqcid` int(10) unsigned DEFAULT NULL,
+  `dvb_eitscan` tinyint(1) NOT NULL DEFAULT '1',
+  PRIMARY KEY (`cardid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `capturecard`
+--
+
+LOCK TABLES `capturecard` WRITE;
+/*!40000 ALTER TABLE `capturecard` DISABLE KEYS */;
+/*!40000 ALTER TABLE `capturecard` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `cardinput`
+--
+
+DROP TABLE IF EXISTS `cardinput`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `cardinput` (
+  `cardinputid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `cardid` int(10) unsigned NOT NULL DEFAULT '0',
+  `sourceid` int(10) unsigned NOT NULL DEFAULT '0',
+  `inputname` varchar(32) NOT NULL DEFAULT '',
+  `externalcommand` varchar(128) DEFAULT NULL,
+  `changer_device` varchar(128) DEFAULT NULL,
+  `changer_model` varchar(128) DEFAULT NULL,
+  `tunechan` varchar(10) DEFAULT NULL,
+  `startchan` varchar(10) DEFAULT NULL,
+  `displayname` varchar(64) NOT NULL DEFAULT '',
+  `dishnet_eit` tinyint(1) NOT NULL DEFAULT '0',
+  `recpriority` int(11) NOT NULL DEFAULT '0',
+  `quicktune` tinyint(4) NOT NULL DEFAULT '0',
+  `schedorder` int(10) unsigned NOT NULL DEFAULT '0',
+  `livetvorder` int(10) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`cardinputid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `cardinput`
+--
+
+LOCK TABLES `cardinput` WRITE;
+/*!40000 ALTER TABLE `cardinput` DISABLE KEYS */;
+/*!40000 ALTER TABLE `cardinput` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channel`
+--
+
+DROP TABLE IF EXISTS `channel`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channel` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `channum` varchar(10) NOT NULL DEFAULT '',
+  `freqid` varchar(10) DEFAULT NULL,
+  `sourceid` int(10) unsigned DEFAULT NULL,
+  `callsign` varchar(20) NOT NULL DEFAULT '',
+  `name` varchar(64) NOT NULL DEFAULT '',
+  `icon` varchar(255) NOT NULL DEFAULT 'none',
+  `finetune` int(11) DEFAULT NULL,
+  `videofilters` varchar(255) NOT NULL DEFAULT '',
+  `xmltvid` varchar(255) NOT NULL DEFAULT '',
+  `recpriority` int(10) NOT NULL DEFAULT '0',
+  `contrast` int(11) DEFAULT '32768',
+  `brightness` int(11) DEFAULT '32768',
+  `colour` int(11) DEFAULT '32768',
+  `hue` int(11) DEFAULT '32768',
+  `tvformat` varchar(10) NOT NULL DEFAULT 'Default',
+  `visible` tinyint(1) NOT NULL DEFAULT '1',
+  `outputfilters` varchar(255) NOT NULL DEFAULT '',
+  `useonairguide` tinyint(1) DEFAULT '0',
+  `mplexid` smallint(6) DEFAULT NULL,
+  `serviceid` mediumint(8) unsigned DEFAULT NULL,
+  `tmoffset` int(11) NOT NULL DEFAULT '0',
+  `atsc_major_chan` int(10) unsigned NOT NULL DEFAULT '0',
+  `atsc_minor_chan` int(10) unsigned NOT NULL DEFAULT '0',
+  `last_record` datetime NOT NULL,
+  `default_authority` varchar(32) NOT NULL DEFAULT '',
+  `commmethod` int(11) NOT NULL DEFAULT '-1',
+  PRIMARY KEY (`chanid`),
+  KEY `channel_src` (`channum`,`sourceid`),
+  KEY `sourceid` (`sourceid`,`xmltvid`,`chanid`),
+  KEY `visible` (`visible`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channel`
+--
+
+LOCK TABLES `channel` WRITE;
+/*!40000 ALTER TABLE `channel` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channel` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelgroup`
+--
+
+DROP TABLE IF EXISTS `channelgroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelgroup` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `chanid` int(11) unsigned NOT NULL DEFAULT '0',
+  `grpid` int(11) NOT NULL DEFAULT '1',
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelgroup`
+--
+
+LOCK TABLES `channelgroup` WRITE;
+/*!40000 ALTER TABLE `channelgroup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelgroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelgroupnames`
+--
+
+DROP TABLE IF EXISTS `channelgroupnames`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelgroupnames` (
+  `grpid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(64) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`grpid`)
+) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelgroupnames`
+--
+
+LOCK TABLES `channelgroupnames` WRITE;
+/*!40000 ALTER TABLE `channelgroupnames` DISABLE KEYS */;
+INSERT INTO `channelgroupnames` (`grpid`, `name`) VALUES (1,'Favorites');
+/*!40000 ALTER TABLE `channelgroupnames` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelscan`
+--
+
+DROP TABLE IF EXISTS `channelscan`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelscan` (
+  `scanid` int(3) unsigned NOT NULL AUTO_INCREMENT,
+  `cardid` int(3) unsigned NOT NULL,
+  `sourceid` int(3) unsigned NOT NULL,
+  `processed` tinyint(1) unsigned NOT NULL,
+  `scandate` datetime NOT NULL,
+  PRIMARY KEY (`scanid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelscan`
+--
+
+LOCK TABLES `channelscan` WRITE;
+/*!40000 ALTER TABLE `channelscan` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelscan` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelscan_channel`
+--
+
+DROP TABLE IF EXISTS `channelscan_channel`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelscan_channel` (
+  `transportid` int(6) unsigned NOT NULL,
+  `scanid` int(3) unsigned NOT NULL,
+  `mplex_id` smallint(6) NOT NULL,
+  `source_id` int(3) unsigned NOT NULL,
+  `channel_id` int(3) unsigned NOT NULL DEFAULT '0',
+  `callsign` varchar(20) NOT NULL DEFAULT '',
+  `service_name` varchar(64) NOT NULL DEFAULT '',
+  `chan_num` varchar(10) NOT NULL DEFAULT '',
+  `service_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `atsc_major_channel` int(4) unsigned NOT NULL DEFAULT '0',
+  `atsc_minor_channel` int(4) unsigned NOT NULL DEFAULT '0',
+  `use_on_air_guide` tinyint(1) NOT NULL DEFAULT '0',
+  `hidden` tinyint(1) NOT NULL DEFAULT '0',
+  `hidden_in_guide` tinyint(1) NOT NULL DEFAULT '0',
+  `freqid` varchar(10) NOT NULL DEFAULT '',
+  `icon` varchar(255) NOT NULL DEFAULT '',
+  `tvformat` varchar(10) NOT NULL DEFAULT 'Default',
+  `xmltvid` varchar(64) NOT NULL DEFAULT '',
+  `pat_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `vct_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `vct_chan_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `sdt_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `orig_netid` int(5) unsigned NOT NULL DEFAULT '0',
+  `netid` int(5) unsigned NOT NULL DEFAULT '0',
+  `si_standard` varchar(10) NOT NULL,
+  `in_channels_conf` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_pat` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_pmt` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_vct` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_nit` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_sdt` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_encrypted` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_data_service` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_audio_service` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_opencable` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `could_be_opencable` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `decryption_status` smallint(2) unsigned NOT NULL DEFAULT '0',
+  `default_authority` varchar(32) NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelscan_channel`
+--
+
+LOCK TABLES `channelscan_channel` WRITE;
+/*!40000 ALTER TABLE `channelscan_channel` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelscan_channel` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelscan_dtv_multiplex`
+--
+
+DROP TABLE IF EXISTS `channelscan_dtv_multiplex`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelscan_dtv_multiplex` (
+  `transportid` int(6) unsigned NOT NULL AUTO_INCREMENT,
+  `scanid` int(3) unsigned NOT NULL,
+  `mplexid` smallint(6) unsigned NOT NULL,
+  `frequency` bigint(12) unsigned NOT NULL,
+  `inversion` char(1) NOT NULL DEFAULT 'a',
+  `symbolrate` bigint(12) unsigned NOT NULL DEFAULT '0',
+  `fec` varchar(10) NOT NULL DEFAULT 'auto',
+  `polarity` char(1) NOT NULL DEFAULT '',
+  `hp_code_rate` varchar(10) NOT NULL DEFAULT 'auto',
+  `mod_sys` varchar(10) DEFAULT NULL,
+  `rolloff` varchar(4) DEFAULT NULL,
+  `lp_code_rate` varchar(10) NOT NULL DEFAULT 'auto',
+  `modulation` varchar(10) NOT NULL DEFAULT 'auto',
+  `transmission_mode` char(1) NOT NULL DEFAULT 'a',
+  `guard_interval` varchar(10) NOT NULL DEFAULT 'auto',
+  `hierarchy` varchar(10) NOT NULL DEFAULT 'auto',
+  `bandwidth` char(1) NOT NULL DEFAULT 'a',
+  `sistandard` varchar(10) NOT NULL,
+  `tuner_type` smallint(2) unsigned NOT NULL,
+  `default_authority` varchar(32) NOT NULL DEFAULT '',
+  PRIMARY KEY (`transportid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelscan_dtv_multiplex`
+--
+
+LOCK TABLES `channelscan_dtv_multiplex` WRITE;
+/*!40000 ALTER TABLE `channelscan_dtv_multiplex` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelscan_dtv_multiplex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `codecparams`
+--
+
+DROP TABLE IF EXISTS `codecparams`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `codecparams` (
+  `profile` int(10) unsigned NOT NULL DEFAULT '0',
+  `name` varchar(128) NOT NULL DEFAULT '',
+  `value` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`profile`,`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `codecparams`
+--
+
+LOCK TABLES `codecparams` WRITE;
+/*!40000 ALTER TABLE `codecparams` DISABLE KEYS */;
+/*!40000 ALTER TABLE `codecparams` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `credits`
+--
+
+DROP TABLE IF EXISTS `credits`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `credits` (
+  `person` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `role` set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL DEFAULT '',
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`person`,`role`),
+  KEY `person` (`person`,`role`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `credits`
+--
+
+LOCK TABLES `credits` WRITE;
+/*!40000 ALTER TABLE `credits` DISABLE KEYS */;
+/*!40000 ALTER TABLE `credits` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `customexample`
+--
+
+DROP TABLE IF EXISTS `customexample`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `customexample` (
+  `rulename` varchar(64) NOT NULL,
+  `fromclause` varchar(10000) NOT NULL DEFAULT '',
+  `whereclause` varchar(10000) NOT NULL DEFAULT '',
+  `search` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`rulename`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `customexample`
+--
+
+LOCK TABLES `customexample` WRITE;
+/*!40000 ALTER TABLE `customexample` DISABLE KEYS */;
+INSERT INTO `customexample` (`rulename`, `fromclause`, `whereclause`, `search`) VALUES ('New Flix','','program.category_type = \'movie\' AND program.airdate >= \n     YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) \nAND program.stars > 0.5 ',1);
+/*!40000 ALTER TABLE `customexample` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `diseqc_config`
+--
+
+DROP TABLE IF EXISTS `diseqc_config`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `diseqc_config` (
+  `cardinputid` int(10) unsigned NOT NULL,
+  `diseqcid` int(10) unsigned NOT NULL,
+  `value` varchar(16) NOT NULL DEFAULT '',
+  KEY `id` (`cardinputid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `diseqc_config`
+--
+
+LOCK TABLES `diseqc_config` WRITE;
+/*!40000 ALTER TABLE `diseqc_config` DISABLE KEYS */;
+/*!40000 ALTER TABLE `diseqc_config` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `diseqc_tree`
+--
+
+DROP TABLE IF EXISTS `diseqc_tree`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `diseqc_tree` (
+  `diseqcid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `parentid` int(10) unsigned DEFAULT NULL,
+  `ordinal` tinyint(3) unsigned NOT NULL,
+  `type` varchar(16) NOT NULL DEFAULT '',
+  `subtype` varchar(16) NOT NULL DEFAULT '',
+  `description` varchar(32) NOT NULL DEFAULT '',
+  `switch_ports` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  `rotor_hi_speed` float NOT NULL DEFAULT '0',
+  `rotor_lo_speed` float NOT NULL DEFAULT '0',
+  `rotor_positions` varchar(255) NOT NULL DEFAULT '',
+  `lnb_lof_switch` int(10) NOT NULL DEFAULT '0',
+  `lnb_lof_hi` int(10) NOT NULL DEFAULT '0',
+  `lnb_lof_lo` int(10) NOT NULL DEFAULT '0',
+  `cmd_repeat` int(11) NOT NULL DEFAULT '1',
+  `lnb_pol_inv` tinyint(4) NOT NULL DEFAULT '0',
+  `address` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`diseqcid`),
+  KEY `parentid` (`parentid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `diseqc_tree`
+--
+
+LOCK TABLES `diseqc_tree` WRITE;
+/*!40000 ALTER TABLE `diseqc_tree` DISABLE KEYS */;
+/*!40000 ALTER TABLE `diseqc_tree` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `displayprofilegroups`
+--
+
+DROP TABLE IF EXISTS `displayprofilegroups`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `displayprofilegroups` (
+  `name` varchar(128) NOT NULL,
+  `hostname` varchar(64) NOT NULL,
+  `profilegroupid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`name`,`hostname`),
+  UNIQUE KEY `profilegroupid` (`profilegroupid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `displayprofilegroups`
+--
+
+LOCK TABLES `displayprofilegroups` WRITE;
+/*!40000 ALTER TABLE `displayprofilegroups` DISABLE KEYS */;
+/*!40000 ALTER TABLE `displayprofilegroups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `displayprofiles`
+--
+
+DROP TABLE IF EXISTS `displayprofiles`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `displayprofiles` (
+  `profilegroupid` int(10) unsigned NOT NULL,
+  `profileid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `value` varchar(128) NOT NULL,
+  `data` varchar(255) NOT NULL DEFAULT '',
+  KEY `profilegroupid` (`profilegroupid`),
+  KEY `profileid` (`profileid`,`value`),
+  KEY `profileid_2` (`profileid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `displayprofiles`
+--
+
+LOCK TABLES `displayprofiles` WRITE;
+/*!40000 ALTER TABLE `displayprofiles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `displayprofiles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dtv_multiplex`
+--
+
+DROP TABLE IF EXISTS `dtv_multiplex`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dtv_multiplex` (
+  `mplexid` smallint(6) NOT NULL AUTO_INCREMENT,
+  `sourceid` smallint(6) DEFAULT NULL,
+  `transportid` int(11) DEFAULT NULL,
+  `networkid` int(11) DEFAULT NULL,
+  `frequency` int(11) DEFAULT NULL,
+  `inversion` char(1) DEFAULT 'a',
+  `symbolrate` int(11) DEFAULT NULL,
+  `fec` varchar(10) DEFAULT 'auto',
+  `polarity` char(1) DEFAULT NULL,
+  `modulation` varchar(10) DEFAULT 'auto',
+  `bandwidth` char(1) DEFAULT 'a',
+  `lp_code_rate` varchar(10) DEFAULT 'auto',
+  `transmission_mode` char(1) DEFAULT 'a',
+  `guard_interval` varchar(10) DEFAULT 'auto',
+  `visible` smallint(1) NOT NULL DEFAULT '0',
+  `constellation` varchar(10) DEFAULT 'auto',
+  `hierarchy` varchar(10) DEFAULT 'auto',
+  `hp_code_rate` varchar(10) DEFAULT 'auto',
+  `mod_sys` varchar(10) DEFAULT NULL,
+  `rolloff` varchar(4) DEFAULT NULL,
+  `sistandard` varchar(10) DEFAULT 'dvb',
+  `serviceversion` smallint(6) DEFAULT '33',
+  `updatetimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `default_authority` varchar(32) NOT NULL DEFAULT '',
+  PRIMARY KEY (`mplexid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dtv_multiplex`
+--
+
+LOCK TABLES `dtv_multiplex` WRITE;
+/*!40000 ALTER TABLE `dtv_multiplex` DISABLE KEYS */;
+/*!40000 ALTER TABLE `dtv_multiplex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dtv_privatetypes`
+--
+
+DROP TABLE IF EXISTS `dtv_privatetypes`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dtv_privatetypes` (
+  `sitype` varchar(4) NOT NULL DEFAULT '',
+  `networkid` int(11) NOT NULL DEFAULT '0',
+  `private_type` varchar(20) NOT NULL DEFAULT '',
+  `private_value` varchar(100) NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dtv_privatetypes`
+--
+
+LOCK TABLES `dtv_privatetypes` WRITE;
+/*!40000 ALTER TABLE `dtv_privatetypes` DISABLE KEYS */;
+INSERT INTO `dtv_privatetypes` (`sitype`, `networkid`, `private_type`, `private_value`) VALUES ('dvb',9018,'channel_numbers','131'),('dvb',9018,'guide_fixup','2'),('dvb',256,'guide_fixup','1'),('dvb',257,'guide_fixup','1'),('dvb',256,'tv_types','1,150,134,133'),('dvb',257,'tv_types','1,150,134,133'),('dvb',4100,'sdt_mapping','1'),('dvb',4101,'sdt_mapping','1'),('dvb',4102,'sdt_mapping','1'),('dvb',4103,'sdt_mapping','1'),('dvb',4104,'sdt_mapping','1'),('dvb',4105,'sdt_mapping','1'),('dvb',4106,'sdt_mapping','1'),('dvb',4107,'sdt_mapping','1'),('dvb',4097,'sdt_mapping','1'),('dvb',4098,'sdt_mapping','1'),('dvb',4100,'tv_types','1,145,154'),('dvb',4101,'tv_types','1,145,154'),('dvb',4102,'tv_types','1,145,154'),('dvb',4103,'tv_types','1,145,154'),('dvb',4104,'tv_types','1,145,154'),('dvb',4105,'tv_types','1,145,154'),('dvb',4106,'tv_types','1,145,154'),('dvb',4107,'tv_types','1,145,154'),('dvb',4097,'tv_types','1,145,154'),('dvb',4098,'tv_types','1,145,154'),('dvb',4100,'guide_fixup','1'),('dvb',4101,'guide_fixup','1'),('dvb',4102,'guide_fixup','1'),('dvb',4103,'guide_fixup','1'),('dvb',4104,'guide_fixup','1'),('dvb',4105,'guide_fixup','1'),('dvb',4106,'guide_fixup','1'),('dvb',4107,'guide_fixup','1'),('dvb',4096,'guide_fixup','5'),('dvb',4097,'guide_fixup','1'),('dvb',4098,'guide_fixup','1'),('dvb',94,'tv_types','1,128'),('atsc',1793,'guide_fixup','3'),('dvb',40999,'guide_fixup','4'),('dvb',70,'force_guide_present','yes'),('dvb',70,'guide_ranges','80,80,96,96'),('dvb',4112,'channel_numbers','131'),('dvb',4115,'channel_numbers','131'),('dvb',4116,'channel_numbers','131'),('dvb',12802,'channel_numbers','131'),('dvb',12803,'channel_numbers','131'),('dvb',12829,'channel_numbers','131'),('dvb',40999,'parse_subtitle_list','1070,1308,1041,1306,1307,1030,1016,1131,1068,1069'),('dvb',4096,'guide_fixup','5');
+/*!40000 ALTER TABLE `dtv_privatetypes` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dvdbookmark`
+--
+
+DROP TABLE IF EXISTS `dvdbookmark`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dvdbookmark` (
+  `serialid` varchar(16) NOT NULL DEFAULT '',
+  `name` varchar(32) DEFAULT NULL,
+  `title` smallint(6) NOT NULL DEFAULT '0',
+  `audionum` tinyint(4) NOT NULL DEFAULT '-1',
+  `subtitlenum` tinyint(4) NOT NULL DEFAULT '-1',
+  `framenum` bigint(20) NOT NULL DEFAULT '0',
+  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`serialid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dvdbookmark`
+--
+
+LOCK TABLES `dvdbookmark` WRITE;
+/*!40000 ALTER TABLE `dvdbookmark` DISABLE KEYS */;
+/*!40000 ALTER TABLE `dvdbookmark` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dvdinput`
+--
+
+DROP TABLE IF EXISTS `dvdinput`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dvdinput` (
+  `intid` int(10) unsigned NOT NULL,
+  `hsize` int(10) unsigned DEFAULT NULL,
+  `vsize` int(10) unsigned DEFAULT NULL,
+  `ar_num` int(10) unsigned DEFAULT NULL,
+  `ar_denom` int(10) unsigned DEFAULT NULL,
+  `fr_code` int(10) unsigned DEFAULT NULL,
+  `letterbox` tinyint(1) DEFAULT NULL,
+  `v_format` varchar(16) DEFAULT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dvdinput`
+--
+
+LOCK TABLES `dvdinput` WRITE;
+/*!40000 ALTER TABLE `dvdinput` DISABLE KEYS */;
+INSERT INTO `dvdinput` (`intid`, `hsize`, `vsize`, `ar_num`, `ar_denom`, `fr_code`, `letterbox`, `v_format`) VALUES (1,720,480,16,9,1,1,'ntsc'),(2,720,480,16,9,1,0,'ntsc'),(3,720,480,4,3,1,1,'ntsc'),(4,720,480,4,3,1,0,'ntsc'),(5,720,576,16,9,3,1,'pal'),(6,720,576,16,9,3,0,'pal'),(7,720,576,4,3,3,1,'pal'),(8,720,576,4,3,3,0,'pal');
+/*!40000 ALTER TABLE `dvdinput` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dvdtranscode`
+--
+
+DROP TABLE IF EXISTS `dvdtranscode`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dvdtranscode` (
+  `intid` int(11) NOT NULL AUTO_INCREMENT,
+  `input` int(10) unsigned DEFAULT NULL,
+  `name` varchar(128) NOT NULL,
+  `sync_mode` int(10) unsigned DEFAULT NULL,
+  `use_yv12` tinyint(1) DEFAULT NULL,
+  `cliptop` int(11) DEFAULT NULL,
+  `clipbottom` int(11) DEFAULT NULL,
+  `clipleft` int(11) DEFAULT NULL,
+  `clipright` int(11) DEFAULT NULL,
+  `f_resize_h` int(11) DEFAULT NULL,
+  `f_resize_w` int(11) DEFAULT NULL,
+  `hq_resize_h` int(11) DEFAULT NULL,
+  `hq_resize_w` int(11) DEFAULT NULL,
+  `grow_h` int(11) DEFAULT NULL,
+  `grow_w` int(11) DEFAULT NULL,
+  `clip2top` int(11) DEFAULT NULL,
+  `clip2bottom` int(11) DEFAULT NULL,
+  `clip2left` int(11) DEFAULT NULL,
+  `clip2right` int(11) DEFAULT NULL,
+  `codec` varchar(128) NOT NULL,
+  `codec_param` varchar(128) DEFAULT NULL,
+  `bitrate` int(11) DEFAULT NULL,
+  `a_sample_r` int(11) DEFAULT NULL,
+  `a_bitrate` int(11) DEFAULT NULL,
+  `two_pass` tinyint(1) DEFAULT NULL,
+  `tc_param` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dvdtranscode`
+--
+
+LOCK TABLES `dvdtranscode` WRITE;
+/*!40000 ALTER TABLE `dvdtranscode` DISABLE KEYS */;
+INSERT INTO `dvdtranscode` (`intid`, `input`, `name`, `sync_mode`, `use_yv12`, `cliptop`, `clipbottom`, `clipleft`, `clipright`, `f_resize_h`, `f_resize_w`, `hq_resize_h`, `hq_resize_w`, `grow_h`, `grow_w`, `clip2top`, `clip2bottom`, `clip2left`, `clip2right`, `codec`, `codec_param`, `bitrate`, `a_sample_r`, `a_bitrate`, `two_pass`, `tc_param`) VALUES (1,1,'Good',2,1,16,16,0,0,2,0,0,0,0,0,32,32,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(2,2,'Excellent',2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(3,2,'Good',2,1,0,0,8,8,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(4,2,'Medium',2,1,0,0,8,8,5,5,0,0,0,0,0,0,0,0,'divx5',NULL,1200,NULL,NULL,0,NULL),(5,3,'Good',2,1,0,0,0,0,0,0,0,0,2,0,80,80,8,8,'divx5',NULL,0,NULL,NULL,0,NULL),(6,4,'Excellent',2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(7,4,'Good',2,1,0,0,8,8,0,2,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(8,5,'Good',1,1,16,16,0,0,5,0,0,0,0,0,40,40,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(9,6,'Good',1,1,0,0,16,16,5,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(10,7,'Good',1,1,0,0,0,0,1,0,0,0,0,0,76,76,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(11,8,'Good',1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);
+/*!40000 ALTER TABLE `dvdtranscode` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `eit_cache`
+--
+
+DROP TABLE IF EXISTS `eit_cache`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `eit_cache` (
+  `chanid` int(10) NOT NULL,
+  `eventid` int(10) unsigned NOT NULL DEFAULT '0',
+  `tableid` tinyint(3) unsigned NOT NULL,
+  `version` tinyint(3) unsigned NOT NULL,
+  `endtime` int(10) unsigned NOT NULL,
+  `status` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`chanid`,`eventid`,`status`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `eit_cache`
+--
+
+LOCK TABLES `eit_cache` WRITE;
+/*!40000 ALTER TABLE `eit_cache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `eit_cache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `filemarkup`
+--
+
+DROP TABLE IF EXISTS `filemarkup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `filemarkup` (
+  `filename` text NOT NULL,
+  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `offset` bigint(20) unsigned DEFAULT NULL,
+  `type` tinyint(4) NOT NULL DEFAULT '0',
+  KEY `filename` (`filename`(255))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `filemarkup`
+--
+
+LOCK TABLES `filemarkup` WRITE;
+/*!40000 ALTER TABLE `filemarkup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `filemarkup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `housekeeping`
+--
+
+DROP TABLE IF EXISTS `housekeeping`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `housekeeping` (
+  `tag` varchar(64) NOT NULL DEFAULT '',
+  `lastrun` datetime DEFAULT NULL,
+  PRIMARY KEY (`tag`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `housekeeping`
+--
+
+LOCK TABLES `housekeeping` WRITE;
+/*!40000 ALTER TABLE `housekeeping` DISABLE KEYS */;
+/*!40000 ALTER TABLE `housekeeping` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `inputgroup`
+--
+
+DROP TABLE IF EXISTS `inputgroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `inputgroup` (
+  `cardinputid` int(10) unsigned NOT NULL,
+  `inputgroupid` int(10) unsigned NOT NULL,
+  `inputgroupname` varchar(32) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `inputgroup`
+--
+
+LOCK TABLES `inputgroup` WRITE;
+/*!40000 ALTER TABLE `inputgroup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `inputgroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `internetcontent`
+--
+
+DROP TABLE IF EXISTS `internetcontent`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `internetcontent` (
+  `name` varchar(255) NOT NULL,
+  `thumbnail` varchar(255) DEFAULT NULL,
+  `type` smallint(3) NOT NULL,
+  `author` varchar(128) NOT NULL,
+  `description` text NOT NULL,
+  `commandline` text NOT NULL,
+  `version` double NOT NULL,
+  `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `search` tinyint(1) NOT NULL,
+  `tree` tinyint(1) NOT NULL,
+  `podcast` tinyint(1) NOT NULL,
+  `download` tinyint(1) NOT NULL,
+  `host` varchar(128) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `internetcontent`
+--
+
+LOCK TABLES `internetcontent` WRITE;
+/*!40000 ALTER TABLE `internetcontent` DISABLE KEYS */;
+/*!40000 ALTER TABLE `internetcontent` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `internetcontentarticles`
+--
+
+DROP TABLE IF EXISTS `internetcontentarticles`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `internetcontentarticles` (
+  `feedtitle` varchar(255) NOT NULL,
+  `path` text NOT NULL,
+  `paththumb` text NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `subtitle` varchar(255) NOT NULL,
+  `season` smallint(5) NOT NULL DEFAULT '0',
+  `episode` smallint(5) NOT NULL DEFAULT '0',
+  `description` text NOT NULL,
+  `url` text NOT NULL,
+  `type` smallint(3) NOT NULL,
+  `thumbnail` text NOT NULL,
+  `mediaURL` text NOT NULL,
+  `author` varchar(255) NOT NULL,
+  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `time` int(11) NOT NULL,
+  `rating` varchar(255) NOT NULL,
+  `filesize` bigint(20) NOT NULL,
+  `player` varchar(255) NOT NULL,
+  `playerargs` text NOT NULL,
+  `download` varchar(255) NOT NULL,
+  `downloadargs` text NOT NULL,
+  `width` smallint(6) NOT NULL,
+  `height` smallint(6) NOT NULL,
+  `language` varchar(128) NOT NULL,
+  `podcast` tinyint(1) NOT NULL,
+  `downloadable` tinyint(1) NOT NULL,
+  `customhtml` tinyint(1) NOT NULL,
+  `countries` varchar(255) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `internetcontentarticles`
+--
+
+LOCK TABLES `internetcontentarticles` WRITE;
+/*!40000 ALTER TABLE `internetcontentarticles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `internetcontentarticles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `inuseprograms`
+--
+
+DROP TABLE IF EXISTS `inuseprograms`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `inuseprograms` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `recusage` varchar(128) NOT NULL DEFAULT '',
+  `lastupdatetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `rechost` varchar(64) NOT NULL,
+  `recdir` varchar(255) NOT NULL DEFAULT '',
+  KEY `chanid` (`chanid`,`starttime`),
+  KEY `recusage` (`recusage`,`lastupdatetime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `inuseprograms`
+--
+
+LOCK TABLES `inuseprograms` WRITE;
+/*!40000 ALTER TABLE `inuseprograms` DISABLE KEYS */;
+/*!40000 ALTER TABLE `inuseprograms` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `jobqueue`
+--
+
+DROP TABLE IF EXISTS `jobqueue`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `jobqueue` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `chanid` int(10) NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `inserttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `type` int(11) NOT NULL DEFAULT '0',
+  `cmds` int(11) NOT NULL DEFAULT '0',
+  `flags` int(11) NOT NULL DEFAULT '0',
+  `status` int(11) NOT NULL DEFAULT '0',
+  `statustime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `args` blob NOT NULL,
+  `comment` varchar(128) NOT NULL DEFAULT '',
+  `schedruntime` datetime NOT NULL DEFAULT '2007-01-01 00:00:00',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`type`,`inserttime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `jobqueue`
+--
+
+LOCK TABLES `jobqueue` WRITE;
+/*!40000 ALTER TABLE `jobqueue` DISABLE KEYS */;
+/*!40000 ALTER TABLE `jobqueue` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `jumppoints`
+--
+
+DROP TABLE IF EXISTS `jumppoints`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `jumppoints` (
+  `destination` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(255) DEFAULT NULL,
+  `keylist` varchar(128) DEFAULT NULL,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  PRIMARY KEY (`destination`,`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `jumppoints`
+--
+
+LOCK TABLES `jumppoints` WRITE;
+/*!40000 ALTER TABLE `jumppoints` DISABLE KEYS */;
+/*!40000 ALTER TABLE `jumppoints` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `keybindings`
+--
+
+DROP TABLE IF EXISTS `keybindings`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `keybindings` (
+  `context` varchar(32) NOT NULL DEFAULT '',
+  `action` varchar(32) NOT NULL DEFAULT '',
+  `description` varchar(255) DEFAULT NULL,
+  `keylist` varchar(128) DEFAULT NULL,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  PRIMARY KEY (`context`,`action`,`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `keybindings`
+--
+
+LOCK TABLES `keybindings` WRITE;
+/*!40000 ALTER TABLE `keybindings` DISABLE KEYS */;
+INSERT INTO `keybindings` (`context`, `action`, `description`, `keylist`, `hostname`) VALUES ('Global','UP','Up Arrow','Up','apheleia'),('Global','DOWN','Down Arrow','Down','apheleia'),('Global','LEFT','Left Arrow','Left','apheleia'),('Global','RIGHT','Right Arrow','Right','apheleia'),('Global','NEXT','Move to next widget','Tab','apheleia'),('Global','PREVIOUS','Move to preview widget','Backtab','apheleia'),('Global','SELECT','Select','Return,Enter,Space','apheleia'),('Global','BACKSPACE','Backspace','Backspace','apheleia'),('Global','ESCAPE','Escape','Esc','apheleia'),('Global','MENU','Pop-up menu','M','apheleia'),('Global','INFO','More information','I','apheleia'),('Global','DELETE','Delete','D','apheleia'),('Global','EDIT','Edit','E','apheleia'),('Global','SCREENSHOT','Save screenshot','','apheleia'),('Global','HANDLEMEDIA','Play a media resource','','apheleia'),('Global','PAGEUP','Page Up','PgUp','apheleia'),('Global','PAGEDOWN','Page Down','PgDown','apheleia'),('Global','PAGETOP','Page to top of list','','apheleia'),('Global','PAGEMIDDLE','Page to middle of list','','apheleia'),('Global','PAGEBOTTOM','Page to bottom of list','','apheleia'),('Global','PREVVIEW','Previous View','Home','apheleia'),('Global','NEXTVIEW','Next View','End','apheleia'),('Global','HELP','Help','F1','apheleia'),('Global','EJECT','Eject Removable Media','','apheleia'),('Global','CUT','Cut text from textedit','Ctrl+X','apheleia'),('Global','COPY','Copy text from textedit','Ctrl+C','apheleia'),('Global','PASTE','Paste text into textedit','Ctrl+V','apheleia'),('Global','UNDO','Undo','Ctrl+Z','apheleia'),('Global','REDO','Redo','Ctrl+Y','apheleia'),('Global','SEARCH','Show incremental search dialog','Ctrl+S','apheleia'),('Global','0','0','0','apheleia'),('Global','1','1','1','apheleia'),('Global','2','2','2','apheleia'),('Global','3','3','3','apheleia'),('Global','4','4','4','apheleia'),('Global','5','5','5','apheleia'),('Global','6','6','6','apheleia'),('Global','7','7','7','apheleia'),('Global','8','8','8','apheleia'),('Global','9','9','9','apheleia'),('Global','TVPOWERON','Turn the display on','','apheleia'),('Global','TVPOWEROFF','Turn the display off','','apheleia'),('Global','SYSEVENT01','Trigger System Key Event #1','','apheleia'),('Global','SYSEVENT02','Trigger System Key Event #2','','apheleia'),('Global','SYSEVENT03','Trigger System Key Event #3','','apheleia'),('Global','SYSEVENT04','Trigger System Key Event #4','','apheleia'),('Global','SYSEVENT05','Trigger System Key Event #5','','apheleia'),('Global','SYSEVENT06','Trigger System Key Event #6','','apheleia'),('Global','SYSEVENT07','Trigger System Key Event #7','','apheleia'),('Global','SYSEVENT08','Trigger System Key Event #8','','apheleia'),('Global','SYSEVENT09','Trigger System Key Event #9','','apheleia'),('Global','SYSEVENT10','Trigger System Key Event #10','','apheleia'),('Browser','ZOOMIN','Zoom in on browser window','.,>','apheleia'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','apheleia'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','apheleia'),('Browser','MOUSEUP','Move mouse pointer up','2','apheleia'),('Browser','MOUSEDOWN','Move mouse pointer down','8','apheleia'),('Browser','MOUSELEFT','Move mouse pointer left','4','apheleia'),('Browser','MOUSERIGHT','Move mouse pointer right','6','apheleia'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','apheleia'),('Browser','PAGEDOWN','Scroll down half a page','9','apheleia'),('Browser','PAGEUP','Scroll up half a page','3','apheleia'),('Browser','PAGELEFT','Scroll left half a page','7','apheleia'),('Browser','PAGERIGHT','Scroll right half a page','1','apheleia'),('Browser','NEXTLINK','Move selection to next link','Z','apheleia'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','apheleia'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','apheleia'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','apheleia'),('Browser','HISTORYFORWARD','Go forward to previous page','F','apheleia'),('Main Menu','EXITPROMPT','Display System Exit Prompt','Esc','apheleia'),('Main Menu','EXIT','System Exit','','apheleia');
+/*!40000 ALTER TABLE `keybindings` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `keyword`
+--
+
+DROP TABLE IF EXISTS `keyword`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `keyword` (
+  `phrase` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  `searchtype` int(10) unsigned NOT NULL DEFAULT '3',
+  UNIQUE KEY `phrase` (`phrase`,`searchtype`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `keyword`
+--
+
+LOCK TABLES `keyword` WRITE;
+/*!40000 ALTER TABLE `keyword` DISABLE KEYS */;
+/*!40000 ALTER TABLE `keyword` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `livestream`
+--
+
+DROP TABLE IF EXISTS `livestream`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `livestream` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `width` int(10) unsigned NOT NULL,
+  `height` int(10) unsigned NOT NULL,
+  `bitrate` int(10) unsigned NOT NULL,
+  `audiobitrate` int(10) unsigned NOT NULL,
+  `samplerate` int(10) unsigned NOT NULL,
+  `audioonlybitrate` int(10) unsigned NOT NULL,
+  `segmentsize` int(10) unsigned NOT NULL DEFAULT '10',
+  `maxsegments` int(10) unsigned NOT NULL DEFAULT '0',
+  `startsegment` int(10) unsigned NOT NULL DEFAULT '0',
+  `currentsegment` int(10) unsigned NOT NULL DEFAULT '0',
+  `segmentcount` int(10) unsigned NOT NULL DEFAULT '0',
+  `percentcomplete` int(10) unsigned NOT NULL DEFAULT '0',
+  `created` datetime NOT NULL,
+  `lastmodified` datetime NOT NULL,
+  `relativeurl` varchar(512) NOT NULL,
+  `fullurl` varchar(1024) NOT NULL,
+  `status` int(10) unsigned NOT NULL DEFAULT '0',
+  `statusmessage` varchar(256) NOT NULL,
+  `sourcefile` varchar(512) NOT NULL,
+  `sourcehost` varchar(64) NOT NULL,
+  `sourcewidth` int(10) unsigned NOT NULL DEFAULT '0',
+  `sourceheight` int(10) unsigned NOT NULL DEFAULT '0',
+  `outdir` varchar(256) NOT NULL,
+  `outbase` varchar(128) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `livestream`
+--
+
+LOCK TABLES `livestream` WRITE;
+/*!40000 ALTER TABLE `livestream` DISABLE KEYS */;
+/*!40000 ALTER TABLE `livestream` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `logging`
+--
+
+DROP TABLE IF EXISTS `logging`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `logging` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `host` varchar(64) NOT NULL DEFAULT '',
+  `application` varchar(64) NOT NULL DEFAULT '',
+  `pid` int(11) NOT NULL DEFAULT '0',
+  `tid` int(11) NOT NULL DEFAULT '0',
+  `thread` varchar(64) NOT NULL DEFAULT '',
+  `filename` varchar(255) NOT NULL DEFAULT '',
+  `line` int(11) NOT NULL DEFAULT '0',
+  `function` varchar(255) NOT NULL DEFAULT '',
+  `msgtime` datetime NOT NULL,
+  `level` int(11) NOT NULL DEFAULT '0',
+  `message` varchar(2048) NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `host` (`host`,`application`,`pid`,`msgtime`),
+  KEY `msgtime` (`msgtime`),
+  KEY `level` (`level`)
+) ENGINE=MyISAM AUTO_INCREMENT=61 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `logging`
+--
+
+LOCK TABLES `logging` WRITE;
+/*!40000 ALTER TABLE `logging` DISABLE KEYS */;
+INSERT INTO `logging` (`id`, `host`, `application`, `pid`, `tid`, `thread`, `filename`, `line`, `function`, `msgtime`, `level`, `message`) VALUES (1,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcommandlineparser.cpp',2534,'ConfigureLogging','2012-08-22 15:20:42',2,'mythtv-setup version: fixes/0.25 [v0.25.2-15-g46cab93] www.mythtv.org'),(2,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcommandlineparser.cpp',2536,'ConfigureLogging','2012-08-22 15:20:42',2,'Qt version: compile: 4.8.2, runtime: 4.8.2'),(3,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcommandlineparser.cpp',2538,'ConfigureLogging','2012-08-22 15:20:42',5,'Enabled verbose msgs:  general'),(4,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',1176,'logStart','2012-08-22 15:20:42',5,'Setting Log Level to LOG_INFO'),(5,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',229,'FileLogger','2012-08-22 15:20:42',6,'Added logging to the console'),(6,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',425,'DatabaseLogger','2012-08-22 15:20:42',6,'Added database logging to table logging'),(7,'apheleia','mythtv-setup',1971,1971,'CoreContext','logging.cpp',1215,'logStart','2012-08-22 15:20:42',5,'Setting up SIGHUP handler'),(8,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythdirs.cpp',51,'InitializeMythDirs','2012-08-22 15:20:42',5,'Using runtime prefix = /usr'),(9,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythdirs.cpp',64,'InitializeMythDirs','2012-08-22 15:20:42',5,'Using configuration directory = /root/.mythtv'),(10,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcorecontext.cpp',227,'Init','2012-08-22 15:20:42',6,'Assumed character encoding: en_US.UTF-8'),(11,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythdb.cpp',866,'LoadDatabaseParamsFromDisk','2012-08-22 15:20:42',3,'Unable to read configuration file mysql.txt'),(12,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcontext.cpp',477,'LoadDatabaseSettings','2012-08-22 15:20:42',5,'Empty LocalHostName.'),(13,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcontext.cpp',481,'LoadDatabaseSettings','2012-08-22 15:20:42',6,'Using localhost value of apheleia'),(14,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcorecontext.cpp',1354,'InitLocale','2012-08-22 15:20:42',5,'Setting QT default locale to en_US'),(15,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythcorecontext.cpp',1387,'SaveLocaleDefaults','2012-08-22 15:20:42',6,'Current locale en_US'),(16,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythlocale.cpp',121,'LoadDefaultsFromXML','2012-08-22 15:20:42',5,'Reading locale defaults from /usr/share/mythtv//locales/en_us.xml'),(17,'apheleia','mythtv-setup',1971,1978,'SystemIOHandlerW','system-unix.cpp',90,'run','2012-08-22 15:20:42',6,'Starting IO manager (write)'),(18,'apheleia','mythtv-setup',1971,1977,'SystemIOHandlerR','system-unix.cpp',90,'run','2012-08-22 15:20:42',6,'Starting IO manager (read)'),(19,'apheleia','mythtv-setup',1971,1976,'SystemSignalManager','system-unix.cpp',485,'run','2012-08-22 15:20:42',6,'Starting process signal handler'),(20,'apheleia','mythtv-setup',1971,1975,'SystemManager','system-unix.cpp',263,'run','2012-08-22 15:20:42',6,'Starting process manager'),(21,'apheleia','mythtv-setup',1971,1971,'CoreContext','screensaver-x11.cpp',82,'ScreenSaverX11Private','2012-08-22 15:20:42',6,'ScreenSaverX11Private: DPMS is disabled.'),(22,'apheleia','mythtv-setup',1971,1971,'CoreContext','DisplayRes.cpp',64,'Initialize','2012-08-22 15:20:42',5,'Desktop video mode: 800x600 60.000 Hz'),(23,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythtranslation.cpp',66,'load','2012-08-22 15:20:42',6,'Loading en_us translation for module mythfrontend'),(24,'apheleia','mythtv-setup',1971,1971,'CoreContext','lirc.cpp',208,'Init','2012-08-22 15:20:42',3,'LIRC: Failed to connect to Unix socket \'/var/run/lirc/lircd\'\n			eno: No such file or directory (2)'),(25,'apheleia','mythtv-setup',1971,1971,'CoreContext','jsmenu.cpp',91,'Init','2012-08-22 15:20:42',3,'JoystickMenuThread: Joystick disabled - Failed to read /root/.mythtv/joystickmenurc'),(26,'apheleia','mythtv-setup',1971,1971,'CoreContext','cecadapter.cpp',146,'Open','2012-08-22 15:20:42',3,'CECAdapter: Failed to find any CEC devices.'),(27,'apheleia','mythtv-setup',1971,1971,'CoreContext','cecadapter.cpp',216,'Close','2012-08-22 15:20:42',6,'CECAdapter: Closing down CEC.'),(28,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP 127.0.0.1:0'),(29,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP 192.168.1.244:0'),(30,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP [::1]:0'),(31,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP [fe80::20c:29ff:feb1:f445%eth0]:0'),(32,'apheleia','mythtv-setup',1971,1971,'CoreContext','serverpool.cpp',482,'bind','2012-08-22 15:20:42',6,'Binding to UDP 192.168.1.255:0'),(33,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythmainwindow.cpp',948,'Init','2012-08-22 15:20:42',6,'Using Frameless Window'),(34,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythmainwindow.cpp',961,'Init','2012-08-22 15:20:42',6,'Using Full Screen Window'),(35,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythmainwindow.cpp',1051,'Init','2012-08-22 15:20:42',6,'Using the Qt painter'),(36,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 6\n			Name: \'basesmall\'	Type: \'fontdef\''),(37,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 11\n			Name: \'basemedium\'	Type: \'fontdef\''),(38,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 15\n			Name: \'baselarge\'	Type: \'fontdef\''),(39,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 19\n			Name: \'baseextralarge\'	Type: \'fontdef\''),(40,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 28\n			Name: \'basesmallbrown\'	Type: \'fontdef\''),(41,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 32\n			Name: \'basesmallgrey\'	Type: \'fontdef\''),(42,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 36\n			Name: \'basesmallpurple\'	Type: \'fontdef\''),(43,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 40\n			Name: \'basesmallblack\'	Type: \'fontdef\''),(44,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 44\n			Name: \'basesmallyellow\'	Type: \'fontdef\''),(45,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 48\n			Name: \'basesmallgreen\'	Type: \'fontdef\''),(46,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 52\n			Name: \'basesmallblue\'	Type: \'fontdef\''),(47,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 56\n			Name: \'basesmallred\'	Type: \'fontdef\''),(48,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 60\n			Name: \'basemediumgrey\'	Type: \'fontdef\''),(49,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 64\n			Name: \'basemediumgreen\'	Type: \'fontdef\''),(50,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 68\n			Name: \'basemediumred\'	Type: \'fontdef\''),(51,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 72\n			Name: \'basemediumpurple\'	Type: \'fontdef\''),(52,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 76\n			Name: \'basemediumbrown\'	Type: \'fontdef\''),(53,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 80\n			Name: \'baselargebrown\'	Type: \'fontdef\''),(54,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 666\n			Name: \'datefont\'	Type: \'fontdef\''),(55,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/Terra/base.xml @ 670\n			Name: \'timefont\'	Type: \'fontdef\''),(56,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/default/base.xml @ 11\n			Name: \'basetiny\'	Type: \'fontdef\''),(57,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/default/base.xml @ 36\n			Name: \'basetinyred\'	Type: \'fontdef\''),(58,'apheleia','mythtv-setup',1971,1971,'CoreContext','mythfontproperties.cpp',439,'ParseFromXml','2012-08-22 15:20:42',3,'MythFontProperties: Failed to load \'Liberation Sans\', got \'DejaVu Sans\' instead\n			Location: /usr/share/mythtv/themes/default/base.xml @ 80\n			Name: \'basemediumyellow\'	Type: \'fontdef\''),(59,'apheleia','mythtv-setup',1971,1971,'CoreContext','schemawizard.cpp',117,'Compare','2012-08-22 15:20:42',6,'Current MythTV Schema Version (DBSchemaVer): 1299'),(60,'apheleia','mythtv-setup',1971,1971,'CoreContext','checksetup.cpp',68,'checkStoragePaths','2012-08-22 15:21:00',3,'No Storage Group directories are defined.  You must add at least one directory to the Default Storage Group where new recordings will be stored.');
+/*!40000 ALTER TABLE `logging` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mythlog`
+--
+
+DROP TABLE IF EXISTS `mythlog`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mythlog` (
+  `logid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `module` varchar(32) NOT NULL DEFAULT '',
+  `priority` int(11) NOT NULL DEFAULT '0',
+  `acknowledged` tinyint(1) DEFAULT '0',
+  `logdate` datetime DEFAULT NULL,
+  `host` varchar(128) DEFAULT NULL,
+  `message` varchar(255) NOT NULL DEFAULT '',
+  `details` varchar(16000) NOT NULL DEFAULT '',
+  PRIMARY KEY (`logid`),
+  KEY `module` (`module`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mythlog`
+--
+
+LOCK TABLES `mythlog` WRITE;
+/*!40000 ALTER TABLE `mythlog` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mythlog` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `networkiconmap`
+--
+
+DROP TABLE IF EXISTS `networkiconmap`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `networkiconmap` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `network` varchar(20) NOT NULL DEFAULT '',
+  `url` varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `network` (`network`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `networkiconmap`
+--
+
+LOCK TABLES `networkiconmap` WRITE;
+/*!40000 ALTER TABLE `networkiconmap` DISABLE KEYS */;
+/*!40000 ALTER TABLE `networkiconmap` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oldfind`
+--
+
+DROP TABLE IF EXISTS `oldfind`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oldfind` (
+  `recordid` int(11) NOT NULL DEFAULT '0',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`recordid`,`findid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oldfind`
+--
+
+LOCK TABLES `oldfind` WRITE;
+/*!40000 ALTER TABLE `oldfind` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oldfind` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oldprogram`
+--
+
+DROP TABLE IF EXISTS `oldprogram`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oldprogram` (
+  `oldtitle` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  `airdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  PRIMARY KEY (`oldtitle`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oldprogram`
+--
+
+LOCK TABLES `oldprogram` WRITE;
+/*!40000 ALTER TABLE `oldprogram` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oldprogram` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oldrecorded`
+--
+
+DROP TABLE IF EXISTS `oldrecorded`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oldrecorded` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `season` smallint(5) NOT NULL,
+  `episode` smallint(5) NOT NULL,
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `inetref` varchar(40) NOT NULL,
+  `findid` int(11) NOT NULL DEFAULT '0',
+  `recordid` int(11) NOT NULL DEFAULT '0',
+  `station` varchar(20) NOT NULL DEFAULT '',
+  `rectype` int(10) unsigned NOT NULL DEFAULT '0',
+  `duplicate` tinyint(1) NOT NULL DEFAULT '0',
+  `recstatus` int(11) NOT NULL DEFAULT '0',
+  `reactivate` smallint(6) NOT NULL DEFAULT '0',
+  `generic` tinyint(1) NOT NULL,
+  `future` tinyint(1) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`station`,`starttime`,`title`),
+  KEY `endtime` (`endtime`),
+  KEY `title` (`title`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `recordid` (`recordid`),
+  KEY `recstatus` (`recstatus`,`programid`,`seriesid`),
+  KEY `recstatus_2` (`recstatus`,`title`,`subtitle`),
+  KEY `future` (`future`),
+  KEY `chanid` (`chanid`,`starttime`),
+  KEY `subtitle` (`subtitle`),
+  KEY `description` (`description`(255))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oldrecorded`
+--
+
+LOCK TABLES `oldrecorded` WRITE;
+/*!40000 ALTER TABLE `oldrecorded` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oldrecorded` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `people`
+--
+
+DROP TABLE IF EXISTS `people`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `people` (
+  `person` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  PRIMARY KEY (`person`),
+  UNIQUE KEY `name` (`name`(41))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `people`
+--
+
+LOCK TABLES `people` WRITE;
+/*!40000 ALTER TABLE `people` DISABLE KEYS */;
+/*!40000 ALTER TABLE `people` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `pidcache`
+--
+
+DROP TABLE IF EXISTS `pidcache`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `pidcache` (
+  `chanid` smallint(6) NOT NULL DEFAULT '0',
+  `pid` int(11) NOT NULL DEFAULT '-1',
+  `tableid` int(11) NOT NULL DEFAULT '-1',
+  KEY `chanid` (`chanid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `pidcache`
+--
+
+LOCK TABLES `pidcache` WRITE;
+/*!40000 ALTER TABLE `pidcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `pidcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `playgroup`
+--
+
+DROP TABLE IF EXISTS `playgroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `playgroup` (
+  `name` varchar(32) NOT NULL DEFAULT '',
+  `titlematch` varchar(255) NOT NULL DEFAULT '',
+  `skipahead` int(11) NOT NULL DEFAULT '0',
+  `skipback` int(11) NOT NULL DEFAULT '0',
+  `timestretch` int(11) NOT NULL DEFAULT '0',
+  `jump` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `playgroup`
+--
+
+LOCK TABLES `playgroup` WRITE;
+/*!40000 ALTER TABLE `playgroup` DISABLE KEYS */;
+INSERT INTO `playgroup` (`name`, `titlematch`, `skipahead`, `skipback`, `timestretch`, `jump`) VALUES ('Default','',30,5,100,0);
+/*!40000 ALTER TABLE `playgroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `powerpriority`
+--
+
+DROP TABLE IF EXISTS `powerpriority`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `powerpriority` (
+  `priorityname` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `recpriority` int(10) NOT NULL DEFAULT '0',
+  `selectclause` varchar(16000) NOT NULL DEFAULT '',
+  PRIMARY KEY (`priorityname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `powerpriority`
+--
+
+LOCK TABLES `powerpriority` WRITE;
+/*!40000 ALTER TABLE `powerpriority` DISABLE KEYS */;
+/*!40000 ALTER TABLE `powerpriority` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `profilegroups`
+--
+
+DROP TABLE IF EXISTS `profilegroups`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `profilegroups` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) DEFAULT NULL,
+  `cardtype` varchar(32) NOT NULL DEFAULT 'V4L',
+  `is_default` int(1) DEFAULT '0',
+  `hostname` varchar(64) DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `name` (`name`,`hostname`),
+  KEY `cardtype` (`cardtype`)
+) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `profilegroups`
+--
+
+LOCK TABLES `profilegroups` WRITE;
+/*!40000 ALTER TABLE `profilegroups` DISABLE KEYS */;
+INSERT INTO `profilegroups` (`id`, `name`, `cardtype`, `is_default`, `hostname`) VALUES (1,'Software Encoders (v4l based)','V4L',1,NULL),(2,'IVTV MPEG-2 Encoders','MPEG',1,NULL),(3,'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)','MJPEG',1,NULL),(4,'Hardware HDTV','HDTV',1,NULL),(5,'Hardware DVB Encoders','DVB',1,NULL),(6,'Transcoders','TRANSCODE',1,NULL),(7,'FireWire Input','FIREWIRE',1,NULL),(8,'USB Mpeg-4 Encoder (Plextor ConvertX, etc)','GO7007',1,NULL),(14,'Import Recorder','IMPORT',1,NULL),(10,'Freebox Input','Freebox',1,NULL),(11,'HDHomeRun Recorders','HDHOMERUN',1,NULL),(12,'CRC IP Recorders','CRC_IP',1,NULL),(13,'HD-PVR Recorders','HDPVR',1,NULL),(15,'ASI Recorder (DVEO)','ASI',1,NULL),(16,'OCUR Recorder (CableLabs)','OCUR',1,NULL),(17,'Ceton Recorder','CETON',1,NULL);
+/*!40000 ALTER TABLE `profilegroups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `program`
+--
+
+DROP TABLE IF EXISTS `program`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `program` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `category_type` varchar(64) NOT NULL DEFAULT '',
+  `airdate` year(4) NOT NULL DEFAULT '0000',
+  `stars` float NOT NULL DEFAULT '0',
+  `previouslyshown` tinyint(4) NOT NULL DEFAULT '0',
+  `title_pronounce` varchar(128) NOT NULL DEFAULT '',
+  `stereo` tinyint(1) NOT NULL DEFAULT '0',
+  `subtitled` tinyint(1) NOT NULL DEFAULT '0',
+  `hdtv` tinyint(1) NOT NULL DEFAULT '0',
+  `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
+  `partnumber` int(11) NOT NULL DEFAULT '0',
+  `parttotal` int(11) NOT NULL DEFAULT '0',
+  `seriesid` varchar(64) NOT NULL DEFAULT '',
+  `originalairdate` date DEFAULT NULL,
+  `showtype` varchar(30) NOT NULL DEFAULT '',
+  `colorcode` varchar(20) NOT NULL DEFAULT '',
+  `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
+  `programid` varchar(64) NOT NULL DEFAULT '',
+  `manualid` int(10) unsigned NOT NULL DEFAULT '0',
+  `generic` tinyint(1) DEFAULT '0',
+  `listingsource` int(11) NOT NULL DEFAULT '0',
+  `first` tinyint(1) NOT NULL DEFAULT '0',
+  `last` tinyint(1) NOT NULL DEFAULT '0',
+  `audioprop` set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') NOT NULL,
+  `subtitletypes` set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') NOT NULL,
+  `videoprop` set('HDTV','WIDESCREEN','AVC') NOT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`manualid`),
+  KEY `endtime` (`endtime`),
+  KEY `title` (`title`),
+  KEY `title_pronounce` (`title_pronounce`),
+  KEY `seriesid` (`seriesid`),
+  KEY `id_start_end` (`chanid`,`starttime`,`endtime`),
+  KEY `program_manualid` (`manualid`),
+  KEY `previouslyshown` (`previouslyshown`),
+  KEY `programid` (`programid`,`starttime`),
+  KEY `starttime` (`starttime`),
+  KEY `subtitle` (`subtitle`),
+  KEY `description` (`description`(255))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `program`
+--
+
+LOCK TABLES `program` WRITE;
+/*!40000 ALTER TABLE `program` DISABLE KEYS */;
+/*!40000 ALTER TABLE `program` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `programgenres`
+--
+
+DROP TABLE IF EXISTS `programgenres`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `programgenres` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `relevance` char(1) NOT NULL DEFAULT '',
+  `genre` varchar(30) DEFAULT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`relevance`),
+  KEY `genre` (`genre`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `programgenres`
+--
+
+LOCK TABLES `programgenres` WRITE;
+/*!40000 ALTER TABLE `programgenres` DISABLE KEYS */;
+/*!40000 ALTER TABLE `programgenres` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `programrating`
+--
+
+DROP TABLE IF EXISTS `programrating`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `programrating` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `system` varchar(8) DEFAULT NULL,
+  `rating` varchar(16) DEFAULT NULL,
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`system`,`rating`),
+  KEY `starttime` (`starttime`,`system`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `programrating`
+--
+
+LOCK TABLES `programrating` WRITE;
+/*!40000 ALTER TABLE `programrating` DISABLE KEYS */;
+/*!40000 ALTER TABLE `programrating` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recgrouppassword`
+--
+
+DROP TABLE IF EXISTS `recgrouppassword`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recgrouppassword` (
+  `recgroup` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  `password` varchar(10) NOT NULL DEFAULT '',
+  PRIMARY KEY (`recgroup`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recgrouppassword`
+--
+
+LOCK TABLES `recgrouppassword` WRITE;
+/*!40000 ALTER TABLE `recgrouppassword` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recgrouppassword` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `record`
+--
+
+DROP TABLE IF EXISTS `record`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `record` (
+  `recordid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `type` int(10) unsigned NOT NULL DEFAULT '0',
+  `chanid` int(10) unsigned DEFAULT NULL,
+  `starttime` time NOT NULL DEFAULT '00:00:00',
+  `startdate` date NOT NULL DEFAULT '0000-00-00',
+  `endtime` time NOT NULL DEFAULT '00:00:00',
+  `enddate` date NOT NULL DEFAULT '0000-00-00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `season` smallint(5) NOT NULL,
+  `episode` smallint(5) NOT NULL,
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `profile` varchar(128) NOT NULL DEFAULT 'Default',
+  `recpriority` int(10) NOT NULL DEFAULT '0',
+  `autoexpire` int(11) NOT NULL DEFAULT '0',
+  `maxepisodes` int(11) NOT NULL DEFAULT '0',
+  `maxnewest` int(11) NOT NULL DEFAULT '0',
+  `startoffset` int(11) NOT NULL DEFAULT '0',
+  `endoffset` int(11) NOT NULL DEFAULT '0',
+  `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `dupmethod` int(11) NOT NULL DEFAULT '6',
+  `dupin` int(11) NOT NULL DEFAULT '15',
+  `station` varchar(20) NOT NULL DEFAULT '',
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `inetref` varchar(40) NOT NULL,
+  `search` int(10) unsigned NOT NULL DEFAULT '0',
+  `autotranscode` tinyint(1) NOT NULL DEFAULT '0',
+  `autocommflag` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob1` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob2` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob3` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob4` tinyint(1) NOT NULL DEFAULT '0',
+  `autometadata` tinyint(1) NOT NULL DEFAULT '0',
+  `findday` tinyint(4) NOT NULL DEFAULT '0',
+  `findtime` time NOT NULL DEFAULT '00:00:00',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  `inactive` tinyint(1) NOT NULL DEFAULT '0',
+  `parentid` int(11) NOT NULL DEFAULT '0',
+  `transcoder` int(11) NOT NULL DEFAULT '0',
+  `playgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `prefinput` int(10) NOT NULL DEFAULT '0',
+  `next_record` datetime NOT NULL,
+  `last_record` datetime NOT NULL,
+  `last_delete` datetime NOT NULL,
+  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `avg_delay` int(11) NOT NULL DEFAULT '100',
+  `filter` int(10) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`recordid`),
+  KEY `chanid` (`chanid`,`starttime`),
+  KEY `title` (`title`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `maxepisodes` (`maxepisodes`),
+  KEY `search` (`search`),
+  KEY `type` (`type`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `record`
+--
+
+LOCK TABLES `record` WRITE;
+/*!40000 ALTER TABLE `record` DISABLE KEYS */;
+/*!40000 ALTER TABLE `record` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recorded`
+--
+
+DROP TABLE IF EXISTS `recorded`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recorded` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `season` smallint(5) NOT NULL,
+  `episode` smallint(5) NOT NULL,
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `bookmark` tinyint(1) NOT NULL DEFAULT '0',
+  `editing` int(10) unsigned NOT NULL DEFAULT '0',
+  `cutlist` tinyint(1) NOT NULL DEFAULT '0',
+  `autoexpire` int(11) NOT NULL DEFAULT '0',
+  `commflagged` int(10) unsigned NOT NULL DEFAULT '0',
+  `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `recordid` int(11) DEFAULT NULL,
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `inetref` varchar(40) NOT NULL,
+  `lastmodified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `filesize` bigint(20) NOT NULL DEFAULT '0',
+  `stars` float NOT NULL DEFAULT '0',
+  `previouslyshown` tinyint(1) DEFAULT '0',
+  `originalairdate` date DEFAULT NULL,
+  `preserve` tinyint(1) NOT NULL DEFAULT '0',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  `deletepending` tinyint(1) NOT NULL DEFAULT '0',
+  `transcoder` int(11) NOT NULL DEFAULT '0',
+  `timestretch` float NOT NULL DEFAULT '1',
+  `recpriority` int(11) NOT NULL DEFAULT '0',
+  `basename` varchar(255) NOT NULL,
+  `progstart` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `progend` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `playgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `profile` varchar(32) NOT NULL DEFAULT '',
+  `duplicate` tinyint(1) NOT NULL DEFAULT '0',
+  `transcoded` tinyint(1) NOT NULL DEFAULT '0',
+  `watched` tinyint(4) NOT NULL DEFAULT '0',
+  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `bookmarkupdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+  PRIMARY KEY (`chanid`,`starttime`),
+  KEY `endtime` (`endtime`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `title` (`title`),
+  KEY `recordid` (`recordid`),
+  KEY `deletepending` (`deletepending`,`lastmodified`),
+  KEY `recgroup` (`recgroup`,`endtime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recorded`
+--
+
+LOCK TABLES `recorded` WRITE;
+/*!40000 ALTER TABLE `recorded` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recorded` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedartwork`
+--
+
+DROP TABLE IF EXISTS `recordedartwork`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedartwork` (
+  `inetref` varchar(255) NOT NULL,
+  `season` smallint(5) NOT NULL,
+  `host` text NOT NULL,
+  `coverart` text NOT NULL,
+  `fanart` text NOT NULL,
+  `banner` text NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedartwork`
+--
+
+LOCK TABLES `recordedartwork` WRITE;
+/*!40000 ALTER TABLE `recordedartwork` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedartwork` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedcredits`
+--
+
+DROP TABLE IF EXISTS `recordedcredits`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedcredits` (
+  `person` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `role` set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') NOT NULL DEFAULT '',
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`person`,`role`),
+  KEY `person` (`person`,`role`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedcredits`
+--
+
+LOCK TABLES `recordedcredits` WRITE;
+/*!40000 ALTER TABLE `recordedcredits` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedcredits` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedfile`
+--
+
+DROP TABLE IF EXISTS `recordedfile`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedfile` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `basename` varchar(128) NOT NULL DEFAULT '',
+  `filesize` bigint(20) NOT NULL DEFAULT '0',
+  `width` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `height` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `fps` float(6,3) NOT NULL DEFAULT '0.000',
+  `aspect` float(8,6) NOT NULL DEFAULT '0.000000',
+  `audio_sample_rate` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `audio_bits_per_sample` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `audio_channels` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  `audio_type` varchar(255) NOT NULL DEFAULT '',
+  `video_type` varchar(255) NOT NULL DEFAULT '',
+  `comment` varchar(255) NOT NULL DEFAULT '',
+  `hostname` varchar(64) NOT NULL,
+  `storagegroup` varchar(32) NOT NULL,
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`basename`),
+  KEY `basename` (`basename`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedfile`
+--
+
+LOCK TABLES `recordedfile` WRITE;
+/*!40000 ALTER TABLE `recordedfile` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedfile` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedmarkup`
+--
+
+DROP TABLE IF EXISTS `recordedmarkup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedmarkup` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `type` tinyint(4) NOT NULL DEFAULT '0',
+  `data` int(11) unsigned DEFAULT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`type`,`mark`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedmarkup`
+--
+
+LOCK TABLES `recordedmarkup` WRITE;
+/*!40000 ALTER TABLE `recordedmarkup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedmarkup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedprogram`
+--
+
+DROP TABLE IF EXISTS `recordedprogram`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedprogram` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `category_type` varchar(64) NOT NULL DEFAULT '',
+  `airdate` year(4) NOT NULL DEFAULT '0000',
+  `stars` float unsigned NOT NULL DEFAULT '0',
+  `previouslyshown` tinyint(4) NOT NULL DEFAULT '0',
+  `title_pronounce` varchar(128) NOT NULL DEFAULT '',
+  `stereo` tinyint(1) NOT NULL DEFAULT '0',
+  `subtitled` tinyint(1) NOT NULL DEFAULT '0',
+  `hdtv` tinyint(1) NOT NULL DEFAULT '0',
+  `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
+  `partnumber` int(11) NOT NULL DEFAULT '0',
+  `parttotal` int(11) NOT NULL DEFAULT '0',
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `originalairdate` date DEFAULT NULL,
+  `showtype` varchar(30) NOT NULL DEFAULT '',
+  `colorcode` varchar(20) NOT NULL DEFAULT '',
+  `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `manualid` int(10) unsigned NOT NULL DEFAULT '0',
+  `generic` tinyint(1) DEFAULT '0',
+  `listingsource` int(11) NOT NULL DEFAULT '0',
+  `first` tinyint(1) NOT NULL DEFAULT '0',
+  `last` tinyint(1) NOT NULL DEFAULT '0',
+  `audioprop` set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') NOT NULL,
+  `subtitletypes` set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') NOT NULL,
+  `videoprop` set('HDTV','WIDESCREEN','AVC','720','1080','DAMAGED') NOT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`manualid`),
+  KEY `endtime` (`endtime`),
+  KEY `title` (`title`),
+  KEY `title_pronounce` (`title_pronounce`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `id_start_end` (`chanid`,`starttime`,`endtime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedprogram`
+--
+
+LOCK TABLES `recordedprogram` WRITE;
+/*!40000 ALTER TABLE `recordedprogram` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedprogram` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedrating`
+--
+
+DROP TABLE IF EXISTS `recordedrating`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedrating` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `system` varchar(8) DEFAULT NULL,
+  `rating` varchar(16) DEFAULT NULL,
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`system`,`rating`),
+  KEY `starttime` (`starttime`,`system`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedrating`
+--
+
+LOCK TABLES `recordedrating` WRITE;
+/*!40000 ALTER TABLE `recordedrating` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedrating` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedseek`
+--
+
+DROP TABLE IF EXISTS `recordedseek`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedseek` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `offset` bigint(20) unsigned NOT NULL,
+  `type` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`chanid`,`starttime`,`type`,`mark`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedseek`
+--
+
+LOCK TABLES `recordedseek` WRITE;
+/*!40000 ALTER TABLE `recordedseek` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedseek` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordfilter`
+--
+
+DROP TABLE IF EXISTS `recordfilter`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordfilter` (
+  `filterid` int(10) unsigned NOT NULL,
+  `description` varchar(64) DEFAULT NULL,
+  `clause` varchar(256) DEFAULT NULL,
+  `newruledefault` tinyint(1) DEFAULT '0',
+  PRIMARY KEY (`filterid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordfilter`
+--
+
+LOCK TABLES `recordfilter` WRITE;
+/*!40000 ALTER TABLE `recordfilter` DISABLE KEYS */;
+INSERT INTO `recordfilter` (`filterid`, `description`, `clause`, `newruledefault`) VALUES (0,'New episode','program.previouslyshown = 0',0),(1,'Identifiable episode','program.generic = 0',0),(2,'First showing','program.first > 0',0),(3,'Prime time','HOUR(program.starttime) >= 19 AND HOUR(program.starttime) < 23',0),(4,'Commercial free','channel.commmethod = -2',0),(5,'High definition','program.hdtv > 0',0),(6,'This episode','(RECTABLE.programid <> \'\' AND program.programid = RECTABLE.programid) OR (RECTABLE.programid = \'\' AND program.subtitle = RECTABLE.subtitle AND program.description = RECTABLE.description)',0),(7,'This series','(RECTABLE.seriesid <> \'\' AND program.seriesid = RECTABLE.seriesid)',0);
+/*!40000 ALTER TABLE `recordfilter` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordingprofiles`
+--
+
+DROP TABLE IF EXISTS `recordingprofiles`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordingprofiles` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) DEFAULT NULL,
+  `videocodec` varchar(128) DEFAULT NULL,
+  `audiocodec` varchar(128) DEFAULT NULL,
+  `profilegroup` int(10) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`),
+  KEY `profilegroup` (`profilegroup`)
+) ENGINE=MyISAM AUTO_INCREMENT=70 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordingprofiles`
+--
+
+LOCK TABLES `recordingprofiles` WRITE;
+/*!40000 ALTER TABLE `recordingprofiles` DISABLE KEYS */;
+INSERT INTO `recordingprofiles` (`id`, `name`, `videocodec`, `audiocodec`, `profilegroup`) VALUES (1,'Default',NULL,NULL,1),(2,'Live TV',NULL,NULL,1),(3,'High Quality',NULL,NULL,1),(4,'Low Quality',NULL,NULL,1),(5,'Default',NULL,NULL,2),(6,'Live TV',NULL,NULL,2),(7,'High Quality',NULL,NULL,2),(8,'Low Quality',NULL,NULL,2),(9,'Default',NULL,NULL,3),(10,'Live TV',NULL,NULL,3),(11,'High Quality',NULL,NULL,3),(12,'Low Quality',NULL,NULL,3),(13,'Default',NULL,NULL,4),(14,'Live TV',NULL,NULL,4),(15,'High Quality',NULL,NULL,4),(16,'Low Quality',NULL,NULL,4),(17,'Default',NULL,NULL,5),(18,'Live TV',NULL,NULL,5),(19,'High Quality',NULL,NULL,5),(20,'Low Quality',NULL,NULL,5),(21,'RTjpeg/MPEG4',NULL,NULL,6),(22,'MPEG2',NULL,NULL,6),(23,'Default',NULL,NULL,8),(24,'Live TV',NULL,NULL,8),(25,'High Quality',NULL,NULL,8),(26,'Low Quality',NULL,NULL,8),(27,'High Quality',NULL,NULL,6),(28,'Medium Quality',NULL,NULL,6),(29,'Low Quality',NULL,NULL,6),(30,'Default',NULL,NULL,10),(31,'Live TV',NULL,NULL,10),(32,'High Quality',NULL,NULL,10),(33,'Low Quality',NULL,NULL,10),(34,'Default',NULL,NULL,11),(35,'Live TV',NULL,NULL,11),(36,'High Quality',NULL,NULL,11),(37,'Low Quality',NULL,NULL,11),(38,'Default',NULL,NULL,12),(39,'Live TV',NULL,NULL,12),(40,'High Quality',NULL,NULL,12),(41,'Low Quality',NULL,NULL,12),(42,'Default',NULL,NULL,7),(43,'Live TV',NULL,NULL,7),(44,'High Quality',NULL,NULL,7),(45,'Low Quality',NULL,NULL,7),(46,'Default',NULL,NULL,9),(47,'Live TV',NULL,NULL,9),(48,'High Quality',NULL,NULL,9),(49,'Low Quality',NULL,NULL,9),(50,'Default',NULL,NULL,13),(51,'Live TV',NULL,NULL,13),(52,'High Quality',NULL,NULL,13),(53,'Low Quality',NULL,NULL,13),(54,'Default',NULL,NULL,14),(55,'Live TV',NULL,NULL,14),(56,'High Quality',NULL,NULL,14),(57,'Low Quality',NULL,NULL,14),(58,'Default',NULL,NULL,15),(59,'Live TV',NULL,NULL,15),(60,'High Quality',NULL,NULL,15),(61,'Low Quality',NULL,NULL,15),(62,'Default',NULL,NULL,16),(63,'Live TV',NULL,NULL,16),(64,'High Quality',NULL,NULL,16),(65,'Low Quality',NULL,NULL,16),(66,'Default',NULL,NULL,17),(67,'Live TV',NULL,NULL,17),(68,'High Quality',NULL,NULL,17),(69,'Low Quality',NULL,NULL,17);
+/*!40000 ALTER TABLE `recordingprofiles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordmatch`
+--
+
+DROP TABLE IF EXISTS `recordmatch`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordmatch` (
+  `recordid` int(10) unsigned NOT NULL,
+  `chanid` int(10) unsigned NOT NULL,
+  `starttime` datetime NOT NULL,
+  `manualid` int(10) unsigned NOT NULL,
+  `oldrecduplicate` tinyint(1) DEFAULT NULL,
+  `recduplicate` tinyint(1) DEFAULT NULL,
+  `findduplicate` tinyint(1) DEFAULT NULL,
+  `oldrecstatus` int(11) DEFAULT NULL,
+  UNIQUE KEY `recordid` (`recordid`,`chanid`,`starttime`),
+  KEY `chanid` (`chanid`,`starttime`,`manualid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordmatch`
+--
+
+LOCK TABLES `recordmatch` WRITE;
+/*!40000 ALTER TABLE `recordmatch` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordmatch` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `schemalock`
+--
+
+DROP TABLE IF EXISTS `schemalock`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `schemalock` (
+  `schemalock` int(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `schemalock`
+--
+
+LOCK TABLES `schemalock` WRITE;
+/*!40000 ALTER TABLE `schemalock` DISABLE KEYS */;
+/*!40000 ALTER TABLE `schemalock` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `settings`
+--
+
+DROP TABLE IF EXISTS `settings`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `settings` (
+  `value` varchar(128) NOT NULL DEFAULT '',
+  `data` varchar(16000) NOT NULL DEFAULT '',
+  `hostname` varchar(64) DEFAULT NULL,
+  KEY `value` (`value`,`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `settings`
+--
+
+LOCK TABLES `settings` WRITE;
+/*!40000 ALTER TABLE `settings` DISABLE KEYS */;
+INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1299',NULL),('DefaultTranscoder','0',NULL),('FreqTable','us-bcast',NULL),('ISO639Language0','eng',NULL),('ISO639Language1','eng',NULL),('TVFormat','NTSC',NULL),('VbiFormat','NTSC Closed Caption',NULL),('Country','US','apheleia'),('DateFormat','ddd MMM d yyyy','apheleia'),('Language','en_US','apheleia'),('MythArchiveDateFormat','%a %b %d %Y','apheleia'),('MythArchiveTimeFormat','%I:%M %p','apheleia'),('MythArchiveVideoFormat','NTSC','apheleia'),('ShortDateFormat','M/d','apheleia'),('TimeFormat','h:mm AP','apheleia'),('BackendServerIP','127.0.0.1','apheleia'),('BackendServerIP6','::1','apheleia'),('BackendServerPort','6543','apheleia'),('BackendStatusPort','6544','apheleia'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('TimeOffset','None',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','0',NULL),('TruncateDeletesSlowly','0','apheleia'),('HDRingbufferSize','9400',NULL),('StorageScheduler','BalancedFreeSpace',NULL),('UPnP/WMPSource','0',NULL),('DisableAutomaticBackup','0',NULL),('DisableFirewireReset','0','apheleia'),('EITTransportTimeout','5',NULL),('EITCrawIdleStart','60',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('WOLbackendConnectRetry','5',NULL),('BackendStopCommand','killall mythbackend',NULL),('BackendStartCommand','mythbackend',NULL),('JobQueueMaxSimultaneousJobs','1','apheleia'),('JobQueueCheckFrequency','60','apheleia'),('JobQueueWindowStart','00:00','apheleia'),('JobQueueWindowEnd','23:59','apheleia'),('JobQueueCPU','0','apheleia'),('JobAllowMetadata','1','apheleia'),('JobAllowCommFlag','1','apheleia'),('JobAllowTranscode','1','apheleia'),('JobAllowUserJob1','0','apheleia'),('JobAllowUserJob2','0','apheleia'),('JobAllowUserJob3','0','apheleia'),('JobAllowUserJob4','0','apheleia'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJobDesc2','User Job #2',NULL),('UserJobDesc3','User Job #3',NULL),('UserJobDesc4','User Job #4',NULL),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillMaxHour','23',NULL),('MythFillGrabberSuggestsTime','1',NULL),('WOLbackendReconnectWaitTime','5',NULL);
+/*!40000 ALTER TABLE `settings` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `storagegroup`
+--
+
+DROP TABLE IF EXISTS `storagegroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `storagegroup` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `groupname` varchar(32) NOT NULL,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `dirname` varchar(235) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `grouphostdir` (`groupname`,`hostname`,`dirname`),
+  KEY `hostname` (`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `storagegroup`
+--
+
+LOCK TABLES `storagegroup` WRITE;
+/*!40000 ALTER TABLE `storagegroup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `storagegroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `tvchain`
+--
+
+DROP TABLE IF EXISTS `tvchain`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tvchain` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `chainid` varchar(128) NOT NULL DEFAULT '',
+  `chainpos` int(10) NOT NULL DEFAULT '0',
+  `discontinuity` tinyint(1) NOT NULL DEFAULT '0',
+  `watching` int(10) NOT NULL DEFAULT '0',
+  `hostprefix` varchar(128) NOT NULL DEFAULT '',
+  `cardtype` varchar(32) NOT NULL DEFAULT 'V4L',
+  `input` varchar(32) NOT NULL DEFAULT '',
+  `channame` varchar(32) NOT NULL DEFAULT '',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  PRIMARY KEY (`chanid`,`starttime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `tvchain`
+--
+
+LOCK TABLES `tvchain` WRITE;
+/*!40000 ALTER TABLE `tvchain` DISABLE KEYS */;
+/*!40000 ALTER TABLE `tvchain` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `tvosdmenu`
+--
+
+DROP TABLE IF EXISTS `tvosdmenu`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tvosdmenu` (
+  `osdcategory` varchar(32) NOT NULL,
+  `livetv` tinyint(4) NOT NULL DEFAULT '0',
+  `recorded` tinyint(4) NOT NULL DEFAULT '0',
+  `video` tinyint(4) NOT NULL DEFAULT '0',
+  `dvd` tinyint(4) NOT NULL DEFAULT '0',
+  `description` varchar(32) NOT NULL,
+  PRIMARY KEY (`osdcategory`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `tvosdmenu`
+--
+
+LOCK TABLES `tvosdmenu` WRITE;
+/*!40000 ALTER TABLE `tvosdmenu` DISABLE KEYS */;
+/*!40000 ALTER TABLE `tvosdmenu` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `upnpmedia`
+--
+
+DROP TABLE IF EXISTS `upnpmedia`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `upnpmedia` (
+  `intid` int(10) unsigned NOT NULL DEFAULT '0',
+  `class` varchar(64) NOT NULL DEFAULT '',
+  `itemtype` varchar(128) NOT NULL DEFAULT '',
+  `parentid` int(10) unsigned NOT NULL DEFAULT '0',
+  `itemproperties` varchar(255) NOT NULL DEFAULT '',
+  `filepath` varchar(512) NOT NULL DEFAULT '',
+  `title` varchar(255) NOT NULL DEFAULT '',
+  `filename` varchar(512) NOT NULL DEFAULT '',
+  `coverart` varchar(512) NOT NULL DEFAULT '',
+  PRIMARY KEY (`intid`),
+  KEY `class` (`class`),
+  KEY `filepath` (`filepath`(333)),
+  KEY `parentid` (`parentid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `upnpmedia`
+--
+
+LOCK TABLES `upnpmedia` WRITE;
+/*!40000 ALTER TABLE `upnpmedia` DISABLE KEYS */;
+/*!40000 ALTER TABLE `upnpmedia` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videocast`
+--
+
+DROP TABLE IF EXISTS `videocast`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videocast` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `cast` varchar(128) NOT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videocast`
+--
+
+LOCK TABLES `videocast` WRITE;
+/*!40000 ALTER TABLE `videocast` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videocast` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videocategory`
+--
+
+DROP TABLE IF EXISTS `videocategory`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videocategory` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `category` varchar(128) NOT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videocategory`
+--
+
+LOCK TABLES `videocategory` WRITE;
+/*!40000 ALTER TABLE `videocategory` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videocategory` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videocollection`
+--
+
+DROP TABLE IF EXISTS `videocollection`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videocollection` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `title` varchar(256) NOT NULL,
+  `contenttype` set('MOVIE','TELEVISION','ADULT','MUSICVIDEO','HOMEVIDEO') NOT NULL DEFAULT '',
+  `plot` text,
+  `network` varchar(128) DEFAULT NULL,
+  `collectionref` varchar(128) NOT NULL,
+  `certification` varchar(128) DEFAULT NULL,
+  `genre` varchar(128) DEFAULT '',
+  `releasedate` date DEFAULT NULL,
+  `language` varchar(10) DEFAULT NULL,
+  `status` varchar(64) DEFAULT NULL,
+  `rating` float DEFAULT '0',
+  `ratingcount` int(10) DEFAULT '0',
+  `runtime` smallint(5) unsigned DEFAULT '0',
+  `banner` text,
+  `fanart` text,
+  `coverart` text,
+  PRIMARY KEY (`intid`),
+  KEY `title` (`title`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videocollection`
+--
+
+LOCK TABLES `videocollection` WRITE;
+/*!40000 ALTER TABLE `videocollection` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videocollection` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videocountry`
+--
+
+DROP TABLE IF EXISTS `videocountry`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videocountry` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `country` varchar(128) NOT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videocountry`
+--
+
+LOCK TABLES `videocountry` WRITE;
+/*!40000 ALTER TABLE `videocountry` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videocountry` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videogenre`
+--
+
+DROP TABLE IF EXISTS `videogenre`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videogenre` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `genre` varchar(128) NOT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videogenre`
+--
+
+LOCK TABLES `videogenre` WRITE;
+/*!40000 ALTER TABLE `videogenre` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videogenre` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videometadata`
+--
+
+DROP TABLE IF EXISTS `videometadata`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videometadata` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `title` varchar(128) NOT NULL,
+  `subtitle` text NOT NULL,
+  `tagline` varchar(255) DEFAULT NULL,
+  `director` varchar(128) NOT NULL,
+  `studio` varchar(128) DEFAULT NULL,
+  `plot` text,
+  `rating` varchar(128) NOT NULL,
+  `inetref` varchar(255) NOT NULL,
+  `collectionref` int(10) NOT NULL DEFAULT '-1',
+  `homepage` text NOT NULL,
+  `year` int(10) unsigned NOT NULL,
+  `releasedate` date NOT NULL,
+  `userrating` float NOT NULL,
+  `length` int(10) unsigned NOT NULL,
+  `playcount` int(10) NOT NULL DEFAULT '0',
+  `season` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `episode` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `showlevel` int(10) unsigned NOT NULL,
+  `filename` text NOT NULL,
+  `hash` varchar(128) NOT NULL,
+  `coverfile` text NOT NULL,
+  `childid` int(11) NOT NULL DEFAULT '-1',
+  `browse` tinyint(1) NOT NULL DEFAULT '1',
+  `watched` tinyint(1) NOT NULL DEFAULT '0',
+  `processed` tinyint(1) NOT NULL DEFAULT '0',
+  `playcommand` varchar(255) DEFAULT NULL,
+  `category` int(10) unsigned NOT NULL DEFAULT '0',
+  `trailer` text,
+  `host` text NOT NULL,
+  `screenshot` text,
+  `banner` text,
+  `fanart` text,
+  `insertdate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `contenttype` set('MOVIE','TELEVISION','ADULT','MUSICVIDEO','HOMEVIDEO') NOT NULL DEFAULT '',
+  PRIMARY KEY (`intid`),
+  KEY `director` (`director`),
+  KEY `title` (`title`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videometadata`
+--
+
+LOCK TABLES `videometadata` WRITE;
+/*!40000 ALTER TABLE `videometadata` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videometadata` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videometadatacast`
+--
+
+DROP TABLE IF EXISTS `videometadatacast`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videometadatacast` (
+  `idvideo` int(10) unsigned NOT NULL,
+  `idcast` int(10) unsigned NOT NULL,
+  UNIQUE KEY `idvideo` (`idvideo`,`idcast`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videometadatacast`
+--
+
+LOCK TABLES `videometadatacast` WRITE;
+/*!40000 ALTER TABLE `videometadatacast` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videometadatacast` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videometadatacountry`
+--
+
+DROP TABLE IF EXISTS `videometadatacountry`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videometadatacountry` (
+  `idvideo` int(10) unsigned NOT NULL,
+  `idcountry` int(10) unsigned NOT NULL,
+  UNIQUE KEY `idvideo_2` (`idvideo`,`idcountry`),
+  KEY `idvideo` (`idvideo`),
+  KEY `idcountry` (`idcountry`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videometadatacountry`
+--
+
+LOCK TABLES `videometadatacountry` WRITE;
+/*!40000 ALTER TABLE `videometadatacountry` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videometadatacountry` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videometadatagenre`
+--
+
+DROP TABLE IF EXISTS `videometadatagenre`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videometadatagenre` (
+  `idvideo` int(10) unsigned NOT NULL,
+  `idgenre` int(10) unsigned NOT NULL,
+  UNIQUE KEY `idvideo_2` (`idvideo`,`idgenre`),
+  KEY `idvideo` (`idvideo`),
+  KEY `idgenre` (`idgenre`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videometadatagenre`
+--
+
+LOCK TABLES `videometadatagenre` WRITE;
+/*!40000 ALTER TABLE `videometadatagenre` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videometadatagenre` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videopathinfo`
+--
+
+DROP TABLE IF EXISTS `videopathinfo`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videopathinfo` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `path` text,
+  `contenttype` set('MOVIE','TELEVISION','ADULT','MUSICVIDEO','HOMEVIDEO') NOT NULL DEFAULT '',
+  `collectionref` int(10) DEFAULT '0',
+  `recurse` tinyint(1) DEFAULT '0',
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videopathinfo`
+--
+
+LOCK TABLES `videopathinfo` WRITE;
+/*!40000 ALTER TABLE `videopathinfo` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videopathinfo` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videosource`
+--
+
+DROP TABLE IF EXISTS `videosource`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videosource` (
+  `sourceid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) NOT NULL DEFAULT '',
+  `xmltvgrabber` varchar(128) DEFAULT NULL,
+  `userid` varchar(128) NOT NULL DEFAULT '',
+  `freqtable` varchar(16) NOT NULL DEFAULT 'default',
+  `lineupid` varchar(64) DEFAULT NULL,
+  `password` varchar(64) DEFAULT NULL,
+  `useeit` smallint(6) NOT NULL DEFAULT '0',
+  `configpath` varchar(4096) DEFAULT NULL,
+  `dvb_nit_id` int(6) DEFAULT '-1',
+  PRIMARY KEY (`sourceid`),
+  UNIQUE KEY `name` (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videosource`
+--
+
+LOCK TABLES `videosource` WRITE;
+/*!40000 ALTER TABLE `videosource` DISABLE KEYS */;
+/*!40000 ALTER TABLE `videosource` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `videotypes`
+--
+
+DROP TABLE IF EXISTS `videotypes`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `videotypes` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `extension` varchar(128) NOT NULL,
+  `playcommand` varchar(255) NOT NULL,
+  `f_ignore` tinyint(1) DEFAULT NULL,
+  `use_default` tinyint(1) DEFAULT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `videotypes`
+--
+
+LOCK TABLES `videotypes` WRITE;
+/*!40000 ALTER TABLE `videotypes` DISABLE KEYS */;
+INSERT INTO `videotypes` (`intid`, `extension`, `playcommand`, `f_ignore`, `use_default`) VALUES (1,'txt','',1,0),(2,'log','',1,0),(3,'mpg','Internal',0,0),(4,'avi','',0,1),(5,'vob','Internal',0,0),(6,'mpeg','Internal',0,0),(8,'iso','Internal',0,0),(9,'img','Internal',0,0),(10,'mkv','Internal',0,0),(11,'mp4','Internal',0,0),(12,'m2ts','Internal',0,0),(13,'evo','Internal',0,0),(14,'divx','Internal',0,0),(15,'mov','Internal',0,0),(16,'qt','Internal',0,0),(17,'wmv','Internal',0,0),(18,'3gp','Internal',0,0),(19,'asf','Internal',0,0),(20,'ogg','Internal',0,0),(21,'ogm','Internal',0,0),(22,'flv','Internal',0,0),(23,'ogv','Internal',0,0),(25,'nut','Internal',0,0),(26,'mxf','Internal',0,0),(27,'m4v','Internal',0,0),(28,'rm','Internal',0,0),(29,'ts','Internal',0,0),(30,'swf','Internal',0,0),(31,'f4v','Internal',0,0),(32,'nuv','Internal',0,0);
+/*!40000 ALTER TABLE `videotypes` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2012-08-22 15:37:35
-- 
cgit v0.12


From 8c3ad44135b42290b15395fdcb5a5167a33b4788 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 3 Dec 2013 12:28:48 -0600
Subject: xymon:  set mythfrontend to go yellow instead of red, fix timestamp
 format for checking the mtc log.

refs #945
---
 abs/core/xymon/PKGBUILD            |  6 +++---
 abs/core/xymon/analysis.cfg        | 10 +++++-----
 abs/core/xymon/hobbit_myth_data.py |  4 +++-
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/abs/core/xymon/PKGBUILD b/abs/core/xymon/PKGBUILD
index 96aa82f..c5acbe9 100755
--- a/abs/core/xymon/PKGBUILD
+++ b/abs/core/xymon/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=xymon
 pkgname=(xymonserver xymonclient)
 pkgver=4.3.5
-pkgrel=51
+pkgrel=52
 pkgdesc="Hobbit is a system for monitoring servers and networks. "
 license="GPL"
 arch=('i686' 'x86_64')
@@ -136,7 +136,7 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          'b2f98ac0df013332deedc1efae0a270d'
          '1141fc6f846e91f380bbcdb212b44f7d'
          '0f70e76a164f648f0a4a01110137cb20'
-         'b0664f3b38717dce911f59bcbd84e7a4'
+         '166279c006c3ef7bf0c21537cf89fc83'
          '80d9cfac86c6d96836e6f406e35e7cf5'
          'd210c43fb9ee9ad6cd7648e0c2e0efea'
          '0c808fa12672289f86b0651545381308'
@@ -145,7 +145,7 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          '6baa410da1dfb86435191f4805186ea7'
          'a834dd134b6d640d753b1e26609d37df'
          '9b5f3079c461f1e0a1b5fb805d073665'
-         '77a542c2fd13468791ef23057ba8e77d'
+         '0820163ec63b3993577ac8cd9c3ab3ca'
          'b4e8641e97e6b689dbc634af785e6799'
          'e2844513e2c92e8b5084818f3b2a478d'
          '98e9242ae346f729b14cb195786571f2'
diff --git a/abs/core/xymon/analysis.cfg b/abs/core/xymon/analysis.cfg
index da833e1..460d157 100644
--- a/abs/core/xymon/analysis.cfg
+++ b/abs/core/xymon/analysis.cfg
@@ -317,7 +317,7 @@
 # the alert module, which can then use it to control who gets an alert when
 # a failure occurs. E.g. the following associates the "httpd" process check 
 # with the "web" group, and the "sshd" check with the "admins" group:
-#    PROC httpd 5 GROUP=web
+#    PROC httpd ?5 GROUP=web
 #    PROC sshd 1 GROUP=admins
 # In the alerts.cfg file, you could then have rules like
 #    GROUP=web
@@ -364,7 +364,7 @@ HOST=_MASTERBACKEND_
     PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
 
 HOST=_MASTERFRONTEND_
-    PROC mythfrontend
+    PROC mythfrontend 1 5 yellow
     PROC sshd 1 
     PROC lighttpd  
     PROC xymond
@@ -385,7 +385,7 @@ HOST=_MASTERFRONTEND_
 HOST=_FRONTEND_
     PROC sshd 1 
     PROC crond
-    PROC mythfrontend
+    PROC mythfrontend 1 5 yellow
     PROC msg_daemon.py
     PORT "LOCAL=%([.:]22)$" state=LISTEN TEXT=ssh
 
@@ -405,7 +405,7 @@ HOST=_SLAVEFRONTEND_
     PROC hobbitd
     PROC crond
     PROC mythbackend
-    PROC mythfrontend
+    PROC mythfrontend 1 5 yellow
     PROC msg_daemon.py
     DISK    %^/cdrom.* IGNORE
     DISK    %^/mnt.* IGNORE
@@ -415,7 +415,7 @@ HOST=_SLAVEFRONTEND_
 
 
 HOST=_STANDALONE_
-    PROC mythfrontend
+    PROC mythfrontend 1 5 yellow
     PROC sshd 1 
     PROC lighttpd  
     PROC xymond
diff --git a/abs/core/xymon/hobbit_myth_data.py b/abs/core/xymon/hobbit_myth_data.py
index 52d6a6b..3c7ad49 100755
--- a/abs/core/xymon/hobbit_myth_data.py
+++ b/abs/core/xymon/hobbit_myth_data.py
@@ -95,7 +95,9 @@ def find_data_left():
 
 
 now = datetime.datetime.now()
-date = "%s-%s-%s" %(now.year, now.month, now.day)
+#date = "%s-%s-%s" %(now.year, now.month, now.day)
+date = (now.strftime('%Y-%m-%d')) 
+
 mtc_file = "/var/log/%s/myth_mtc.log" %date
 
 mtc=check_mtc(mtc_file)
-- 
cgit v0.12


From ba4ef74d5cd87084bd5c328fbbc254208e5e84a6 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 3 Dec 2013 16:15:31 -0600
Subject: xymon:  init line when looking for the Finish line in mtc

refs #945
---
 abs/core/xymon/PKGBUILD            | 4 ++--
 abs/core/xymon/hobbit_myth_data.py | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/abs/core/xymon/PKGBUILD b/abs/core/xymon/PKGBUILD
index c5acbe9..5c55a66 100755
--- a/abs/core/xymon/PKGBUILD
+++ b/abs/core/xymon/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=xymon
 pkgname=(xymonserver xymonclient)
 pkgver=4.3.5
-pkgrel=52
+pkgrel=53
 pkgdesc="Hobbit is a system for monitoring servers and networks. "
 license="GPL"
 arch=('i686' 'x86_64')
@@ -145,7 +145,7 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          '6baa410da1dfb86435191f4805186ea7'
          'a834dd134b6d640d753b1e26609d37df'
          '9b5f3079c461f1e0a1b5fb805d073665'
-         '0820163ec63b3993577ac8cd9c3ab3ca'
+         'b8eb10070f2ad6a245d3da15091694ba'
          'b4e8641e97e6b689dbc634af785e6799'
          'e2844513e2c92e8b5084818f3b2a478d'
          '98e9242ae346f729b14cb195786571f2'
diff --git a/abs/core/xymon/hobbit_myth_data.py b/abs/core/xymon/hobbit_myth_data.py
index 3c7ad49..ac56903 100755
--- a/abs/core/xymon/hobbit_myth_data.py
+++ b/abs/core/xymon/hobbit_myth_data.py
@@ -59,6 +59,7 @@ def set_color(color_code):
 
 
 def check_mtc(mtc_file):
+    line=''
     try:
         infile = open(mtc_file, 'r')
     except(IOError), e:
@@ -97,7 +98,7 @@ def find_data_left():
 now = datetime.datetime.now()
 #date = "%s-%s-%s" %(now.year, now.month, now.day)
 date = (now.strftime('%Y-%m-%d')) 
-
+#2013-12-03
 mtc_file = "/var/log/%s/myth_mtc.log" %date
 
 mtc=check_mtc(mtc_file)
-- 
cgit v0.12


From d5370e5d6fe083e14866c5b5d1728fea4f9879bc Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 3 Dec 2013 16:17:25 -0600
Subject: LinHES-system:  systembackup lh_system_backup_job.  Fix sed problem
 when adjusting the meny xml .  Changed >  to -gt to force bash int test
 instead of string

add timestamps to myth_mtc.py  and general cleanup
---
 abs/core/LinHES-system/PKGBUILD             |  6 ++---
 abs/core/LinHES-system/lh_system_backup_job | 38 +++++++++++++++++-----------
 abs/core/LinHES-system/myth_mtc.py          | 39 +++++++++++++++++++++--------
 3 files changed, 55 insertions(+), 28 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 5b714f6..406cc05 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=5
+pkgrel=6
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -79,7 +79,7 @@ md5sums=('49e9847cedcf26a977d64fd44e460b11'
          'de32a1c50101265dd7f6ca5037f7a26a'
          'a875ee97f86e46f34a741c2bc455f894'
          '76b2637cac0452b3acdbeeb4e8a5474b'
-         '781c977f8872543f033dad2caaf0458e'
+         '79a63270794ef7de244af10dad51330a'
          '6f5b757524d905b5d2420519a88edc93'
          'dc3eef2a624754e16805d72bbe488b67'
          '617af86b901538817ebdcaf646248dc5'
@@ -92,7 +92,7 @@ md5sums=('49e9847cedcf26a977d64fd44e460b11'
          '33fbebbd546672cedd3c5e7350ab414e'
          'c773d8caacba8fbd4968e8afe5137bc6'
          '3edef50a49a47694bf8add39cc160add'
-         '95e586cdbf0bef7ec2d99463b47a9096'
+         'aa6010065f5ec2afe1d2bee4cf81dec7'
          'bc69a520add58ede9b060c73e67ace13'
          '26fdd26e945f0c187f9fdcf98a7a5bef'
          '47e093e8cfe4b5b96602358e1f540832'
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
index 9b878bd..7d05be5 100644
--- a/abs/core/LinHES-system/lh_system_backup_job
+++ b/abs/core/LinHES-system/lh_system_backup_job
@@ -43,15 +43,19 @@ function backup(){
         pacman -Q mysql 2>/dev/null
         if [ $? = 0 ]
         then
+            echo "    mythconverg  (mythtv database)"
             mysqldump -x mythconverg > $BACKUPDIR/$DATE/mythconverg
             backup_status_check $?
 
-            mysqldump -x ncid > $BACKUPDIR/$DATE/ncid
+            echo "    ncid (caller id)"
+            mysqldump -x ncid > $BACKUPDIR/$DATE/ncid  2>/dev/null
 
             #this is all the users
+            echo "    users"
             mysqldump -x mysql > $BACKUPDIR/$DATE/mysql_table
 
             #this is everything
+            echo "    All databases in one file"
             mysqldump -x --all-databases > $BACKUPDIR/$DATE/all_databases
             backup_status_check $?
 
@@ -117,6 +121,7 @@ function backup(){
 }
 
 function update_backup_status(){
+    echo
     # Add Last backup status to menu item
     #if description not in the backup xml file, add it
     if [ $rc=0 ]
@@ -125,7 +130,8 @@ function update_backup_status(){
     else
         COMPLETE_MSG="Last backup FAILED `date '+%D %-I:%M %p'`"
     fi
-
+    echo "Updating menu with:"
+    echo "  $COMPLETE_MSG"
     xmlfile="/usr/share/mythtv/themes/defaultmenu/mythbackup.xml"
 
     grep  -q "<description>" $xmlfile >/dev/null
@@ -133,16 +139,18 @@ function update_backup_status(){
 
     if [ $desc_check = 0 ]
     then
-        sed -i "0,/\<description\>.*\<description\>/s//\<description\>$COMPLETE_MSG\<\/description/" $xmlfile
+        sed -i "0,/<description\>.*\<description\>/s||\<description\>$COMPLETE_MSG<\/description|" $xmlfile
+        #sed -i "0,/\<description\>.*\<description\>/s//\<description\>$COMPLETE_MSG\<\/description/" $xmlfile
     else
         sed -i " /NONE/ i\     \<description\>$COMPLETE_MSG\<\/description\>" $xmlfile
     fi
 }
 
 function remove_old_backups(){
+
     #remove old backups
     NumBackups=`ls $BACKUPDIR/backup*.tgz|wc -l`
-    if [[ $NumBackups > $KeepBackups ]]; then
+    if [[ $NumBackups -gt  $KeepBackups ]]; then
         numdel=$(($NumBackups-$KeepBackups))
         rm -f `ls $BACKUPDIR/backup*.tgz -tr1|head -$numdel`
     fi
@@ -150,6 +158,8 @@ function remove_old_backups(){
 
 
 function remote_backup(){
+    echo
+    echo "Remote backup"
     #Remote copy
     if [ x$RemoteBackup = x1 ]
     then
@@ -157,7 +167,7 @@ function remote_backup(){
         if [  x$localRemoteCheck =  xdir ]
         then
             localRemotedir=`echo $RemoteBackupDir | cut -d: -f2`
-            echo "copying $BACKUPDIR/backup.$DATE.tgz to  $localRemotedir  "
+            echo "    copying $BACKUPDIR/backup.$DATE.tgz to  $localRemotedir  "
             cp $BACKUPDIR/backup.$DATE.tgz  $localRemotedir
         else
             /usr/bin/func  ${RemoteBackupDir}  ping| grep -q "FAILED"
@@ -166,15 +176,15 @@ function remote_backup(){
             then
                 #this is here to mark failed copy of the backup.
                 #There is a cron.hourly job that will attempt to retransfer the file
-                echo "Remote backup failed to ${RemoteBackupDir}"
+                echo "    Remote backup failed to ${RemoteBackupDir}"
                 echo backup.$DATE.tgz >> $BACKUPDIR/remote_backup_failed.txt
             else
-                echo "copying $BACKUPDIR/backup.$DATE.tgz to  ${RemoteBackupDir}:$BACKUPDIR/MBE_$DATE.tgz"
+                echo "    copying $BACKUPDIR/backup.$DATE.tgz to  ${RemoteBackupDir}:$BACKUPDIR/MBE_$DATE.tgz"
                 /usr/bin/func  ${RemoteBackupDir} copyfile  -f  $BACKUPDIR/backup.$DATE.tgz  --remotepath $BACKUPDIR/MBE_$DATE.tgz
             fi
         fi
     else  #do local copy to SECBACKUPLINK
-        echo "Remote backup is not enabled, copying backup to $SECBACKUPLINK if it exists"
+        echo "    Remote backup is not enabled, copying backup to $SECBACKUPLINK if it exists"
         SECBACKUPDISK=`readlink $SECBACKUPLINK`
         SECBACKUP=$SECBACKUPDISK/backup
 
@@ -182,16 +192,16 @@ function remote_backup(){
             if [ `mountpoint -q -d $SECBACKUPDISK` ]; then
                 if [ ! -d "$SECBACKUP" ]; then
                     mkdir -p -m 775 $SECBACKUP
-                    echo "Created $SECBACKUP"
+                    echo "    Created $SECBACKUP"
                     chown mythtv:users $SECBACKUP
                 fi
-                echo "Copying systems_backups"
+                echo "    Copying system backups to $SECBACKUP"
                 rsync -au --delete $BACKUPDIR $SECBACKUP
             else
-                echo "$SECBACKUPDISK isn't mounted."
+                echo "*    $SECBACKUPDISK isn't mounted."
             fi
         else
-            echo "Link $SECBACKUPLINK doesn't exist."
+            echo "*    Link $SECBACKUPLINK doesn't exist."
         fi
     fi
 }
@@ -205,10 +215,10 @@ function remote_transfer(){
     then
         #this is here to mark a failed copy of the backup.
         #There is a cron.hourly job that will attempt to retransfer the file
-        echo "Remote backup failed to ${RemoteBackupDir}"
+        echo "    Remote backup failed to ${RemoteBackupDir}"
         echo $transfer_file >> $BACKUPDIR/remote_backup_failed.txt
     else
-        echo "copying $BACKUPDIR/$transfer_file to  ${RemoteBackupDir}:$BACKUPDIR/MBE_$transfer_file"
+        echo "    copying $BACKUPDIR/$transfer_file to  ${RemoteBackupDir}:$BACKUPDIR/MBE_$transfer_file"
         /usr/bin/func  ${RemoteBackupDir} copyfile  -f  $BACKUPDIR/$transfer_file  --remotepath $BACKUPDIR/MBE_$transfer_file
     fi
 }
diff --git a/abs/core/LinHES-system/myth_mtc.py b/abs/core/LinHES-system/myth_mtc.py
index a5f02a0..2c1fd14 100755
--- a/abs/core/LinHES-system/myth_mtc.py
+++ b/abs/core/LinHES-system/myth_mtc.py
@@ -14,13 +14,21 @@ except:
 
 #print mythtv.db.getSetting( 'Theme', socket.gethostname())
 
+def get_timestamp():
+    now = datetime.datetime.now()
+#date = "%s-%s-%s" %(now.year, now.month, now.day)
+    date = (now.strftime('%Y-%m-%d %H:%M')) 
+    return date
+
+
 def optimize():
+   
     try:
         cursor = mythtv.db.cursor()
         cursor.execute("SHOW tables")
         result = cursor.fetchall()
     except:
-        print "Problem getting tables from database"
+        print "    Problem getting tables from database"
 	return
     ops=["REPAIR","OPTIMIZE","ANALYZE"]
     for row in result:
@@ -32,6 +40,7 @@ def optimize():
 
 
 def upcoming_check():
+    print "    Checking for upcoming shows"
     try:
         upcoming = mythtv.getUpcomingRecordings()
     except:
@@ -50,11 +59,12 @@ def upcoming_check():
     if ( time_diff  >  30) :
         return True
     else:
-        print show , "is upcoming in " , time_diff
+        print "      %s is upcoming in %s" %(show,time_diff)
         return False
 
 
 def schemalock_check():
+    print "    Checking if schema is locked"
     try:
         c = mythtv.db.cursor()
         c.execute("select count(*) from schemalock")
@@ -66,10 +76,11 @@ def schemalock_check():
     if schemalock == 0:
         return True
     else:
-        print "schema is locked"
+        print "      schema is locked"
         return False
 
 def job_check():
+    print "    Checking jobqueue"
     try:
         c = mythtv.db.cursor()
         c.execute("select count(*) from jobqueue where status = 4")
@@ -80,11 +91,12 @@ def job_check():
     if jobs == 0 :
         return True
     else:
-        print " jobs are running"
+        print "      jobs are running"
         return False
 
 
 def in_use():
+    print "    Checking if programs are in use"
     try:
         c = mythtv.db.cursor()
         c.execute("select count(*) from inuseprograms")
@@ -95,10 +107,11 @@ def in_use():
     if prginuse == 0 :
         return True
     else:
-        print "programs in use"
+        print "      Programs in use"
         return False
 
 def mfd_check():
+    print "    Checking is mythfilldatabase is running"
     ps = subprocess.Popen("ps ax -o pid= -o args= ", shell=True, stdout=subprocess.PIPE)
     ps_pid = ps.pid
     output = ps.stdout.read()
@@ -110,7 +123,7 @@ def mfd_check():
         if res:
             pid = int(res[0][0])
             if proc_name in res[0][1] and pid != os.getpid() and pid != ps_pid:
-                print "mythfilldatabase is running"
+                print "      mythfilldatabase is running"
                 return False
 
     return True
@@ -118,23 +131,24 @@ def mfd_check():
 
 
 def idle_check():
+    print "%s  Checking idle" %(get_timestamp())
     if  (   upcoming_check() and schemalock_check() and job_check()  and in_use() and  mfd_check()  ):
         idle=True
-        print "Myth is idle"
+        print "\n%s Myth is idle" %(get_timestamp())
     else:
         idle=False
-        print "Myth is NOT idle"
+        print "\n%s Myth is NOT idle" %(get_timestamp())
     return idle
 
 def run_stuff():
     if idle_check():
-	print "Running optimize"
+        print "\n%sRunning optimize" %(get_timestamp())
         optimize()
 
-	print "Running backup"
+	print "\n%s Running backup" %(get_timestamp())
         os.system('/usr/LH/bin/lh_system_backup_job')
 
-	print "Running system_update"
+	print "\n%s Running system update" %(get_timestamp())
 	os.system('/usr/LH/bin/lh_system_host_update')
         continue_loop=False
     else:
@@ -146,8 +160,11 @@ starttime=time.time()
 ctin=True
 while ctin:
     ctin=run_stuff()
+    print "\n"
     if  ctin:
+        print "%s Waiting 10 minutes before trying again" %(get_timestamp())
         time.sleep(600)
+        
     current_time=time.time()
     if (current_time - starttime) > 10800 :
         ctin = False
-- 
cgit v0.12


From 64a523b563e3cd7bb2a640c23267f2cf91d3bacc Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 4 Dec 2013 12:04:47 -0600
Subject: plymouth, plymouth-theme-linhes: update and kill some bugs

LinHES-config: change splash detection
---
 abs/core/LinHES-config/PKGBUILD                    |   4 +-
 abs/core/LinHES-config/install_functions.sh        |   2 +-
 abs/core/plymouth-theme-linhes/PKGBUILD            |   2 +-
 .../plymouth-theme-linhes/plymouth-linhes.install  |   5 +-
 abs/core/plymouth/PKGBUILD                         | 149 ++++++++++++++-------
 abs/core/plymouth/__changelog                      |   4 +-
 abs/core/plymouth/arch-logo.png                    | Bin 11047 -> 46233 bytes
 abs/core/plymouth/encrypt_hook                     | 134 ++++++++++++++++++
 abs/core/plymouth/encrypt_install                  |  49 +++++++
 abs/core/plymouth/gdm-plymouth.service             |  13 ++
 abs/core/plymouth/kdm-plymouth.service             |  13 ++
 abs/core/plymouth/kdm-unpatched-plymouth.service   |  15 +++
 abs/core/plymouth/lightdm-plymouth.service         |  14 ++
 abs/core/plymouth/lxdm-plymouth.service            |  13 ++
 abs/core/plymouth/plymouth-encrypt.hook            | 142 --------------------
 abs/core/plymouth/plymouth-encrypt.install         |  50 -------
 abs/core/plymouth/plymouth-quit.service            |   9 ++
 .../plymouth/plymouth-set-default-theme.in.patch   |  14 ++
 abs/core/plymouth/plymouth-update-initrd.patch     |   8 ++
 abs/core/plymouth/plymouth.functions               |  65 +++++++++
 abs/core/plymouth/plymouth.hook                    |   4 -
 abs/core/plymouth/plymouth.initcpio_hook           |  16 +++
 abs/core/plymouth/plymouth.initcpio_install        |  58 ++++++++
 abs/core/plymouth/plymouth.install                 |  89 ++++++------
 abs/core/plymouth/plymouthd.conf                   |   3 +
 abs/core/plymouth/slim-plymouth.service            |  13 ++
 abs/core/plymouth/system-release                   |   1 +
 27 files changed, 594 insertions(+), 295 deletions(-)
 create mode 100644 abs/core/plymouth/encrypt_hook
 create mode 100644 abs/core/plymouth/encrypt_install
 create mode 100644 abs/core/plymouth/gdm-plymouth.service
 create mode 100644 abs/core/plymouth/kdm-plymouth.service
 create mode 100644 abs/core/plymouth/kdm-unpatched-plymouth.service
 create mode 100644 abs/core/plymouth/lightdm-plymouth.service
 create mode 100644 abs/core/plymouth/lxdm-plymouth.service
 delete mode 100644 abs/core/plymouth/plymouth-encrypt.hook
 delete mode 100644 abs/core/plymouth/plymouth-encrypt.install
 create mode 100644 abs/core/plymouth/plymouth-quit.service
 create mode 100644 abs/core/plymouth/plymouth-set-default-theme.in.patch
 create mode 100644 abs/core/plymouth/plymouth-update-initrd.patch
 create mode 100644 abs/core/plymouth/plymouth.functions
 delete mode 100644 abs/core/plymouth/plymouth.hook
 create mode 100644 abs/core/plymouth/plymouth.initcpio_hook
 create mode 100644 abs/core/plymouth/plymouth.initcpio_install
 create mode 100644 abs/core/plymouth/plymouthd.conf
 create mode 100644 abs/core/plymouth/slim-plymouth.service
 create mode 100644 abs/core/plymouth/system-release

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index f956642..99f2213 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.1
-pkgrel=5
+pkgrel=6
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -139,7 +139,7 @@ md5sums=('8ee14247b04ab4152d4919d4d4b8d869'
          '2596460462cf6c889cf8f95485537b20'
          '985891a43f7c4c983eb2a362162f1a0f'
          '261ba62515edd7a13d46cbeb1b0eadca'
-         '768504ef10ecd11a22875ccea9fcf62b'
+         '31106caee7f621e7c5f008ccd9600b36'
          'f73d6d6f98839e900cb6685bf5dc4eae'
          'b8becf69d4309b938ceba3178c799270'
          '2a7f3b34e522acfd08283b86c8926aba'
diff --git a/abs/core/LinHES-config/install_functions.sh b/abs/core/LinHES-config/install_functions.sh
index fd33e00..d841947 100755
--- a/abs/core/LinHES-config/install_functions.sh
+++ b/abs/core/LinHES-config/install_functions.sh
@@ -49,7 +49,7 @@ function parse_cmdline_2_db(){
 
 
 function bootsplash_setup (){
-    echo $CMDLINE | grep -q splash=silent
+    echo $CMDLINE | grep -q splash
     if [ $? -eq 0 ]
     then
         update_db_settings Hostbootsplash 1
diff --git a/abs/core/plymouth-theme-linhes/PKGBUILD b/abs/core/plymouth-theme-linhes/PKGBUILD
index 4d1a8cf..da1cbc2 100644
--- a/abs/core/plymouth-theme-linhes/PKGBUILD
+++ b/abs/core/plymouth-theme-linhes/PKGBUILD
@@ -1,7 +1,7 @@
 #
 pkgname="plymouth-theme-linhes-logo"
 pkgver=1
-pkgrel=2
+pkgrel=3
 pkgdesc="LinHES theme for plymouth"
 arch=('any')
 license=('GPL')
diff --git a/abs/core/plymouth-theme-linhes/plymouth-linhes.install b/abs/core/plymouth-theme-linhes/plymouth-linhes.install
index 62d2781..7347d87 100644
--- a/abs/core/plymouth-theme-linhes/plymouth-linhes.install
+++ b/abs/core/plymouth-theme-linhes/plymouth-linhes.install
@@ -1,9 +1,10 @@
 post_install(){
-	/usr/sbin/plymouth-set-default-theme linhes-logo
+	/usr/bin/plymouth-set-default-theme linhes-logo
+    mkinitcpio -p linux
 }
 
 post_upgrade(){
-    mkinitcpio -p linux
+    post_install
 }
 op=$1
 shift
diff --git a/abs/core/plymouth/PKGBUILD b/abs/core/plymouth/PKGBUILD
index a9d1bde..d0849c7 100644
--- a/abs/core/plymouth/PKGBUILD
+++ b/abs/core/plymouth/PKGBUILD
@@ -1,73 +1,118 @@
 pkgname=plymouth
 pkgver=0.8.8.52.g37d2e40
 pkgrel=1
-pkgdesc="A graphical boot splash screen with kernel mode-setting support (Git verson for now)"
+pkgdesc="A graphical boot splash screen with kernel mode-setting support (Git version)"
 url="http://cgit.freedesktop.org/cgit/plymouth/"
-
 arch=('i686' 'x86_64')
 license=('GPL')
-
-depends=('libdrm' 'pango')
+depends=('libdrm' 'pango' 'v86d')
 makedepends=('git' 'docbook-xsl')
 optdepends=('ttf-dejavu')
-backup=('etc/plymouth/plymouthd.conf')
-options=('!emptydirs')
-conflicts=('plymouth-git')
+options=('!libtool' '!emptydirs')
+install=$pkgname.install
 
-source=(
-'git://anongit.freedesktop.org/plymouth'
-'plymouth.hook'
-'plymouth.install'
-'plymouth-encrypt.hook'
-'plymouth-encrypt.install'
-'arch-logo.png'
-)
+provides=('plymouth')
+conflicts=('plymouth')
+backup=('etc/plymouth/plymouthd.conf')
 
-md5sums=(
-'SKIP'
-'SKIP'
-'SKIP'
-'SKIP'
-'SKIP'
-'SKIP'
-)
+source=('git://anongit.freedesktop.org/plymouth'
+        'arch-logo.png'
+        'encrypt_hook'
+        'encrypt_install'
+        'gdm-plymouth.service'
+        'kdm-plymouth.service'
+        'kdm-unpatched-plymouth.service'
+        'lxdm-plymouth.service'
+        'lightdm-plymouth.service'
+        'slim-plymouth.service'
+        'plymouth.functions'
+        "$pkgname.install"
+        'plymouth.initcpio_hook'
+        'plymouth.initcpio_install'
+        'plymouth-quit.service'
+        'plymouth-set-default-theme.in.patch'
+        'plymouth-update-initrd.patch'
+        'plymouthd.conf'
+        'system-release')
+        
 pkgver() {
-    cd "$srcdir"/plymouth
-    git describe --always | sed 's/-/./g'
+	cd "$srcdir"/${pkgname%%-*}
+	git describe --always | sed 's/-/./g'
+}
+
+prepare() {
+	cd "$srcdir"/${pkgname%%-*}
+	
+	patch -Np0 -i ../plymouth-set-default-theme.in.patch
+	patch -Np0 -i ../plymouth-update-initrd.patch
+	
+	sed -e 's:png_set_gray_1_2_4_to_8:png_set_expand_gray_1_2_4_to_8:g' \
+	-i src/libply-splash-graphics/ply-image.c
+	
+	test -f Makefile && make distclean
+	
+	return 0
 }
 
 build() {
-    cd "$srcdir"/plymouth
-    ./autogen.sh --prefix=/usr \
-        --exec-prefix=/usr \
-        --sysconfdir=/etc \
-        --localstatedir=/var \
-        --libdir=/usr/lib \
-        --libexecdir=/usr/lib \
-        --sbindir=/usr/bin \
-        --enable-drm-renderer \
-        --enable-pango \
-        --with-logo=/usr/share/plymouth/arch-logo.png \
-        --with-boot-tty=/dev/tty7 \
-        --with-shutdown-tty=/dev/tty7 \
-        --without-system-root-install
-    make
+	cd "$srcdir"/${pkgname%%-*}
+
+	./autogen.sh --prefix=/usr \
+		--exec-prefix=/usr \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--libdir=/usr/lib \
+		--libexecdir=/usr/lib \
+		--sbindir=/usr/bin \
+		--enable-drm-renderer \
+		--enable-tracing \
+		--enable-pango \
+		--with-gdm-autostart-file=yes \
+		--with-logo=/usr/share/plymouth/arch-logo.png \
+		--with-background-start-color-stop=0x000000 \
+		--with-background-end-color-stop=0x4D4D4D \
+		--without-rhgb-compat-link \
+		--without-system-root-install
+
+	make
 }
 
 package() {
-    cd "$srcdir"/plymouth
-    make DESTDIR="$pkgdir" install
+  cd "$srcdir"/${pkgname%%-*}
 
-    # logo
-    install -Dm644 "$srcdir"/arch-logo.png "$pkgdir/usr/share/plymouth/arch-logo.png"
+  make DESTDIR="$pkgdir" install
 
-    # remove non-arch script
-    rm "$pkgdir/usr/lib/plymouth/"*-initrd
-    rm "$pkgdir/usr/bin/plymouth-set-default-theme"
+  install -Dm644 "$srcdir/arch-logo.png"             "$pkgdir/usr/share/plymouth/arch-logo.png"
+  install -Dm644 "$srcdir/encrypt_hook"              "$pkgdir/usr/lib/initcpio/hooks/plymouth-encrypt"
+  install -Dm644 "$srcdir/encrypt_install"           "$pkgdir/usr/lib/initcpio/install/plymouth-encrypt"
+  install -Dm644 "$srcdir/plymouth.functions"        "$pkgdir/etc/rc.d/functions.d/plymouth.functions"
+  install -Dm644 "$srcdir/plymouth.initcpio_hook"    "$pkgdir/usr/lib/initcpio/hooks/plymouth"
+  install -Dm644 "$srcdir/plymouth.initcpio_install" "$pkgdir/usr/lib/initcpio/install/plymouth"
+  install -Dm644 "$srcdir/plymouthd.conf"            "$pkgdir/etc/plymouth/plymouthd.conf"
+  install -Dm644 "$srcdir/system-release"            "$pkgdir/etc/system-release"
 
-    # initcpio
-    install -Dm644 "$srcdir/plymouth.hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth"
-    install -Dm644 "$srcdir/plymouth.install" "$pkgdir/usr/lib/initcpio/install/plymouth"
-    install -Dm644 "$srcdir/plymouth-encrypt.hook" "$pkgdir/usr/lib/initcpio/hooks/plymouth-encrypt"
-    install -Dm644 "$srcdir/plymouth-encrypt.install" "$pkgdir/usr/lib/initcpio/install/plymouth-encrypt"
+  # Plymouth<->systemd integration, including units for DMs
+  for i in {{gdm,kdm{,-unpatched},lxdm,slim,lightdm}-plymouth,plymouth-quit}.service; do
+    install -Dm644 "$srcdir/$i" "$pkgdir/usr/lib/systemd/system/$i"
+  done
+  
 }
+md5sums=('SKIP'
+         '65fa2763d5c9bb9f80973ea5e6e3db3e'
+         '79613b70a0a0be4c33978ef37c30f00a'
+         '65eb269910f1b81e3f0970af456394ca'
+         '34d0ed7bbcb3d0ea498de24bc17b2ee9'
+         '75ec0ac73eb9a1e3f6104df64520d431'
+         'ceec65ce58accdb270f3eaa23d794b4a'
+         '62c3b4e894330a2ca4c2b8fbcaba083c'
+         'e6d573b1913f3aa020cbde3863ee80f0'
+         '225b953976e1c824f62ba406a63c18c7'
+         'f0110fba1e77cd22c32d1727399d0b8a'
+         '95e987cfbc2d30a2cea215394eb9ac20'
+         '4f3be343eea9956bbc94d615d5f41def'
+         '7f21ba9a85733ff945c23012cff55a89'
+         '3bb0b8008edfad9e23703674341766a0'
+         '42fddd683720dbacbe6e30b4b7892f3c'
+         '412a1a89ca960370071746b0af8c0ac5'
+         '37479b134827dc307b3c55bfb2711e99'
+         'ab8a557d10f74bec5c94ed6cae34729c')
diff --git a/abs/core/plymouth/__changelog b/abs/core/plymouth/__changelog
index 21edf18..6b8e8c1 100644
--- a/abs/core/plymouth/__changelog
+++ b/abs/core/plymouth/__changelog
@@ -1,2 +1,4 @@
+pulled from AUR plymouth-git 12/3/13
 removed systemd as a dep
-
+removed --enable-systemd configure option
+add v86d as dep
diff --git a/abs/core/plymouth/arch-logo.png b/abs/core/plymouth/arch-logo.png
index e5f4055..9f8446b 100644
Binary files a/abs/core/plymouth/arch-logo.png and b/abs/core/plymouth/arch-logo.png differ
diff --git a/abs/core/plymouth/encrypt_hook b/abs/core/plymouth/encrypt_hook
new file mode 100644
index 0000000..a3dcda1
--- /dev/null
+++ b/abs/core/plymouth/encrypt_hook
@@ -0,0 +1,134 @@
+#!/bin/bash
+
+run_hook() {
+    modprobe -a -q dm-crypt >/dev/null 2>&1
+    [ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
+
+    # Get keyfile if specified
+    ckeyfile="/crypto_keyfile.bin"
+    if [ -n "$cryptkey" ]; then
+        IFS=: read ckdev ckarg1 ckarg2 <<EOF
+$cryptkey
+EOF
+
+        if [ "$ckdev" = "rootfs" ]; then
+            ckeyfile=$ckarg1
+        elif resolved=$(resolve_device "${ckdev}" ${rootdelay}); then
+            case ${ckarg1} in
+                *[!0-9]*)
+                    # Use a file on the device
+                    # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
+                    mkdir /ckey
+                    mount -r -t "$ckarg1" "$resolved" /ckey
+                    dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
+                    umount /ckey
+                    ;;
+                *)
+                    # Read raw data from the block device
+                    # ckarg1 is numeric: ckarg1=offset, ckarg2=length
+                    dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
+                    ;;
+            esac
+        fi
+        [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
+    fi
+
+    if [ -n "${cryptdevice}" ]; then
+        DEPRECATED_CRYPT=0
+        IFS=: read cryptdev cryptname cryptoptions <<EOF
+$cryptdevice
+EOF
+    else
+        DEPRECATED_CRYPT=1
+        cryptdev="${root}"
+        cryptname="root"
+    fi
+
+    warn_deprecated() {
+        echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
+        echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
+    }
+
+    for cryptopt in ${cryptoptions//,/ }; do
+        case ${cryptopt} in
+            allow-discards)
+                cryptargs="${cryptargs} --allow-discards"
+                ;;
+            *)
+                echo "Encryption option '${cryptopt}' not known, ignoring." >&2
+                ;;
+        esac
+    done
+
+    if resolved=$(resolve_device "${cryptdev}" ${rootdelay}); then
+        if cryptsetup isLuks ${resolved} >/dev/null 2>&1; then
+            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
+            dopassphrase=1
+            # If keyfile exists, try to use that
+            if [ -f ${ckeyfile} ]; then
+                if eval cryptsetup --key-file ${ckeyfile} luksOpen ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; then
+                    dopassphrase=0
+                else
+                    echo "Invalid keyfile. Reverting to passphrase."
+                fi
+            fi
+            # Ask for a passphrase
+            if [ ${dopassphrase} -gt 0 ]; then
+                echo
+                echo "A password is required to access the ${cryptname} volume:"
+                plymouth ask-for-password --prompt="Password for ${cryptname} volume" --dont-pause-progress --number-of-tries=5 --command="/sbin/cryptsetup luksOpen --key-file=- ${cryptdev} ${cryptname} ${CSQUIET}"
+                sleep 2
+            fi
+            if [ -e "/dev/mapper/${cryptname}" ]; then
+                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
+                    export root="/dev/mapper/root"
+                fi
+            else
+                err "Password succeeded, but ${cryptname} creation failed, aborting..."
+                exit 1
+            fi
+        elif [ -n "${crypto}" ]; then
+            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
+            msg "Non-LUKS encrypted device found..."
+            if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
+                err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
+                err "Non-LUKS decryption not attempted..."
+                return 1
+            fi
+            exe="cryptsetup create $cryptname $resolved $cryptargs"
+            IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
+$crypto
+EOF
+            [ -n "$c_hash" ]    && exe="$exe --hash '$c_hash'"
+            [ -n "$c_cipher" ]  && exe="$exe --cipher '$c_cipher'"
+            [ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
+            [ -n "$c_offset" ]  && exe="$exe --offset '$c_offset'"
+            [ -n "$c_skip" ]    && exe="$exe --skip '$c_skip'"
+            if [ -f "$ckeyfile" ]; then
+                exe="$exe --key-file $ckeyfile"
+            else
+                exe="$exe --verify-passphrase"
+                echo ""
+                echo "A password is required to access the ${cryptname} volume:"
+            fi
+            eval "$exe $CSQUIET"
+
+            if [ $? -ne 0 ]; then
+                err "Non-LUKS device decryption failed. verify format: "
+                err "      crypto=hash:cipher:keysize:offset:skip"
+                exit 1
+            fi
+            if [ -e "/dev/mapper/${cryptname}" ]; then
+                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
+                    export root="/dev/mapper/root"
+                fi
+            else
+                err "Password succeeded, but ${cryptname} creation failed, aborting..."
+                exit 1
+            fi
+        else
+            err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
+        fi
+    fi
+    rm -f ${ckeyfile}
+}
diff --git a/abs/core/plymouth/encrypt_install b/abs/core/plymouth/encrypt_install
new file mode 100644
index 0000000..5258a0b
--- /dev/null
+++ b/abs/core/plymouth/encrypt_install
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+build() {
+    local mod
+
+    add_module dm-crypt
+    if [[ $CRYPTO_MODULES ]]; then
+        for mod in $CRYPTO_MODULES; do
+            add_module "$mod"
+        done
+    else
+        add_all_modules '/crypto/'
+    fi
+
+    add_binary "cryptsetup"
+    add_binary "dmsetup"
+    add_file "/usr/lib/udev/rules.d/10-dm.rules"
+    add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
+    add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
+    add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
+    add_binary "/usr/lib/plymouth/label.so"
+    add_binary "/usr/lib/plymouth/text.so"
+    add_file "/usr/share/fonts/TTF/DejaVuSans.ttf"
+    add_file "/etc/fonts/fonts.conf"
+    add_file "/etc/fonts/conf.d/60-latin.conf"
+
+    add_runscript
+}
+
+help() {
+    cat <<HELPEOF
+This hook allows for an encrypted root device. Users should specify the device
+to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
+where 'device' is the path to the raw device, and 'dmname' is the name given to
+the device after unlocking, and will be available as /dev/mapper/dmname.
+
+For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
+the kernel cmdline, where 'device' represents the raw block device where the key
+exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
+the absolute path of the keyfile within the device.
+
+Without specifying a keyfile, you will be prompted for the password at runtime.
+This means you must have a keyboard available to input it, and you may need
+the keymap hook as well to ensure that the keyboard is using the layout you
+expect.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/gdm-plymouth.service b/abs/core/plymouth/gdm-plymouth.service
new file mode 100644
index 0000000..d58c0e9
--- /dev/null
+++ b/abs/core/plymouth/gdm-plymouth.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=GNOME Display Manager
+After=systemd-user-sessions.service
+
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+[Service]
+ExecStart=/usr/sbin/gdm -nodaemon
+StandardOutput=syslog
+
+[Install]
+Alias=display-manager.service
diff --git a/abs/core/plymouth/kdm-plymouth.service b/abs/core/plymouth/kdm-plymouth.service
new file mode 100644
index 0000000..a9e9142
--- /dev/null
+++ b/abs/core/plymouth/kdm-plymouth.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=K Display Manager
+After=systemd-user-sessions.service
+
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+[Service]
+ExecStart=/usr/bin/kdm -nodaemon
+StandardOutput=syslog
+
+[Install]
+Alias=display-manager.service
diff --git a/abs/core/plymouth/kdm-unpatched-plymouth.service b/abs/core/plymouth/kdm-unpatched-plymouth.service
new file mode 100644
index 0000000..8a4c41d
--- /dev/null
+++ b/abs/core/plymouth/kdm-unpatched-plymouth.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=K Display Manager
+After=systemd-user-sessions.service
+
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+[Service]
+ExecStartPre=-/usr/bin/plymouth deactivate
+ExecStartPre=-/usr/bin/plymouth quit --retain-splash
+ExecStart=/usr/bin/kdm -nodaemon
+StandardOutput=syslog
+
+[Install]
+Alias=display-manager.service
diff --git a/abs/core/plymouth/lightdm-plymouth.service b/abs/core/plymouth/lightdm-plymouth.service
new file mode 100644
index 0000000..47ec47e
--- /dev/null
+++ b/abs/core/plymouth/lightdm-plymouth.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=LightDM Display Manager
+After=systemd-user-sessions.service
+
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+[Service]
+ExecStart=/usr/sbin/lightdm
+StandardOutput=syslog
+
+[Install]
+WantedBy=graphical.target
+Alias=display-manager.service
diff --git a/abs/core/plymouth/lxdm-plymouth.service b/abs/core/plymouth/lxdm-plymouth.service
new file mode 100644
index 0000000..dc6b000
--- /dev/null
+++ b/abs/core/plymouth/lxdm-plymouth.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=LXDE Display Manager
+After=systemd-user-sessions.service
+
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+[Service]
+ExecStart=/usr/sbin/lxdm >/dev/null 2>&1 </dev/null
+StandardOutput=syslog
+
+[Install]
+Alias=display-manager.service
diff --git a/abs/core/plymouth/plymouth-encrypt.hook b/abs/core/plymouth/plymouth-encrypt.hook
deleted file mode 100644
index 7069eff..0000000
--- a/abs/core/plymouth/plymouth-encrypt.hook
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/ash
-
-run_hook() {
-    modprobe -a -q dm-crypt >/dev/null 2>&1
-    [ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
-
-    # Get keyfile if specified
-    ckeyfile="/crypto_keyfile.bin"
-    if [ -n "$cryptkey" ]; then
-        IFS=: read ckdev ckarg1 ckarg2 <<EOF
-$cryptkey
-EOF
-
-        if [ "$ckdev" = "rootfs" ]; then
-            ckeyfile=$ckarg1
-        elif resolved=$(resolve_device "${ckdev}" ${rootdelay}); then
-            case ${ckarg1} in
-                *[!0-9]*)
-                    # Use a file on the device
-                    # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
-                    mkdir /ckey
-                    mount -r -t "$ckarg1" "$resolved" /ckey
-                    dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
-                    umount /ckey
-                    ;;
-                *)
-                    # Read raw data from the block device
-                    # ckarg1 is numeric: ckarg1=offset, ckarg2=length
-                    dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
-                    ;;
-            esac
-        fi
-        [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
-    fi
-
-    if [ -n "${cryptdevice}" ]; then
-        DEPRECATED_CRYPT=0
-        IFS=: read cryptdev cryptname cryptoptions <<EOF
-$cryptdevice
-EOF
-    else
-        DEPRECATED_CRYPT=1
-        cryptdev="${root}"
-        cryptname="root"
-    fi
-
-    warn_deprecated() {
-        echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
-        echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
-    }
-
-    for cryptopt in ${cryptoptions//,/ }; do
-        case ${cryptopt} in
-            allow-discards)
-                cryptargs="${cryptargs} --allow-discards"
-                ;;
-            *)
-                echo "Encryption option '${cryptopt}' not known, ignoring." >&2
-                ;;
-        esac
-    done
-
-    if resolved=$(resolve_device "${cryptdev}" ${rootdelay}); then
-        if cryptsetup isLuks ${resolved} >/dev/null 2>&1; then
-            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
-            dopassphrase=1
-            # If keyfile exists, try to use that
-            if [ -f ${ckeyfile} ]; then
-                if eval cryptsetup --key-file ${ckeyfile} open --type luks ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; then
-                    dopassphrase=0
-                else
-                    echo "Invalid keyfile. Reverting to passphrase."
-                fi
-            fi
-            # Ask for a passphrase
-            if [ ${dopassphrase} -gt 0 ]; then
-                echo ""
-                echo "A password is required to access the ${cryptname} volume:"
-
-###
-                plymouth ask-for-password \
-                    --prompt="Password for ${cryptname} volume" \
-                    --dont-pause-progress \
-                    --number-of-tries=3 \
-                    --command="cryptsetup open --type luks ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}"
-###
-            fi
-            if [ -e "/dev/mapper/${cryptname}" ]; then
-                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
-                    export root="/dev/mapper/root"
-                fi
-            else
-                err "Password succeeded, but ${cryptname} creation failed, aborting..."
-                exit 1
-            fi
-        elif [ -n "${crypto}" ]; then
-            [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
-            msg "Non-LUKS encrypted device found..."
-            if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
-                err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
-                err "Non-LUKS decryption not attempted..."
-                return 1
-            fi
-            exe="cryptsetup open --type plain $resolved $cryptname $cryptargs"
-            IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
-$crypto
-EOF
-            [ -n "$c_hash" ]    && exe="$exe --hash '$c_hash'"
-            [ -n "$c_cipher" ]  && exe="$exe --cipher '$c_cipher'"
-            [ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
-            [ -n "$c_offset" ]  && exe="$exe --offset '$c_offset'"
-            [ -n "$c_skip" ]    && exe="$exe --skip '$c_skip'"
-            if [ -f "$ckeyfile" ]; then
-                exe="$exe --key-file $ckeyfile"
-            else
-                exe="$exe --verify-passphrase"
-                echo ""
-                echo "A password is required to access the ${cryptname} volume:"
-            fi
-            eval "$exe $CSQUIET"
-
-            if [ $? -ne 0 ]; then
-                err "Non-LUKS device decryption failed. verify format: "
-                err "      crypto=hash:cipher:keysize:offset:skip"
-                exit 1
-            fi
-            if [ -e "/dev/mapper/${cryptname}" ]; then
-                if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
-                    export root="/dev/mapper/root"
-                fi
-            else
-                err "Password succeeded, but ${cryptname} creation failed, aborting..."
-                exit 1
-            fi
-        else
-            err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
-        fi
-    fi
-    rm -f ${ckeyfile}
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/plymouth-encrypt.install b/abs/core/plymouth/plymouth-encrypt.install
deleted file mode 100644
index 0ee8512..0000000
--- a/abs/core/plymouth/plymouth-encrypt.install
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-build() {
-    local mod
-
-    add_module dm-crypt
-    if [[ $CRYPTO_MODULES ]]; then
-        for mod in $CRYPTO_MODULES; do
-            add_module "$mod"
-        done
-    else
-        add_all_modules '/crypto/'
-    fi
-
-    add_binary "cryptsetup"
-    add_binary "dmsetup"
-    add_file "/usr/lib/udev/rules.d/10-dm.rules"
-    add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
-    add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
-    add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
-
-###
-    add_file "/usr/share/fonts/TTF/DejaVuSans.ttf"
-    add_file "/etc/fonts/fonts.conf"
-    add_file "/etc/fonts/conf.d/60-latin.conf"
-###
-
-    add_runscript
-}
-
-help() {
-    cat <<HELPEOF
-This hook allows for an encrypted root device. Users should specify the device
-to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
-where 'device' is the path to the raw device, and 'dmname' is the name given to
-the device after unlocking, and will be available as /dev/mapper/dmname.
-
-For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
-the kernel cmdline, where 'device' represents the raw block device where the key
-exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
-the absolute path of the keyfile within the device.
-
-Without specifying a keyfile, you will be prompted for the password at runtime.
-This means you must have a keyboard available to input it, and you may need
-the keymap hook as well to ensure that the keyboard is using the layout you
-expect.
-HELPEOF
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/core/plymouth/plymouth-quit.service b/abs/core/plymouth/plymouth-quit.service
new file mode 100644
index 0000000..9d16a27
--- /dev/null
+++ b/abs/core/plymouth/plymouth-quit.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Terminate Plymouth Boot Screen
+After=rc-local.service plymouth-start.service systemd-user-sessions.service
+Before=getty@tty1.service
+
+[Service]
+ExecStart=-/usr/bin/plymouth quit
+Type=oneshot
+TimeoutSec=20
\ No newline at end of file
diff --git a/abs/core/plymouth/plymouth-set-default-theme.in.patch b/abs/core/plymouth/plymouth-set-default-theme.in.patch
new file mode 100644
index 0000000..21f975d
--- /dev/null
+++ b/abs/core/plymouth/plymouth-set-default-theme.in.patch
@@ -0,0 +1,14 @@
+--- scripts/plymouth-set-default-theme.ina	2012-07-15 12:16:53.083156390 +0300
++++ scripts/plymouth-set-default-theme.in	2012-07-15 12:17:32.715893173 +0300
+@@ -173,7 +173,10 @@
+         exit $?
+ fi
+ 
+-if [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
++if [ -z ${THEME_NAME} ]; then
++        echo "Please specify a theme name"
++        exit 1
++elif [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
+         echo "${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth does not exist" > /dev/stderr
+         exit 1
+ fi
diff --git a/abs/core/plymouth/plymouth-update-initrd.patch b/abs/core/plymouth/plymouth-update-initrd.patch
new file mode 100644
index 0000000..c307199
--- /dev/null
+++ b/abs/core/plymouth/plymouth-update-initrd.patch
@@ -0,0 +1,8 @@
+--- scripts/plymouth-update-initrd.old 2013-10-27 17:02:15.200368142 +0900
++++ scripts/plymouth-update-initrd 2013-10-27 17:02:57.686768138 +0900
+@@ -1,2 +1,4 @@
+#!/bin/bash
+-dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
++find /etc/mkinitcpio.d/ -name \*.preset -a \! -name example.preset | while read p; do
++ mkinitcpio -p $p
++done
diff --git a/abs/core/plymouth/plymouth.functions b/abs/core/plymouth/plymouth.functions
new file mode 100644
index 0000000..b866643
--- /dev/null
+++ b/abs/core/plymouth/plymouth.functions
@@ -0,0 +1,65 @@
+if [[ -x /usr/bin/plymouth && -x /usr/sbin/plymouthd ]]; then
+
+	ply_client() { /usr/bin/plymouth --ping && /usr/bin/plymouth "$@"; }
+	ply_daemon() { /usr/sbin/plymouthd "$@"; }
+
+	# save a function under a new name
+	save_function() {
+		local ORIG=$(declare -f $1)
+		eval "$2${ORIG#$1}"
+	}
+
+	save_function stat_busy std_stat_busy
+	save_function stat_fail std_stat_fail
+
+	# overwrite status functions
+	stat_busy() {
+		ply_client --update="$1"
+		ply_client message --text="$1"
+		std_stat_busy  "$@"
+	}
+
+	stat_fail() {
+		ply_client --quit
+		std_stat_fail "$@"
+	}
+
+	# update after local filesystems are mounted
+	ply_sysinit_postmount() { ply_client --sysinit; }
+	add_hook sysinit_postmount ply_sysinit_postmount
+
+	# stop plymouth after rc.multi
+	ply_quit_boot() {
+		ply_client quit --retain-splash
+	}
+	add_hook multi_end ply_quit_boot
+
+	# stop plymouth before shutdown
+	ply_quit_shutdown() {
+		ply_quit_boot
+		[[ $(ps h $(cat /tmp/plymouthd)) ]] && kill -9 $(cat /tmp/plymouthd)
+	}
+	add_hook shutdown_poweroff ply_quit_shutdown
+
+	# start plymouth at the beginning of rc.shutdown
+	ply_shutdown_start(){
+		XPID=`pidof X`
+		if [ "$XPID" ]; then
+			if [ "`runlevel | cut -c 3`" != '5' ]; then
+				local DM
+				for DM in slim gdm kdm xdm entrance; do
+					ck_daemon "$DM" || stop_daemon "$DM"
+				done
+			fi
+			kill -9 $XPID &> /dev/null
+		fi
+		ply_daemon --mode=shutdown --pid-file=/tmp/plymouthd
+		ply_client --show-splash
+
+		# don't get killed by kill_all
+		add_omit_pids `cat /tmp/plymouthd`
+	}
+	add_hook shutdown_start ply_shutdown_start
+
+fi
+# vim: set ts=2 sw=2 ft=sh noet:
diff --git a/abs/core/plymouth/plymouth.hook b/abs/core/plymouth/plymouth.hook
deleted file mode 100644
index 36a5e1b..0000000
--- a/abs/core/plymouth/plymouth.hook
+++ /dev/null
@@ -1,4 +0,0 @@
-run_hook() {
-    /usr/bin/plymouthd --mode=boot
-    /usr/bin/plymouth --show-splash
-}
diff --git a/abs/core/plymouth/plymouth.initcpio_hook b/abs/core/plymouth/plymouth.initcpio_hook
new file mode 100644
index 0000000..d527f24
--- /dev/null
+++ b/abs/core/plymouth/plymouth.initcpio_hook
@@ -0,0 +1,16 @@
+run_hook() {
+        msg -n ":: Loading plymouth..."
+
+        /bin/mknod /dev/fb c 29 0 &>/dev/null
+        #/bin/mount devpts /dev/pts -t devpts
+
+        # plymouth deamon
+        #/bin/mkdir -p /run/plymouth
+        /usr/sbin/plymouthd --mode=boot --pid-file=/run/plymouth.pid
+
+        # plymouth frontend
+        /usr/bin/plymouth --show-splash
+        msg "done."
+}
+
+# vim: set ft=sh:
diff --git a/abs/core/plymouth/plymouth.initcpio_install b/abs/core/plymouth/plymouth.initcpio_install
new file mode 100644
index 0000000..22cc298
--- /dev/null
+++ b/abs/core/plymouth/plymouth.initcpio_install
@@ -0,0 +1,58 @@
+build() {
+	add_dir /dev/pts
+	add_dir /usr/share/plymouth/themes
+
+	DATADIR="/usr/share"
+	PLYMOUTH_LOGO_FILE="${DATADIR}/plymouth/arch-logo.png"
+	PLYMOUTH_THEME_NAME="$(/usr/bin/plymouth-set-default-theme)"
+	PLYMOUTH_MODULE_NAME="$(grep "ModuleName *= *" ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')"
+	PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)"
+
+	add_binary /usr/bin/plymouthd
+	add_binary /usr/bin/plymouth
+
+	add_file ${DATADIR}/plymouth/themes/text/text.plymouth
+	add_binary ${PLYMOUTH_PLUGIN_PATH}/text.so
+	add_file ${DATADIR}/plymouth/themes/details/details.plymouth
+	add_binary ${PLYMOUTH_PLUGIN_PATH}/details.so
+
+
+	add_file "${PLYMOUTH_LOGO_FILE}"
+	add_file /etc/system-release /etc/system-release
+	add_file /etc/plymouth/plymouthd.conf
+        add_file ${DATADIR}/plymouth/plymouthd.defaults
+
+	if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then
+	    echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" > /dev/stderr
+	    exit 1
+	fi
+
+	add_binary ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so
+
+	add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so
+	#add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/x11.so
+	add_binary ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so
+
+	if [ -d ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then
+	    for x in ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/* ; do
+		[ ! -f "$x" ] && break
+		add_file $x
+	    done
+	fi
+
+	# suppress a warning in glib (which the label control uses)
+	# about uid 0 by building a dummy NSS stack (LP #649917)
+	add_file /etc/passwd
+	add_file /etc/nsswitch.conf
+	add_binary "$(readlink -e /lib/libnss_files.so.2)"
+	add_file /lib/libnss_files.so.2
+
+	add_runscript
+}
+
+help() {
+	echo "This hook includes plymouth in the initramfs image."
+}
+
+# vim: set ft=sh:
+#EOF
diff --git a/abs/core/plymouth/plymouth.install b/abs/core/plymouth/plymouth.install
index 9194805..99aa7ee 100644
--- a/abs/core/plymouth/plymouth.install
+++ b/abs/core/plymouth/plymouth.install
@@ -1,43 +1,52 @@
-build() {
-    theme="$(get_theme "/etc/plymouth/plymouthd.conf")"
-    if [[ "$theme" ]]; then
-        add_file /etc/plymouth/plymouthd.conf
-    else
-        # fallback
-        theme="$(get_theme "/usr/share/plymouth/plymouthd.defaults")"
-        if [[ ! "$theme" ]]; then
-            echo "no theme set for plymouth"
-            exit 1
-        fi
-        add_file /usr/share/plymouth/plymouthd.defaults
-    fi
-
-    if [[ ! -d "/usr/share/plymouth/themes/$theme" ]]; then
-        echo "invalid plymouth theme: $theme"
-        exit 1
-    fi
-
-    module="$(get_module "$theme")"
-    add_file /usr/share/plymouth/arch-logo.png
-
-    add_binary /usr/bin/plymouthd
-    add_binary /usr/bin/plymouth
-
-    add_binary /usr/lib/plymouth/renderers/drm.so
-    add_binary /usr/lib/plymouth/renderers/frame-buffer.so
-
-    add_binary /usr/lib/plymouth/$module.so
-    add_full_dir /usr/share/plymouth/themes/$theme
-
-    add_runscript
+post_install() {
+cat <<EOF
+
+===========
+
+1. To make Plymouth work:
+  1.1. Add "plymouth" to HOOKS after "base" and "udev" in /etc/mkinitcpio.conf
+  1.2. Add 'quiet splash' to the grub command line
+  1.3. Rebuild your initrd image (# mkinitcpio -p [kernel preset name]).
+          E.g.: sudo mkinitcpio -p linux
+          
+===========
+
+2. To enable encryption, replace "encrypt" with "plymouth-encrypt" in
+   mkinitcpio.conf and rebuild your initrd image.
+   
+===========
+
+3. You will also need to rebuild your initrd image every time you change your
+   theme (the default is set as 'spinfinity').
+
+   To list all plymouth themes:
+       plymouth-set-default-theme -l
+
+   To change theme and rebuild initrd image:
+       # plymouth-set-default-theme -R <theme>
+       
+===========
+
+4. For Smooth Transition to Display Manager you have to:
+  4.1. See the Wiki Page (link in 5) to prepare your Display Manager
+  4.2. Disable your Display Manager Unit 
+     E.g. : # systemctl disable kdm.service
+  4.3. Enable the respective DM-plymouth Unit (GDM, KDM, LXDM units provided)
+     E.g. : # systemctl enable kdm-plymouth.service
+          
+===========
+
+5. For more information please visit the Wiki page:
+   https://wiki.archlinux.org/index.php/Plymouth
+   
+===========
+
+OBS. If you have any leftover "kill Plymouth" lines in /etc/rc.local or
+~/.xinitrc they are no longer required.
+
+EOF
 }
 
-# $1 = file
-get_theme() {
-    grep ^Theme= "$1" | cut -d = -f 2-
-}
-
-# $1 = theme
-get_module() {
-    grep ^ModuleName= "/usr/share/plymouth/themes/$1/$1.plymouth" | cut -d = -f 2-
+post_upgrade() {
+  post_install
 }
diff --git a/abs/core/plymouth/plymouthd.conf b/abs/core/plymouth/plymouthd.conf
new file mode 100644
index 0000000..50de7f8
--- /dev/null
+++ b/abs/core/plymouth/plymouthd.conf
@@ -0,0 +1,3 @@
+# Administrator customizations go in this file
+[Daemon]
+Theme=spinfinity
diff --git a/abs/core/plymouth/slim-plymouth.service b/abs/core/plymouth/slim-plymouth.service
new file mode 100644
index 0000000..8806c7d
--- /dev/null
+++ b/abs/core/plymouth/slim-plymouth.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=SLiM Simple Login Manager
+After=systemd-user-sessions.service
+
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+[Service]
+ExecStart=/usr/bin/slim -nodaemon
+StandardOutput=syslog
+
+[Install]
+Alias=display-manager.service
diff --git a/abs/core/plymouth/system-release b/abs/core/plymouth/system-release
new file mode 100644
index 0000000..850183e
--- /dev/null
+++ b/abs/core/plymouth/system-release
@@ -0,0 +1 @@
+Arch Linux
-- 
cgit v0.12


From 1a88a6987070019e4901e7da132de64ff32d0694 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 4 Dec 2013 13:03:05 -0600
Subject: linhes-theme: change buttonlist to wrap scrolling. refs #940

---
 abs/core/linhes-theme/PKGBUILD       |  4 ++--
 abs/core/linhes-theme/base.xml.patch | 22 +++++++++++++++-------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 2b8d462..d23da5a 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=9
+pkgrel=10
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -52,7 +52,7 @@ package() {
 md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          'e061490fc869e0e14d4e144c17c3ec56'
-         'ed60c5b0b30b1ad1d051a070bfd2f8dd'
+         'abf14a78424114b6d9ba1d9e58ab754d'
          '83b03852c6f46bc791bfa6e8c894ca01'
          '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
diff --git a/abs/core/linhes-theme/base.xml.patch b/abs/core/linhes-theme/base.xml.patch
index 5ecde61..95bfa1e 100644
--- a/abs/core/linhes-theme/base.xml.patch
+++ b/abs/core/linhes-theme/base.xml.patch
@@ -1,5 +1,5 @@
 --- base.xml.orig	2013-11-22 18:52:58.956295819 +0000
-+++ base.xml	2013-11-30 22:28:57.188884895 +0000
++++ base.xml	2013-12-04 18:36:51.715548849 +0000
 @@ -424,26 +424,26 @@
  
      <!-- Base definition of a base popup backdrop -->
@@ -98,7 +98,15 @@
          <line color="#454545" alpha="180" width="2" />
      </shape>
  
-@@ -579,7 +579,7 @@
+@@ -571,6 +571,7 @@
+     <buttonlist name="base_button_list">
+         <layout>vertical</layout>
+         <spacing>2</spacing>
++        <wrapstyle>selection</wrapstyle>
+         <drawfrombottom>yes</drawfrombottom>
+         <buttonarea>0,0,100%,100%</buttonarea>
+         <statetype name="buttonitem">
+@@ -579,7 +580,7 @@
                      <area>0,0,100%,100%</area>
                  </shape>
                  <textarea name="buttontext">
@@ -107,7 +115,7 @@
                      <cutdown>yes</cutdown>
                      <align>allcenter</align>
                  </textarea>
-@@ -997,7 +997,7 @@
+@@ -997,7 +998,7 @@
                  <shape name="buttonbackground">
                      <area>0,0,100%,100%</area>
                      <type>roundbox</type>
@@ -116,7 +124,7 @@
                      <line color="#454545" alpha="180" width="2" />
                      <cornerradius>90</cornerradius>
                  </shape>
-@@ -1064,7 +1064,7 @@
+@@ -1064,7 +1065,7 @@
                  <shape name="buttonbackground">
                      <area>0,0,100%,100%</area>
                      <type>roundbox</type>
@@ -125,7 +133,7 @@
                      <line color="#454545" alpha="180" width="2" />
                      <cornerradius>90</cornerradius>
                  </shape>
-@@ -1117,7 +1117,7 @@
+@@ -1117,7 +1118,7 @@
                 <shape name="background">
                      <area>0,0,100%,100%</area>
                      <type>roundbox</type>
@@ -134,7 +142,7 @@
                      <line color="#454545" alpha="180" width="2" />
                      <cornerradius>90</cornerradius>
                  </shape>
-@@ -1235,15 +1235,13 @@
+@@ -1235,15 +1236,13 @@
  
          <group name="clock-backdrop-group" from="base_clock_backdrop_group" />
  
@@ -152,7 +160,7 @@
  
          <animation trigger="AboutToShow">
              <section>
-@@ -1260,76 +1258,76 @@
+@@ -1260,76 +1259,76 @@
          </animation>
  
          <shape name="popup-backdrop" from="base_popup_backdrop">
-- 
cgit v0.12


From dacae1d9673958dbeceae2ec93758cc3d4b9995e Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 4 Dec 2013 14:25:28 -0600
Subject: apcupsd: readd for R8. closes#949.

runit-scripts: add apcupsd
---
 abs/core/runit-scripts/PKGBUILD                    |  7 ++--
 abs/core/runit-scripts/fbsplash-runit.sh           | 37 -----------------
 .../runitscripts/services/apcupsd/run              |  8 ++++
 abs/extra/apcupsd/PKGBUILD                         | 47 ++++++++++++++++++++++
 abs/extra/apcupsd/__changelog                      |  3 ++
 abs/extra/apcupsd/apcupsd-tmpfiles.conf            |  2 +
 abs/extra/apcupsd/apcupsd.install                  | 24 +++++++++++
 abs/extra/apcupsd/apcupsd.service                  |  8 ++++
 8 files changed, 95 insertions(+), 41 deletions(-)
 delete mode 100755 abs/core/runit-scripts/fbsplash-runit.sh
 create mode 100755 abs/core/runit-scripts/runitscripts/services/apcupsd/run
 create mode 100644 abs/extra/apcupsd/PKGBUILD
 create mode 100644 abs/extra/apcupsd/__changelog
 create mode 100644 abs/extra/apcupsd/apcupsd-tmpfiles.conf
 create mode 100644 abs/extra/apcupsd/apcupsd.install
 create mode 100644 abs/extra/apcupsd/apcupsd.service

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index 2e5d50b..745edb3 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
@@ -10,7 +10,7 @@ conflicts=()
 replaces=()
 backup=('etc/runit/1.local' 'etc/runit/3.local')
 install=runit.install
-source=(fbsplash-runit.sh)
+source=()
 arch=('i686' 'x86_64')
 
 build() {
@@ -26,10 +26,9 @@ package() {
   install -d $pkgdir/etc/rc.d/functions.d
 
   install -m0700 1 2 3 1.local 3.local ctrlaltdel $pkgdir/etc/runit
-  install -m755 $srcdir/fbsplash-runit.sh $pkgdir/etc/rc.d/functions.d/fbsplash-runit.sh
   install -m0755 reboot-runit halt-runit logger $pkgdir/sbin
   rsync -a --exclude=.svn services/* $pkgdir/etc/sv
   chmod -R  755 $pkgdir/etc/sv
   chown -R root:root $pkgdir/etc/sv
 }
-md5sums=('c79246677d5ffe687bcf6df1b9c2abc2')
+md5sums=()
diff --git a/abs/core/runit-scripts/fbsplash-runit.sh b/abs/core/runit-scripts/fbsplash-runit.sh
deleted file mode 100755
index 87435ee..0000000
--- a/abs/core/runit-scripts/fbsplash-runit.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-# fbsplash functions.d runit script #
-
-printhlr() {
-               printf "${C_OTHER}${PREFIX_REG} ${C_H1}${1}${C_CLEAR} \n"
-           }
-
-stat_runit(){
-	printf ""
-	printhlr "${C_MAIN}${1}${C_CLEAR} "
-}
-
-
-# splash stuff #
-if [ -e /etc/conf.d/fbcondecor ]
-then
-	. /etc/conf.d/fbcondecor
-	. /sbin/splash-functions.sh
-
-	case $0 in /etc/runit/1 )
-		# Prevent splash destruction
-		CONSOLEFONT=""
-		# Continue to use a splash daemon started in initcpio
-		if /bin/mountpoint -q /run/.splash-cache; then
-			/bin/mount --move /run/.splash-cache $spl_cachedir || return
-		# Mount a tmpfs
-		else
-			( splash_cache_prep ) || return
-		fi
-
-		splash_comm_send set message "$SPLASH_BOOT_MESSAGE"
-
-	;; /etc/runit/3 )
-		( splash_cache_prep ) || return
-
-		splash_comm_send set message "$SPLASH_SHUTDOWN_MESSAGE"
-	esac
-fi
diff --git a/abs/core/runit-scripts/runitscripts/services/apcupsd/run b/abs/core/runit-scripts/runitscripts/services/apcupsd/run
new file mode 100755
index 0000000..70bd9e0
--- /dev/null
+++ b/abs/core/runit-scripts/runitscripts/services/apcupsd/run
@@ -0,0 +1,8 @@
+#!/bin/sh
+exec 2>&1
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+stat_runit "Starting APC UPS Daemon"
+exec /usr/bin/apcupsd -b -f /etc/apcupsd/apcupsd.conf
diff --git a/abs/extra/apcupsd/PKGBUILD b/abs/extra/apcupsd/PKGBUILD
new file mode 100644
index 0000000..31a3cfa
--- /dev/null
+++ b/abs/extra/apcupsd/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id$
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Todd Musall <tmusall@comcast.net>
+# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
+
+pkgname=apcupsd
+pkgver=3.14.10
+pkgrel=7
+pkgdesc="Power mangement and controlling most of APC's UPS models"
+arch=(i686 x86_64)
+url="http://www.apcupsd.org"
+license=('GPL')
+install=apcupsd.install
+depends=('gcc-libs')
+optdepends=('gd: for CGI'
+            'gconf: for frontend'
+            'gtk2: for frontend')
+makedepends=('pkgconfig' 'gd' 'gconf' 'gtk2')
+backup=(etc/apcupsd/apcupsd.conf etc/apcupsd/hosts.conf
+        etc/apcupsd/multimon.conf)
+source=(http://downloads.sourceforge.net/apcupsd/$pkgname-$pkgver.tar.gz
+        apcupsd.service
+        apcupsd-tmpfiles.conf)
+sha256sums=('0707b5ec9916fbde9e44eb8d18037c8d8f75dfd6aeef51aba5487e189eef2032'
+            '145e88863335f077fc354b4d263b15f64af67b45a10ed37c68ebd468181e23f7'
+            'b00cd1a31de70a172698d486583aa79113b99c1bb4b882ab906d0e37504d7f55')
+
+build() {
+	cd "$srcdir/$pkgname-$pkgver"
+	./configure --prefix=/usr  --libexecdir=/usr/lib/$pkgname \
+		--sbindir=/usr/bin \
+		--enable-cgi --enable-usb --enable-net \
+		--with-upstype=usb --with-upscable=usb \
+		--with-serial-dev=/dev/usb/hid/hiddev[0-9] \
+		--enable-pthreads --enable-gapcmon
+	make
+}
+
+package() {
+	cd "$srcdir/$pkgname-$pkgver"
+	make DESTDIR="$pkgdir" install
+	install -Dm644 "$srcdir/apcupsd.service" "$pkgdir/usr/lib/systemd/system/apcupsd.service"
+	install -Dm644 "$srcdir/apcupsd-tmpfiles.conf" "$pkgdir/usr/lib/tmpfiles.d/apcupsd.conf"
+	chmod 755 "$pkgdir"/usr/bin/*
+	install -dm755 "$pkgdir/usr/lib/$pkgname/cgi-bin"
+	mv "$pkgdir"/etc/apcupsd/*.cgi "$pkgdir/usr/lib/$pkgname/cgi-bin"
+}
diff --git a/abs/extra/apcupsd/__changelog b/abs/extra/apcupsd/__changelog
new file mode 100644
index 0000000..3c43f29
--- /dev/null
+++ b/abs/extra/apcupsd/__changelog
@@ -0,0 +1,3 @@
+remove systemd-sysvcompat as dep
+add apcupsd.install to have runit start the service
+
diff --git a/abs/extra/apcupsd/apcupsd-tmpfiles.conf b/abs/extra/apcupsd/apcupsd-tmpfiles.conf
new file mode 100644
index 0000000..0ceb410
--- /dev/null
+++ b/abs/extra/apcupsd/apcupsd-tmpfiles.conf
@@ -0,0 +1,2 @@
+r /etc/apcupsd/powerfail
+r /etc/nologin
\ No newline at end of file
diff --git a/abs/extra/apcupsd/apcupsd.install b/abs/extra/apcupsd/apcupsd.install
new file mode 100644
index 0000000..3f1e6b2
--- /dev/null
+++ b/abs/extra/apcupsd/apcupsd.install
@@ -0,0 +1,24 @@
+# This is a default template for a post-install scriptlet.  You can
+# remove any functions you don't need (and this header).
+
+# arg 1:  the new package version
+post_install() {
+    add_service.sh apcupsd
+    /sbin/sv start apcupsd
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+    post_install
+}
+
+# arg 1:  the old package version
+post_remove() {
+    /sbin/sv stop apcupsd
+    remove_service.sh apcupsd
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/extra/apcupsd/apcupsd.service b/abs/extra/apcupsd/apcupsd.service
new file mode 100644
index 0000000..b8dfb9b
--- /dev/null
+++ b/abs/extra/apcupsd/apcupsd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=APC UPS Monitor
+
+[Service]
+ExecStart=/usr/bin/apcupsd -b
+
+[Install]
+WantedBy=multi-user.target
-- 
cgit v0.12


From b0893476b0988fdb4eea84fa40be34ef8a549f4f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Dec 2013 14:03:44 -0600
Subject: mythinstall: Upgrade gives popup when target isn't R8.0 or above.
 closes #905.

many other patches to add/change verbage to various screens.
---
 abs/core/mythinstall/PKGBUILD                      |   8 +-
 abs/core/mythinstall/checkout_MythVantage.sh       |  53 +-
 abs/core/mythinstall/fileshare.cpp.patch           | 156 ++++++
 abs/core/mythinstall/infrared.cpp.patch            |  35 ++
 abs/core/mythinstall/installationtype.cpp.patch    |  98 ++++
 abs/core/mythinstall/installdialog.cpp.patch       |  75 +++
 abs/core/mythinstall/installsettings.cpp.patch     | 532 +++++++++++++++++++++
 abs/core/mythinstall/logo-3.png                    | Bin 7932 -> 10795 bytes
 abs/core/mythinstall/logo-6.png                    | Bin 4123 -> 7302 bytes
 abs/core/mythinstall/logo_src/hp_logo.png          | Bin 11906 -> 42734 bytes
 abs/core/mythinstall/logo_src/simerec.png          | Bin 6093 -> 7102 bytes
 abs/core/mythinstall/misc_settings.cpp.patch       |  53 ++
 abs/core/mythinstall/xorgsettings.cpp.patch        |  34 ++
 abs/core/mythinstall/xorgsettings.h.patch          |  11 +
 .../stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml  |  14 +-
 15 files changed, 1043 insertions(+), 26 deletions(-)
 create mode 100644 abs/core/mythinstall/fileshare.cpp.patch
 create mode 100644 abs/core/mythinstall/infrared.cpp.patch
 create mode 100644 abs/core/mythinstall/installationtype.cpp.patch
 create mode 100644 abs/core/mythinstall/installdialog.cpp.patch
 create mode 100644 abs/core/mythinstall/installsettings.cpp.patch
 create mode 100644 abs/core/mythinstall/misc_settings.cpp.patch
 create mode 100644 abs/core/mythinstall/xorgsettings.cpp.patch
 create mode 100644 abs/core/mythinstall/xorgsettings.h.patch

diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index 6351e4e..f5265a6 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,9 +1,9 @@
 # Maintainer: Jams
 pkgname=mythinstall
 pkgver=8.1
-pkgrel=3
+pkgrel=4
 pkgdesc="LinHES installer/systemconfig GUI."
-arch=('i686'  'x86_64')
+arch=('i686' 'x86_64')
 depends=('mythtv>=0.27')
 makedepends=('mythtv>=0.27')
 logofiles=`ls logo*.png`
@@ -32,8 +32,8 @@ package() {
 md5sums=('39d6b7bd1ee305c5523a3cf66d4c2338'
          '3291ad55fe6d7884fc732313f1cc2924'
          '80c0326a253df275afbe875a8ec14a3c'
-         '46925d6fbcb7ec1fc51714d03ac6b72d'
+         'f7507a6c218c81228d2a3fbcd02565bb'
          '27ce7f89a83864dfc5abe23c61964c0c'
          '2e85a1b9559557dade6e87daf2abb673'
-         '7f3045f740760c828e2e18293c2a4ab1'
+         '532c5d9f1f8e1aef575ceecb69cc9c96'
          '91393e9cca0e6168f772fb48c88d3829')
diff --git a/abs/core/mythinstall/checkout_MythVantage.sh b/abs/core/mythinstall/checkout_MythVantage.sh
index 269cc64..ae4bcc7 100755
--- a/abs/core/mythinstall/checkout_MythVantage.sh
+++ b/abs/core/mythinstall/checkout_MythVantage.sh
@@ -5,12 +5,11 @@ PREFIX="\/usr\/include\/mythtv"
 LIBVERSION=0.27
 VERSION=0.27.0
 
-
 function setup_links {
-rm mythinstall.bin
-rm mythbeselect.bin
-ln -s  $MYDIR/src/MythVantage-app/mythinstall/mythinstall ./mythinstall.bin
-ln -s  $MYDIR/src/MythVantage-app/mythbeselect/mythbeselect ./mythbeselect.bin
+rm $MYDIR/mythinstall.bin
+rm $MYDIR/mythbeselect.bin
+ln -s  $MYDIR/src/MythVantage-app-patched/mythinstall/mythinstall $MYDIR/mythinstall.bin
+ln -s  $MYDIR/src/MythVantage-app-patched/mythbeselect/mythbeselect $MYDIR/mythbeselect.bin
 }
 
 function dl_repo {
@@ -22,10 +21,9 @@ then
     cd MythVantage-app
 #    git checkout --track -b  LinHES origin/LinHES
     cd $MYDIR
-    setup_links
     cd -
 else
-    echo "updating exisiting tree"
+    echo "----updating exisiting tree----"
     cd MythVantage-app
     git pull
     git checkout master
@@ -36,19 +34,41 @@ fi
 cd MythVantage-app
 git checkout master
 #git checkout origin/LinHES
-
+cd $MYDIR/src
+if [ -d MythVantage-app-patched ]
+then
+    echo "removing old patched dir"
+    rm -rf MythVantage-app-patched
+fi
+cp -a MythVantage-app MythVantage-app-patched
+setup_links
 }
 
 dl_repo
-set -x
-sed -i "s/^LIBVERSION.*$/LIBVERSION = $LIBVERSION/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
-sed -i "s/^VERSION.*$/VERSION = $VERSION/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
-sed -i "s/^PREFIX.*$/PREFIX = $PREFIX/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
 
+#patches
+patches=('fileshare.cpp.patch' 'installdialog.cpp.patch' 'installationtype.cpp.patch'
+         'installsettings.cpp.patch' 'infrared.cpp.patch' 'misc_settings.cpp.patch'
+         'xorgsettings.cpp.patch' 'xorgsettings.h.patch' )
+
+echo "--------------------------applying patches------------------------------"
+cd $MYDIR/src/MythVantage-app-patched/mythinstall
+for i in `echo ${patches[@]:0}`
+do
+    echo applying $i
+    patch -N -i $MYDIR/$i || return 1
+    echo "-----------------------------"
+done
+cd $MYDIR
+echo "--------------------------done applying patches-------------------------"
 
+set -x
+sed -i "s/^LIBVERSION.*$/LIBVERSION = $LIBVERSION/g" $MYDIR/src/MythVantage-app-patched/mythinstall/mythinstall.pro
+sed -i "s/^VERSION.*$/VERSION = $VERSION/g" $MYDIR/src/MythVantage-app-patched/mythinstall/mythinstall.pro
+sed -i "s/^PREFIX.*$/PREFIX = $PREFIX/g" $MYDIR/src/MythVantage-app-patched/mythinstall/mythinstall.pro
 
-sed -i "s/#define __MVAPP__/\/\/#define __MVAPP__/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h
-sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h
+sed -i "s/#define __MVAPP__/\/\/#define __MVAPP__/g" $MYDIR/src/MythVantage-app-patched/mythinstall/mv_common.h
+sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app-patched/mythinstall/mv_common.h
 
 # echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythbeselect/mythberestart.pro
 # echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
@@ -56,7 +76,10 @@ sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common
 
 #echo 'INCLUDEPATH += $$MYTHPATH/mythtv/libs/libmythtv/' >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
 
-cd $MYDIR/src/MythVantage-app/mythinstall && qmake
+#patch -N $MYDIR/src/MythVantage-app/mythinstall/installdialog.cpp < $MYDIR/installdialog.cpp.patch
+#patch -N $MYDIR/src/MythVantage-app/mythinstall/installationtype.cpp < $MYDIR/installationtype.cpp.patch
+
+cd $MYDIR/src/MythVantage-app-patched/mythinstall && qmake
 make || exit 1
 #cd $MYDIR/src/MythVantage-app/mythbeselect && qmake
 #make ||exit 1
diff --git a/abs/core/mythinstall/fileshare.cpp.patch b/abs/core/mythinstall/fileshare.cpp.patch
new file mode 100644
index 0000000..d220705
--- /dev/null
+++ b/abs/core/mythinstall/fileshare.cpp.patch
@@ -0,0 +1,156 @@
+--- fileshare.cpp.orig	2013-12-07 16:36:24.882995387 +0000
++++ fileshare.cpp	2013-12-07 17:52:59.075231547 +0000
+@@ -24,10 +24,10 @@
+ static HostComboBox *HostHaveCentralNFS()
+ {
+     HostComboBox *gc = new HostComboBox("HostHaveCentralNFS");
+-    gc->setLabel(QObject::tr("Central NFS server"));
++    gc->setLabel(QObject::tr("Central NFS Server"));
+     gc->addSelection("no");
+     gc->addSelection("yes") ;
+-    gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the masterbackend.  Say no if you are confused."));
++    gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the master backend. Select no if you are unsure."));
+ 
+     return gc;
+ }
+@@ -35,8 +35,8 @@
+ static  HostComboBox *HostCentralNFSIP()
+ {
+     HostComboBox *gc = new HostComboBox("HostCentralNFSIP",true);
+-    gc->setLabel(QObject::tr("NFS server"));
+-    gc->setHelpText(QObject::tr("Format should be  IP:/SHARENAME, for example  192.168.1.6:/media.  file:nfsmap  will load shares from the nfsmap file"));
++    gc->setLabel(QObject::tr("NFS Server"));
++    gc->setHelpText(QObject::tr("Format should be IP:/SHARENAME, For example 192.168.1.6:/media. file:nfsmap will load shares from the nfsmap file."));
+     gc->addSelection("example  ip:share") ;
+     gc->addSelection("file:nfsmap_auto") ;
+     gc->addSelection("file:nfsmap") ;
+@@ -57,7 +57,7 @@
+ 
+     HostComboBox *gc = new HostComboBox("HostNFSmountpoint",true);
+     gc->addSelection("/data/storage/central_nfs");
+-    gc->setLabel(QObject::tr("Mount point"));
++    gc->setLabel(QObject::tr("Mount Point"));
+     gc->setHelpText(QObject::tr(""));
+     return gc;
+ }
+@@ -65,9 +65,9 @@
+ static HostCheckBox *HostCentralNFSallhosts()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostCentralNFSallhosts");
+-    gc->setLabel(QObject::tr("All hosts use this share"));
++    gc->setLabel(QObject::tr("All Hosts Use This Share"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("If checked then all new hosts added to the cluster will try to access the same share"));
++    gc->setHelpText(QObject::tr("If checked then all new hosts added to the cluster will try to access the same share."));
+     return gc;
+ };
+ 
+@@ -111,6 +111,7 @@
+ FileShareMainFrameClient::FileShareMainFrameClient():
+ VerticalConfigurationGroup(false,false,false,false)
+ {
++    setLabel(QObject::tr("File Sharing Settings (1/2)"));
+     VerticalConfigurationGroup* fileshareframeclientsettings =
+     new VerticalConfigurationGroup(false, true,false,false);
+ 
+@@ -125,26 +126,26 @@
+ static HostCheckBox *HostServiceNFS()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceNFS");
+-    gc->setLabel(QObject::tr("Standard file sharing using NFS"));
++    gc->setLabel(QObject::tr("File Sharing using NFS"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Allow any machine on your network access to media via NFS"));
++    gc->setHelpText(QObject::tr("If checked, any device on the network can access media via NFS."));
+     return gc;
+ };
+ static HostCheckBox *HostServiceSamba()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceSamba");
+-    gc->setLabel(QObject::tr("Windows sharing"));
++    gc->setLabel(QObject::tr("File Sharing using SMB (Windows Sharing)"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Allow window machines to access media via windows file sharing"));
++    gc->setHelpText(QObject::tr("If checked, any device on the network can access media via Windows SMB file sharing."));
+     return gc;
+ };
+ 
+ static HostCheckBox *HostServiceSamba_write()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_write");
+-    gc->setLabel(QObject::tr("Readonly"));
++    gc->setLabel(QObject::tr("ReadOnly"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only.  If not checked then remote clients will have write and delete abilites. "));
++    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked, remote clients will have write and delete abilities."));
+     return gc;
+ };
+ 
+@@ -152,16 +153,16 @@
+ static HostCheckBox *HostServiceSamba_writehome()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_writehome");
+-    gc->setLabel(QObject::tr("Readonly"));
++    gc->setLabel(QObject::tr("ReadOnly"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only.  If not checked then remote clients will have write and delete abilites. "));
++    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked, remote clients will have write and delete abilities."));
+     return gc;
+ };
+ 
+ static HostCheckBox *HostServiceSamba_media()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_media");
+-    gc->setLabel(QObject::tr("share media"));
++    gc->setLabel(QObject::tr("Share media"));
+     gc->setValue(true);
+     gc->setHelpText(QObject::tr(" "));
+     return gc;
+@@ -170,7 +171,7 @@
+ static HostCheckBox *HostServiceSamba_home()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_home");
+-    gc->setLabel(QObject::tr("share home"));
++    gc->setLabel(QObject::tr("Share home"));
+     gc->setValue(true);
+     gc->setHelpText(QObject::tr(" "));
+     return gc;
+@@ -182,7 +183,7 @@
+ {
+     HostComboBox *gc = new HostComboBox("HostServiceSamba_domain",true);
+     gc->setLabel(QObject::tr("Workgroup"));
+-    gc->setHelpText(QObject::tr("Workgroup for smb share"));
++    gc->setHelpText(QObject::tr("Workgroup for Windows SMB shares."));
+     gc->addSelection("WORKGROUP");
+     QString currentitem;
+     QString line;
+@@ -231,7 +232,7 @@
+ 
+ void smb_busy_box() {
+     system ("nmbscan -d  > /tmp/smbdomainlist & ");
+-    QString msgtext="Searching for windows workgroups";
++    QString msgtext="Searching for Windows Workgroups";
+     int return_code;
+     MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+     MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,
+@@ -286,15 +287,17 @@
+ 
+ //_______________Server NFS Frame
+ FileShareMainFrameServer::FileShareMainFrameServer():
+-VerticalConfigurationGroup(true,false,false,false)
++VerticalConfigurationGroup(false,false,false,false)
+ {
++    setLabel(QObject::tr("File Sharing Settings (2/2)"));
++
+     VerticalConfigurationGroup* denied =  new VerticalConfigurationGroup(false,false,true,true);
+     TransLabelSetting *deniedlabel = new TransLabelSetting();
+-    deniedlabel->setValue("               File sharing is not available for Front end only systems  " );
++    deniedlabel->setValue("               File sharing is not available for frontend_only systems." );
+     denied->addChild(deniedlabel);
+ 
+     VerticalConfigurationGroup* fileshare_frame_serversettings =
+-        new VerticalConfigurationGroup(false, true,false,false);
++        new VerticalConfigurationGroup(false,false,false,false);
+         fileshare_frame_serversettings->addChild(HostServiceNFS());
+         fileshare_frame_serversettings->addChild(new SAMBAsettings);
+ 
diff --git a/abs/core/mythinstall/infrared.cpp.patch b/abs/core/mythinstall/infrared.cpp.patch
new file mode 100644
index 0000000..7c3b2cf
--- /dev/null
+++ b/abs/core/mythinstall/infrared.cpp.patch
@@ -0,0 +1,35 @@
+--- infrared.cpp.orig	2013-12-06 18:56:39.300263083 +0000
++++ infrared.cpp	2013-12-06 21:52:25.071935902 +0000
+@@ -339,7 +339,7 @@
+     gc->addSelection("user");
+     gc->addSelection("other");
+ 
+-    gc->setHelpText(QObject::tr("Remote classification.  Favorites are remotes fully supported by LinHES."));
++    gc->setHelpText(QObject::tr("Remote classification. Favorites are remotes fully supported by LinHES."));
+ 
+     return gc;
+ };
+@@ -391,6 +391,7 @@
+ IRFrame::IRFrame():
+     VerticalConfigurationGroup(false,false,false,false)
+ {
++    setLabel(QObject::tr("Remotes Settings"));
+     LIRC_ReceiverSettings *receiversettings = new LIRC_ReceiverSettings();
+     //addChild(new HostRemoteTypeIR());
+     addChild(new Remote_bucket());
+@@ -685,6 +686,7 @@
+ IR_TransmitFrame::IR_TransmitFrame():
+     VerticalConfigurationGroup(false,false,false,false)
+ {
++    setLabel(QObject::tr("Blaster Settings"));
+     LIRC_BlasterSettings *blastersettings = new LIRC_BlasterSettings();
+     addChild(blastersettings);
+ }
+@@ -724,6 +726,7 @@
+ LCDFrame::LCDFrame():
+     VerticalConfigurationGroup(false,false,false,false)
+ {
++    setLabel(QObject::tr("LCD Settings"));
+     addChild(HostLCDType());
+ }
+ 
diff --git a/abs/core/mythinstall/installationtype.cpp.patch b/abs/core/mythinstall/installationtype.cpp.patch
new file mode 100644
index 0000000..bbb2693
--- /dev/null
+++ b/abs/core/mythinstall/installationtype.cpp.patch
@@ -0,0 +1,98 @@
+--- installationtype.cpp.orig	2013-12-06 01:40:00.625732158 +0000
++++ installationtype.cpp	2013-12-06 17:28:37.733758564 +0000
+@@ -28,13 +28,13 @@
+ static HostComboBox *HOSTinstallationtype()
+ {
+     HostComboBox *gc = new HostComboBox("HOSTinstallationtype");
+-    gc->setLabel(QObject::tr("Upgrade or Full install"));
++    gc->setLabel(QObject::tr("Installation Type"));
+     gc->addSelection("Full/Auto") ;
+ 
+     gc->addSelection("Upgrade");
+ 
+     //gc->setValue("Full/Auto");
+-    gc->setHelpText(QObject::tr("A full install will erase the entire drive and repartition.  An upgrade will only format or overlay the first parition of the drive."));
++    gc->setHelpText(QObject::tr("Full install will erase the entire drive and repartition. Upgrade will format only the first parition of the drive. Only LinHES R8.0 or newer can use Upgrade."));
+ 
+     return gc;
+ }
+@@ -48,7 +48,7 @@
+ #endif
+     gc->setLabel(QObject::tr("OS size (GB)"));
+     gc->setValue(2);
+-    gc->setHelpText(QObject::tr(""  ));
++    gc->setHelpText(QObject::tr("Amount of space allocated for the root OS."  ));
+ 
+     return gc;
+ }
+@@ -68,7 +68,7 @@
+     HostSpinBox *gc = new HostSpinBox("HOSTHOMEsize", 1, 1500, 1, true);
+     gc->setLabel(QObject::tr("Home dir size (GB)"));
+     gc->setValue(3);
+-    gc->setHelpText(QObject::tr("Amount of space allocated for home directories.   Three - Five GB will be sufficient for most people.  This space will be formatted the same as the root OS"  ));
++    gc->setHelpText(QObject::tr("Amount of space allocated for the home directories partition. Three to five GB will be sufficient for most people. The home partition will be the same filesystem as the root OS."  ));
+ 
+     return gc;
+ }
+@@ -79,7 +79,7 @@
+     HostSpinBox *gc = new HostSpinBox("HOSTDatabasesize", 1, 20, 1, true);
+     gc->setLabel(QObject::tr("Database partition size (GB)"));
+     gc->setValue(4);
+-    gc->setHelpText(QObject::tr("Amount of space allocated for the database. One or Two  GB is more then enough for the avg user.  This space will be formated with ext3"  ));
++    gc->setHelpText(QObject::tr("Amount of space allocated for the database partition. Two GB is more then enough for most people. The database partition space will be formatted with the ext3 filesystem."  ));
+ 
+     return gc;
+ }
+@@ -111,7 +111,7 @@
+     HostSpinBox *gc = new HostSpinBox("HOSTSWAPsize", 128, 128000, 128, true);
+     gc->setLabel(QObject::tr("Swapspace size (MB)"));
+     gc->setValue(mem);
+-    gc->setHelpText(QObject::tr(""  ));
++    gc->setHelpText(QObject::tr("Amount of space allocated for the swap partition."  ));
+ 
+     return gc;
+ }
+@@ -130,7 +130,7 @@
+     HostCheckBox *gc = new HostCheckBox("HostUseALLdata");
+     gc->setLabel(QObject::tr("Use all remaining space for data"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("If checked myth will use the rest of the drive for the data.  Otherwise you will be able to set the size of the partition."));
++    gc->setHelpText(QObject::tr("If checked the remaining space on the drive will be used for storage. Otherwise you can set the size of the partition."));
+     return gc;
+ };
+ 
+@@ -146,7 +146,7 @@
+     gc->addSelection("xfs");
+     //gc->addSelection("btrfs");
+ 
+-    gc->setHelpText(QObject::tr("Filesystem for data. "));
++    gc->setHelpText(QObject::tr("Filesystem type for data storage."));
+ 
+     return gc;
+ }
+@@ -163,7 +163,7 @@
+     //gc->addSelection("btrfs");
+     gc->addSelection("Do_not_format");
+ 
+-    gc->setHelpText(QObject::tr("Filesystem for OS. "));
++    gc->setHelpText(QObject::tr("Filesystem type for OS. "));
+ 
+     return gc;
+ }
+@@ -179,7 +179,7 @@
+     //gc->addSelection("btrfs");
+     //gc->addSelection("xfs");
+ 
+-    gc->setHelpText(QObject::tr("Filesystem for OS.  "));
++    gc->setHelpText(QObject::tr("Filesystem type for root OS."));
+ 
+     return gc;
+ }
+@@ -233,6 +233,7 @@
+ public:
+     Installationtype():
+         TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
++        setLabel(QObject::tr("LinHES Install"));
+         Setting *Mtemplate = HOSTinstallationtype();
+         addChild(Mtemplate);
+         setTrigger(Mtemplate);
diff --git a/abs/core/mythinstall/installdialog.cpp.patch b/abs/core/mythinstall/installdialog.cpp.patch
new file mode 100644
index 0000000..b188bab
--- /dev/null
+++ b/abs/core/mythinstall/installdialog.cpp.patch
@@ -0,0 +1,75 @@
+--- installdialog.cpp.orig	2013-12-05 21:06:13.358926594 +0000
++++ installdialog.cpp	2013-12-06 17:26:16.491833828 +0000
+@@ -881,50 +881,32 @@
+             }
+             if ( flag )
+             {
+-                tflag =  1;
+-            }
+-            else
+-            {
+-                cout << "searching for knoppmyth-versin" << endl;
+-                //couldn't open /etc/systemconfig, so now look for /tmp/etc/Knoppmyth-version
+-                QFile file("/tmp/etc/KnoppMyth-version");
+-                if ( file.exists() )
+-                {   //appears to be a knoppmyth version, proceed
+-                    cout << "found knoppmyth-version" << endl;
+-                    QFile kmfile("/tmp/etc/hostname");
+-                    if ( kmfile.open(QIODevice::ReadOnly | QIODevice::Text) )
+-                    {
+-                        Q3TextStream t( &kmfile );        // use a text stream
+-                        line = t.readLine();
+-                        flag=true;
+-                        currentitem = line.stripWhiteSpace();
+-                        current_hostname =  currentitem   ;
+-                        //gCoreContext->ActivateSettingsCache(true);
+-                        gCoreContext->ClearSettingsCache();
+-                        //FixME
+-                        //gCoreContext->SetSetting("HostMyhostname",current_hostname);
+-                        gCoreContext->SaveSetting("HostMyhostname",current_hostname);
+-                    }
+-                    kmfile.close();
+-                    runNextSetting = ask_validate_network();
+-                }
+-                else
++                //check if LinHES-release is 8.0 or newer
++                cout << "searching for LinHES-release" << endl;
++                //look for /tmp/etc/LinHES-release
++                QFile file("/tmp/etc/LinHES-release");
++                if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+                 {
+-                    //popup things went wrong
+-                    DialogCode returncode  = MythPopupBox::Show2ButtonPopup(GetMythMainWindow(),
+-                                             QString(""),
+-                                             QObject::tr("Couldn't find the old config file, proceed with update?"),
+-                                             QObject::tr("No"), QObject::tr("Yes"), kDialogCodeButton1);
+-                    if ( returncode == kDialogCodeButton1 )
++                    Q3TextStream t( &file );        // use a text stream
++                    while ( !t.eof() )
+                     {
+-                        runNextSetting = ask_validate_network();
+-                    }
+-                    else if ( returncode == kDialogCodeButton0 )
+-                    {
+-                        runNextSetting = 1;
++                        line = t.readLine();
++                        if ( line.contains("8.") )
++                        {
++                            tflag = 1;
++                        }
+                     }
++                    file.close();
+                 }
+-
++            }
++            if ( tflag == 0 )
++            {
++                //popup install doesn't look like R8
++                MythPopupBox::showOkPopup(
++                    GetMythMainWindow(),
++                    QObject::tr(""),
++                    QObject::tr("The selected disk cannot be upgraded because it is older than LinHES R8.0."));
++                runNextSetting = 1;
+             }
+         }
+     }
diff --git a/abs/core/mythinstall/installsettings.cpp.patch b/abs/core/mythinstall/installsettings.cpp.patch
new file mode 100644
index 0000000..461d26d
--- /dev/null
+++ b/abs/core/mythinstall/installsettings.cpp.patch
@@ -0,0 +1,532 @@
+--- installsettings.cpp.orig	2013-12-06 17:34:15.794137303 +0000
++++ installsettings.cpp	2013-12-07 17:31:13.642325676 +0000
+@@ -67,7 +67,7 @@
+     HostLineEdit *gc = new HostLineEdit("HostDDnslogin");
+     gc->setLabel(QObject::tr("Login"));
+     gc->setValue("");
+-    gc->setHelpText(QObject::tr("Login for ddns account"));
++    gc->setHelpText(QObject::tr("Login for DDNS account."));
+     return gc;
+ };
+ 
+@@ -77,7 +77,7 @@
+     gc->setLabel(QObject::tr("Password"));
+     gc->setValue("");
+     gc->SetPasswordEcho(true);
+-    gc->setHelpText(QObject::tr("Password for ddns account."));
++    gc->setHelpText(QObject::tr("Password for DDNS account."));
+     return gc;
+ };
+ 
+@@ -93,7 +93,7 @@
+ static HostCheckBox *HostDDnsEnable()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostDDnsEnable");
+-    gc->setLabel(QObject::tr("Enable DDNS support"));
++    gc->setLabel(QObject::tr("Enable DDNS"));
+     gc->setValue(false);
+     gc->setHelpText(QObject::tr("Update DDNS records at dyndns.com. Visit http://dyndns.com to setup your account."));
+     return gc;
+@@ -103,7 +103,7 @@
+ public:
+     DDnssettings():
+         TriggeredConfigurationGroup(false,false,false,false) {
+-        setLabel(QObject::tr("DDNS settings"));
++        setLabel(QObject::tr("DDNS Settings"));
+         SetVertical(true);
+         Setting* trigger = HostDDnsEnable() ;
+         addChild(trigger);
+@@ -321,9 +321,9 @@
+ static HostCheckBox *HostBEWait()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostBEWait");
+-    gc->setLabel(QObject::tr("Delay starting the frontend until the server is ready"));
++    gc->setLabel(QObject::tr("Delay starting mythfrontend until mythbackend is running"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("The system will check if the backend is online before starting mythfrontend.  This is useful to avoid unwanted connection errors or configuration screens. "));
++    gc->setHelpText(QObject::tr("The system will check if mythbackend is online before starting mythfrontend. This will avoid connection errors and configuration screens."));
+     return gc;
+ };
+ 
+@@ -370,9 +370,9 @@
+ static HostCheckBox *HostServiceMythWEB()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostServiceMythWEB");
+-    gc->setLabel(QObject::tr("Enable Mythweb"));
++    gc->setLabel(QObject::tr("Enable MythWeb"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Allow scheduling using a web browser"));
++    gc->setHelpText(QObject::tr("Allow MythTV scheduling using a web browser."));
+     return gc;
+ };
+ 
+@@ -416,9 +416,9 @@
+ static HostCheckBox *HostRunDHCP()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostRunDHCP");
+-    gc->setLabel(QObject::tr("DHCP server"));
++    gc->setLabel(QObject::tr("DHCP Server"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Only one dhcp server should run on a network.  Leave this unchecked if your unsure."));
++    gc->setHelpText(QObject::tr("Only one DHCP server should run on a network. Leave this unchecked if you are not sure."));
+     return gc;
+ };
+ 
+@@ -436,16 +436,16 @@
+     HostCheckBox *gc = new HostCheckBox("HostUseMythWelcome");
+     gc->setLabel(QObject::tr("Run MythWelcome"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("If this option is checked mythwelcome will be started first."));
++    gc->setHelpText(QObject::tr("If checked mythwelcome will be started instead of mythfrontend."));
+     return gc;
+ };
+ 
+ static HostCheckBox *HostRunFrontend()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostRunFrontend");
+-    gc->setLabel(QObject::tr("Run the Frontend."));
++    gc->setLabel(QObject::tr("Run Frontend"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("When checked the frontend will start.  Most people will want this checked."));
++    gc->setHelpText(QObject::tr("If checked the frontend X windows GUI will start. Most people will want this checked. Disable the frontend if you want the system to run without a display connected."));
+     return gc;
+ };
+ 
+@@ -500,7 +500,7 @@
+     HostCheckBox *gc = new HostCheckBox("HostRemoteBackup");
+     gc->setLabel(QObject::tr("Remote Backup"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Copy the system backup file to another dir or host.   Supplemental services must be installed to copy the file to a remote host."));
++    gc->setHelpText(QObject::tr("Copy the system backup file to another directory or host."));
+     return gc;
+ };
+ 
+@@ -509,7 +509,7 @@
+ {
+     QString tempItem;
+     HostComboBox *gc = new HostComboBox("HostRemoteBackupDir",true);
+-    gc->setLabel(QObject::tr("dir or host" ));
++    gc->setLabel(QObject::tr("  Dir or Host" ));
+     gc->addSelection("dir:/data/storage/disk0");
+     MSqlQuery query(MSqlQuery::InitCon());
+ 
+@@ -573,18 +573,18 @@
+ static HostCheckBox *HostncidClient()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostncidClient");
+-    gc->setLabel(QObject::tr("Show Callerid"));
++    gc->setLabel(QObject::tr("Show CallerID"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Callerid popup, backend must be running the callerid program"));
++    gc->setHelpText(QObject::tr("Show CallerID popup. The backend must be running the CallerID program."));
+     return gc;
+ };
+ 
+ static HostCheckBox *HostncidDaemon()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostncidDaemon");
+-    gc->setLabel(QObject::tr("Run Callerid "));
++    gc->setLabel(QObject::tr("Run CallerID"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Run Daemon to collect callerid info"));
++    gc->setHelpText(QObject::tr("Run daemon to collect CallerID information."));
+     return gc;
+ };
+ 
+@@ -614,9 +614,9 @@
+ static HostCheckBox *Hostbootsplash()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostbootsplash");
+-    gc->setLabel(QObject::tr("Enable bootsplash"));
++    gc->setLabel(QObject::tr("Enable Boot Splash"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Covers up boot messages. "));
++    gc->setHelpText(QObject::tr("Covers up boot messages with LinHES logo."));
+     return gc;
+ };
+ 
+@@ -752,80 +752,80 @@
+ static HostCheckBox *Hostaccessnetwork()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccessnetwork");
+-    gc->setLabel(QObject::tr("Network "));
++    gc->setLabel(QObject::tr("Network"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Control access to network screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Network Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccesshostype()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccesshostype");
+-    gc->setLabel(QObject::tr("hostype "));
++    gc->setLabel(QObject::tr("Host"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to hostype screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Host Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *HostaccesshostypeSystemtype()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostaccesshostypeSystemtype");
+-    gc->setLabel(QObject::tr("Change hostype"));
++    gc->setLabel(QObject::tr("Change System Type"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Ability to change sql server and system type. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Ability to change the System Type in Host Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccessmisc()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccessmisc");
+-    gc->setLabel(QObject::tr("misc "));
++    gc->setLabel(QObject::tr("Miscellanous"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to misc screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Miscellanous Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccesssleep()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccesssleep");
+-    gc->setLabel(QObject::tr("sleep "));
++    gc->setLabel(QObject::tr("Shutdown"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to sleep screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Shutdown Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccessadvanced()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccessadvanced");
+-    gc->setLabel(QObject::tr("advanced "));
++    gc->setLabel(QObject::tr("Advanced"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to advanced screen. Checked means the screen is enabled. "));
++    gc->setHelpText(QObject::tr("Control access to Advanced Settings. Checked means the screen is enabled. "));
+     return gc;
+ };
+ 
+ static HostCheckBox *HostaccessadvancedX()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostaccessadvancedX");
+-    gc->setLabel(QObject::tr("advancedX "));
++    gc->setLabel(QObject::tr("Display"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to advancedX screen. Checked means the screen is enabled. "));
++    gc->setHelpText(QObject::tr("Control access to Display Settings. Checked means the screen is enabled. "));
+     return gc;
+ };
+ static HostCheckBox *Hostaccesssound()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccesssound");
+-    gc->setLabel(QObject::tr("sound "));
++    gc->setLabel(QObject::tr("Audio"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to sound screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Audio Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccessplugins()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccessplugins");
+-    gc->setLabel(QObject::tr("plugins"));
++    gc->setLabel(QObject::tr("Programs"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to plugin screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Programs. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+@@ -834,25 +834,25 @@
+     HostCheckBox *gc = new HostCheckBox("Hostaccessuser");
+     gc->setLabel(QObject::tr("User"));
+     gc->setValue(false);
+-    gc->setHelpText(QObject::tr("Control access to the user managment screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to User Management Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccesswebuser()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccesswebuser");
+-    gc->setLabel(QObject::tr("Web password"));
++    gc->setLabel(QObject::tr("Web Security"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to the web password screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to Web Security Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+ static HostCheckBox *Hostaccessvnc()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccessvnc");
+-    gc->setLabel(QObject::tr("VNC "));
++    gc->setLabel(QObject::tr("VNC"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to the vnc password screen. Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to VNC Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+@@ -860,9 +860,9 @@
+ static HostCheckBox *Hostaccessfileshare()
+ {
+     HostCheckBox *gc = new HostCheckBox("Hostaccessfileshare");
+-    gc->setLabel(QObject::tr("fileshare "));
++    gc->setLabel(QObject::tr("File Sharing"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Control access to the fileshare.  Checked means the screen is enabled."));
++    gc->setHelpText(QObject::tr("Control access to File Sharing Settings. Checked means the screen is enabled."));
+     return gc;
+ };
+ 
+@@ -2202,7 +2202,7 @@
+ public:
+     NetworkSettingsFrame():
+         TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+-        setLabel(QObject::tr("Network Settings Page (1/2)"));
++        setLabel(QObject::tr("Network Settings (1/2)"));
+         Setting* netdevice = HostNetDevice();
+         addChild(netdevice);
+         setTrigger(netdevice);
+@@ -2349,6 +2349,7 @@
+ NetworkOptionsFrame::NetworkOptionsFrame():
+     VerticalConfigurationGroup(false,false,false,false)
+ {
++    setLabel(QObject::tr("Network Settings (2/2)"));
+     HostMyhostname = new HostComboBox("HostMyhostname",true);
+     HostMyhostname->setLabel(QObject::tr("Hostname"));
+     HostMyhostname->addSelection("Envy");
+@@ -2366,9 +2367,7 @@
+     HostMyhostname->addSelection("Faith");
+     HostMyhostname->addSelection("Zeal");
+     HostMyhostname->addSelection("type_hostname_here");
+-    HostMyhostname->setHelpText(QObject::tr("The hostname must resolve via DNS. \
+-    If DNS is not available then append .local to the end of the hostname. \
+-    When using .local, names must not include additional ."));
++    HostMyhostname->setHelpText(QObject::tr("The hostname must resolve via DNS. If DNS is not available then append .local to the end of the hostname. When using .local, names must not include an additional ."));
+ 
+     FetchDhcpHostnameButton = new TransButtonSetting();
+     FetchDhcpHostnameButton ->setLabel(tr("Ask DHCP server for hostname"));
+@@ -2494,9 +2493,9 @@
+ static HostCheckBox *HostUseXLargeMouse()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostUseXLargeMouse");
+-    gc->setLabel(QObject::tr("Large mouse pointer"));
++    gc->setLabel(QObject::tr("Large Mouse Pointer"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Use extra large mouse pointer(requires restart of frontend)"));
++    gc->setHelpText(QObject::tr("Use an extra large mouse pointer. This takes effect the next time the frontend is started."));
+     return gc;
+ };
+ 
+@@ -2549,7 +2548,7 @@
+ SystemtypeGroup::SystemtypeGroup():        TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+     setLabel(QObject::tr("System Type"));
+     HostSystemType = new HostComboBox("HostSystemType");
+-    HostSystemType->setLabel(QObject::tr("Type of system setup"));
++    HostSystemType->setLabel(QObject::tr("          System Type"));
+     HostSystemType->addSelection("Master_backend");
+     HostSystemType->addSelection("Frontend_only");
+ //     HostSystemType->addSelection("Standalone");
+@@ -2608,13 +2607,13 @@
+     }
+ 
+     if (selectedhostype == "Standalone")
+-        msg="Complete System, that doesn't allow outside connections";
++        msg="Complete System, that doesn't allow outside connections.";
+     if (selectedhostype == "Frontend_only")
+-        msg="Frontend only, needs a  primary system (master backend) already on the network";
++        msg="Frontend_only needs a primary system (master backend) already on the network.";
+     if (selectedhostype ==  "Master_backend")
+-        msg="Primary system with tuners, scheduling and database.  This allows for remote frontend and slave backends";
++        msg="Primary system with tuners, scheduling and database. This allows for remote frontend and slave backends.";
+     if (selectedhostype == "Slave_backend")
+-        msg="Secondary system for extra tuners";
++        msg="Secondary system for extra tuners.";
+ 
+     HostSystemType->setHelpText(msg) ;
+ }
+@@ -2670,7 +2669,7 @@
+         TriggeredConfigurationGroup(true,true,true,true,true,true,true,true)
+     {
+ 
+-        setLabel(QObject::tr("Advanced settings (1/2)"));
++        setLabel(QObject::tr("Advanced Settings (1/2)"));
+         Setting* Autodown = HostAutodown();
+         setTrigger(Autodown);
+         hostparm.ThisSystemType 	= gCoreContext->GetSetting("HostSystemType");
+@@ -2723,7 +2722,7 @@
+ public:
+     AdvancedSettings_2():
+         TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+-        setLabel(QObject::tr("Advanced settings (2/2)"));
++        setLabel(QObject::tr("Advanced Settings (2/2)"));
+         Setting* Autodown = HostAutodown();
+         setTrigger(Autodown);
+         hostparm.ThisSystemType     = gCoreContext->GetSetting("HostSystemType");
+@@ -2767,15 +2766,15 @@
+ /*_______________________________Sound settings ____________________*/
+ SoundSettings::SoundSettings():
+     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+-    setLabel(QObject::tr("Audio out settings"));
++    setLabel(QObject::tr("Audio Settings"));
+ 
+     HostAudiotype = new HostComboBox("HostAudiotype",false);
+-    HostAudiotype->setLabel(QObject::tr("Sound card driver"));
++    HostAudiotype->setLabel(QObject::tr("Sound Card Driver"));
+     HostAudiotype->addSelection("OSS");
+     HostAudiotype->addSelection("ALSA");
+     HostAudiotype->addSelection("tinker");
+ 
+-    HostAudiotype->setHelpText(QObject::tr("Select the sound driver set to use (OSS or ALSA)." ) );
++    HostAudiotype->setHelpText(QObject::tr("Select the sound driver, OSS or ALSA." ) );
+     addChild(HostAudiotype);
+     setTrigger(HostAudiotype);
+ 
+@@ -2826,10 +2825,10 @@
+     osslabel->setValue("The original OSS! More information can be found at:");
+ 
+     TransLabelSetting *osslabel1 = new TransLabelSetting();
+-    osslabel1->setValue("http://www.opensound.com  \n\nPlease note to fully configure sound visit the \nmythtv audio setup screens\n");
++    osslabel1->setValue("http://www.opensound.com  \n\nPlease note to fully configure sound visit the \nMythTV audio setup.\n");
+ 
+     TransLabelSetting *AlsaLabel = new TransLabelSetting();
+-    AlsaLabel->setValue("ALSA, the alternative to OSS\n\nPlease note to fully configure sound visit the \nmythtv audio setup screens\n");
++    AlsaLabel->setValue("ALSA, the alternative to OSS\n\nPlease note to fully configure sound visit the \nMythTV audio setup.\n");
+ 
+ // OSS GROUP
+     SoundOSSsettings  *OSS = new SoundOSSsettings ;
+@@ -4477,7 +4476,7 @@
+             //Check to see if screen is allowed to appear
+             if (  ((gCoreContext->GetSetting("Hostaccessnetwork"))  == "0" )  )
+             {
+-                denied ->setLabel(QObject::tr("Network settings"));
++                denied ->setLabel(QObject::tr("Network Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4528,7 +4527,7 @@
+         {
+             if (  ((gCoreContext->GetSetting("Hostaccesshostype")) =="0" ))
+             {
+-                denied ->setLabel(QObject::tr("System type"));
++                denied ->setLabel(QObject::tr("Host Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4548,7 +4547,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("HostaccessadvancedX")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("AdvancedX Settings"));
++                denied ->setLabel(QObject::tr("Display Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4562,7 +4561,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessvnc")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("VNC settings"));
++                denied ->setLabel(QObject::tr("VNC Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4576,7 +4575,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessfileshare")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("File Share settings"));
++                denied ->setLabel(QObject::tr("File Sharing Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4595,7 +4594,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessmisc")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("Misc"));
++                denied ->setLabel(QObject::tr("Miscellanous"));
+                 addChild(denied);
+             }
+             else
+@@ -4618,7 +4617,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccesssleep")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("WOL settings"));
++                denied ->setLabel(QObject::tr("Shutdown Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4647,7 +4646,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccesssound")) =="0") )
+             {
+-                denied ->setLabel(QObject::tr("Sound Settings"));
++                denied ->setLabel(QObject::tr("Audio Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4705,7 +4704,7 @@
+             accessettings->addChild(Hostaccessnetwork());
+             accessettings->addChild(new ACCESShostsettings);
+             accessettings->addChild(GridAccess);
+-            accessettings ->setLabel(QObject::tr("Access control"));
++            accessettings ->setLabel(QObject::tr("Access Control Settings"));
+             addChild(accessettings);
+         }
+ 
+@@ -4713,7 +4712,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessplugins")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("Plugins"));
++                denied ->setLabel(QObject::tr("Programs"));
+                 addChild(denied);
+             }
+             else
+@@ -4754,7 +4753,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessplugins")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("Software"));
++                denied ->setLabel(QObject::tr("Programs"));
+                 addChild(denied);
+             }
+             else
+@@ -4788,7 +4787,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessuser")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("User Management"));
++                denied ->setLabel(QObject::tr("User Management Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4802,7 +4801,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccesswebuser")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("Web security"));
++                denied ->setLabel(QObject::tr("Web Security Settings"));
+                 addChild(denied);
+             }
+             else
+@@ -4817,7 +4816,7 @@
+         {
+             if ( ((gCoreContext->GetSetting("Hostaccessddns")) == "0" ))
+             {
+-                denied ->setLabel(QObject::tr("DDNS security"));
++                denied ->setLabel(QObject::tr("DDNS Settings"));
+                 addChild(denied);
+             }
+             else
diff --git a/abs/core/mythinstall/logo-3.png b/abs/core/mythinstall/logo-3.png
index 8fff988..800fefc 100644
Binary files a/abs/core/mythinstall/logo-3.png and b/abs/core/mythinstall/logo-3.png differ
diff --git a/abs/core/mythinstall/logo-6.png b/abs/core/mythinstall/logo-6.png
index d370e2e..a81a62f 100644
Binary files a/abs/core/mythinstall/logo-6.png and b/abs/core/mythinstall/logo-6.png differ
diff --git a/abs/core/mythinstall/logo_src/hp_logo.png b/abs/core/mythinstall/logo_src/hp_logo.png
index 211b19e..23a6261 100644
Binary files a/abs/core/mythinstall/logo_src/hp_logo.png and b/abs/core/mythinstall/logo_src/hp_logo.png differ
diff --git a/abs/core/mythinstall/logo_src/simerec.png b/abs/core/mythinstall/logo_src/simerec.png
index 93db677..29db2eb 100644
Binary files a/abs/core/mythinstall/logo_src/simerec.png and b/abs/core/mythinstall/logo_src/simerec.png differ
diff --git a/abs/core/mythinstall/misc_settings.cpp.patch b/abs/core/mythinstall/misc_settings.cpp.patch
new file mode 100644
index 0000000..0afaf0a
--- /dev/null
+++ b/abs/core/mythinstall/misc_settings.cpp.patch
@@ -0,0 +1,53 @@
+--- misc_settings.cpp.orig	2013-12-07 17:56:37.984108492 +0000
++++ misc_settings.cpp	2013-12-07 18:14:07.783476609 +0000
+@@ -11,20 +11,20 @@
+ static HostCheckBox *HostShowToolTips()
+ {
+     HostCheckBox *gc = new HostCheckBox("HostShowToolTips");
+-    gc->setLabel(QObject::tr("Show shortcuts"));
++    gc->setLabel(QObject::tr("Show Shortcuts"));
+     gc->setValue(true);
+-    gc->setHelpText(QObject::tr("Shows a popup window describing how to open a console and various other items."));
++    gc->setHelpText(QObject::tr("Shows a window describing how to open a console and various other items."));
+     return gc;
+ };
+ 
+ static HostComboBox *Hostupdateplan()
+ {
+     HostComboBox *gc = new HostComboBox("Hostupdateplan");
+-    gc->setLabel(QObject::tr("Automatic updates"));
++    gc->setLabel(QObject::tr("Automatic Updates"));
+     gc->addSelection("None");
+     gc->addSelection("Myth_only");
+     gc->addSelection("All");
+-    gc->setHelpText("Download and apply updates.  None: Will not download any updates , Myth_only: automatic updates for MythTV, All: Automatic updates for the entire system.");
++    gc->setHelpText("None: Do not install updates automatically.\nMyth_only: Automatically installs updates for MythTV only.\nAll: Automatically installs all updates for LinHES.");
+     return gc;
+ 
+ }
+@@ -43,6 +43,7 @@
+     VerticalConfigurationGroup(false,false,false,false)
+ 
+ {
++    setLabel(QObject::tr("Miscellaneous Settings"));
+     bool MVAPP;
+ #ifdef __MVAPP__
+     MVAPP = true ;
+@@ -238,7 +239,7 @@
+ 
+ void TimezoneRegion::timezoneregion_fillselection_zone()
+ {
+-    HostTimeZoneRegion->setLabel(QObject::tr("TimeZone"));
++    HostTimeZoneRegion->setLabel(QObject::tr("Time Zone"));
+     HostTimeZoneRegion->addSelection("US");
+     HostTimeZoneRegion->addSelection("Pacific");
+     HostTimeZoneRegion->addSelection("Mideast");
+@@ -302,7 +303,7 @@
+     HostTimeZoneRegion->addSelection("Cuba");
+     HostTimeZoneRegion->addSelection("CST6CDT");
+     HostTimeZoneRegion->addSelection("CET");
+-    HostTimeZoneRegion->setHelpText(QObject::tr("Timezone Region"));
++    HostTimeZoneRegion->setHelpText(QObject::tr("Time Zone Region"));
+ }
+ 
+ void TimezoneRegion::timezoneregion_fillselection(QString tzonefile )
diff --git a/abs/core/mythinstall/xorgsettings.cpp.patch b/abs/core/mythinstall/xorgsettings.cpp.patch
new file mode 100644
index 0000000..7678b9c
--- /dev/null
+++ b/abs/core/mythinstall/xorgsettings.cpp.patch
@@ -0,0 +1,34 @@
+--- xorgsettings.cpp.orig	2013-12-06 22:24:53.351187115 +0000
++++ xorgsettings.cpp	2013-12-06 23:18:44.107475010 +0000
+@@ -551,7 +551,7 @@
+ 
+ // AdvancedXSettings::AdvancedXSettings():
+ //     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+-//     setLabel(QObject::tr("Advanced X  settings"));
++//     setLabel(QObject::tr("Display Settings"));
+ //     Setting* Advancedxsettings = HostXUseAdvanced();
+ //     addChild(Advancedxsettings);
+ //     setTrigger(Advancedxsettings);
+@@ -596,18 +596,18 @@
+ 
+ AdvancedXSettings::AdvancedXSettings():
+     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+-    setLabel(QObject::tr("Advanced X  settings"));
++    setLabel(QObject::tr("Display Settings"));
+ 
+ 
+ 
+ 
+     HostXIgnoreConfig = new HostCheckBox("HostXIgnoreConfig");
+-    HostXIgnoreConfig->setLabel(QObject::tr("User supplied config. "));
++    HostXIgnoreConfig->setLabel(QObject::tr("User Supplied Configuration"));
+     HostXIgnoreConfig->setValue(false);
+ #ifdef __MVAPP__
+-    HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU.  Place the file you want to use in /data/home/mythtv/templates/xorg.user."));
++    HostXIgnoreConfig->setHelpText(QObject::tr("If checked, the system will use the configuration file provided by YOU. Place your configuration file in /data/home/mythtv/templates/xorg.user."));
+ #else
+-    HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU.  Place the file you want to use in /home/mythtv/templates/xorg.user."));
++    HostXIgnoreConfig->setHelpText(QObject::tr("If checked, the system will use the configuration file provided by YOU. Place your configuration file in /data/home/mythtv/templates/xorg.user."));
+ #endif
+ 
+     Setting* Advancedxsettings = HostXIgnoreConfig;
diff --git a/abs/core/mythinstall/xorgsettings.h.patch b/abs/core/mythinstall/xorgsettings.h.patch
new file mode 100644
index 0000000..d774899
--- /dev/null
+++ b/abs/core/mythinstall/xorgsettings.h.patch
@@ -0,0 +1,11 @@
+--- xorgsettings.h.orig	2013-12-06 22:40:05.424359651 +0000
++++ xorgsettings.h	2013-12-06 22:40:31.537678172 +0000
+@@ -105,7 +105,7 @@
+ //Used in the simple config
+ {
+     HostComboBox *gc = new HostComboBox("HostXres");
+-    gc->setLabel(QObject::tr("Initial resolution"));
++    gc->setLabel(QObject::tr("Initial Resolution"));
+     gc->addSelection("Auto") ;
+     gc->setHelpText(QObject::tr(""));
+     system ("print_xorg_res.py");
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
index 283a9ea..2577ed0 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -42,6 +42,13 @@
    </button>
 
    <button>
+        <type>MV_SYSTEM_SETUP_MENU</type>
+        <text>Host</text>
+        <description>Manage LinHES system type, pointer size &amp; MythWelcome</description>
+        <action>EXEC  mythinstall -s hostype </action>
+   </button>
+
+   <button>
         <type>MV_MISC_SETUP_MENU</type>
         <text>Miscellanous</text>
         <description>Set timezone, shortcuts &amp; auto updates</description>
@@ -91,13 +98,6 @@
    </button>
 
    <button>
-        <type>MV_SYSTEM_SETUP_MENU</type>
-        <text>System Type</text>
-        <description>Manage LinHES system type, pointer size &amp; MythWelcome</description>
-        <action>EXEC  mythinstall -s hostype </action>
-   </button>
-
-   <button>
         <type>MV_USER_SETUP_MENU</type>
         <text>User Accounts</text>
         <description>Manage Users on the LinHES system</description>
-- 
cgit v0.12


From a05ce8e608d7429952ed78144a60f2a7d6483c00 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 8 Dec 2013 15:47:48 -0600
Subject: plymouth and plymouth-theme-linhes: recompile and add to base

---
 abs/core/plymouth-theme-linhes/PKGBUILD | 3 ++-
 abs/core/plymouth/PKGBUILD              | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/abs/core/plymouth-theme-linhes/PKGBUILD b/abs/core/plymouth-theme-linhes/PKGBUILD
index da1cbc2..8b7c345 100644
--- a/abs/core/plymouth-theme-linhes/PKGBUILD
+++ b/abs/core/plymouth-theme-linhes/PKGBUILD
@@ -1,12 +1,13 @@
 #
 pkgname="plymouth-theme-linhes-logo"
 pkgver=1
-pkgrel=3
+pkgrel=4
 pkgdesc="LinHES theme for plymouth"
 arch=('any')
 license=('GPL')
 depends=('plymouth')
 options=('')
+groups=('base')
 source=('lh-logo.png' 'linhes-logo.plymouth' 'linhes-logo.script' 'password_field.png'
         'progress_dot_off.png' 'progress_dot_on.png')
 install=plymouth-linhes.install
diff --git a/abs/core/plymouth/PKGBUILD b/abs/core/plymouth/PKGBUILD
index d0849c7..6126d4f 100644
--- a/abs/core/plymouth/PKGBUILD
+++ b/abs/core/plymouth/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=plymouth
 pkgver=0.8.8.52.g37d2e40
-pkgrel=1
+pkgrel=4
 pkgdesc="A graphical boot splash screen with kernel mode-setting support (Git version)"
 url="http://cgit.freedesktop.org/cgit/plymouth/"
 arch=('i686' 'x86_64')
@@ -10,7 +10,7 @@ makedepends=('git' 'docbook-xsl')
 optdepends=('ttf-dejavu')
 options=('!libtool' '!emptydirs')
 install=$pkgname.install
-
+groups=('base')
 provides=('plymouth')
 conflicts=('plymouth')
 backup=('etc/plymouth/plymouthd.conf')
-- 
cgit v0.12


From 9c7a9f742bbe8a69bdf50335e8218a45c3f28721 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 8 Dec 2013 16:14:10 -0600
Subject: mythdb-initial: change default HOSTDatabasesize to 2gb and
 ThemePainter to auto

---
 abs/core/mythdb-initial/PKGBUILD   | 6 +++---
 abs/core/mythdb-initial/custom.sql | 3 ++-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/abs/core/mythdb-initial/PKGBUILD b/abs/core/mythdb-initial/PKGBUILD
index 54b5912..d1566a5 100755
--- a/abs/core/mythdb-initial/PKGBUILD
+++ b/abs/core/mythdb-initial/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythdb-initial
-pkgver=8
-pkgrel=3
+pkgver=8.1
+pkgrel=1
 pkgdesc="setup the initial mythtv database for linhes"
 url=""
 license=""
@@ -22,4 +22,4 @@ package() {
 
 md5sums=('366c1fe7668739d2d5c1123f9f4ee110'
          'ad0e57ac5e7c3677808a670e16634bba'
-         '6c7fd1877f45b604be14d58d068f6d08')
+         '8c5aa22be114fc20298891d37928cd2e')
diff --git a/abs/core/mythdb-initial/custom.sql b/abs/core/mythdb-initial/custom.sql
index cb18965..99a0452 100644
--- a/abs/core/mythdb-initial/custom.sql
+++ b/abs/core/mythdb-initial/custom.sql
@@ -45,6 +45,7 @@ INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
  ('HaltCommand'           ,'sudo /sbin/halt'               , 'apheleia'),
  ('RebootCommand'         ,'sudo /sbin/reboot'             , 'apheleia'),
  ('Theme'                 ,'LinHES'                        , 'apheleia'),
+ ('ThemePainter'          ,'auto'                          , 'apheleia'),
  ('LircSocket'            ,'/var/run/lirc/lircd'           , 'apheleia');
 --
 
@@ -149,7 +150,7 @@ INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES
 ('HOSTOSsize',      '5'    ,   'apheleia'),
 ('HOSTrootfstype',  'ext3' ,   'apheleia'),
 ('HOSTHOMEsize',    '3'    ,   'apheleia'),
-('HOSTDatabasesize','5'    ,   'apheleia'),
+('HOSTDatabasesize','2'    ,   'apheleia'),
 ('HostUseSWAP',     '1'    ,   'apheleia'),
 ('HostUseALLdata',  '1'    ,   'apheleia'),
 ('HOSTdatafstype',  'xfs'  ,   'apheleia');
-- 
cgit v0.12


From fa1c09c45b64e180f8deb8c7d4858e1a2eb5fb01 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 9 Dec 2013 11:55:44 -0600
Subject: runit-scripts: add mpd

The config file is stock, and will need to be changed for each persons setup

refs #931
---
 abs/core/runit-scripts/runitscripts/services/mpd/log/run | 5 +++++
 abs/core/runit-scripts/runitscripts/services/mpd/run     | 9 +++++++++
 2 files changed, 14 insertions(+)
 create mode 100755 abs/core/runit-scripts/runitscripts/services/mpd/log/run
 create mode 100755 abs/core/runit-scripts/runitscripts/services/mpd/run

diff --git a/abs/core/runit-scripts/runitscripts/services/mpd/log/run b/abs/core/runit-scripts/runitscripts/services/mpd/log/run
new file mode 100755
index 0000000..bc856fe
--- /dev/null
+++ b/abs/core/runit-scripts/runitscripts/services/mpd/log/run
@@ -0,0 +1,5 @@
+#!/bin/sh
+exec 2>&1
+. /etc/systemconfig
+ /usr/bin/logger -t mpd
+
diff --git a/abs/core/runit-scripts/runitscripts/services/mpd/run b/abs/core/runit-scripts/runitscripts/services/mpd/run
new file mode 100755
index 0000000..c4bd347
--- /dev/null
+++ b/abs/core/runit-scripts/runitscripts/services/mpd/run
@@ -0,0 +1,9 @@
+#!/bin/sh
+export TERM=linux
+. /etc/rc.conf
+. /etc/rc.d/functions
+stat_runit "Starting mpd"
+
+
+exec 2>&1
+exec /usr/bin/mpd --no-daemon --stdout 2>&1
-- 
cgit v0.12


From bbf857eb8190fce32a4191e61dd28b890a7ea059 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 9 Dec 2013 11:57:09 -0600
Subject: runit-scripts:  fix cron and frontend logging to their own file

---
 abs/core/runit-scripts/PKGBUILD                    | 11 ++++---
 abs/core/runit-scripts/fbsplash-runit.sh           | 37 ++++++++++++++++++++++
 .../runitscripts/services/cron/log/run             |  2 +-
 .../runitscripts/services/frontend/log/run         |  2 +-
 4 files changed, 46 insertions(+), 6 deletions(-)
 create mode 100644 abs/core/runit-scripts/fbsplash-runit.sh

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index 745edb3..1f1c12c 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=8.1
-pkgrel=2
+pkgrel=3
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
@@ -10,7 +10,7 @@ conflicts=()
 replaces=()
 backup=('etc/runit/1.local' 'etc/runit/3.local')
 install=runit.install
-source=()
+source=('fbsplash-runit.sh')
 arch=('i686' 'x86_64')
 
 build() {
@@ -24,11 +24,14 @@ package() {
   install -d $pkgdir/etc/sv
   install -d $pkgdir/sbin
   install -d $pkgdir/etc/rc.d/functions.d
-
+  
+  #this file contains the function runit-stat  which is needed by the runit service scripts
+  install -m755 $srcdir/fbsplash-runit.sh $pkgdir/etc/rc.d/functions.d/fbsplash-runit.sh
+  
   install -m0700 1 2 3 1.local 3.local ctrlaltdel $pkgdir/etc/runit
   install -m0755 reboot-runit halt-runit logger $pkgdir/sbin
   rsync -a --exclude=.svn services/* $pkgdir/etc/sv
   chmod -R  755 $pkgdir/etc/sv
   chown -R root:root $pkgdir/etc/sv
 }
-md5sums=()
+md5sums=('30b944b91aa1f57c5469c8bd210cb497')
diff --git a/abs/core/runit-scripts/fbsplash-runit.sh b/abs/core/runit-scripts/fbsplash-runit.sh
new file mode 100644
index 0000000..9fb9591
--- /dev/null
+++ b/abs/core/runit-scripts/fbsplash-runit.sh
@@ -0,0 +1,37 @@
+# fbsplash functions.d runit script #
+
+printhlr() {
+               printf "${C_OTHER}${PREFIX_REG} ${C_H1}${1}${C_CLEAR} \n"
+           }
+
+stat_runit(){
+    printf ""
+    printhlr "${C_MAIN}${1}${C_CLEAR} "
+}
+
+
+# splash stuff #
+if [ -e /etc/conf.d/fbcondecor ]
+then
+    . /etc/conf.d/fbcondecor
+    . /sbin/splash-functions.sh
+
+    case $0 in /etc/runit/1 )
+        # Prevent splash destruction
+        CONSOLEFONT=""
+        # Continue to use a splash daemon started in initcpio
+        if /bin/mountpoint -q /run/.splash-cache; then
+            /bin/mount --move /run/.splash-cache $spl_cachedir || return
+        # Mount a tmpfs
+        else
+            ( splash_cache_prep ) || return
+        fi
+
+        splash_comm_send set message "$SPLASH_BOOT_MESSAGE"
+
+    ;; /etc/runit/3 )
+        ( splash_cache_prep ) || return
+
+        splash_comm_send set message "$SPLASH_SHUTDOWN_MESSAGE"
+    esac
+fi
diff --git a/abs/core/runit-scripts/runitscripts/services/cron/log/run b/abs/core/runit-scripts/runitscripts/services/cron/log/run
index 9dd37e3..785d6c7 100755
--- a/abs/core/runit-scripts/runitscripts/services/cron/log/run
+++ b/abs/core/runit-scripts/runitscripts/services/cron/log/run
@@ -1,5 +1,5 @@
 #!/bin/sh
 exec 2>&1
 . /etc/systemconfig
- /usr/bin/logger -p local6.info -t cron 
+ /usr/bin/logger -t cron 
 
diff --git a/abs/core/runit-scripts/runitscripts/services/frontend/log/run b/abs/core/runit-scripts/runitscripts/services/frontend/log/run
index 801eaf2..bd431b2 100755
--- a/abs/core/runit-scripts/runitscripts/services/frontend/log/run
+++ b/abs/core/runit-scripts/runitscripts/services/frontend/log/run
@@ -1,5 +1,5 @@
 #!/bin/sh
 exec 2>&1
 . /etc/systemconfig
- /usr/bin/logger -p local6.info -t frontend 
+ /usr/bin/logger -t frontend 
 
-- 
cgit v0.12


From 28a76e0968386d28face2850d039aa624becd5cc Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 9 Dec 2013 12:04:12 -0600
Subject: mpd: first checkin

The config file is stock, and will need to be changed for each persons setup

refs #931
---
 abs/extra/mpd/PKGBUILD   | 51 ++++++++++++++++++++++++++++++++++++++++++++++++
 abs/extra/mpd/install    | 11 +++++++++++
 abs/extra/mpd/tmpfiles.d |  1 +
 3 files changed, 63 insertions(+)
 create mode 100644 abs/extra/mpd/PKGBUILD
 create mode 100644 abs/extra/mpd/install
 create mode 100644 abs/extra/mpd/tmpfiles.d

diff --git a/abs/extra/mpd/PKGBUILD b/abs/extra/mpd/PKGBUILD
new file mode 100644
index 0000000..4f36986
--- /dev/null
+++ b/abs/extra/mpd/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 182602 2013-04-10 23:39:58Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=mpd
+pkgver=0.17.4
+pkgrel=1
+pkgdesc='Flexible, powerful, server-side application for playing music'
+url='http://www.musicpd.org/'
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('libao' 'ffmpeg' 'libmodplug' 'audiofile' 'libshout' 'libmad' 'curl' 'faad2'
+         'sqlite'  'libmms' 'wavpack' 'avahi' 'libid3tag' 'yajl' 'libsoup')
+makedepends=('doxygen')
+source=("http://www.musicpd.org/download/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz"
+        'tmpfiles.d')
+sha1sums=('f60b54e368fe74fde2fd4571227b0428fe0ae3cb'
+          'f4d5922abb69abb739542d8e93f4dfd748acdad7')
+
+backup=('etc/mpd.conf')
+install=install
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	./configure \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--enable-lastfm \
+		--enable-soundcloud \
+		--disable-sidplay \
+		--with-systemdsystemunitdir=/usr/lib/systemd/system
+	make
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install
+	install -d -g 45 -o 45 "${pkgdir}"/var/lib/mpd/playlists
+	install -Dm644 doc/mpdconf.example "${pkgdir}"/etc/mpd.conf
+	install -Dm644 ../tmpfiles.d "${pkgdir}"/usr/lib/tmpfiles.d/mpd.conf
+	sed \
+		-e '/^#playlist_directory/c playlist_directory "/var/lib/mpd/playlists"' \
+		-e '/^#db_file/c db_file "/var/lib/mpd/mpd.db"' \
+		-e '/^#pid_file/c pid_file "/run/mpd/mpd.pid"' \
+		-e '/^#state_file/c state_file "/var/lib/mpd/mpdstate"' \
+		-e '/^#user/c user "mpd"' \
+		-i "${pkgdir}"/etc/mpd.conf
+}
diff --git a/abs/extra/mpd/install b/abs/extra/mpd/install
new file mode 100644
index 0000000..12742b9
--- /dev/null
+++ b/abs/extra/mpd/install
@@ -0,0 +1,11 @@
+post_install() {
+	getent group mpd &>/dev/null || groupadd -r -g 45 mpd >/dev/null
+	getent passwd mpd &>/dev/null || useradd -r -u 45 -g mpd -d /var/lib/mpd -s /bin/false -G audio mpd >/dev/null
+	usr/bin/systemd-tmpfiles --create mpd.conf || true
+}
+
+post_remove() {
+	getent passwd mpd &>/dev/null && userdel mpd >/dev/null
+	getent group mpd &>/dev/null && groupdel mpd >/dev/null
+	true
+}
diff --git a/abs/extra/mpd/tmpfiles.d b/abs/extra/mpd/tmpfiles.d
new file mode 100644
index 0000000..41c4e74
--- /dev/null
+++ b/abs/extra/mpd/tmpfiles.d
@@ -0,0 +1 @@
+d /run/mpd 0755 mpd mpd
-- 
cgit v0.12


From b7e124567f44d259655c79181f1af9bcd6586341 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 9 Dec 2013 12:04:31 -0600
Subject: libmms:  first checkin  required for mpd refs #931

---
 abs/extra/libmms/PKGBUILD | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 abs/extra/libmms/PKGBUILD

diff --git a/abs/extra/libmms/PKGBUILD b/abs/extra/libmms/PKGBUILD
new file mode 100644
index 0000000..fd9ab3e
--- /dev/null
+++ b/abs/extra/libmms/PKGBUILD
@@ -0,0 +1,25 @@
+#$Id: PKGBUILD 134220 2011-08-02 15:22:22Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libmms
+pkgver=0.6.2
+pkgrel=1
+pkgdesc="MMS stream protocol library"
+arch=(i686 x86_64)
+url="http://sourceforge.net/projects/libmms/"
+license=(LGPL)
+depends=('glib2')
+options=('!libtool')
+source=(http://download.sourceforge.net/libmms/${pkgname}-${pkgver}.tar.gz)
+md5sums=('9f63aa363deb4874e072a45850161bff')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  make
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}
-- 
cgit v0.12


From efb028d99b56e06e48dfc3d762e9d699ee1f24b7 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 9 Dec 2013 14:26:43 -0600
Subject: LinHES-system: add msg that connection to mythbackend was made.
 Adjust the timing of the be check just a bit

---
 abs/core/LinHES-system/LinHES-session | 8 +++++++-
 abs/core/LinHES-system/PKGBUILD       | 4 ++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/abs/core/LinHES-system/LinHES-session b/abs/core/LinHES-system/LinHES-session
index d7b70ea..c6d0b09 100755
--- a/abs/core/LinHES-system/LinHES-session
+++ b/abs/core/LinHES-system/LinHES-session
@@ -299,10 +299,16 @@ function start_myth() {
         while [ $rc -ne 0 ]
         do
             msg "Waiting for connection to MythBackend"
+            sleep 6
             /usr/LH/bin/be_check.py
             rc=$?
-            sleep 6
+            if [ $rc -eq 0 ]
+            then
+                msg "Successful Connection to MythBackend"
+            fi
         done
+        sleep 3 #give time for MBE to be fully operational
+        
     fi
 
     #continue on with starting mythtv
diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 406cc05..d400e6d 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=6
+pkgrel=7
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -75,7 +75,7 @@ package() {
 
 }
 
-md5sums=('49e9847cedcf26a977d64fd44e460b11'
+md5sums=('7f5624a2d965a4cd3ed6a37ebee13fd9'
          'de32a1c50101265dd7f6ca5037f7a26a'
          'a875ee97f86e46f34a741c2bc455f894'
          '76b2637cac0452b3acdbeeb4e8a5474b'
-- 
cgit v0.12


From 23b63734b90bb8c37d88673383002cbd210cdc99 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 9 Dec 2013 17:00:51 -0600
Subject: mythinstall: pull in MythVantage src to LH tree.

more cleanup to many modules.

access can now disable remotes and screensaver
---
 .../MythVantage-app/mythbeselect/bpopup-ui.xml     |  164 +
 .../MythVantage-app/mythbeselect/installdialog.cpp |  216 +
 .../MythVantage-app/mythbeselect/installdialog.h   |   80 +
 .../MythVantage-app/mythbeselect/main.cpp          |  195 +
 .../mythbeselect/moc_installdialog.cpp             |  131 +
 .../MythVantage-app/mythbeselect/mythberestart.pro |   47 +
 .../MythVantage-app/mythinstall/autocard.cpp       |  182 +
 .../MythVantage-app/mythinstall/autocard.h         |   30 +
 .../mythinstall/commandlineparser.cpp              |   55 +
 .../mythinstall/commandlineparser.h                |   14 +
 .../MythVantage-app/mythinstall/compat-mv.cpp      |  157 +
 .../MythVantage-app/mythinstall/compat-mv.h        |   43 +
 .../MythVantage-app/mythinstall/fileshare.cpp      |  319 ++
 .../MythVantage-app/mythinstall/fileshare.h        |   45 +
 .../MythVantage-app/mythinstall/infrared.cpp       |  733 +++
 .../MythVantage-app/mythinstall/infrared.h         |   67 +
 .../MythVantage-app/mythinstall/install-ui.xml     |  148 +
 .../MythVantage-app/mythinstall/install_proxy.sh   |  353 ++
 .../mythinstall/installationtype.cpp               |  272 ++
 .../MythVantage-app/mythinstall/installationtype.h |   11 +
 .../MythVantage-app/mythinstall/installdialog.cpp  | 1179 +++++
 .../MythVantage-app/mythinstall/installdialog.h    |  111 +
 .../mythinstall/installsettings.cpp                | 4910 ++++++++++++++++++++
 .../MythVantage-app/mythinstall/installsettings.h  |  589 +++
 .../MythVantage-app/mythinstall/main.cpp           |  597 +++
 .../MythVantage-app/mythinstall/misc_settings.cpp  |  623 +++
 .../MythVantage-app/mythinstall/misc_settings.h    |   97 +
 .../MythVantage-app/mythinstall/mv_common.h        |    5 +
 .../MythVantage-app/mythinstall/mythinstall.pro    |   55 +
 .../mythinstall/password_manage.cpp                |  436 ++
 .../MythVantage-app/mythinstall/password_manage.h  |   60 +
 .../MythVantage-app/mythinstall/settemplate.cpp    |  409 ++
 .../MythVantage-app/mythinstall/settemplate.h      |   13 +
 .../MythVantage-app/mythinstall/supplemental.cpp   |   92 +
 .../MythVantage-app/mythinstall/supplemental.h     |   44 +
 .../MythVantage-app/mythinstall/vnc.cpp            |  112 +
 .../mythinstall/MythVantage-app/mythinstall/vnc.h  |   28 +
 .../MythVantage-app/mythinstall/xorgsettings.cpp   |  696 +++
 .../MythVantage-app/mythinstall/xorgsettings.h     |  130 +
 abs/core/mythinstall/PKGBUILD                      |   28 +-
 abs/core/mythinstall/checkout_MythVantage.sh       |    3 -
 abs/core/mythinstall/fileshare.cpp.patch           |  156 -
 abs/core/mythinstall/infrared.cpp.patch            |   35 -
 abs/core/mythinstall/installationtype.cpp.patch    |   98 -
 abs/core/mythinstall/installdialog.cpp.patch       |   75 -
 abs/core/mythinstall/installsettings.cpp.patch     |  532 ---
 abs/core/mythinstall/misc_settings.cpp.patch       |   53 -
 abs/core/mythinstall/xorgsettings.cpp.patch        |   34 -
 abs/core/mythinstall/xorgsettings.h.patch          |   11 -
 49 files changed, 13467 insertions(+), 1006 deletions(-)
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythbeselect/bpopup-ui.xml
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythbeselect/main.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythbeselect/moc_installdialog.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythbeselect/mythberestart.pro
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/autocard.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/autocard.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/infrared.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/infrared.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/install-ui.xml
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/install_proxy.sh
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/main.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/mv_common.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/vnc.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/vnc.h
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.cpp
 create mode 100755 abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.h
 delete mode 100644 abs/core/mythinstall/fileshare.cpp.patch
 delete mode 100644 abs/core/mythinstall/infrared.cpp.patch
 delete mode 100644 abs/core/mythinstall/installationtype.cpp.patch
 delete mode 100644 abs/core/mythinstall/installdialog.cpp.patch
 delete mode 100644 abs/core/mythinstall/installsettings.cpp.patch
 delete mode 100644 abs/core/mythinstall/misc_settings.cpp.patch
 delete mode 100644 abs/core/mythinstall/xorgsettings.cpp.patch
 delete mode 100644 abs/core/mythinstall/xorgsettings.h.patch

diff --git a/abs/core/mythinstall/MythVantage-app/mythbeselect/bpopup-ui.xml b/abs/core/mythinstall/MythVantage-app/mythbeselect/bpopup-ui.xml
new file mode 100755
index 0000000..df0598b
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythbeselect/bpopup-ui.xml
@@ -0,0 +1,164 @@
+<!--
+
+    This is a myth style theme file for mythwelcome
+
+    (c) 2005 by a whole bunch of people associated with MythTV
+
+-->
+<mythuitheme>
+ 
+    <window name="welcome_screen">
+    
+        <!--
+
+            First, define all the fonts we need on this screen
+
+        -->
+       <font name="title" face="Arial">
+           <color>#ffff00</color>
+           <dropcolor>#000000</dropcolor>
+           <size>24</size>
+           <shadow>3,3</shadow>
+           <bold>yes</bold>
+       </font>
+
+       <font name="time" face="Arial">
+            <color>#9999cc</color>
+            <size>18</size>
+            <bold>yes</bold>
+       </font>
+
+       <font name="label" face="Arial">
+            <color>#ffff00</color>
+            <dropcolor>#000000</dropcolor>
+            <size>18</size>
+            <shadow>3,3</shadow>
+            <bold>yes</bold>
+       </font>
+
+       <font name="info" face="Arial">
+            <color>#ffffff</color>
+            <size>18</size>
+            <bold>yes</bold>
+       </font>
+       
+       <font name="biginfo" face="Arial">
+	       <color>#ffffff</color>
+	       <size>50</size>
+	       <bold>yes</bold>
+       </font>
+       <font name="warning" face="Arial">
+            <color>#ff0000</color>
+            <dropcolor>#000000</dropcolor>
+            <size>16</size>
+            <shadow>2,2</shadow>
+            <bold>yes</bold>
+       </font>
+
+       <font name="buttons" face="Arial">
+            <color>#ffff00</color>
+            <size>14</size>
+            <bold>yes</bold>
+       </font>
+
+       <container name="main_display">
+            <area>0,0,800,600</area>
+
+            <textarea name="title" draworder="0" align="center">
+                <multiline>no</multiline>
+                <font>title</font>
+                <area>50,40,700,40</area>
+                <value></value>
+            </textarea>
+
+            <!-- 
+                time
+            -->            
+            <textarea name="time_text" draworder="0" align="right">
+                <multiline>no</multiline>
+                <font>time</font>
+                <area>660,520,110,30</area>
+                <value></value>
+            </textarea>
+
+            <textarea name="date_text" draworder="0" align="center">
+                <multiline>no</multiline>
+                <font>time</font>
+                <area>0,60,800,70</area>
+                <value></value>
+            </textarea>
+            
+            <!-- 
+                current myth status
+            -->
+
+            <textarea name="status_text" draworder="1" align="center">
+                <multiline>yes</multiline>
+                <font>info</font>
+                <area>20,70,760,60</area>
+                <value>MythTV is idle and will shutdown shortly.</value>
+            </textarea>
+
+            <!-- 
+                current recordings status
+            -->
+            
+            <textarea name="recording_label" draworder="1" align="center">
+                <font>label</font>
+                <area>20,110,760,30</area>
+                <!--<value>Percent Complete </value>-->
+                 <value></value>
+            </textarea>
+
+            <textarea name="recording_text" draworder="1" align="hcenter">
+                <multiline>yes</multiline>
+                <font>biginfo</font>
+                <area>20,110,760,150</area>
+                <value></value>
+            </textarea>
+
+            <!-- 
+                next scheduled recording status
+            -->
+            
+            <textarea name="scheduled_label" draworder="1" align="center">
+                <font>label</font>
+                <area>20,320,760,30</area>
+                <value></value>
+            </textarea>
+
+            <textarea name="scheduled_text" draworder="1" align="hcenter">
+                <multiline>yes</multiline>
+                <font>biginfo</font>
+                <area>20,400,760,120</area>
+                <value></value>
+            </textarea>
+
+            <!-- 
+                scheduled recordings conflict warning
+            -->
+            
+            <textarea name="conflicts_text" draworder="1" align="center">
+                <font>warning</font>
+                <area>20,490,760,30</area>
+                <value>WARNING: There are conflicting scheduled recordings!</value>
+            </textarea>
+
+            <!-- 
+                start frontend button
+                     
+            <textbutton name="startfrontend_button" draworder="1">
+                <position>81,535</position>
+                <font>buttons</font>
+                <image function="on" filename="mw_text_button_on.png"></image>
+                <image function="off" filename="mw_text_button_off.png"></image>
+                <image function="pushed" filename="mw_text_button_pushed.png"></image>
+            </textbutton>
+
+            -->
+
+	   </container>
+    
+    </window>
+    
+</mythuitheme>
diff --git a/abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.cpp b/abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.cpp
new file mode 100755
index 0000000..6d1920f
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.cpp
@@ -0,0 +1,216 @@
+#include <qapplication.h>
+#include <unistd.h>
+#include <fstream>
+#include <sys/wait.h>   // For WIFEXITED on Mac OS X
+
+#include "mythcontext.h"
+#include "mythdbcon.h"
+#include "lcddevice.h"
+#include "tv.h"
+#include "programinfo.h"
+#include "uitypes.h"
+#include "remoteutil.h"
+#include "installdialog.h"
+#include "libmyth/dialogbox.h"
+#include <qvaluevector.h>
+#include <stdlib.h>
+#define UPDATE_STATUS_INTERVAL   5000
+#define UPDATE_SCREEN_INTERVAL   5000
+QStringList belist;
+BEvector beveclist (100);
+QString BECommand;
+int retval;
+int runstuff(QStringList hostlist,BEvector Bea,QString bcmd ){
+belist=hostlist;
+beveclist = Bea;
+BECommand=bcmd;
+
+WelcomeDialog *mythWelcome = new WelcomeDialog(gContext->GetMainWindow(),
+                                                    "welcome_screen", "bpopup-",
+                                                "welcome_screen");
+        mythWelcome->exec();
+       delete mythWelcome;
+       return (0);
+}
+
+
+WelcomeDialog::WelcomeDialog(MythMainWindow *parent,
+                            QString window_name,
+                            QString theme_filename,
+                            const char* name)
+:MythThemedDialog(parent, window_name, theme_filename, name)
+{
+    gContext->addListener(this);
+    m_timeFormat = gContext->GetSetting("TimeFormat", "h:mm AP");
+    wireUpTheme();
+    assignFirstFocus();
+    popup = NULL;
+    showPopup();
+}
+
+
+int WelcomeDialog::exec()
+{
+    return MythDialog::exec();
+}
+
+
+
+void WelcomeDialog::keyPressEvent(QKeyEvent *e)
+{
+    bool handled = false;
+
+    QStringList actions;
+    gContext->GetMainWindow()->TranslateKeyPress("Welcome", e, actions);
+
+    for (unsigned int i = 0; i < actions.size() && !handled; i++)
+    {
+        QString action = actions[i];
+        handled = true;
+        if (action == "ESCAPE")
+        {
+            return; // eat escape key
+        }
+        else if (action == "MENU")
+        {
+            showPopup();
+        }
+        else if (action == "NEXTVIEW")
+        {
+           accept();
+        }
+        else if (action == "SELECT")
+        {
+            activateCurrent();
+       }
+        else
+            handled = false;
+    }
+
+    if (!handled)
+        MythThemedDialog::keyPressEvent(e);
+}
+
+UITextType* WelcomeDialog::getTextType(QString name)
+{
+    UITextType* type = getUITextType(name);
+
+    if (!type)
+    {
+        cout << "ERROR: Failed to find '" << name <<  "' UI element in theme file\n"
+            << "Bailing out!" << endl;
+        exit(0);
+    }
+    return type;
+}
+
+void WelcomeDialog::wireUpTheme()
+{
+    m_status_text = getTextType("status_text");
+    m_recording_text = getTextType("recording_text");
+    m_scheduled_text = getTextType("scheduled_text");
+    m_time_text = getTextType("time_text");
+    m_date_text = getTextType("date_text");
+    m_warning_text = getTextType("conflicts_text");
+    m_warning_text->hide();
+    buildFocusList();
+}
+
+void WelcomeDialog::closeDialog()
+{
+cout <<"close dialog" <<endl;
+    done(1);
+}
+
+WelcomeDialog::~WelcomeDialog()
+{
+    gContext->removeListener(this);
+
+    if (m_updateStatusTimer)
+        delete m_updateStatusTimer;
+
+    if (m_updateScreenTimer)
+        delete m_updateScreenTimer;
+
+    if (m_timeTimer)
+        delete m_timeTimer;
+}
+
+void WelcomeDialog::updateTime(void)
+{
+    QString s="";
+    m_date_text->SetText(s);
+}
+
+void WelcomeDialog::updateStatus(void)
+{
+    updateStatusMessage();
+}
+
+void WelcomeDialog::updateScreen(void)
+{
+    m_recording_text->SetText(recording_text);
+    m_scheduled_text->SetText(scheduled_text);
+    m_status_text->SetText("");
+    m_updateScreenTimer->start(UPDATE_SCREEN_INTERVAL, true);
+
+}
+
+void WelcomeDialog::updateAll(void)
+{
+    updateRecordingList();
+    updateScheduledList();
+}
+
+bool WelcomeDialog::updateRecordingList()
+{
+    return true;
+}
+
+bool WelcomeDialog::updateScheduledList()
+{
+
+
+    updateStatus();
+    updateScreen();
+    return true;
+}
+
+void WelcomeDialog::updateStatusMessage(void)
+{
+
+}
+
+void WelcomeDialog::showPopup(void)
+{
+    if (popup)
+        return;
+            DialogCode retitem = MythPopupBox::ShowButtonPopup(gContext->GetMainWindow(),
+                                    QString("JobQueuePopup"),
+                                    QObject::tr("Select Backend to " + BECommand ),
+                                            belist,kDialogCodeButton0);
+            retval = retitem - kDialogCodeListStart;
+           cout << beveclist[retval] << endl;
+          cancelPopup();
+          dorestart( BECommand , beveclist[retval] );
+ }
+
+
+
+void WelcomeDialog::cancelPopup(void)
+{
+      if (!popup)
+       return;
+      popup->hide();
+     popup->deleteLater();
+    popup = NULL;
+    setActiveWindow();
+}
+
+void dorestart (QString command , QString behost)
+{
+cout  << command  << behost  << endl;
+system("/usr/bin/backend_control.sh  " +  command + "  " + behost );
+exit(0);
+}
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.h b/abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.h
new file mode 100755
index 0000000..69af384
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythbeselect/installdialog.h
@@ -0,0 +1,80 @@
+//#ifndef WELCOMEDIALOG_H_
+//#define WELCOMEDIALOG_H_
+
+#include <iostream>
+using namespace std;
+
+#include <qdatetime.h>
+#include "mythdialogs.h"
+#include "libmyth/dialogbox.h"
+#include <qvaluevector.h>
+ typedef QValueVector<QString> BEvector;
+ 
+int  runstuff(QStringList , BEvector,QString);
+
+//QStringList BeButtonList;
+
+class WelcomeDialog : public MythThemedDialog
+{
+
+  Q_OBJECT
+
+  public:
+
+    WelcomeDialog(MythMainWindow *parent,
+                       QString window_name,
+                       QString theme_filename,
+                       const char* name = 0);
+    ~WelcomeDialog();
+
+    void keyPressEvent(QKeyEvent *e);
+    void wireUpTheme();
+     int exec();
+    
+  protected slots:
+    void updateAll(void);
+    void updateStatus(void);
+    void updateScreen(void);
+    void closeDialog();
+    void updateTime();
+    void showPopup();
+   
+    void cancelPopup();
+  //  void MAINPopup();
+    bool updateRecordingList(void);
+    bool updateScheduledList(void);
+
+
+  private:
+    void updateStatusMessage(void);
+    UITextType* getTextType(QString name);
+    MythPopupBox *popup;
+//     DialogBox *reboot_box;
+//     DialogBox *upgrade_box;
+    //
+    //  GUI stuff
+    //
+    UITextType          *m_status_text;
+    UITextType          *m_recording_text;
+    UITextType          *m_scheduled_text;
+    UITextType          *m_warning_text;
+    UITextType          *m_time_text;
+    UITextType          *m_date_text;
+    QTimer         *m_updateStatusTimer;
+    QTimer         *m_updateScreenTimer;
+    QTimer         *m_timeTimer;
+
+//     QString        m_installDir;
+     QString        m_timeFormat;
+//     QStringList    m_statusList;
+//     QString        install_drive ;
+//     QString         install_text;
+    string recording_text;
+    string  scheduled_text;
+//     string bin_prefix; 
+//      bool I_AM_BUSY;
+
+
+};
+
+void dorestart (QString,QString);
diff --git a/abs/core/mythinstall/MythVantage-app/mythbeselect/main.cpp b/abs/core/mythinstall/MythVantage-app/mythbeselect/main.cpp
new file mode 100755
index 0000000..7c5f9f2
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythbeselect/main.cpp
@@ -0,0 +1,195 @@
+#include <qapplication.h>
+#include <cstdlib>
+//#include "libmyth/mythdialogs.h"
+#include "libmyth/mythcontext.h"
+#include "libmyth/settings.h"
+#include "libmyth/langsettings.h"
+#include "libmyth/mythdbcon.h"
+#include <libmyth/exitcodes.h>
+#include "libmythtv/tv.h"
+
+#include "mythdialogbox.h"
+
+#include <iostream>
+#include <fstream>
+#include <stdio.h>
+
+#include "libmyth/dialogbox.h"
+#include <qlist.h>
+#include <qvaluevector.h>
+#include "installdialog.h"
+void initKeys(void)
+{
+    REG_KEY("Welcome", "STARTXTERM", "Open an Xterm window", "F12");
+    REG_KEY("Welcome", "SHOWSETTINGS", "Show Mythshutdown settings", "F11");
+}
+
+int main(int argc, char **argv)
+{
+    QString becommand;
+    QApplication a(argc, argv);
+    bool bShow=false;
+    gContext = NULL;
+    gContext = new MythContext(MYTH_BINARY_VERSION);
+    if (!gContext->Init())
+    {
+        VERBOSE(VB_IMPORTANT, "mythwelcome: Could not initialize myth context. "
+                        "Exiting.");
+        return FRONTEND_EXIT_NO_MYTHCONTEXT;
+    }
+
+    if (!MSqlQuery::testDBConnection())
+    {
+        VERBOSE(VB_IMPORTANT, "mythwelcome: Could not open the database. "
+                        "Exiting.");
+        return -1;
+    }
+
+    if ( a.argc() == 1 )
+                {
+                 VERBOSE(VB_IMPORTANT, "Not enough argurments");
+                 exit(1);
+                }
+    // Check command line arguments
+    for (int argpos = 1; argpos < a.argc(); ++argpos)
+    {
+             //    ++argpos;
+
+	if (!strcmp(a.argv()[argpos],"-restart"))
+        {
+                 becommand="restart";
+        }
+         else if (!strcmp(a.argv()[argpos],"-start"))
+        {
+            becommand="start";
+        }
+        else if (!strcmp(a.argv()[argpos],"-stop"))
+        {
+            becommand="stop";
+        }
+      else if (!strcmp(a.argv()[argpos],"-forceshow"))
+        {
+             bShow=true;
+        }
+          else
+        {
+            cerr << "Invalid argument: " << a.argv()[argpos] << endl <<
+                    "Valid options are: " << endl <<
+                    "-restart " << endl <<
+                    "-start " << endl <<
+                    "-stop  " << endl <<
+                    "-forceshow" << endl;
+
+            return FRONTEND_EXIT_INVALID_CMDLINE;
+        }
+
+
+    }
+
+    gContext->LoadQtConfig();
+
+
+
+  QStringList msg;
+  QString tempip;
+  QString justifyip;
+  QString temphname;
+  QString justifyname;
+  QString tempbetype;
+  QString justifybetype;
+
+  int listmaxpos = 0 ;
+  typedef QValueVector<QString> BEvector;
+  BEvector BElist (20);
+
+   if (!MSqlQuery::testDBConnection())
+    {
+        VERBOSE(VB_IMPORTANT, "mythwelcome: Could not open the database. "
+                        "Exiting.");
+    }
+
+  //select the master backend
+           MSqlQuery query(MSqlQuery::InitCon());
+            query.prepare( "SELECT DISTINCT  data,hostname from settings where value='MasterServerIP';");
+            if (query.exec() && query.isActive() && query.size() > 0)
+            {
+                while (query.next())
+                {
+
+                    tempip = query.value(0).toString();
+                    justifyip=tempip.rightJustify(15,' ',false);
+                    temphname = query.value(1).toString();
+                    justifyname= temphname.rightJustify( 20, ' ',false );
+
+                    if ( temphname == "" )
+                            tempbetype="MBE: ";
+                            else
+                            tempbetype="SBE: ";
+
+                            tempbetype.append(justifyname);
+                            tempbetype.append("  ");
+                            tempbetype.append(justifyip);
+
+                            justifybetype= tempbetype.leftJustify(50,' ' ,true);
+                            BElist[listmaxpos] = tempbetype;
+                            msg << (justifybetype);
+                            listmaxpos++;
+                }
+             }
+
+
+             //slave backends
+            query.prepare( "SELECT DISTINCT  data,hostname from settings where value='BackendServerIP'  and  not data=:ip  ;");
+               query.bindValue( ":ip", tempip );
+            if (query.exec() && query.isActive() && query.size() > 0)
+            {
+                while (query.next())
+                {
+
+                    tempip = query.value(0).toString();
+                    justifyip=tempip.rightJustify(15,' ',false);
+                    temphname = query.value(1).toString();
+                    justifyname= temphname.rightJustify( 20, ' ',false );
+
+                    if ( temphname == "" )
+                            tempbetype="MBE: ";
+                            else
+                            tempbetype="SBE: ";
+
+                            tempbetype.append(justifyname);
+                            tempbetype.append("  ");
+                            tempbetype.append(justifyip);
+
+                            justifybetype= tempbetype.leftJustify(50,' ' ,true);
+                            BElist[listmaxpos] = tempbetype;
+                            msg << (justifybetype);
+                            listmaxpos++;
+                }
+             }
+
+
+
+if ( query.size () >1)
+    bShow=true;
+
+
+cout << listmaxpos << endl;
+if ( bShow )
+{
+ LanguageSettings::load("mythfrontend");
+
+    MythMainWindow *mainWindow = GetMythMainWindow();
+    mainWindow->Init();
+    gContext->SetMainWindow(mainWindow);
+        initKeys();
+  runstuff(msg,BElist,becommand);
+
+delete gContext;
+}
+else
+{
+  dorestart( becommand,  BElist[0]  );
+}
+return 0;
+}
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythbeselect/moc_installdialog.cpp b/abs/core/mythinstall/MythVantage-app/mythbeselect/moc_installdialog.cpp
new file mode 100755
index 0000000..53f3089
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythbeselect/moc_installdialog.cpp
@@ -0,0 +1,131 @@
+/****************************************************************************
+** WelcomeDialog meta object code from reading C++ file 'installdialog.h'
+**
+** Created: Fri Aug 8 02:57:02 2008
+**      by: The Qt MOC ($Id: qt/moc_yacc.cpp   3.3.8   edited Feb 2 14:59 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "installdialog.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.8. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *WelcomeDialog::className() const
+{
+    return "WelcomeDialog";
+}
+
+QMetaObject *WelcomeDialog::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_WelcomeDialog( "WelcomeDialog", &WelcomeDialog::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString WelcomeDialog::tr( const char *s, const char *c )
+{
+    if ( qApp )
+	return qApp->translate( "WelcomeDialog", s, c, QApplication::DefaultCodec );
+    else
+	return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString WelcomeDialog::trUtf8( const char *s, const char *c )
+{
+    if ( qApp )
+	return qApp->translate( "WelcomeDialog", s, c, QApplication::UnicodeUTF8 );
+    else
+	return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* WelcomeDialog::staticMetaObject()
+{
+    if ( metaObj )
+	return metaObj;
+    QMetaObject* parentObject = MythThemedDialog::staticMetaObject();
+    static const QUMethod slot_0 = {"updateAll", 0, 0 };
+    static const QUMethod slot_1 = {"updateStatus", 0, 0 };
+    static const QUMethod slot_2 = {"updateScreen", 0, 0 };
+    static const QUMethod slot_3 = {"closeDialog", 0, 0 };
+    static const QUMethod slot_4 = {"updateTime", 0, 0 };
+    static const QUMethod slot_5 = {"showPopup", 0, 0 };
+    static const QUMethod slot_6 = {"cancelPopup", 0, 0 };
+    static const QUParameter param_slot_7[] = {
+	{ 0, &static_QUType_bool, 0, QUParameter::Out }
+    };
+    static const QUMethod slot_7 = {"updateRecordingList", 1, param_slot_7 };
+    static const QUParameter param_slot_8[] = {
+	{ 0, &static_QUType_bool, 0, QUParameter::Out }
+    };
+    static const QUMethod slot_8 = {"updateScheduledList", 1, param_slot_8 };
+    static const QMetaData slot_tbl[] = {
+	{ "updateAll()", &slot_0, QMetaData::Protected },
+	{ "updateStatus()", &slot_1, QMetaData::Protected },
+	{ "updateScreen()", &slot_2, QMetaData::Protected },
+	{ "closeDialog()", &slot_3, QMetaData::Protected },
+	{ "updateTime()", &slot_4, QMetaData::Protected },
+	{ "showPopup()", &slot_5, QMetaData::Protected },
+	{ "cancelPopup()", &slot_6, QMetaData::Protected },
+	{ "updateRecordingList()", &slot_7, QMetaData::Protected },
+	{ "updateScheduledList()", &slot_8, QMetaData::Protected }
+    };
+    metaObj = QMetaObject::new_metaobject(
+	"WelcomeDialog", parentObject,
+	slot_tbl, 9,
+	0, 0,
+#ifndef QT_NO_PROPERTIES
+	0, 0,
+	0, 0,
+#endif // QT_NO_PROPERTIES
+	0, 0 );
+    cleanUp_WelcomeDialog.setMetaObject( metaObj );
+    return metaObj;
+}
+
+void* WelcomeDialog::qt_cast( const char* clname )
+{
+    if ( !qstrcmp( clname, "WelcomeDialog" ) )
+	return this;
+    return MythThemedDialog::qt_cast( clname );
+}
+
+bool WelcomeDialog::qt_invoke( int _id, QUObject* _o )
+{
+    switch ( _id - staticMetaObject()->slotOffset() ) {
+    case 0: updateAll(); break;
+    case 1: updateStatus(); break;
+    case 2: updateScreen(); break;
+    case 3: closeDialog(); break;
+    case 4: updateTime(); break;
+    case 5: showPopup(); break;
+    case 6: cancelPopup(); break;
+    case 7: static_QUType_bool.set(_o,updateRecordingList()); break;
+    case 8: static_QUType_bool.set(_o,updateScheduledList()); break;
+    default:
+	return MythThemedDialog::qt_invoke( _id, _o );
+    }
+    return TRUE;
+}
+
+bool WelcomeDialog::qt_emit( int _id, QUObject* _o )
+{
+    return MythThemedDialog::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool WelcomeDialog::qt_property( int id, int f, QVariant* v)
+{
+    return MythThemedDialog::qt_property( id, f, v);
+}
+
+bool WelcomeDialog::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/abs/core/mythinstall/MythVantage-app/mythbeselect/mythberestart.pro b/abs/core/mythinstall/MythVantage-app/mythbeselect/mythberestart.pro
new file mode 100755
index 0000000..d2ebce9
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythbeselect/mythberestart.pro
@@ -0,0 +1,47 @@
+MYTHPATH="/data/LinHES-PKGBUILD/abs/core-testing/mythtv/stable/mythtv/src/mythtv-0.21"
+
+
+
+
+include ( $$MYTHPATH/libs/libmyth/mythconfig.mak)
+include ( $$MYTHPATH/settings.pro)
+#include ( $$MYTHPATH/programs-libs.pro)
+
+INCLUDEPATH += $$MYTHPATH $$MYTHPATH/libs/ $$MYTHPATH/libs/libmyth $$MYTHPATH/libs/libmythtv
+INCLUDEPATH += $$MYTHPATH/libs/libavutil $$MYTHPATH/libs/libavformat $$MYTHPATH/libs/libavcodec
+INCLUDEPATH += $$MYTHPATH/libs/libmythupnp $$MYTHPATH/libs/libmythui
+INCLUDEPATH += $$MYTHPATH/libs/libmythlivemedia
+
+LIBS += -L$$MYTHPATH/libs/libmyth -L$$MYTHPATH/libs/libmythtv
+LIBS += -L$$MYTHPATH/libs/libavutil -L$$MYTHPATH/libs/libavcodec -L$$MYTHPATH/libs/libavformat
+LIBS += -L$$MYTHPATH/libs/libmythfreemheg
+LIBS += -L$$MYTHPATH/libs/libmythui
+LIBS += -L$$MYTHPATH/libs/libmythupnp
+LIBS += -L$$MYTHPATH/libs/libmythlivemedia
+
+LIBS += -lmythtv-$$LIBVERSION -lmythavformat-$$LIBVERSION
+LIBS += -lmythavutil-$$LIBVERSION -lmythavcodec-$$LIBVERSION
+LIBS += -lmythfreemheg-$$LIBVERSION
+LIBS += -lmythupnp-$$LIBVERSION
+LIBS += -lmythlivemedia-$$LIBVERSION
+LIBS += -lmyth-$$LIBVERSION -lmythui-$$LIBVERSION $$EXTRA_LIBS
+
+
+
+TEMPLATE = app
+CONFIG += thread
+TARGET = mythbeselect
+target.path = $${PREFIX}/bin
+
+INSTALLS = target
+
+uifiles.path = $${PREFIX}/share/mythtv/themes/default
+uifiles.files = install-ui.xml images/*.png
+
+INSTALLS += uifiles
+
+QMAKE_CLEAN += $(TARGET)
+
+# Input
+HEADERS += installdialog.h
+SOURCES += main.cpp installdialog.cpp
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/autocard.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/autocard.cpp
new file mode 100755
index 0000000..cfd7fb3
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/autocard.cpp
@@ -0,0 +1,182 @@
+//#include "libmyth/mythdbcon.h"
+#include "mythdbcon.h"
+#include <mythtv/mythdbcon.h>
+#include "autocard.h"
+#include <stdlib.h>
+
+AutoCard::AutoCard(void) :
+    listbox(new ListBoxSetting(this))
+{
+    listbox->setLabel(tr("Cards"));
+    addChild(listbox);
+}
+void AutoCard::popup_menu(void)
+{
+    QString name = listbox->getValue();
+//     //cout << "in popup" <<  name << endl;
+    QString uniqid =  name.section(' ', -1);
+    QString description = name.section('*',-3,-3);
+    description = description.section('.',1);
+    description = description.stripWhiteSpace();
+//     //cout << uniqid << endl;
+//     //cout << "descriptn" << endl;
+//     //cout << description << endl;
+    if (name.isEmpty() || name == "Default")
+        return;
+
+    QString message = tr("Cardme:") +
+                      QString("\n'%1'?").arg(name);
+
+    DialogCode  value = MythPopupBox::Show2ButtonPopup(GetMythMainWindow(),
+                        "", message,
+                        tr("Add Card"),
+                        tr("Do not Add"), kDialogCodeButton0);
+
+    if ( value == kDialogCodeButton1)
+    {
+        MSqlQuery query(MSqlQuery::InitCon());
+        query.prepare("update autocard set devicestatus ='unused' where uniqid=:UNIQID and description=:DESCRIPTION;");
+        query.bindValue(":UNIQID",uniqid );
+        query.bindValue(":DESCRIPTION",description );
+        //FINDME
+        //      if (!query.exec())
+        //        MythContext::DBError("Autocard::popup", query);
+
+        int lastIndex = listbox->getValueIndex(name);
+        lastValue = "";
+        load();
+        listbox->setValue(lastIndex);
+    }
+    else if (value == kDialogCodeButton0)
+    {
+        MSqlQuery query(MSqlQuery::InitCon());
+        query.prepare("update autocard set devicestatus ='will-add' where uniqid=:UNIQID and description=:DESCRIPTION;");
+        query.bindValue(":UNIQID",uniqid );
+        query.bindValue(":DESCRIPTION",description );
+
+//FNDME
+//         if (!query.exec())
+//             MythContext::DBError("Autocard::popup", query);
+
+        int lastIndex = listbox->getValueIndex(name);
+        lastValue = "";
+        load();
+        listbox->setValue(lastIndex);
+
+
+
+
+    }
+
+
+    listbox->setFocus();
+}
+
+
+
+QStringList AutoCard::GetNames(void)
+{
+    QStringList names;
+    QString device;
+    QString description;
+    QString displayname ;
+    QString status ;
+    QString uniqid;
+    MSqlQuery query(MSqlQuery::InitCon());
+    query.prepare("SELECT dev,description,uniqid,devicestatus FROM autocard  order by uniqid");
+    if (query.exec() && query.isActive() && query.size() > 0)
+    {
+        while (query.next())
+        {
+            device=query.value(0).toString();
+            description=query.value(1).toString();
+            uniqid=query.value(2).toString();
+            status=query.value(3).toString();
+            //displayname=device;
+            displayname=".     ";
+            displayname.append(description);
+            displayname.append(" * ");
+            displayname.append(status);
+            displayname.append(" * ");
+
+            displayname.append(uniqid);
+            names << displayname  ;
+        }
+
+        return names;
+    }
+}
+
+void AutoCard::open(QString name)
+{
+    lastValue = name;
+    bool created = false;
+    //cout << name << endl;
+    if (name == "Mark all cards for addition")
+    {
+        //cout <<"updating all cards" << endl;
+        MSqlQuery query(MSqlQuery::InitCon());
+        query.prepare("update autocard set devicestatus='will-add' where devicestatus='unused' order by uniqid");
+        query.exec();
+    }
+    else if ( name == "Perform actions" )
+    {
+        // write udev rules and reload udev
+
+        system ("sudo autocard.py -w -i");
+        system ("sudo autocard.py -r");
+
+    }
+    else if ( name == "Exit" )
+    {
+        // write udev rules and reload udev
+        exit(0);
+    }
+    else
+    {
+        popup_menu();
+// bool ok = MythPopupBox::showGetTextPopup(gContext->GetMainWindow(),
+//             tr("Create New Playback Group"),
+//             tr("Enter group name or press SELECT to enter text via the "
+//                "On Screen Keyboard"), name);
+
+
+    }
+
+};
+
+void AutoCard::load(void)
+{
+    listbox->clearSelections();
+
+
+    QStringList names = AutoCard::GetNames();
+    while (!names.isEmpty())
+    {
+        listbox->addSelection(names.front());
+        names.pop_front();
+    }
+    listbox->addSelection("Mark all cards for addition");
+    listbox->addSelection("Perform actions");
+    listbox->addSelection("Exit");
+    listbox->setValue(lastValue);
+
+}
+
+
+int AutoCard::exec(void)
+{
+    while (ConfigurationDialog::exec() == QDialog::Accepted)
+        open(listbox->getValue());
+
+    return QDialog::Rejected;
+}
+
+
+MythDialog* AutoCard::dialogWidget(MythMainWindow* parent,
+                                   const char* widgetName)
+{
+    dialog = ConfigurationDialog::dialogWidget(parent, widgetName);
+    connect(dialog, SIGNAL(menuButtonPressed()), this, SLOT(popup_menu()));
+    return dialog;
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/autocard.h b/abs/core/mythinstall/MythVantage-app/mythinstall/autocard.h
new file mode 100755
index 0000000..4948842
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/autocard.h
@@ -0,0 +1,30 @@
+#ifndef AUTOCARD_H
+#define AUTOCARD_H
+#include <mythtv/mythdbcon.h>
+#include "qstringlist.h"
+#include "libmyth/settings.h"
+#include "libmyth/mythwidgets.h"
+
+class MPUBLIC AutoCard : public QObject, public ConfigurationDialog
+{
+    Q_OBJECT
+
+public:
+    AutoCard();
+    virtual int exec(void);
+    virtual void load(void);
+    virtual void save(void) { };
+    virtual void save(QString) { };
+    virtual MythDialog* dialogWidget(MythMainWindow* parent,
+                                     const char* widgetName=0);
+    static QStringList GetNames(void);
+protected slots:
+    void open(QString name);
+    void popup_menu(void);
+
+protected:
+    ListBoxSetting *listbox;
+    QString         lastValue;
+};
+
+#endif
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.cpp
new file mode 100755
index 0000000..7c8f4a2
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.cpp
@@ -0,0 +1,55 @@
+
+using namespace std;
+
+#include <QString>
+
+#include "mythcorecontext.h"
+#include "commandlineparser.h"
+#define MYTH_APPNAME_MYTHINSTALL "mythinstall"
+
+MythInstallCommandLineParser::MythInstallCommandLineParser() :
+    MythCommandLineParser(MYTH_APPNAME_MYTHINSTALL)
+{ LoadArguments(); }
+
+void MythInstallCommandLineParser::LoadArguments(void)
+{
+    addHelp();
+    addVersion();
+    addSettingsOverride();
+    addGeometry();
+    addLogging();
+
+//     add(QStringList( QStringList() << "-s" << "--screen" ), "screen", "",
+//         "List settings screens to show", "");
+
+    add("-s", "screen", "",
+        "Start the frontend at specified jump point.", "");
+
+    add("-r", "readme", "",
+        "Show readme", "");
+
+    add("-H", "help", "",
+            "Show help screen", "");
+
+    add("-Q", "question", "",
+                "Display question with yes/no", "");
+
+    add("-b", "run_mythsetup", "",
+        "Ask to start mythtv setup", "");
+
+    add("-L", "show_lang", "",
+    "On install show lang/country screen", "");
+
+
+
+    //add(QStringList( QStringList() << "-p" << "--prompt" ), "prompt", false,
+                     //         "Always prompt for backend selection.", "");
+
+
+}
+
+QString MythInstallCommandLineParser::GetHelpHeader(void) const
+{
+    return "generic help msg line 34";
+}
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.h b/abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.h
new file mode 100755
index 0000000..dc45adc
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/commandlineparser.h
@@ -0,0 +1,14 @@
+
+#include <QString>
+
+#include "mythcommandlineparser.h"
+
+class MythInstallCommandLineParser : public MythCommandLineParser
+{
+  public:
+    MythInstallCommandLineParser();
+    void LoadArguments(void);
+  protected:
+    QString GetHelpHeader(void) const;
+};
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.cpp
new file mode 100755
index 0000000..22d784f
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.cpp
@@ -0,0 +1,157 @@
+#include "mythuihelper.h"
+#include "settings.h"
+#include "compat-mv.h"
+
+
+void ImageSelectSetting::addImageSelection(const QString& label,
+                                           QImage* image,
+                                           QString value,
+                                           bool select) {
+    images.push_back(image);
+    addSelection(label, value, select);
+}
+
+ImageSelectSetting::~ImageSelectSetting()
+{
+    Teardown();
+}
+
+void ImageSelectSetting::deleteLater(void)
+{
+    Teardown();
+    SelectSetting::deleteLater();
+}
+
+void ImageSelectSetting::Teardown(void)
+{
+    while (images.size())
+    {
+        QImage *tmp = images.back();
+        images.pop_back();
+        delete tmp;
+    }
+    bxwidget   = NULL;
+    imagelabel = NULL;
+    combo      = NULL;
+}
+
+void ImageSelectSetting::imageSet(int num)
+{
+    if (num >= (int)images.size())
+        return;
+
+    if (!images[current])
+        return;
+
+    QImage temp = *(images[current]);
+    temp = temp.scaled((int)(184 * m_hmult), (int)(138 * m_hmult),
+                        Qt::KeepAspectRatio);
+
+    QPixmap tmppix = QPixmap::fromImage(temp);
+    imagelabel->setPixmap(tmppix);
+}
+
+QWidget* ImageSelectSetting::configWidget(ConfigurationGroup *cg,
+                                          QWidget* parent,
+                                          const char* widgetName)
+{
+    int width = 0, height = 0;
+
+    GetMythUI()->GetScreenSettings(width, m_wmult, height, m_hmult);
+
+    bxwidget = new QWidget(parent);
+    bxwidget->setObjectName(widgetName);
+
+    QBoxLayout *layout = NULL;
+    if (labelAboveWidget)
+    {
+        layout = new QVBoxLayout();
+        bxwidget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,
+                                            QSizePolicy::Maximum));
+    }
+    else
+        layout = new QHBoxLayout();
+
+    layout->setContentsMargins(0,0,0,0);
+    layout->setSpacing(0);
+
+    if (getLabel() != "")
+    {
+        QLabel *label = new QLabel();
+        label->setText(getLabel() + ":");
+        layout->addWidget(label);
+    }
+
+    combo = new MythComboBox(false);
+    layout->addWidget(combo);
+
+    QLabel *testlabel = new QLabel();
+    testlabel->setText("  ");
+    layout->addWidget(testlabel);
+
+    connect(bxwidget, SIGNAL(destroyed(QObject*)),
+            this,     SLOT(widgetDeleted(QObject*)));
+
+    imagelabel = new QLabel();
+    layout->addWidget(imagelabel);
+
+    for (unsigned int i = 0 ; i < images.size() ; ++i)
+        combo->insertItem(labels[i]);
+
+    if (isSet)
+        combo->setCurrentIndex(current);
+    else
+        current = 0;
+
+    if (images.size() != 0 && current < images.size() && images[current])
+    {
+        QImage temp = *(images[current]);
+        temp = temp.scaled((int)(184 * m_hmult), (int)(138 * m_hmult),
+                            Qt::KeepAspectRatio);
+
+        QPixmap tmppix = QPixmap::fromImage(temp);
+        imagelabel->setPixmap(tmppix);
+        imagelabel->setMinimumHeight(tmppix.height());
+    }
+    else
+    {
+        QPixmap tmppix((int)(184 * m_hmult), (int)(138 * m_hmult));
+        tmppix.fill(Qt::black);
+
+        imagelabel->setPixmap(tmppix);
+        imagelabel->setMinimumHeight(tmppix.height());
+    }
+
+    connect(combo, SIGNAL(highlighted(int)), this, SLOT(setValue(int)));
+    connect(combo, SIGNAL(highlighted(int)), this, SLOT(imageSet(int)));
+    connect(combo, SIGNAL(activated(int)), this, SLOT(setValue(int)));
+    connect(combo, SIGNAL(activated(int)), this, SLOT(imageSet(int)));
+
+    connect(this, SIGNAL(selectionsCleared()),
+            combo, SLOT(clear()));
+
+    if (cg)
+        connect(combo, SIGNAL(changeHelpText(QString)), cg,
+                SIGNAL(changeHelpText(QString)));
+
+    bxwidget->setLayout(layout);
+
+    return bxwidget;
+}
+
+void ImageSelectSetting::widgetInvalid(QObject *obj)
+{
+    if (bxwidget == obj)
+    {
+        bxwidget   = NULL;
+        imagelabel = NULL;
+        combo      = NULL;
+    }
+}
+
+void ImageSelectSetting::setHelpText(const QString &str)
+{
+    if (combo)
+        combo->setHelpText(str);
+    SelectSetting::setHelpText(str);
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.h b/abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.h
new file mode 100755
index 0000000..bc2c4cb
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/compat-mv.h
@@ -0,0 +1,43 @@
+#include "settings.h"
+#include "mythstorage.h"
+
+class MPUBLIC ImageSelectSetting: public SelectSetting {
+    Q_OBJECT
+public:
+    ImageSelectSetting(Storage *_storage) :
+            SelectSetting(_storage),
+                    bxwidget(NULL), imagelabel(NULL), combo(NULL),
+                            m_hmult(1.0f), m_wmult(1.0f) { }
+                                virtual QWidget* configWidget(ConfigurationGroup *cg, QWidget* parent,
+                                                              const char* widgetName = 0);
+                                virtual void widgetInvalid(QObject *obj);
+                                virtual void deleteLater(void);
+                                virtual void setHelpText(const QString &str);
+
+                                virtual void addImageSelection(const QString& label,
+                                                               QImage* image,
+                                                               QString value=QString::null,
+                                                               bool select=false);
+
+protected slots:
+    void imageSet(int);
+
+protected:
+    void Teardown(void);
+    virtual ~ImageSelectSetting();
+
+protected:
+    vector<QImage*> images;
+    QWidget *bxwidget;
+    QLabel *imagelabel;
+    MythComboBox *combo;
+    float m_hmult, m_wmult;
+};
+
+
+class MPUBLIC HostImageSelect : public ImageSelectSetting, public HostDBStorage
+{
+public:
+    HostImageSelect(const QString &name) :
+            ImageSelectSetting(this), HostDBStorage(this, name) { }
+};
\ No newline at end of file
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.cpp
new file mode 100755
index 0000000..58804a5
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.cpp
@@ -0,0 +1,319 @@
+#include <unistd.h>
+#include "misc_settings.h"
+#include "mv_common.h"
+//Added by qt3to4:
+
+#include <Q3TextStream>
+#include <unistd.h>
+#include <stdio.h>
+#include <QtNetwork>
+
+#include <stdlib.h>
+#include "mythprogressdialog.h"
+#include "mythsystemlegacy.h"
+
+
+#include "mythuihelper.h"
+
+#include "fileshare.h"
+
+extern  HostParms hostparm;
+using namespace std;
+
+//________________Client (NFS) Screen SETTINGS_________________________
+static HostComboBox *HostHaveCentralNFS()
+{
+    HostComboBox *gc = new HostComboBox("HostHaveCentralNFS");
+    gc->setLabel(QObject::tr("Central NFS Server"));
+    gc->addSelection("no");
+    gc->addSelection("yes") ;
+    gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the master backend. Select no if you are unsure."));
+
+    return gc;
+}
+
+static  HostComboBox *HostCentralNFSIP()
+{
+    HostComboBox *gc = new HostComboBox("HostCentralNFSIP",true);
+    gc->setLabel(QObject::tr("NFS Server"));
+    gc->setHelpText(QObject::tr("Format should be IP:/SHARENAME, For example 192.168.1.6:/media. file:nfsmap will load shares from the nfsmap file."));
+    gc->addSelection("example  ip:share") ;
+    gc->addSelection("file:nfsmap_auto") ;
+    gc->addSelection("file:nfsmap") ;
+    gc->addSelection("silverraid:/raid0/data/media/");
+    gc->addSelection("") ;
+    return gc;
+};
+
+static HostComboBox *HostNFSmountpoint()
+{
+//     #ifdef __MVAPP__
+//     HostComboBox *gc = new HostComboBox("HostNFSmountpoint");
+//     gc->addSelection("/data/storage/central_nfs");
+//     #else
+//     HostComboBox *gc = new HostComboBox("HostNFSmountpoint",true);
+//     gc->addSelection("/myth");
+//     #endif
+
+    HostComboBox *gc = new HostComboBox("HostNFSmountpoint",true);
+    gc->addSelection("/data/storage/central_nfs");
+    gc->setLabel(QObject::tr("Mount Point"));
+    gc->setHelpText(QObject::tr(""));
+    return gc;
+}
+
+static HostCheckBox *HostCentralNFSallhosts()
+{
+    HostCheckBox *gc = new HostCheckBox("HostCentralNFSallhosts");
+    gc->setLabel(QObject::tr("All Hosts Use This Share"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("If checked then all new hosts added to the cluster will try to access the same share."));
+    return gc;
+};
+
+
+
+
+
+ClientNFSSettings::ClientNFSSettings():
+TriggeredConfigurationGroup(false,false,false,true,true,false,false,true)
+{
+    setLabel(QObject::tr("Client NFS configuration"));
+
+    Setting* havenfs = HostHaveCentralNFS();
+    addChild(havenfs);
+    setTrigger(havenfs);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup();
+    QString systemtype = gCoreContext->GetSetting("HostSystemType");
+
+    if  ( systemtype == "Master_backend" )
+    {
+        settings->addChild(HostCentralNFSallhosts());
+    }
+
+
+
+
+
+
+
+    settings->addChild(HostCentralNFSIP());
+    settings->addChild(HostNFSmountpoint());
+
+    addTarget("no", new VerticalConfigurationGroup());
+    addTarget("yes", settings);
+};
+
+
+
+//_______________Client NFS Frame
+FileShareMainFrameClient::FileShareMainFrameClient():
+VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("File Sharing Settings (1/2)"));
+    VerticalConfigurationGroup* fileshareframeclientsettings =
+    new VerticalConfigurationGroup(false, true,false,false);
+
+   ClientNFSSettings *clientnfssettings = new ClientNFSSettings();
+    fileshareframeclientsettings->addChild(clientnfssettings);
+    addChild(fileshareframeclientsettings);
+}
+
+
+//--------------------------------------
+
+static HostCheckBox *HostServiceNFS()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceNFS");
+    gc->setLabel(QObject::tr("File Sharing using NFS"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("If checked, any device on the network can access media via NFS."));
+    return gc;
+};
+static HostCheckBox *HostServiceSamba()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba");
+    gc->setLabel(QObject::tr("File Sharing using SMB (Windows Sharing)"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If checked, any device on the network can access media via Windows SMB file sharing."));
+    return gc;
+};
+
+static HostCheckBox *HostServiceSamba_write()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_write");
+    gc->setLabel(QObject::tr("ReadOnly"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked, remote clients will have write and delete abilities."));
+    return gc;
+};
+
+
+static HostCheckBox *HostServiceSamba_writehome()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_writehome");
+    gc->setLabel(QObject::tr("ReadOnly"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked, remote clients will have write and delete abilities."));
+    return gc;
+};
+
+static HostCheckBox *HostServiceSamba_media()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_media");
+    gc->setLabel(QObject::tr("Share media"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr(" "));
+    return gc;
+};
+
+static HostCheckBox *HostServiceSamba_home()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_home");
+    gc->setLabel(QObject::tr("Share home"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr(" "));
+    return gc;
+};
+
+
+
+static HostComboBox *HostServiceSamba_domain()
+{
+    HostComboBox *gc = new HostComboBox("HostServiceSamba_domain",true);
+    gc->setLabel(QObject::tr("Workgroup"));
+    gc->setHelpText(QObject::tr("Workgroup for Windows SMB shares."));
+    gc->addSelection("WORKGROUP");
+    QString currentitem;
+    QString line;
+    QFile file("/tmp/smbdomainlist");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.startsWith("domain"))
+            {
+                currentitem = line.section( " ", 1, 1 );
+                if ( currentitem != "-" )
+                    gc->addSelection(currentitem);
+            }
+        }
+        file.close();
+    }
+    gc->addSelection("type_workgroup_here");
+    return gc;
+};
+
+class SAMBAsettings: public TriggeredConfigurationGroup {
+public:
+
+    SAMBAsettings():
+    TriggeredConfigurationGroup(false, true, true, true,false, false, true, true) {
+        SetVertical(true);
+        Setting* trigger =  HostServiceSamba() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(2,false,false);
+        //settings->addChild(HostServiceSamba());
+        settings->addChild(HostServiceSamba_media());
+        settings->addChild(HostServiceSamba_write());
+        settings->addChild(HostServiceSamba_home());
+        settings->addChild(HostServiceSamba_writehome());
+        settings->addChild(HostServiceSamba_domain());
+
+        addTarget("0", new GridConfigurationGroup(2,false, false));
+        addTarget("1", settings);
+    };
+};
+
+void smb_busy_box() {
+    system ("nmbscan -d  > /tmp/smbdomainlist & ");
+    QString msgtext="Searching for Windows Workgroups";
+    int return_code;
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,
+                                                       "installbusy");
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+    int progressbar=1;
+    MythProgressDialog *popupProgress = NULL;
+    popupProgress = new MythProgressDialog(msgtext, 50);
+    if (popupProgress)
+    {
+        popupProgress->setProgress(progressbar);
+    }
+
+
+
+    while (  return_code == 0 )
+    {
+
+        progressbar++;
+        popupProgress->setProgress(progressbar);
+        if (progressbar > 50 )
+            progressbar = 10;
+
+        return_code = myth_system("ps -ef|grep nmbscan|grep -v grep > /dev/null");
+        qApp->processEvents ();
+        usleep(900);
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+
+    if (popupProgress)
+    {
+        popupProgress->Close();
+        popupProgress->deleteLater();
+    }
+}
+
+
+//_______________Server NFS Frame
+FileShareMainFrameServer::FileShareMainFrameServer():
+VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("File Sharing Settings (2/2)"));
+
+    VerticalConfigurationGroup* denied =  new VerticalConfigurationGroup(false,false,true,true);
+    TransLabelSetting *deniedlabel = new TransLabelSetting();
+    deniedlabel->setValue("               File sharing is not available for frontend_only systems." );
+    denied->addChild(deniedlabel);
+
+    VerticalConfigurationGroup* fileshare_frame_serversettings =
+        new VerticalConfigurationGroup(false,false,false,false);
+        fileshare_frame_serversettings->addChild(HostServiceNFS());
+        fileshare_frame_serversettings->addChild(new SAMBAsettings);
+
+    hostparm.ThisSystemType     = gCoreContext->GetSetting("HostSystemType");
+    if  (hostparm.ThisSystemType == "Frontend_only" )
+    {
+        addChild(denied);
+    }
+    else
+    {
+        smb_busy_box();
+        addChild(fileshare_frame_serversettings);
+    }
+
+}
+
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.h b/abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.h
new file mode 100755
index 0000000..68be528
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/fileshare.h
@@ -0,0 +1,45 @@
+#include <mythcontext.h>
+#include <unistd.h>
+#include <iostream>
+#include <fstream>
+#include <stdio.h>
+#include "settings.h"
+#include "installsettings.h"
+#include <qsqldatabase.h>
+#include <qsqlquery.h>
+
+#include <stdlib.h>
+#include <cstdlib>
+#include <mythtv/mythdbcon.h>
+#include <qdir.h>
+#include <qapplication.h>
+#include "mythmiscutil.h"
+
+
+
+
+class FileShareMainFrameClient: public VerticalConfigurationGroup {
+public:
+    FileShareMainFrameClient();
+};
+
+
+class FileShareMainFrameServer: public VerticalConfigurationGroup {
+public:
+    FileShareMainFrameServer();
+};
+
+
+
+
+
+
+
+class ClientNFSSettings: public
+TriggeredConfigurationGroup {
+public:
+    ClientNFSSettings();
+
+};
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/infrared.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/infrared.cpp
new file mode 100755
index 0000000..34a2a33
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/infrared.cpp
@@ -0,0 +1,733 @@
+#include <unistd.h>
+#include <stdlib.h>
+#include "infrared.h"
+#include <Q3TextStream>
+
+using namespace std;
+
+extern  HostParms hostparm;
+
+// READS IN REMOTES DESIGNATED AS favorites
+HostRemoteTypeIR_favorites::HostRemoteTypeIR_favorites():
+    HostImageSelect("HostRemoteType_favorites") {
+    setLabel(QObject::tr("Remote"));
+    QString dirtxt;
+    QString previewpath;
+    //scan templates
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/remotes/favorites");
+    QDir remotes_global(dirtxt);
+    remotes_global.setFilter(QDir::Dirs);
+    remotes_global.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil_global = remotes_global.entryInfoList(QDir::Dirs);
+    QString previewpath_global;
+    previewpath_global = dirtxt;
+    for( QFileInfoList::iterator it =  fil_global.begin();
+            it != fil_global.end();
+            ++it )
+    {
+        QFileInfo  &remote = *it;
+        previewpath=dirtxt;
+        previewpath+="/";
+        previewpath+=remote.fileName() ;
+        previewpath+="/preview.jpg" ;
+        QFileInfo preview_global(previewpath);
+        if ( !preview_global.exists() )
+        {
+            continue;
+        }
+        QImage* previewImage = new QImage(preview_global.absFilePath());
+        addImageSelection(remote.fileName(), previewImage);
+    }
+};
+
+// READS IN REMOTES DESIGNATED AS OTHER
+HostRemoteTypeIR_other::HostRemoteTypeIR_other():
+    HostImageSelect("HostRemoteType_other") {
+    setLabel(QObject::tr("Remote"));
+    QString dirtxt;
+    QString previewpath;
+    //scan templates
+
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/remotes/other");
+    QDir remotes_global(dirtxt);
+    remotes_global.setFilter(QDir::Dirs);
+    remotes_global.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil_global = remotes_global.entryInfoList(QDir::Dirs);
+    QString previewpath_global;
+    previewpath_global = dirtxt;
+    for( QFileInfoList::iterator it =  fil_global.begin();
+            it != fil_global.end();
+            ++it )
+    {
+        QFileInfo  &remote = *it;
+        previewpath=dirtxt;
+        previewpath+="/";
+        previewpath+=remote.fileName() ;
+        previewpath+="/preview.jpg" ;
+        QFileInfo preview_global(previewpath);
+        if ( !preview_global.exists() )
+        {
+            continue;
+        }
+        QImage* previewImage = new QImage(preview_global.absFilePath());
+        addImageSelection(remote.fileName(), previewImage);
+    }
+};
+
+
+// READS IN REMOTES DESIGNATED AS hauppauge
+HostRemoteTypeIR_hauppauge::HostRemoteTypeIR_hauppauge():
+    HostImageSelect("HostRemoteType_hauppauge") {
+    setLabel(QObject::tr("Remote"));
+    QString dirtxt;
+    QString previewpath;
+    //scan templates
+
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/remotes/hauppauge");
+    QDir remotes_global(dirtxt);
+    remotes_global.setFilter(QDir::Dirs);
+    remotes_global.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil_global = remotes_global.entryInfoList(QDir::Dirs);
+    QString previewpath_global;
+    previewpath_global = dirtxt;
+    for( QFileInfoList::iterator it =  fil_global.begin();
+            it != fil_global.end();
+            ++it )
+    {
+        QFileInfo  &remote = *it;
+        previewpath=dirtxt;
+        previewpath+="/";
+        previewpath+=remote.fileName() ;
+        previewpath+="/preview.jpg" ;
+        QFileInfo preview_global(previewpath);
+        if ( !preview_global.exists() )
+        {
+            continue;
+        }
+        QImage* previewImage = new QImage(preview_global.absFilePath());
+        addImageSelection(remote.fileName(), previewImage);
+    }
+};
+
+
+
+// READS IN REMOTES DESIGNATED AS ATI
+HostRemoteTypeIR_ATI::HostRemoteTypeIR_ATI():
+    HostImageSelect("HostRemoteType_ATI") {
+    setLabel(QObject::tr("Remote"));
+    QString dirtxt;
+    QString previewpath;
+    //scan templates
+
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/remotes/ATI");
+    QDir remotes_global(dirtxt);
+    remotes_global.setFilter(QDir::Dirs);
+    remotes_global.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil_global = remotes_global.entryInfoList(QDir::Dirs);
+    QString previewpath_global;
+    previewpath_global = dirtxt;
+    for( QFileInfoList::iterator it =  fil_global.begin();
+            it != fil_global.end();
+            ++it )
+    {
+        QFileInfo  &remote = *it;
+        previewpath=dirtxt;
+        previewpath+="/";
+        previewpath+=remote.fileName() ;
+        previewpath+="/preview.jpg" ;
+        QFileInfo preview_global(previewpath);
+        if ( !preview_global.exists() )
+        {
+            continue;
+        }
+        QImage* previewImage = new QImage(preview_global.absFilePath());
+        addImageSelection(remote.fileName(), previewImage);
+    }
+};
+
+
+
+// READS IN REMOTES DESIGNATED AS USER
+HostRemoteTypeIR_user::HostRemoteTypeIR_user():
+    HostImageSelect("HostRemoteType_user") {
+    setLabel(QObject::tr("Remote"));
+    QString dirtxt;
+    QString previewpath;
+    //scan home dir  $HOME/remotes
+    dirtxt=QDir::homePath() ;
+    dirtxt.append("/remotes");
+
+    QDir remotes_global(dirtxt);
+    remotes_global.setFilter(QDir::Dirs);
+    remotes_global.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil_global = remotes_global.entryInfoList(QDir::Dirs);
+    QString previewpath_global;
+    previewpath_global = dirtxt;
+    int count = 0;
+    for( QFileInfoList::iterator it =  fil_global.begin();
+            it != fil_global.end();
+            ++it )
+    {
+        QFileInfo  &remote = *it;
+        previewpath=dirtxt;
+        previewpath+="/";
+        previewpath+=remote.fileName() ;
+        previewpath+="/preview.jpg" ;
+        QFileInfo preview_global(previewpath);
+        if ( !preview_global.exists() )
+        {
+            continue;
+        }
+        QImage* previewImage = new QImage(preview_global.absFilePath());
+        addImageSelection(remote.fileName(), previewImage);
+        count++;
+    }
+    QFileInfo preview_global(previewpath);
+    QImage* previewImage = new QImage(preview_global.absFilePath());
+    if ( count == 0 )
+        addImageSelection("none found", previewImage);
+
+};
+
+
+
+
+
+static HostComboBox *HostReceiverType()
+{
+    HostComboBox *gc = new HostComboBox("HostReceiverType");
+    gc->setLabel(QObject::tr("Receiver"));
+    gc->addSelection("Default");
+    gc->addSelection("tinker");
+    gc->addSelection("serial");
+    gc->addSelection("streamzap");
+    gc->addSelection("mce");
+    //gc->addSelection("imon");
+    gc->addSelection("Hauppauge");
+    gc->addSelection("hd_pvr");
+    gc->addSelection("CommandIR");
+    gc->addSelection("iguanaIR-usb");
+    gc->addSelection("SiliconDust_HDHR");
+
+    gc->setHelpText(QObject::tr("The type of infrared receiver used.  Default will use ALL remote devices found."));
+    gc->setValue("Default");
+    return gc;
+};
+
+
+
+static HostComboBox *HostSerialPortlirc()
+{
+    HostComboBox *gc = new HostComboBox("HostSerialPortlirc",false);
+    gc->setLabel(QObject::tr("Serial Port"));
+    gc->addSelection("ttyS0");
+    gc->addSelection("ttyS1");
+    gc->addSelection("ttyS2");
+    gc->addSelection("ttyS3");
+    gc->setHelpText(QObject::tr("Serial port with the lirc receiver or transmitter"));
+    return gc;
+}
+
+static HostComboBox *HostHDHRlirc_device()
+{
+    QString temphdhr;
+    temphdhr =  gCoreContext->GetSetting("HostHDHRlirc_device");
+    MSqlQuery query(MSqlQuery::InitCon());
+    query.prepare( "delete from settings where  hostname=:HOSTNAME  and value = 'HostHDHRlirc_device';  "  );
+    query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+    query.exec();
+
+    HostComboBox *gc = new HostComboBox("HostHDHRlirc_device",false);
+    system ("hdhomerun_config discover > /tmp/.hdhrdiscover");
+    gc->setLabel(QObject::tr("HDHR device"));
+    gc->setHelpText(QObject::tr("HDHomeRun device to use as remote receiver.  Identifier listed is the Device id found on the bottom of the HDHomeRun."));
+    QString currentitem;
+    QString line;
+    QFile file("/tmp/.hdhrdiscover");
+    bool foundhdhr;
+    foundhdhr = false;
+
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.startsWith("hdhomerun device"))
+            {
+                currentitem = line.section( " ", 2, 2 );
+                gc->addSelection(currentitem);
+                foundhdhr = true;
+            }
+        }
+        file.close();
+    }
+
+    //These are all hoops to jump through to clear out the device list and save when the combobox isn't touched by the user and they just accept the defaults
+    if ( foundhdhr == false )
+    {
+        gc->clearSelections();
+        gc->addSelection("No devices found");
+        gc->setValue("No devices found");
+        gCoreContext->SaveSetting("HostHDHRlirc_device","No devices found");
+    }
+    else
+    {
+        int findhdhr=gc->findSelection(temphdhr);
+        //JM VERBOSE(VB_IMPORTANT, findhdhr);
+        if ( findhdhr > -1 )
+        {
+            gc->addSelection(temphdhr);
+            gc->setValue(temphdhr);
+            gCoreContext->SaveSetting("HostHDHRlirc_device", temphdhr );
+        }
+        else
+        {
+            gCoreContext->SaveSetting("HostHDHRlirc_device", gc->getValue());
+        }
+    }
+
+    return gc;
+}
+
+
+
+class LIRC_ReceiverSettings: public TriggeredConfigurationGroup {
+public:
+    LIRC_ReceiverSettings():
+        TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        Setting* trigger =  HostReceiverType() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* blanksettings = new GridConfigurationGroup(2,true);
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(2,true);
+        settings->addChild(HostSerialPortlirc());
+
+        ConfigurationGroup* hdhrsettings = new GridConfigurationGroup(2,true);
+        hdhrsettings->addChild(HostHDHRlirc_device());
+
+
+
+        addTarget("Default", blanksettings);
+        addTarget("tinker", blanksettings );
+        addTarget("serial", settings);
+        addTarget("imon", blanksettings );
+        //addTarget("Hauppauge",blanksettings);
+        addTarget("hd_pvr",blanksettings);
+        addTarget("CommandIR", blanksettings);
+        addTarget("iguanaIR-usb", blanksettings);
+        addTarget("mce", blanksettings);
+        addTarget("streamzap", blanksettings);
+        addTarget("SiliconDust_HDHR", hdhrsettings);
+
+    };
+};
+
+static HostComboBox *HostRemotebucket()
+{
+    HostComboBox *gc = new HostComboBox("HostRemotebucket");
+    gc->setLabel(QObject::tr("Remote Class"));
+    gc->addSelection("favorites");
+    gc->addSelection("hauppauge");
+    gc->addSelection("ATI");
+    gc->addSelection("user");
+    gc->addSelection("other");
+
+    gc->setHelpText(QObject::tr("Remote classification. Favorites are remotes fully supported by LinHES."));
+
+    return gc;
+};
+
+
+class Remote_bucket: public TriggeredConfigurationGroup {
+public:
+    Remote_bucket():
+    TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        Setting* trigger =  HostRemotebucket() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* blanksettings = new GridConfigurationGroup(2,true);
+        ConfigurationGroup* favorites_def = new GridConfigurationGroup(2,true);
+            favorites_def-> addChild(new HostRemoteTypeIR_favorites());
+
+        ConfigurationGroup* other_def = new GridConfigurationGroup(2,true);
+            other_def-> addChild(new HostRemoteTypeIR_other());
+
+        ConfigurationGroup* hauppauge_def = new GridConfigurationGroup(2,true);
+            hauppauge_def-> addChild(new HostRemoteTypeIR_hauppauge());
+
+        ConfigurationGroup* ATI_def = new GridConfigurationGroup(2,true);
+            ATI_def-> addChild(new HostRemoteTypeIR_ATI());
+
+
+        ConfigurationGroup* user_def = new GridConfigurationGroup(2,true);
+            user_def-> addChild(new HostRemoteTypeIR_user());
+
+        addTarget("favorites", favorites_def);
+        addTarget("hauppauge", hauppauge_def);
+        addTarget("ATI", ATI_def);
+        addTarget("user", user_def);
+        addTarget("other", other_def);
+
+
+
+
+    };
+};
+
+
+
+
+
+
+
+IRFrame::IRFrame():
+    VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("Remotes Settings"));
+    LIRC_ReceiverSettings *receiversettings = new LIRC_ReceiverSettings();
+    //addChild(new HostRemoteTypeIR());
+    addChild(new Remote_bucket());
+    addChild(receiversettings);
+}
+
+
+//----------------transmit settings--------------
+static HostComboBox *HostTransmitproto_1()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitproto_1",false);
+    gc->setLabel(QObject::tr("Transmitter 1"));
+    gc->addSelection("none");
+    gc->setValue(0);
+    gc->setHelpText(QObject::tr("Remote codes to control a cable box"));
+    QString dirtxt;
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/transmit");
+    QDir transmit(dirtxt);
+    transmit.setFilter(QDir::Dirs);
+    transmit.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil = transmit.entryInfoList(QDir::Dirs);
+    for( QFileInfoList::iterator it =  fil.begin();
+            it != fil.end();
+            ++it )
+    {
+        QFileInfo  &currentitem = *it;
+        //  //JM VERBOSE(VB_IMPORTANT, currentitem.fileName());
+        if ( currentitem.fileName() != ".." && currentitem.fileName() != "." && currentitem.fileName() != "")
+        {
+            gc->addSelection(currentitem.fileName());
+        }
+    }
+    return gc;
+};
+
+
+
+
+
+static HostComboBox *HostTransmitproto_2()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitproto_2",false);
+    gc->setLabel(QObject::tr("Transmitter 2"));
+    gc->addSelection("none");
+    gc->setValue(0);
+    gc->setHelpText(QObject::tr("Remote codes to control a cable box"));
+    QString dirtxt;
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/transmit");
+    QDir transmit(dirtxt);
+    transmit.setFilter(QDir::Dirs);
+    transmit.setSorting(QDir::Name | QDir::IgnoreCase);
+    QFileInfoList fil = transmit.entryInfoList(QDir::Dirs);
+    for( QFileInfoList::iterator it =  fil.begin();
+            it != fil.end();
+            ++it )
+    {
+        QFileInfo  &currentitem = *it;
+        //  //JM VERBOSE(VB_IMPORTANT, currentitem.fileName());
+        if ( currentitem.fileName() != ".." && currentitem.fileName() != "." && currentitem.fileName() != "")
+        {
+            gc->addSelection(currentitem.fileName());
+        }
+    }
+    return gc;
+};
+
+static HostComboBox *HostTransmitproto_3()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitproto_3",false);
+    gc->setLabel(QObject::tr("Transmitter 3"));
+    gc->addSelection("none");
+    gc->setValue(0);
+    gc->setHelpText(QObject::tr("Remote codes to control a cable box"));
+    QString dirtxt;
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/transmit");
+    QDir transmit(dirtxt);
+    transmit.setFilter(QDir::Dirs);
+    QFileInfoList fil = transmit.entryInfoList(QDir::Dirs);
+    for( QFileInfoList::iterator it =  fil.begin();
+            it != fil.end();
+            ++it )
+    {
+        QFileInfo  &currentitem = *it;
+        //  //JM VERBOSE(VB_IMPORTANT, currentitem.fileName());
+        if ( currentitem.fileName() != ".." && currentitem.fileName() != "." && currentitem.fileName() != "")
+        {
+            gc->addSelection(currentitem.fileName());
+        }
+    }
+    return gc;
+};
+
+static HostComboBox *HostTransmitproto_4()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitproto_4",false);
+    gc->setLabel(QObject::tr("Transmitter 4"));
+    gc->addSelection("none");
+    gc->setValue(0);
+    gc->setHelpText(QObject::tr("Remote codes to control a cable box"));
+    QString dirtxt;
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/transmit");
+    QDir transmit(dirtxt);
+    QFileInfoList fil = transmit.entryInfoList(QDir::Dirs);
+    for( QFileInfoList::iterator it =  fil.begin();
+            it != fil.end();
+            ++it )
+    {
+        QFileInfo  &currentitem = *it;
+        //    //JM VERBOSE(VB_IMPORTANT, currentitem.fileName());
+        if ( currentitem.fileName() != ".." && currentitem.fileName() != "." && currentitem.fileName() != "")
+        {
+            gc->addSelection(currentitem.fileName());
+        }
+    }
+    return gc;
+};
+
+
+static HostComboBox *HostBlasterType()
+{
+    HostComboBox *gc = new HostComboBox("HostBlasterType");
+    gc->setLabel(QObject::tr("Blaster"));
+    gc->addSelection("None");
+    gc->addSelection("Receiver");
+    gc->addSelection("serial");
+    gc->addSelection("CommandIR");
+
+    //gc->addSelection("Hauppauge");
+    gc->addSelection("mce");
+    //gc->addSelection("pvr150");
+    gc->addSelection("iguanaIR-usb");
+    gc->addSelection("hd_pvr");
+    gc->setHelpText(QObject::tr("The type of infrared transmitter being used.  Selecting CommandIR or iguanaIR-usb will use that device for both transmitting and receiving.  All other receivers will be disabled."));
+    gc->setValue("None");
+    return gc;
+};
+
+static HostComboBox *HostSerialPort_blasterlirc()
+{
+    HostComboBox *gc = new HostComboBox("HostSerialPort_blasterlirc",false);
+    gc->setLabel(QObject::tr("Serial Port"));
+    gc->addSelection("ttyS0");
+    gc->addSelection("ttyS1");
+    gc->addSelection("ttyS2");
+    gc->addSelection("ttyS3");
+    gc->setHelpText(QObject::tr("Serial port with the lirc transmitter"));
+    return gc;
+}
+
+
+static HostSpinBox *HostTransmitDelay_1()
+{
+    HostSpinBox *gc = new HostSpinBox("HostTransmitDelay_1", 1 , 200, 1, true);
+    gc->setLabel(QObject::tr("Delay"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Amount of delay in tenths of a second between transmits"));
+    return gc;
+}
+static HostComboBox *HostTransmitSend_after_1()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitSend_after_1",false);
+    gc->setLabel(QObject::tr("Key:"));
+    gc->addSelection("Enter");
+    gc->addSelection("Select");
+    gc->setHelpText(QObject::tr("Name of the key to send after transmitting the numbers.  For example Enter or Select"));
+    return gc;
+}
+
+static HostSpinBox *HostTransmitDelay_2()
+{
+    HostSpinBox *gc = new HostSpinBox("HostTransmitDelay_2", 1 , 200, 1, true);
+    gc->setLabel(QObject::tr("Delay"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Amount of delay in tenths of a second between transmits"));
+    return gc;
+}
+static HostComboBox *HostTransmitSend_after_2()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitSend_after_2",false);
+    gc->setLabel(QObject::tr("Key:"));
+    gc->addSelection("Enter");
+    gc->addSelection("Select");
+    gc->setHelpText(QObject::tr("Name of the key to send after transmitting the numbers.  For example Enter or Select"));
+    return gc;
+}
+
+
+static HostSpinBox *HostTransmitDelay_3()
+{
+    HostSpinBox *gc = new HostSpinBox("HostTransmitDelay_3", 1 , 200, 1, true);
+    gc->setLabel(QObject::tr("Delay"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Amount of delay in tenths of a second between transmits"));
+    return gc;
+}
+static HostComboBox *HostTransmitSend_after_3()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitSend_after_3",false);
+    gc->setLabel(QObject::tr("Key:"));
+    gc->addSelection("Enter");
+    gc->addSelection("Select");
+    gc->setHelpText(QObject::tr("Name of the key to send after transmitting the numbers.  For example Enter or Select"));
+    return gc;
+}
+
+
+static HostSpinBox *HostTransmitDelay_4()
+{
+    HostSpinBox *gc = new HostSpinBox("HostTransmitDelay_4", 1 , 200, 1, true);
+    gc->setLabel(QObject::tr("Delay"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Amount of delay in tenths of a second between transmits"));
+    return gc;
+}
+static HostComboBox *HostTransmitSend_after_4()
+{
+    HostComboBox *gc = new HostComboBox("HostTransmitSend_after_4",false);
+    gc->setLabel(QObject::tr("Key:"));
+    gc->addSelection("Enter");
+    gc->addSelection("Select");
+    gc->setHelpText(QObject::tr("Name of the key to send after transmitting the numbers.  For example Enter or Select"));
+    return gc;
+}
+
+
+
+
+
+
+
+class LIRC_BlasterSettings: public TriggeredConfigurationGroup {
+public:
+    LIRC_BlasterSettings():
+        TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        Setting* trigger =  HostBlasterType() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* blanksettings = new GridConfigurationGroup(2,true);
+
+        ConfigurationGroup* transmit_1 = new GridConfigurationGroup(3,true);
+            transmit_1->addChild(HostTransmitproto_1());
+            transmit_1->addChild(HostTransmitDelay_1());
+            //transmit_1->addChild(HostTransmitSend_after_1());
+
+        ConfigurationGroup* transmit_2 = new GridConfigurationGroup(3,true);
+            transmit_2->addChild(HostTransmitproto_2());
+            transmit_2->addChild(HostTransmitDelay_2());
+            //transmit_2->addChild(HostTransmitSend_after_2());
+
+
+        ConfigurationGroup* transmit_3 = new GridConfigurationGroup(3,true);
+            transmit_3->addChild(HostTransmitproto_3());
+            transmit_3->addChild(HostTransmitDelay_3());
+            //transmit_3->addChild(HostTransmitSend_after_3());
+
+        ConfigurationGroup* transmit_4 = new GridConfigurationGroup(3,true);
+            transmit_4->addChild(HostTransmitproto_4());
+            transmit_4->addChild(HostTransmitDelay_4());
+            //transmit_4->addChild(HostTransmitSend_after_4());
+
+        ConfigurationGroup* CommandIRsettings = new GridConfigurationGroup(1,true);
+            CommandIRsettings->addChild(transmit_1);
+            CommandIRsettings->addChild(transmit_2);
+            CommandIRsettings->addChild(transmit_3);
+            CommandIRsettings->addChild(transmit_4);
+
+        ConfigurationGroup* mcesettings = new GridConfigurationGroup(1,true);
+            mcesettings->addChild(transmit_1);
+            mcesettings->addChild(transmit_2);
+
+        ConfigurationGroup* serial_settings = new GridConfigurationGroup(1,true);
+            serial_settings->addChild(HostSerialPort_blasterlirc());
+            serial_settings->addChild(transmit_1);
+
+        addTarget("None", blanksettings);
+        addTarget("Receiver", transmit_1);
+        addTarget("Serial", serial_settings);
+        addTarget("CommandIR", CommandIRsettings);
+        //addTarget("pvr150",blanksettings);
+        addTarget("hd_pvr",transmit_1);
+        addTarget("mce",mcesettings);
+        addTarget("iguanaIR-usb",mcesettings);
+//        addTarget("tinker", blanksettings );
+    };
+};
+
+IR_TransmitFrame::IR_TransmitFrame():
+    VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("Blaster Settings"));
+    LIRC_BlasterSettings *blastersettings = new LIRC_BlasterSettings();
+    addChild(blastersettings);
+}
+
+//------------------LCD settings-------------
+
+
+
+static HostComboBox *HostLCDType()
+{
+    HostComboBox *gc = new HostComboBox("HostLCDType",false);
+    gc->setLabel(QObject::tr("LCD/VFD model"));
+    gc->addSelection("no_lcd");
+    gc->addSelection("tinker");
+    gc->setValue(0);
+    gc->setHelpText(QObject::tr("VFD or LCD"));
+    QString dirtxt;
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/LCD");
+    QDir transmit(dirtxt);
+    transmit.setFilter(QDir::Dirs);
+    QFileInfoList fil = transmit.entryInfoList(QDir::Dirs);
+    for( QFileInfoList::iterator it =  fil.begin();
+            it != fil.end();
+            ++it )
+    {
+        QFileInfo  &currentitem = *it;
+        //JM VERBOSE(VB_IMPORTANT, currentitem.fileName());
+        if ( currentitem.fileName() != ".." && currentitem.fileName() != "." && currentitem.fileName() != "")
+        {
+            gc->addSelection(currentitem.fileName());
+        }
+    }
+    return gc;
+};
+
+LCDFrame::LCDFrame():
+    VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("LCD Settings"));
+    addChild(HostLCDType());
+}
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/infrared.h b/abs/core/mythinstall/MythVantage-app/mythinstall/infrared.h
new file mode 100755
index 0000000..e11c49d
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/infrared.h
@@ -0,0 +1,67 @@
+#include <mythcontext.h>
+#include <unistd.h>
+#include <iostream>
+#include <fstream>
+#include <stdio.h>
+#include "settings.h"
+#include "installsettings.h"
+#include <qsqldatabase.h>
+#include <qsqlquery.h>
+
+#include <stdlib.h>
+#include <cstdlib>
+#include <mythtv/mythdbcon.h>
+#include <qdir.h>
+#include <qapplication.h>
+#include "mythmiscutil.h"
+
+class IRFrame: public VerticalConfigurationGroup {
+public:
+    IRFrame();
+};
+
+
+class HostRemoteTypeIR_favorites: public HostImageSelect {
+public:
+    HostRemoteTypeIR_favorites();
+};
+
+class HostRemoteTypeIR_other: public HostImageSelect {
+public:
+    HostRemoteTypeIR_other();
+};
+
+class HostRemoteTypeIR_hauppauge: public HostImageSelect {
+public:
+    HostRemoteTypeIR_hauppauge();
+};
+
+class HostRemoteTypeIR_ATI: public HostImageSelect {
+public:
+    HostRemoteTypeIR_ATI();
+};
+
+
+class HostRemoteTypeIR_user: public HostImageSelect {
+public:
+    HostRemoteTypeIR_user();
+};
+
+
+class IR_TransmitFrame: public VerticalConfigurationGroup {
+public:
+    IR_TransmitFrame();
+
+};
+
+class LCDFrame: public VerticalConfigurationGroup {
+public:
+    LCDFrame();
+
+};
+
+
+
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/install-ui.xml b/abs/core/mythinstall/MythVantage-app/mythinstall/install-ui.xml
new file mode 100755
index 0000000..c03d962
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/install-ui.xml
@@ -0,0 +1,148 @@
+<mythuitheme>
+
+    <window name="welcome_screen">
+      <!-- <font name="title" face="Arial">
+           <color>#ffff00</color>
+           <dropcolor>#000000</dropcolor>
+           <size>24</size>
+           <shadow>3,3</shadow>
+           <bold>yes</bold>
+       </font>
+
+       <font name="time" face="Arial">
+            <color>#9999cc</color>
+            <size>18</size>
+            <bold>yes</bold>
+       </font>
+
+       <font name="label" face="Arial">
+            <color>#ffff00</color>
+            <dropcolor>#000000</dropcolor>
+            <size>18</size>
+            <shadow>3,3</shadow>
+            <bold>yes</bold>
+       </font>
+
+       <font name="info" face="Arial">
+            <color>#ffffff</color>
+            <size>18</size>
+            <bold>yes</bold>
+       </font>
+
+       <font name="biginfo" face="Arial">
+	       <color>#ffffff</color>
+	       <size>50</size>
+	       <bold>yes</bold>
+       </font>
+       <font name="warning" face="Arial">
+            <color>#ff0000</color>
+            <dropcolor>#000000</dropcolor>
+            <size>16</size>
+            <shadow>2,2</shadow>
+            <bold>yes</bold>
+       </font>
+
+       <font name="buttons" face="Arial">
+            <color>#ffff00</color>
+            <size>14</size>
+            <bold>yes</bold>
+       </font>
+       <font name="tinyinfo" face="Arial">
+           <color>#9999cc</color>
+           <size>12</size>
+           <bold>no</bold>
+       </font>-->
+
+        <textarea name="title" from="basetextarea">
+            <area>50,10,700,40</area>
+            <font>title</font>
+            <align>allcenter</align>
+            <value>Welcome to MythVantage!</value>
+        </textarea>
+
+
+            <textarea name="time_text" draworder="0" align="right">
+                <multiline>no</multiline>
+                <font>time</font>
+                <area>660,520,110,30</area>
+                <value></value>
+            </textarea>
+
+            <textarea name="date_text" >
+                <multiline>yes</multiline>
+                <font>warning</font>
+                <area>20,55,740,100</area>
+                <value></value>
+                <align>allcenter</align>
+            </textarea>
+
+            <!--
+                current myth status
+            -->
+
+            <textarea name="status_text">
+                <multiline>yes</multiline>
+                <font>info</font>
+                <area>20,300,760,60</area>
+                <value></value>
+                <align>center</align>
+            </textarea>
+
+            <!--
+                current recordings status
+            -->
+
+            <textarea name="recording_label" draworder="1" align="center">
+                <font>label</font>
+                <area>20,140,760,30</area>
+                <!--<value>Percent Complete </value>-->
+                 <value></value>
+            </textarea>
+
+            <textarea name="recording_text">
+                <multiline>yes</multiline>
+                <font>biginfo</font>
+                <area>20,140,760,150</area>
+                <value></value>
+                <align>allcenter</align>
+            </textarea>
+
+            <textarea name="scheduled_label" draworder="1" align="center">
+                <font>label</font>
+                <area>20,320,760,30</area>
+                <value></value>
+            </textarea>
+
+            <textarea name="scheduled_text">
+                <multiline>yes</multiline>
+                <font>biginfo</font>
+                <area>20,400,760,120</area>
+                <value></value>
+                <align>allcenter</align>
+            </textarea>
+
+            <textarea name="mythvantage_text">
+                <multiline>no</multiline>
+                <font>tinyinfo</font>
+                <area>20,540,760,30</area>
+                <value></value>
+                <align>right</align>
+            </textarea>
+            <imagetype name="logo">
+                <position>10,10</position>
+                <preserveaspect>true</preserveaspect>
+                <crop>x,y,w,h</crop>
+                <filepattern low="0" high="3000">/usr/MythVantage/logos/logo-%1.png</filepattern>
+                <delay>5000</delay>
+            </imagetype>
+
+            <imagetype name="logo1">
+                <position>550,10</position>
+                <filename>/usr/MythVantage/logos/</filename>
+                <preserveaspect>true</preserveaspect>
+                <crop>x,y,w,h</crop>
+            </imagetype>
+
+    </window>
+
+</mythuitheme>
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/install_proxy.sh b/abs/core/mythinstall/MythVantage-app/mythinstall/install_proxy.sh
new file mode 100755
index 0000000..a1a722e
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/install_proxy.sh
@@ -0,0 +1,353 @@
+#!/bin/bash
+disk=$2
+rootfs=$3
+rootsize=$4
+datafs=$5
+datasize=$6
+swapsize=$7
+mountpoint="/new_boot"
+run=/root/install_functions.sh
+. /etc/systemconfig 2>/dev/null
+ 
+
+progress () {
+mypercent=`echo "$1" | cut -d. -f1`
+if [  x$mypercent = x ]
+then
+echo "" > /tmp/.install_percent
+else
+echo "${mypercent}% complete" > /tmp/.install_percent
+fi
+
+
+}
+
+full_install () {
+    if [ -f /tmp/.this_is_upgrade ]
+    then
+        rm /tmp/.this_is_upgrade
+    fi
+    echo "Partitioning $disk" > /tmp/.install_state
+    progress 1
+    sleep 1
+    $run partition_it $disk $rootsize $datasize $swapsize
+
+    echo "Formating $disk" > /tmp/.install_state
+        progress 2
+    sleep 1
+    $run format_it $disk $rootfs $datafs
+
+    echo "Preparing $disk" > /tmp/.install_state
+    progress 3
+    sleep 1
+    $run mount_it $disk
+
+    startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "`
+
+    echo "STARTSIZE=$startsize">/tmp/.startsize.io
+    echo "Installing data" > /tmp/.install_state
+
+    sleep 1
+        $run copy_it $disk ALL
+        $run fstab_fix_it $disk $rootfs $datafs
+
+    progress 99
+    sleep 1
+    $run grub_it $disk
+
+    echo "Configuring system" > /tmp/.install_state
+        progress 100
+        sleep 1
+        cp -f /etc/systemconfig "$mountpoint"/etc
+    #run save syssettings to save settings, then copy to new mountpoint
+        /root/restore_default_settings.sh  -c save -t syssettings -h myhost -d 127.0.0.1
+        SE=/usr/share/templates/settings/syssettings
+        mkdir -p ${mountpoint}$SE
+        cp -rp $SE/*  ${mountpoint}$SE/
+        chown root:mythtv "$mountpoint"/etc/systemconfig
+        chown -R mythtv:mythtv ${mountpoint}$SE
+
+        chmod -R 775   ${mountpoint}$SE
+        chmod 775 "$mountpoint"/etc/systemconfig
+        #copy over any updates that might have occured
+        cp -f /root/*.sh "$mountpoint"/root/
+        chmod -R 755 ${mountpoint}/root
+        cp /etc/mtab "$mountpoint"/etc/mtab
+        chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network
+
+    if  [ $SystemType = "Master_backend" -o $SystemType = "Standalone"  ]
+    then
+            #installing DB to local machine
+
+            chroot "$mountpoint"   /root/install_db_chroot.sh
+    else
+            #update remotedb with this host settings
+            chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t Default
+            chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t syssettings
+            #Run second time
+            chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network
+    fi
+    echo "Done" > /tmp/.install_state
+    $run unmount_it $disk
+}
+
+
+
+
+function upgrade () {
+    touch /tmp/.this_is_upgrade
+
+    if [ ! x$rootfs = "xDo_not_format" ]
+    then
+        echo "Formating $disk" > /tmp/.install_state
+            progress 2
+            sleep 1
+            $run format_it $disk $rootfs NO
+    fi
+
+
+    echo "Preparing $disk" > /tmp/.install_state
+        progress 3
+        sleep 1
+        $run mount_it $disk
+        startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "`
+        echo "STARTSIZE=$startsize">/tmp/.startsize.io
+        echo "Installing data" > /tmp/.install_state
+        sleep 1
+        cp -rf /tmp/etc /new_boot/etc.old
+        cp -rf  /tmp/oss /new_boot/var/lib/oss.old
+        $run copy_it $disk bin.lzm,boot.lzm,etc.lzm,home.lzm,lib.lzm,opt.lzm,root.lzm,sbin.lzm,usr.lzm,var.lzm
+
+        if [  x$rootfs = "xDo_not_format" ]
+        then
+            rootfs=`grep ${disk}1 /tmp/etc/fstab |awk ' { print $3 } '`
+        fi
+            datafs=`grep ${disk}3 /tmp/etc/fstab |awk ' { print $3 } '`
+        $run fstab_fix_it $disk $rootfs $datafs
+
+    echo "Writing boot sector" > /tmp/.install_state
+        progress 99
+        sleep 1
+        $run grub_it $disk
+
+
+    echo "Configuring system" > /tmp/.install_state
+        progress
+        sleep 1
+        cp /etc/mtab "$mountpoint"/etc/mtab
+        cp -f /etc/systemconfig "$mountpoint"/etc
+        cp -f /root/*.sh "$mountpoint"/root/
+        chmod -R 755 ${mountpoint}/root
+        chown root:mythtv "$mountpoint"/etc/systemconfig
+        chmod 775 "$mountpoint"/etc/systemconfig
+        chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network
+    #  chroot "$mountpoint" /root/restore_default_settings.sh restore Default
+        chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t syssettings
+    #Run second time
+        chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network
+    #  fi
+
+    echo "Done" > /tmp/.install_state
+
+    $run unmount_it $disk
+}
+
+
+
+function killdhcp () {
+if [ -f /etc/dhcpc/dhcpcd-eth0.pid ]
+        then
+            pid=`cat /etc/dhcpc/dhcpcd-eth0.pid`
+            kill -9 $pid
+            rm -f /etc/dhcpc/dhcpcd-eth0.pid
+            rm -f /var/run/dhcpcd*
+        fi
+if [ -f /var/run/dhcpcd-eth0.pid ]
+        then
+            pid=`cat /var/rundhcpcd-eth0.pid`
+            kill -9 $pid
+            rm -f /var/run/dhcpcd-eth0.pid*
+        fi
+ip address flush dev eth0
+}
+
+function network_setup () {
+DEVICE=eth0
+    if [ ! -f /etc/systemconfig ]
+    then
+        exit 1
+    fi
+killdhcp
+
+if [ $UseDHCP = 0 ]
+then
+        /sbin/dhcpcd $DEVICE
+        if [ ! $? = 0 ]
+        then
+            exit 2
+        fi
+fi
+
+if [ $UseDHCP = 1 ]
+then
+
+        /sbin/ifconfig $DEVICE $ip
+        /sbin/route add default gw $route
+        echo "nameserver $nameserver" > /etc/resolv.conf
+fi
+
+
+}
+
+function SANE_SYSETTINGS () {
+sed -e '/HOSTrootfstype/d' \
+        -e '/HOSTrootfstype/d' \
+        -e '/HOSTdatafstype/d' \
+        -e '/HOSTOSsize/d'  \
+        -e '/HostUseALLdata/d'  \
+        -e '/HOSTDATAsize/d'    \
+        -e '/HOSTuprootfstype/d'    \
+        -e '/HostUseSWAP/d' \
+        -e '/HOSTSWAPsize/d  ' /tmp/usr/share/templates/settings/syssettings/settings.txt  >  /tmp/settings.new
+    mv  /tmp/settings.new /tmp/usr/share/templates/settings/syssettings/settings.txt
+}
+
+case $1 in
+        full_install_it )
+
+            full_install
+        ;;
+        find_update)
+            #TRY TO mount first partition of drive
+            #copy /etc/systemconfig to live,  import settings into db
+            #umount drive
+            $run mount_it $disk
+                if [ -f /new_boot/etc/systemconfig ]
+                then
+                ###########ADD templates
+                mkdir -p /tmp/usr/share/templates
+                cp -pr /new_boot/usr/share/templates  /tmp/usr/share
+                SANE_SYSETTINGS
+                cp -rp /tmp/usr/share/templates/settings /usr/share/templates
+
+
+                cp /new_boot/etc/systemconfig /etc/systemconfig
+                cp -rf  /new_boot/etc /tmp/etc
+                cp -rf /new_boot/var/lib/oss  /tmp/oss
+
+                /root/restore_default_settings.sh -c restore -t syssettings -h myhost  -d 127.0.0.1
+                fi
+            $run umount_it $disk
+            ;;
+
+        upgrade_it)
+                #"/root/install_proxy.sh upgrade_it " + install_drive + " " + rootfs +  "&"
+                upgrade
+
+            ;;
+        disk_model_it)
+                        model="unknown"
+                            size="xxx"
+                        case $2 in
+
+                            h* )
+                                    model=`cat /proc/ide/$2/model`
+                                    ;;
+                            s*)     model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '`
+                                    ;;
+                        esac
+                                size=`parted /dev/$2  print |grep Disk|awk  ' { print $3 } '  `
+
+
+                                echo ""$model" $size " >/tmp/model
+
+            ;;
+        network_check_it)
+                        #Should never return from check_network
+                        case $2 in
+                                setup_network)  network_setup
+                                ;;
+
+                                check_self)
+                                            myipeth0=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
+                                            ping -c 1 $myipeth0
+                                                    if [ ! $? = 0 ]
+                                                    then
+                                                        exit 3
+                                                        #can't ping yourself
+                                                    fi
+                                ;;
+                                check_gw)
+                                            #check gateway
+                                            mygweth0=`/sbin/route |grep eth0|grep UG|awk '{ print $2}'`
+                                            ping -c 1 $mygweth0
+                                            if [ ! $? = 0 ]
+                                            then
+                                                exit 4
+                                                #can't ping the gw
+                                            fi
+                                ;;
+                                check_ns)
+                                            #check nameserver
+                                                    mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'`
+                                                    ping -c 1 $mydns
+                                                    if [ ! $? = 0 ]
+                                                    then
+                                                        exit 5
+                                                        #can't ping the gw
+                                                    fi
+                                ;;
+                                check_names)
+                                            host google.com
+                                            if [ ! $? = 0 ]
+                                            then
+                                                exit 6
+                                                #can't ping the gw
+                                            fi
+                                ;;
+                            esac
+                        exit 0
+            ;;
+
+
+        * )
+            state=`cat /tmp/.install_state`
+            if  [  x"${state}" =  "xConfiguring system" ]
+            then
+                progress ""
+            else
+        #finding the drive
+                ddrive=`df |  grep $mountpoint | head -n1 | awk -F/ ' { print $3 } ' | cut -d" " -f 1|cut -b1,2,3 `
+                used=`statgrab -M disk.|grep ${ddrive}.write_bytes|cut -d= -f 2|tr -d " "`
+        . /tmp/.startsize.io
+        used=`echo $used-$STARTSIZE|bc`
+        echo $used
+
+        if [ ! x$used = x ]
+            then
+                . /root/.install_size
+                #somehow find if it's an install or update
+                if [ -f /tmp/.this_is_upgrade ]
+                then
+                    total=$UPGRADESIZE
+                else
+                    total=$TOTALSIZE
+                fi
+            percent=`echo "scale=2 ;  ($used/$total) * 100 " |bc `
+            cond2=$(echo "$percent > 100" |bc  )
+            if [ $cond2 -eq 1  ]
+            then
+            percent=100
+            fi
+            cond3=$(echo "$percent < 3" |bc )
+            if [ $cond3 -eq 0   ]
+                then
+                    progress $percent
+                fi
+            fi
+        fi
+        ;;
+esac
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
new file mode 100755
index 0000000..80bd5d5
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.cpp
@@ -0,0 +1,272 @@
+#include <mythcontext.h>
+#include <unistd.h>
+#include "installationtype.h"
+//Added by qt3to4:
+#include <Q3TextStream>
+
+#include <qdir.h>
+#include "mv_common.h"
+
+
+int mythinstalltype (QString  tmp_install_drive)
+{
+
+    Mythinstalltype setting;
+    //FINDME  this is needed to populate the default values and have the triggered config work
+    setting.Load();
+    setting.Save();
+
+    int retc = 1 ;
+    if ( setting.exec() == QDialog::Accepted )
+    {
+        retc = 0;
+    }
+    return retc;
+
+};
+
+static HostComboBox *HOSTinstallationtype()
+{
+    HostComboBox *gc = new HostComboBox("HOSTinstallationtype");
+    gc->setLabel(QObject::tr("Installation Type"));
+    gc->addSelection("Full/Auto") ;
+
+    gc->addSelection("Upgrade");
+
+    //gc->setValue("Full/Auto");
+    gc->setHelpText(QObject::tr("Full install will erase the entire drive and repartition. Upgrade will format only the first parition of the drive. Only LinHES R8.0 or newer can use Upgrade."));
+
+    return gc;
+}
+
+static HostSpinBox *HOSTOSsize()
+{
+#ifdef __MVAPP__
+    HostSpinBox *gc = new HostSpinBox("HOSTOSsize", 2, 15, 1, true);
+#else
+    HostSpinBox *gc = new HostSpinBox("HOSTOSsize", 3, 25, 1, true);
+#endif
+    gc->setLabel(QObject::tr("OS size (GB)"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Amount of space allocated for the root OS."  ));
+
+    return gc;
+}
+
+static HostSpinBox *HOSTDATAsize()
+{
+    HostSpinBox *gc = new HostSpinBox("HOSTDATAsize", 2, 1500, 1, true);
+    gc->setLabel(QObject::tr("Data size (GB)"));
+    gc->setValue(3);
+    gc->setHelpText(QObject::tr(""  ));
+
+    return gc;
+}
+
+static HostSpinBox *HOSTHOMEsize()
+{
+    HostSpinBox *gc = new HostSpinBox("HOSTHOMEsize", 1, 1500, 1, true);
+    gc->setLabel(QObject::tr("Home dir size (GB)"));
+    gc->setValue(3);
+    gc->setHelpText(QObject::tr("Amount of space allocated for the home directories partition. Three to five GB will be sufficient for most people. The home partition will be the same filesystem as the root OS."  ));
+
+    return gc;
+}
+
+
+static HostSpinBox *HOSTDatabasesize()
+{
+    HostSpinBox *gc = new HostSpinBox("HOSTDatabasesize", 1, 20, 1, true);
+    gc->setLabel(QObject::tr("Database partition size (GB)"));
+    gc->setValue(4);
+    gc->setHelpText(QObject::tr("Amount of space allocated for the database partition. Two GB is more then enough for most people. The database partition space will be formatted with the ext3 filesystem."  ));
+
+    return gc;
+}
+
+
+
+
+static HostSpinBox *HOSTSWAPsize()
+{
+    QString currentitem;
+    QString line;
+    QFile file("/proc/meminfo");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        line = t.readLine();
+        if ( line.startsWith("MemTotal:"))
+        {
+            currentitem = line.simplifyWhiteSpace();
+            currentitem = currentitem.section( " ", 1, 1 );
+        }
+    }
+    file.close();
+    bool ok;
+    int mem = currentitem.toInt( &ok, 10 );     // dec == 0, ok == FALSE
+    mem = mem/1024 ;
+    if ( !  ok )
+        mem = 120 ;
+    HostSpinBox *gc = new HostSpinBox("HOSTSWAPsize", 128, 128000, 128, true);
+    gc->setLabel(QObject::tr("Swapspace size (MB)"));
+    gc->setValue(mem);
+    gc->setHelpText(QObject::tr("Amount of space allocated for the swap partition."  ));
+
+    return gc;
+}
+
+static HostCheckBox *HostUseSWAP()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseSWAP");
+    gc->setLabel(QObject::tr("Use swap partition"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Enable or disable the swap partition."));
+    return gc;
+};
+
+static HostCheckBox *HostUseALLdata()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseALLdata");
+    gc->setLabel(QObject::tr("Use all remaining space for data"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("If checked the remaining space on the drive will be used for storage. Otherwise you can set the size of the partition."));
+    return gc;
+};
+
+
+static HostComboBox *HOSTdatafstype()
+{
+    HostComboBox *gc = new HostComboBox("HOSTdatafstype");
+    gc->setLabel(QObject::tr("Data filesystem"));
+    gc->addSelection("ext3") ;
+    gc->addSelection("ext4") ;
+   // gc->addSelection("reiserfs");
+    gc->addSelection("jfs");
+    gc->addSelection("xfs");
+    //gc->addSelection("btrfs");
+
+    gc->setHelpText(QObject::tr("Filesystem type for data storage."));
+
+    return gc;
+}
+
+static HostComboBox *HOSTuprootfstype()
+{
+    HostComboBox *gc = new HostComboBox("HOSTuprootfstype");
+    gc->setLabel(QObject::tr("OS file system"));
+    gc->addSelection("ext3") ;
+    gc->addSelection("ext4") ;
+    gc->addSelection("reiserfs");
+    gc->addSelection("jfs");
+    //gc->addSelection("xfs");
+    //gc->addSelection("btrfs");
+    gc->addSelection("Do_not_format");
+
+    gc->setHelpText(QObject::tr("Filesystem type for OS. "));
+
+    return gc;
+}
+
+static HostComboBox *HOSTrootfstype()
+{
+    HostComboBox *gc = new HostComboBox("HOSTrootfstype");
+    gc->setLabel(QObject::tr("Root filesystem format"));
+    gc->addSelection("ext3") ;
+    gc->addSelection("ext4") ;
+    gc->addSelection("reiserfs");
+    gc->addSelection("jfs");
+    //gc->addSelection("btrfs");
+    //gc->addSelection("xfs");
+
+    gc->setHelpText(QObject::tr("Filesystem type for root OS."));
+
+    return gc;
+}
+
+class USESwap:
+    public TriggeredConfigurationGroup {
+public:
+    USESwap():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+        SetVertical(false);
+        Setting* useswap = HostUseSWAP();
+        addChild(useswap);
+        setTrigger(useswap);
+
+
+        ConfigurationGroup* swapyes = new VerticalConfigurationGroup(false);
+        swapyes->addChild(HOSTSWAPsize());
+        addTarget("1", swapyes );
+        addTarget("0",  new VerticalConfigurationGroup(true));
+    };
+};
+
+class DATAsize:
+    public TriggeredConfigurationGroup {
+public:
+    DATAsize():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+        SetVertical(false);
+        Setting* datasize = HostUseALLdata();
+        addChild(datasize);
+        setTrigger(datasize);
+
+        ConfigurationGroup* alldatano = new VerticalConfigurationGroup(false);
+        alldatano->addChild(HOSTDATAsize());
+        alldatano->addChild(HOSTdatafstype());
+
+
+        ConfigurationGroup* alldatayes = new VerticalConfigurationGroup(false);
+        alldatayes->addChild(HOSTdatafstype());
+
+        addTarget("1", alldatayes);
+        addTarget("0", alldatano);
+    };
+};
+
+
+
+
+class Installationtype:
+    public TriggeredConfigurationGroup {
+public:
+    Installationtype():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+        setLabel(QObject::tr("LinHES Install"));
+        Setting *Mtemplate = HOSTinstallationtype();
+        addChild(Mtemplate);
+        setTrigger(Mtemplate);
+
+        ConfigurationGroup *ospartition = new  GridConfigurationGroup(2,false);
+            ospartition->addChild(HOSTOSsize());
+            ospartition->addChild(HOSTrootfstype());
+            ospartition->addChild(HOSTHOMEsize());
+            ospartition->addChild(HOSTDatabasesize());
+
+        ConfigurationGroup *tupgrade = new VerticalConfigurationGroup(false);
+        tupgrade->addChild(HOSTuprootfstype());
+
+        ConfigurationGroup *tfull = new VerticalConfigurationGroup(false);
+//         tfull->addChild(HOSTOSsize());
+//         tfull->addChild(HOSTrootfstype());
+        tfull->addChild(ospartition);
+        tfull->addChild(new USESwap);
+        tfull->addChild(new DATAsize);
+
+        addTarget("Upgrade",tupgrade );
+        addTarget("Full/Auto", tfull);
+    };
+};
+
+Mythinstalltype::Mythinstalltype()
+{
+    //Reseting the install type to remove "NET"
+    if ( gCoreContext->GetSetting("Hostinstallationtype")  == "NET")
+        gCoreContext->SaveSetting("HOSTinstallationtype","Full/Auto");
+    Installationtype *installationtype = new Installationtype();
+    addChild(installationtype);
+};
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.h b/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.h
new file mode 100755
index 0000000..e043f0a
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installationtype.h
@@ -0,0 +1,11 @@
+#include <settings.h>
+#include "mythdialogs.h"
+
+class Mythinstalltype: public ConfigurationWizard {
+public:
+    Mythinstalltype();
+
+};
+
+int mythinstalltype(QString);
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.cpp
new file mode 100755
index 0000000..ac72a0b
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.cpp
@@ -0,0 +1,1179 @@
+#include <qapplication.h>
+//Added by qt3to4:
+#include <Q3TextStream>
+#include <unistd.h>
+#include <fstream>
+
+#include "mythcontext.h"
+//#include "tv.h"
+#include "uitypes.h"
+#include "installdialog.h"
+#include "installsettings.h"
+#include "installationtype.h"
+#include "mv_common.h"
+#include "mythprogressdialog.h"
+
+#include <stdlib.h>
+
+#include "mythversion.h"
+#include "mythsystemlegacy.h"
+
+#define UPDATE_STATUS_INTERVAL   5000
+#define UPDATE_SCREEN_INTERVAL   5000
+
+
+
+WelcomeDialog::WelcomeDialog(MythScreenStack *parent, const char *name)
+    :MythScreenType(parent, name),
+     m_status_text(NULL),          m_recording_text(NULL), m_scheduled_text(NULL),
+     m_time_text(NULL),      m_date_text(NULL),
+     m_menuPopup(NULL), m_mv_text(NULL)
+
+{
+//     system("rm -f /tmp/.install_state");
+//     system("rm -f /tmp/.install_percent");
+//     system("rm -f /tmp/.install_error");
+    install_drive = "" ;
+    recording_text = "";
+    scheduled_text = "";
+    install_text =  "";
+    version_text = "";
+    I_AM_BUSY = false;
+    WORKING_ON_INSTALL = false;
+    current_hostname = "";
+
+    gCoreContext->addListener(this);
+    m_timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP");
+
+    m_updateStatusTimer = new QTimer(this);
+    connect(m_updateStatusTimer, SIGNAL(timeout()), this,
+            SLOT(updateStatus()));
+    m_updateStatusTimer->start(UPDATE_STATUS_INTERVAL);
+
+    m_updateScreenTimer = new QTimer(this);
+    connect(m_updateScreenTimer, SIGNAL(timeout()), this,
+            SLOT(updateScreen()));
+
+    m_timeTimer = new QTimer(this);
+    connect(m_timeTimer, SIGNAL(timeout()), this,
+            SLOT(updateTime()));
+    m_timeTimer->start(1000);
+
+    reboot_box = NULL;
+    m_menuPopup = NULL;
+    //QTimer::singleShot(6000, this, showPopup());
+
+   // JM
+    QTimer::singleShot(1000, this, SLOT(showPopup()));
+
+}
+
+bool WelcomeDialog::Create(void)
+{
+    bool foundtheme = false;
+
+    // Load the theme for this screen
+    foundtheme = LoadWindowFromXML("install-ui.xml", "welcome_screen", this);
+
+    if (!foundtheme)
+        return false;
+
+    bool err = false;
+    UIUtilE::Assign(this, m_status_text, "status_text", &err);
+    UIUtilE::Assign(this, m_recording_text, "recording_text", &err);
+    UIUtilE::Assign(this, m_scheduled_text, "scheduled_text", &err);
+    UIUtilE::Assign(this, m_time_text, "time_text", &err);
+    UIUtilE::Assign(this, m_date_text, "date_text", &err);
+    UIUtilE::Assign(this, m_mv_text, "mythvantage_text", &err);
+    if (err)
+    {
+        //JM VERBOSE(VB_IMPORTANT, "Cannot load screen 'welcome_screen'");
+        return false;
+    }
+
+    BuildFocusList();
+    updateTime();
+
+    return true;
+}
+
+void WelcomeDialog::shutdownNow(int rc)
+{
+    QString NETBOOT = getenv("NETBOOT");
+    NETBOOT=NETBOOT.stripWhiteSpace();
+//     system("rm -f /tmp/.install_state");
+//     system("rm -f /tmp/.install_percent");
+//     system("rm -f /tmp/.install_error");
+    if (rc == 1)
+        system("/sbin/halt");
+    else
+        system("/sbin/reboot");
+}
+
+void WelcomeDialog::runLIVECD(void)
+{
+    ask_validate_network();
+    if ( runsettings(true) ==  1  )
+    {
+        QString PAINTER = gCoreContext->GetSetting("ThemePainter");
+        QString startFECmd = ("MYTHCONFDIR=/tmp  mythfrontend -O ThemePainter=" + PAINTER   );
+        myth_system(startFECmd.ascii());
+    }
+    else
+    {
+        showPopup();
+    }
+
+
+}
+
+bool WelcomeDialog::keyPressEvent(QKeyEvent *event)
+{
+    bool handled = false;
+    QStringList actions;
+    handled=GetMythMainWindow()->TranslateKeyPress("Welcome", event, actions);
+
+    for (int i = 0; i < actions.size() && !handled; i++)
+    {
+        QString action = actions[i];
+        handled = true;
+
+        if (action == "ESCAPE")
+        {
+            return true; // eat escape key
+        }
+        else if (action == "MENU")
+        {
+            showPopup();
+        }
+        else if (action == "NEXTVIEW")
+        {
+            Close();
+        }
+        else if (action == "STARTXTERM")
+        {
+            QString cmd = gCoreContext->GetSetting("MythShutdownXTermCmd", "");
+            if (!cmd.isEmpty())
+            {
+                QByteArray tmp = cmd.toAscii();
+                system(tmp);
+            }
+        }
+        else
+            handled = false;
+    }
+
+    if (!handled && MythScreenType::keyPressEvent(event))
+        handled = true;
+    return handled;
+}
+
+void WelcomeDialog::closeDialog()
+{
+    Close();
+    exit(0);
+}
+
+
+// void WelcomeDialog::slotPopup()
+// {
+//     showPopup();
+// }
+
+WelcomeDialog::~WelcomeDialog()
+{
+    gCoreContext->removeListener(this);
+    if (m_updateStatusTimer)
+        delete m_updateStatusTimer;
+
+    if (m_updateScreenTimer)
+        delete m_updateScreenTimer;
+
+    if (m_timeTimer)
+        delete m_timeTimer;
+}
+
+void WelcomeDialog::updateTime(void)
+{
+    QString releasefile="/etc/";
+    releasefile.append(RELEASEFILE);
+
+    QString distro_line;
+    QFile file(releasefile);
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        distro_line = t.readLine();
+        file.close();
+    }
+    QString s="";
+    s.append(distro_line);
+    s.append( "\nMythtv source:" );
+    //s.append(MYTH_SOURCE_VERSION);
+    //s.append("  ");
+    s.append(MYTH_SOURCE_PATH);
+    m_date_text->SetText(s);
+}
+
+void WelcomeDialog::updateStatus(void)
+{
+    updateStatusMessage();
+    updateScreen();
+}
+
+void WelcomeDialog::updateScreen(void)
+{
+    QString cmdtxt;
+    cmdtxt=MV_ROOT  ;
+    cmdtxt.append("bin/install_proxy.sh " );
+    system(cmdtxt);
+    recording_text=" ";
+    mythvantage_text=" ";
+    error_text=" ";
+    scheduled_text=" ";
+    QFile mystatus("/tmp/.install_state");
+    QFile mypercent("/tmp/.install_percent");
+    QFile myerror("/tmp/.install_error");
+    QFile mylog("/tmp/mythvantage_install.log");
+    if ( mystatus.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &mystatus );        // use a text stream
+        scheduled_text = t.readLine();
+        mystatus.close();
+    }
+
+    if ( mypercent.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &mypercent );        // use a text stream
+        recording_text = t.readLine();
+        mypercent.close();
+    }
+
+    if ( myerror.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &myerror );        // use a text stream
+        error_text = t.readLine();
+        myerror.close();
+        scheduled_text = error_text;
+        recording_text = "FAILED";
+        WORKING_ON_INSTALL = false;
+    }
+
+    if ( WORKING_ON_INSTALL )
+    {
+        if ( mylog.open( QIODevice::ReadOnly| QIODevice::Text ) )
+        {
+            Q3TextStream t( &mylog );
+            while ( !t.atEnd() )
+            {
+                mythvantage_text=t.readLine();
+            }
+            mylog.close();
+        }
+    }
+    else
+        mythvantage_text="";
+    m_recording_text->SetText(recording_text);
+    m_scheduled_text->SetText(scheduled_text);
+    m_mv_text->SetText(mythvantage_text);
+
+    if ( install_drive != ""  )
+        install_text = "";
+
+    m_status_text->SetText(install_text );
+    m_updateScreenTimer->start(UPDATE_SCREEN_INTERVAL, true);
+    if ( scheduled_text == "Done" )
+    {
+        Reboot_popup () ;
+    }
+    // shows the busy box when configuring the system
+    if ( scheduled_text == "Configuring system")
+    {
+        if  ( ! I_AM_BUSY )
+            busy_box();
+    }
+};
+
+void WelcomeDialog::busy_box(void)
+{
+    QString msgtext = "Please wait, " ;
+    msgtext.append(current_hostname);
+    msgtext.append(" is preparing for life");
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+
+    while (  scheduled_text == "Configuring system" )
+    {
+        qApp->processEvents ();
+        usleep(900);
+        I_AM_BUSY = true;
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+    I_AM_BUSY = false;
+}
+
+void WelcomeDialog::busy_find_oldsettings(void)
+{
+
+     QString msgtext = "Importing old settings" ;
+     MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+     MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,
+                                                        "importsettingsbusy");
+     if (busyPopup->Create())
+     {
+         popupStack->AddScreen(busyPopup, false);
+     }
+     else
+     {
+         delete busyPopup;
+         busyPopup = NULL;
+     }
+
+    int return_code = 0;
+    while (  return_code  == 0 )
+    {
+        qApp->processEvents ();
+        usleep(900);
+        I_AM_BUSY = true;
+        return_code = myth_system("ps -ef|grep install_proxy.sh|grep -v grep > /dev/null");
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+    I_AM_BUSY = false;
+
+}
+
+
+bool WelcomeDialog::updateRecordingList()
+{
+    //JM VERBOSE(VB_IMPORTANT, "updateRecordingList");
+    return true;
+}
+
+bool WelcomeDialog::updateScheduledList()
+{
+    //JM VERBOSE(VB_IMPORTANT, "updateScheduled list");
+    updateStatus();
+    updateScreen();
+    return true;
+}
+
+void WelcomeDialog::updateStatusMessage(void)
+{
+    return ;
+}
+
+void WelcomeDialog::showPopup(void)
+{
+
+//    if (m_menuPopup)
+ //        return;
+//
+//     QString label = tr("MythVantage Menu");
+//     MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+//     m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup");
+//
+//     if (m_menuPopup->Create())
+//         mainStack->AddScreen(m_menuPopup);
+//
+//       m_menuPopup->SetReturnEvent(this, "action");
+
+    MythScreenStack *popupStack = GetMythMainWindow()->GetMainStack();
+
+    m_menuPopup = new MythDialogBox("Menu", popupStack, "actionmenu");
+
+    if (m_menuPopup->Create())
+        popupStack->AddScreen(m_menuPopup);
+
+    m_menuPopup->SetReturnEvent(this, "action");
+
+
+
+
+
+    // This is a bad way to lock the buttons but it works for now.
+    if ( scheduled_text.length() <= 2  )
+    {
+        m_menuPopup->AddButton(tr("Install or Upgrade "),
+                               SLOT(Display_2ndpopup()));
+        m_menuPopup->AddButton(tr("Run MythFrontend"),
+                               SLOT(runLIVECD()));
+        m_menuPopup->AddButton(tr("Exit"),
+                               SLOT(closeDialog()));
+        m_menuPopup->AddButton(tr("Close menu")) ;
+    }
+    else
+    {
+        m_menuPopup->AddButton(tr("Exit"),
+                               SLOT(closeDialog()));
+        m_menuPopup->AddButton(tr("Close menu"));
+    }
+
+}
+//     switch (override_menu)
+//     {
+//         case 2:
+//         case 4:
+//             // shutdown
+//             m_menuPopup->SetReturnEvent(this,"popmenu_shutdown");
+//             m_menuPopup->AddButton(tr("Shutdown"));
+//             break;
+//         case 5:
+//             // reboot
+//             m_menuPopup->SetReturnEvent(this,"popmenu_reboot");
+//             m_menuPopup->AddButton(tr("Reboot"));
+//             break;
+//         case 3:
+//         case 6:
+//             // both
+//             m_menuPopup->SetReturnEvent(this,"popmenu_exit");
+//             m_menuPopup->AddButton(tr("Shutdown"));
+//             m_menuPopup->AddButton(tr("Reboot"));
+//             break;
+//         case 0:
+//         default:
+//             m_menuPopup->SetReturnEvent(this,"popmenu_noexit");
+//             break;
+//     }
+//
+//     m_menuPopup->AddButton(tr("About"));
+//     m_menuPopup->AddButton(tr("Cancel"));
+//
+// }
+
+
+
+
+//     MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+//
+//     m_menuPopup = new MythDialogBox("Menu", popupStack, "actionmenu");
+//
+//     if (m_menuPopup->Create())
+//         popupStack->AddScreen(m_menuPopup);
+//
+//     m_menuPopup->SetReturnEvent(this, "action");
+//     // This is a bad way to lock the buttons but it works for now.
+//     if ( scheduled_text.length() <= 2  )
+//     {
+//         m_menuPopup->AddButton(tr("Install or Upgrade "),
+//                                SLOT(Display_2ndpopup()));
+//         m_menuPopup->AddButton(tr("Run MythFrontend"),
+//                                SLOT(runLIVECD()));
+//         m_menuPopup->AddButton(tr("Exit"),
+//                                SLOT(closeDialog()));
+//         m_menuPopup->AddButton(tr("Close menu")) ;
+//     }
+//     else
+//     {
+//         m_menuPopup->AddButton(tr("Exit"),
+//                                SLOT(closeDialog()));
+//         m_menuPopup->AddButton(tr("Close menu"));
+//     }
+// }
+
+
+QString WelcomeDialog::diskmodel(QString drive ,  QString tsize)
+{
+    string line;
+    QString cmdtxt;
+    cmdtxt=MV_ROOT  ;
+    cmdtxt.append("bin/install_proxy.sh disk_model_it " +  drive + " " + tsize );
+    myth_system(cmdtxt);
+
+    ifstream model("/tmp/model");
+    if (model.is_open())
+        getline (model,line);
+    model.close();
+
+    QString qline( QString::fromStdString( line ) );
+    return qline;
+}
+
+QString WelcomeDialog::findinstallsouce(void)
+{
+    string line;
+    QString currentitem;
+    ifstream  mountfile("/proc/mounts");
+    while (! mountfile.eof() )
+    {
+        getline (mountfile,line);
+        if ( line.empty() )
+            line = "oops didn't find andthing";
+
+        currentitem= ( QString::fromStdString( line ) );
+
+        if ( ! currentitem.contains("/dev"))
+            currentitem="not the right line";
+       // LOG(VB_GENERAL, LOG_ERR, currentitem);
+
+        if  ( currentitem.contains("bootmnt") )
+        {
+            int ndx = line.find(" ");
+            currentitem =QString::fromStdString(line.substr(0,ndx));
+            ndx = currentitem.findRev("/");
+            currentitem = currentitem.mid(ndx+1,3);
+            return currentitem;
+        };
+    }
+};
+
+void WelcomeDialog::showPopup_2(void)
+{
+    MythScreenStack *popupStack = GetMythMainWindow()->GetMainStack();
+
+    m_menuPopup = new MythDialogBox("Select the drive to install to", popupStack, "actionmenu");
+
+    if (m_menuPopup->Create())
+        popupStack->AddScreen(m_menuPopup);
+
+    m_menuPopup->SetReturnEvent(this, "action");
+    QString  currentitem;
+
+    string  sizeitem;
+    QString disksize;
+    string line;
+    bool installsource = false;
+
+    QString NETBOOT = getenv("NETBOOT");
+    NETBOOT=NETBOOT.stripWhiteSpace();
+    if ( NETBOOT   == "YES" )
+        m_menuPopup->AddButton(("Diskless Frontend " ), SLOT(install_net() ) );
+
+    QString  INSTALLSOURCE = findinstallsouce();
+    ifstream partitions("/proc/partitions");
+    if (partitions.is_open())
+    {
+        while (! partitions.eof() )
+        {
+            getline (partitions,line);
+            if ( line.empty() )
+            {
+                line = "oops didn't find anything";
+            }
+            int ndx = line.rfind(" ");
+            ndx = ndx +1;
+            int linelength = line.length();
+            currentitem = QString::fromStdString(line.substr(ndx,linelength));
+            sizeitem = line.substr(0,ndx-1);
+            linelength = sizeitem.length();
+            ndx  = sizeitem.rfind(" ");
+            disksize = QString::fromStdString(sizeitem.substr(ndx+1,linelength));
+
+            if ( currentitem == INSTALLSOURCE  )
+                installsource = true;
+
+            if (! installsource  )
+            {
+                if ( currentitem == "sde" )
+                    m_menuPopup->AddButton(("sde  " + diskmodel(currentitem,disksize)), SLOT(install_sde() ) );
+                if ( currentitem == "sdf" )
+                    m_menuPopup->AddButton(("sdf  " + diskmodel(currentitem,disksize)), SLOT(install_sdf() ) );
+                if ( currentitem == "sdg" )
+                    m_menuPopup->AddButton(("sdg  " + diskmodel(currentitem,disksize)), SLOT(install_sdg() ) );
+                if ( currentitem == "sdh" )
+                    m_menuPopup->AddButton(("sdh  " + diskmodel(currentitem,disksize)), SLOT(install_sdh() ) );
+                if (currentitem == "sda" )
+                    m_menuPopup->AddButton(("sda  " + diskmodel(currentitem,disksize)), SLOT(install_sda() ) );
+                if (currentitem == "sdb" )
+                    m_menuPopup->AddButton(("sdb  " + diskmodel(currentitem,disksize)), SLOT(install_sdb() ) );
+                if (currentitem == "sdc" )
+                    m_menuPopup->AddButton(("sdc  "+ diskmodel(currentitem,disksize)),  SLOT(install_sdc() ) );
+                if (currentitem == "sdd" )
+                    m_menuPopup->AddButton(("sdd  "+ diskmodel(currentitem,disksize)),  SLOT(install_sdd() ) );
+            }
+            installsource = false;
+        }
+    }
+    partitions.close();
+    m_menuPopup->AddButton(tr("Cancel"), SLOT(MAINPopup()));
+}
+
+void WelcomeDialog::GO_popup(QString go_text)
+{
+    DialogCode  retval = MythPopupBox::Show2ButtonPopup(GetMythMainWindow(),
+                         QString("Start the process"),
+                         QObject::tr(go_text),
+                         QObject::tr("Start the process"), QObject::tr("Cancel"), kDialogCodeButton0);
+
+    if ( retval  == kDialogCodeButton0  )
+    {
+        install_it();
+    }
+    else
+    {
+        showPopup();
+    }
+}
+
+
+void WelcomeDialog::Reboot_popup(void)
+{   if (reboot_box)
+        return;
+    QString prompt1;
+    QFile updbstatus("/tmp/.upgrade_db_failed");
+    if ( updbstatus.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        prompt1 = QObject::tr(" ");
+        prompt1.append("\n");
+        prompt1.append("An error occured while attempting to restore the database!");
+        prompt1.append("\n");
+        prompt1.append("The old database could not be restored, so a new database was created");
+        prompt1.append("\n");
+    }
+    else
+        prompt1 = QObject::tr("Ready to go!");
+
+    reboot_box = new DialogBox(GetMythMainWindow(),  prompt1);
+    reboot_box->AddButton(QObject::tr("Reboot"));
+    reboot_box->AddButton(QObject::tr("Power off"));
+
+    int returncode = 0;
+    DialogCode  dcode = reboot_box->exec();
+    reboot_box->deleteLater();
+    if (kDialogCodeButton0 ==  dcode )
+        returncode = 0;
+    if (kDialogCodeButton1 == dcode )
+        returncode = 1;
+    if (kDialogCodeButton2 == dcode )
+        returncode = 2;
+
+    reboot_box = NULL;
+    shutdownNow(returncode);
+}
+
+
+
+void WelcomeDialog::MAINPopup(void)
+{
+//      if (!popup)
+//          return;
+//      popup->hide();
+//     popup->deleteLater();
+    popup = NULL;
+    showPopup();
+
+}
+
+void WelcomeDialog::Display_2ndpopup(void)
+{
+    //JM VERBOSE(VB_GENERAL, "Display_2ndpopup");
+    showPopup_2();
+}
+
+void WelcomeDialog::install_sde(void)
+{
+    install_drive = "sde" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_sdf(void)
+{
+    install_drive = "sdf" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_sdg(void)
+{
+    install_drive = "sdg" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_sdh(void)
+{
+    install_drive = "sdh" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_sda(void)
+{   install_drive = "sda" ;
+    install_generic();
+}
+void WelcomeDialog::install_sdb(void)
+{   install_drive = "sdb" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_sdc(void)
+{   install_drive = "sdc" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_sdd(void)
+{
+    install_drive = "sdd" ;
+    install_generic();
+}
+
+void WelcomeDialog::install_net(void)
+{
+    install_drive = "NET" ;
+    //gCoreContext->ActivateSettingsCache(false);
+    gCoreContext->SaveSetting("HOSTinstallationtype","NET");
+    install_generic();
+}
+
+void WelcomeDialog::write_install_conf(QString rootdisk)
+{
+    //1077
+    QString op;
+    //QString rootdisk;
+    QString rootfs;
+    QString uprootfs;
+    QString rootsize;
+    QString homesize;
+    QString sqlsize;
+    QString usealldata;
+    QString datasize;
+    QString datafs;
+    QString datadisk;
+    QString swapsize;
+    QString useswap;
+
+    op = gCoreContext->GetSetting("HOSTinstallationtype");
+    if ( op == "Full/Auto" )
+        op = "full_install";
+    if ( op == "Upgrade" )
+        op = "upgrade";
+    //rootdisk = install_drive;
+    rootfs = gCoreContext->GetSetting("HOSTrootfstype");
+    uprootfs = gCoreContext->GetSetting("HOSTuprootfstype");
+    rootsize = gCoreContext->GetSetting("HOSTOSsize");
+    homesize = gCoreContext->GetSetting("HOSTHOMEsize");
+    sqlsize = gCoreContext->GetSetting("HOSTDatabasesize");
+
+    //datasize
+    usealldata = gCoreContext->GetSetting("HostUseALLdata");
+    datasize = gCoreContext->GetSetting("HOSTDATAsize");
+    if ( usealldata == "1" )
+        datasize="ALL";
+    else
+        datasize=datasize + "000";
+
+    datafs = gCoreContext->GetSetting("HOSTdatafstype");
+    datadisk = install_drive;
+
+    //swapsize
+    useswap = gCoreContext->GetSetting("HostUseSWAP");
+    swapsize = gCoreContext->GetSetting("HOSTSWAPsize");
+    if ( useswap == "0" )
+        swapsize="NO";
+
+    rootsize=rootsize + "000";
+    homesize=homesize + "000";
+    sqlsize=sqlsize + "000";
+
+    QFile f( "/etc/install_layout" );
+    if( !f.open( IO_WriteOnly  ) )
+        std::cout << "Failed to open file /etc/install_layout." << std::endl;
+    QTextStream myfile( &f );
+
+    myfile << "op="         + op         + "\n";
+    myfile << "rootdisk="   + rootdisk   + "\n";
+    myfile << "rootfs="     + rootfs     + "\n";
+    myfile << "uprootfs="   + uprootfs   + "\n";
+    myfile << "rootsize="   + rootsize   + "\n";
+    myfile << "homesize="   + homesize   + "\n";
+    myfile << "homefs="     + rootfs   + "\n";
+    myfile << "sqlsize="    + sqlsize    + "\n";
+    //myfile << "sqlfs="      + sqlfs     + "\n";
+    myfile << "sqlfs=ext3\n";
+    myfile << "datasize="   + datasize   + "\n";
+    myfile << "datafs="     + datafs     + "\n";
+    myfile << "datadisk="   + datadisk   + "\n";
+    myfile << "swapsize="   + swapsize   + "\n";
+
+    f.close();
+}
+
+
+void WelcomeDialog::install_generic(void)
+{
+    //write_install_conf(install_drive);
+    QString installwarningtext;
+    int runNextSetting;
+    runNextSetting = 1;
+    int tflag;
+    tflag = 0;
+    int retcode;
+    retcode=0;
+    QString installtype;
+    if ( install_drive != "NET")
+        retcode = mythinstalltype(install_drive);
+    if ( retcode == 0 )
+    {
+        installtype = gCoreContext->GetSetting("HOSTinstallationtype");
+        if ( installtype == "Full/Auto" )
+        {
+            //JM VERBOSE(VB_GENERAL, "Full install");
+            runNextSetting = ask_validate_network();
+            installwarningtext="Warning!";
+            installwarningtext.append ("\n");
+            installwarningtext.append ("\n");
+            installwarningtext.append  ("Installation drive (");
+            installwarningtext.append (install_drive);
+            installwarningtext.append  (") is about to be erased.");
+            installwarningtext.append ("\n");
+        }
+        else if ( installtype == "NET")
+        {
+            runNextSetting=0;
+            gCoreContext->SaveSetting("HostSystemType", "Frontend_only");
+            gCoreContext->SaveSetting("HostaccesshostypeSystemtype","0");
+            installwarningtext.append  ("About to install ");
+            installwarningtext.append ("\n");
+            installwarningtext.append (install_drive);
+            // ask for hostname
+            runsettings(false,true,false,false,false,false,false);
+        }
+        else if ( installtype == "Upgrade" )
+        {
+            installwarningtext="Warning!";
+            installwarningtext.append ("\n");
+            installwarningtext.append ("\n");
+            installwarningtext.append  ("OS partition (");
+            installwarningtext.append (install_drive);
+            installwarningtext.append  ("1");
+            installwarningtext.append  (") will be erased.");
+            installwarningtext.append ("\n");
+
+            QString cmdtxt;
+            cmdtxt=MV_ROOT  ;
+            cmdtxt.append("bin/install_proxy.sh find_update " +  install_drive +" &");
+            system(cmdtxt);
+            busy_find_oldsettings();
+            bool flag = false;
+            QString line;
+            QString currentitem;
+            QFile file("/etc/systemconfig");
+            if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+            {
+                Q3TextStream t( &file );        // use a text stream
+                while ( !t.eof() )
+                {
+                    line = t.readLine();
+                    if ( line.startsWith("hostname"))
+                    {
+                        flag=true;
+                        currentitem = line.section( "=", 1, 1 );
+                        current_hostname =  currentitem   ;
+                    }
+                }
+                file.close();
+            }
+            if ( flag )
+            {
+                //check if LinHES-release is 8.0 or newer
+                cout << "searching for LinHES-release" << endl;
+                //look for /tmp/etc/LinHES-release
+                QFile file("/tmp/etc/LinHES-release");
+                if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+                {
+                    Q3TextStream t( &file );        // use a text stream
+                    while ( !t.eof() )
+                    {
+                        line = t.readLine();
+                        if ( line.contains("8.") )
+                        {
+                            tflag = 1;
+                        }
+                    }
+                    file.close();
+                }
+            }
+            if ( tflag == 0 )
+            {
+                //popup install doesn't look like R8
+                MythPopupBox::showOkPopup(
+                    GetMythMainWindow(),
+                    QObject::tr(""),
+                    QObject::tr("The selected disk cannot be upgraded because it is older than LinHES R8.0."));
+                runNextSetting = 1;
+            }
+        }
+    }
+    //run through the system settings
+    if ( runNextSetting == 0 )
+    {
+        //DEfault settings screen for install
+        tflag = runsettings (false , false , true,
+                             true , false, false,
+                             false,true,false, false ,
+                             false, true , false , false ,
+                             false , false, false, true , true,
+                             false);
+    }
+    //else
+    // {
+    //  cancelPopup();
+    //this is the popup after the upgrade
+    // showPopup();
+    // };
+
+    if ( tflag == 1 )
+    {
+        //write out the conf file
+        write_install_conf(install_drive);
+        GO_popup(installwarningtext);
+    }
+    else
+    {
+        showPopup();
+    }
+
+}
+
+void busy_network(void)
+{
+    QString msgtext = "Starting network" ;
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+    int return_code = 0;
+    while (  return_code  == 0 )
+    {
+        qApp->processEvents ();
+        usleep(900);
+        return_code = myth_system("ps -ef|grep install_proxy.sh| grep setup_network |grep -v grep > /dev/null");
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+
+
+}
+
+
+int  WelcomeDialog::ask_validate_network(void)
+{
+    QString pop_text="abc";
+    int retval = 1;
+    while ( retval != 0 )
+    {
+        int settingsrec =  runsettings(false,true,false,false,false,false,false);
+        if ( settingsrec != 1 )
+            return 1;
+        else
+        {
+            MythProgressDialog *network_check = NULL;
+            network_check = new MythProgressDialog(QObject::tr("Please wait while the network is checked."), 7);
+            QString cmdtxt;
+            cmdtxt=MV_ROOT  ;
+            cmdtxt.append("bin/install_proxy.sh network_check_it setup_network &");
+            retval =  system(cmdtxt);
+            busy_network();
+            if (network_check)
+            {
+                network_check->setProgress(2);
+                cmdtxt=MV_ROOT  ;
+                cmdtxt.append("bin/install_proxy.sh network_check_it check_self");
+                retval =  system(cmdtxt);
+                if ( retval != 0 )
+                {
+                    network_check->Close();
+                    pop_text="Could not find myself on the network";
+                }
+            }
+
+            if ( retval == 0)
+            {
+                network_check->setProgress(3);
+                cmdtxt=MV_ROOT  ;
+                cmdtxt.append("bin/install_proxy.sh network_check_it check_gw");
+                retval =  system(cmdtxt);
+                if ( retval != 0 )
+                {
+                    network_check->Close();
+                    pop_text="Could not locate gateway";
+                }
+            }
+
+            if (retval == 0)
+            {
+                network_check->setProgress(4);
+                cmdtxt=MV_ROOT  ;
+                cmdtxt.append("bin/install_proxy.sh network_check_it check_ns");
+                retval =  system(cmdtxt);
+                if ( retval != 0 )
+                {
+                    network_check->Close();
+                    pop_text="Could not locate nameserver";
+                }
+            }
+
+            if (retval == 0)
+            {
+                network_check->setProgress(5);
+                cmdtxt=MV_ROOT  ;
+                cmdtxt.append("bin/install_proxy.sh network_check_it check_names");
+                retval =  system(cmdtxt);
+                if ( retval != 0 )
+                {
+                    network_check->Close();
+                    pop_text="Could not lookup names";
+                }
+            }
+
+            if (retval == 0)
+            {
+                network_check->setProgress(6);
+                cmdtxt=MV_ROOT  ;
+                cmdtxt.append("bin/install_proxy.sh network_check_it host_names");
+                retval =  system(cmdtxt);
+                if ( retval != 0 )
+                {
+                    network_check->Close();
+                    pop_text="Hostname already on the network";
+                }
+            }
+
+            network_check->setProgress(7);
+            if (network_check)
+            {
+                network_check->Close();
+                network_check->deleteLater();
+            }
+
+            if (retval != 0 )
+            {
+                DialogCode  val = MythPopupBox::Show2ButtonPopup(GetMythMainWindow(),  QString(""),  QObject::tr(pop_text),                              QObject::tr("Continue"), QObject::tr("Try again"), kDialogCodeButton0);
+                if (kDialogCodeButton0 == val )
+                    retval = 0;
+            }
+        }
+    }
+    return 0;
+}
+
+
+void WelcomeDialog::install_it(void)
+{
+    QString installtype = gCoreContext->GetSetting("HOSTinstallationtype");
+//     QString rootfs = gCoreContext->GetSetting("HOSTrootfstype");
+//     QString datafs = gCoreContext->GetSetting("HOSTdatafstype");
+//     QString rootsize = gCoreContext->GetSetting("HOSTOSsize");
+//     rootsize=rootsize + "000";
+//     QString usealldata = gCoreContext->GetSetting("HostUseALLdata");
+//     QString datasize = gCoreContext->GetSetting("HOSTDATAsize");
+//     QString uprootfs = gCoreContext->GetSetting("HOSTuprootfstype");
+//     QString useswap = gCoreContext->GetSetting("HostUseSWAP");
+//     QString swapsize = gCoreContext->GetSetting("HOSTSWAPsize");
+    if ( installtype != "Upgrade"  )
+        current_hostname = gCoreContext->GetSetting("HostMyhostname");
+    QString clean_upgrade = getenv("CLEAN_UPGRADE");
+    if ( clean_upgrade == "YES" )
+        current_hostname = gCoreContext->GetSetting("HostMyhostname");
+
+//get the hostname here if upgrade then use previous declarion of hostname
+//     if ( usealldata == "1" )
+//     {
+//         datasize="ALL";
+//     }
+//     else
+//     {
+//         datasize=datasize + "000";
+//     }
+//     if ( useswap == "0" )
+//     {
+//         swapsize="NO";
+//     };
+
+
+    if ( installtype == "Full/Auto" )
+    {
+        QString currentitem;
+        QString line;
+        QFile file("/proc/meminfo");
+        if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+        {
+            Q3TextStream t( &file );        // use a text stream
+            line = t.readLine();
+            if ( line.startsWith("MemTotal:"))
+            {
+                currentitem = line.simplifyWhiteSpace();
+                currentitem = currentitem.section( " ", 1, 1 );
+            }
+        }
+        file.close();
+        bool ok;
+        int mem = currentitem.toInt( &ok, 10 );     // dec == 0, ok == FALSE
+
+
+//         if ( mem >= 500000 )
+//         {
+//             if ((gCoreContext->GetSetting("HostXres"))  == "1280x720" )
+//                 gCoreContext->SaveSetting("Theme", "syth-lacquer-wide");
+//         }
+
+
+        QString cmdtxt=MV_ROOT  ;
+        //cmdtxt.append("bin/install_proxy.sh full_install_it " + install_drive + " " + rootfs + " " + rootsize + " " +  datafs + " " + datasize + " " + swapsize + "&");
+        cmdtxt.append("bin/install_proxy.sh full_install_it &");
+        system(cmdtxt);
+    }
+    else if  ( installtype == "Upgrade" )
+    {
+        QString cmdtxt=MV_ROOT  ;
+        //cmdtxt.append("bin/install_proxy.sh upgrade_it " + install_drive + " " + uprootfs +  "&");
+        cmdtxt.append("bin/install_proxy.sh upgrade_it &");
+        system(cmdtxt);
+    }
+    else if (installtype=="NET")
+    {
+        QString olddb = gCoreContext->GetSetting("HostMysqlserver");
+        QString cmdtxt;
+        cmdtxt=MV_ROOT  ;
+        char localhostname[1024];
+        if (gethostname(localhostname, 1024))
+        {
+            //JM VERBOSE(VB_IMPORTANT,
+                    //"MCP: Error, could not determine host name." + ENO);
+            localhostname[0] = '\0';
+        }
+        QString h;
+        h=localhostname;
+        cmdtxt.append("bin/restore_default_settings.sh -c save -t syssettings  -d  127.0.0.1  -h " + h);
+        system(cmdtxt);
+        cmdtxt=MV_ROOT  ;
+        //cmdtxt.append("bin/install_proxy.sh NETBOOT  " + install_drive +  "  &");
+        cmdtxt.append("bin/install_proxy.sh NETBOOT &");
+        system(cmdtxt);
+    }
+
+    WORKING_ON_INSTALL = true;
+    usleep (500);
+    updateScreen();
+    usleep (500);
+    updateScreen();
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.h b/abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.h
new file mode 100755
index 0000000..9d54c39
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installdialog.h
@@ -0,0 +1,111 @@
+#ifndef WELCOMEDIALOG_H_
+#define WELCOMEDIALOG_H_
+
+#include <iostream>
+//Added by qt3to4:
+#include <QKeyEvent>
+using namespace std;
+
+#include <qdatetime.h>
+#include "mythdialogs.h"
+#include "libmyth/dialogbox.h"
+
+
+
+#include "remoteutil.h"
+#include "programinfo.h"
+#include "mythscreentype.h"
+#include "mythuibutton.h"
+#include "mythuitext.h"
+#include "mythdialogbox.h"
+#include "langsettings.h"
+
+class WelcomeDialog : public MythScreenType
+{
+
+    Q_OBJECT
+
+public:
+    WelcomeDialog(MythScreenStack *parent, const char *name);
+    ~WelcomeDialog();
+    bool Create(void);
+    bool keyPressEvent(QKeyEvent *event);
+
+
+protected slots:
+    void updateStatus(void);
+    void updateScreen(void);
+    void closeDialog();
+    void updateTime();
+    void showPopup();
+    void showPopup_2();
+    void GO_popup(QString);
+    void Reboot_popup();
+    void MAINPopup();
+    QString diskmodel(QString,QString);
+    QString findinstallsouce(void);
+    void Display_2ndpopup();
+    bool updateRecordingList(void);
+    bool updateScheduledList(void);
+    void shutdownNow(int);
+
+    void install_sde(void);
+    void install_sdf(void);
+    void install_sdg(void);
+    void install_sdh(void);
+    void install_sda(void);
+    void install_sdb(void);
+    void install_sdc(void);
+    void install_sdd(void);
+    void install_net(void);
+    void write_install_conf(QString);
+    void install_generic(void);
+    void install_it(void);
+    void runLIVECD(void);
+    void busy_box(void);
+    void busy_find_oldsettings(void);
+    int ask_validate_network(void);
+private:
+    void updateStatusMessage(void);
+
+    MythPopupBox *popup;   //can remove this
+    MythDialogBox *m_menuPopup;
+    DialogBox *reboot_box;
+    DialogBox *upgrade_box;
+    //
+    //  GUI stuff
+    //
+
+    MythUIText    *m_status_text;
+    MythUIText    *m_recording_text;
+    MythUIText    *m_scheduled_text;
+    MythUIText    *m_mv_text;
+
+    MythUIText    *m_warning_text;
+    MythUIText    *m_time_text;
+    MythUIText    *m_date_text;
+    MythUIButton  *m_startfrontend_button;
+
+    QTimer        *m_updateStatusTimer;
+    QTimer        *m_updateScreenTimer;
+    QTimer        *m_timeTimer;
+
+    QString        m_installDir;
+    QString        m_timeFormat;
+    QStringList    m_statusList;
+    QString        install_drive ;
+    QString        install_text;
+    QString        version_text;
+    QString        recording_text;
+    QString        scheduled_text;
+    QString        error_text;
+    QString        mythvantage_text;
+    string         bin_prefix;
+    QString        current_hostname;
+
+    bool          I_AM_BUSY;
+    bool          WORKING_ON_INSTALL;
+
+};
+
+#endif
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.cpp
new file mode 100755
index 0000000..2e505f1
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.cpp
@@ -0,0 +1,4910 @@
+//_include <mythcontext.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <QtNetwork>
+
+
+//Added by qt3to4:
+#include <Q3TextStream>
+//#include "tv.h"
+#include <stdlib.h>
+#include "mythprogressdialog.h"
+#include "mythsystemlegacy.h"
+
+#include "xorgsettings.h"
+#include "password_manage.h"
+#include "misc_settings.h"
+#include "infrared.h"
+#include "supplemental.h"
+#include "vnc.h"
+#include "fileshare.h"
+
+
+
+int timezone_unknown = FALSE;
+extern  HostParms hostparm;
+//extern DDCinfo ddcinfo;
+
+
+
+bool displaymysqlonly = false ;
+bool displayshownetwork =false ;
+bool displayshowhostype = false ;
+bool displayshowmisc =false ;
+bool displayshowshutdown =false ;
+bool displayshowadvanced = false;
+bool displayshowsound = false ;
+bool displayshowadvancedX = false;
+bool displayaccesscontrol= false;
+bool displayplugins = false;
+bool displaysoftware = false;
+bool displayuser = false;
+bool displaywebuser = false;
+bool displayddns = false;
+bool displayinfrared = false;
+bool displayscreensaver = false;
+//bool install_hobbit = false;
+bool displaysupplemental = false;
+bool displayremotesonly = false;
+bool displayvnc = false;
+bool displayfileshare = false;
+
+
+static HostComboBox *ThemePainter()
+{
+    HostComboBox *gc = new HostComboBox("ThemePainter");
+    gc->setLabel(QObject::tr("Paint Engine"));
+    gc->addSelection(QObject::tr("Qt"), "qt");
+    gc->addSelection(QObject::tr("OpenGL"), "opengl");
+    gc->setHelpText(QObject::tr("This selects what Myth uses to draw.  If you have decent hardware, select OpenGL. Changing this requires a restart."));
+    return gc;
+
+}
+
+
+static HostLineEdit *HostDDnslogin()
+{
+    HostLineEdit *gc = new HostLineEdit("HostDDnslogin");
+    gc->setLabel(QObject::tr("Login"));
+    gc->setValue("");
+    gc->setHelpText(QObject::tr("Login for DDNS account."));
+    return gc;
+};
+
+static HostLineEdit *HostDDnspassword()
+{
+    HostLineEdit *gc = new HostLineEdit("HostDDnspassword");
+    gc->setLabel(QObject::tr("Password"));
+    gc->setValue("");
+    gc->SetPasswordEcho(true);
+    gc->setHelpText(QObject::tr("Password for DDNS account."));
+    return gc;
+};
+
+static HostLineEdit *HostDDnshostname()
+{
+    HostLineEdit *gc = new HostLineEdit("HostDDnshostname");
+    gc->setLabel(QObject::tr("DDNS hostname"));
+    gc->setValue("");
+    gc->setHelpText(QObject::tr("Hostname used for DDNS."));
+    return gc;
+};
+
+static HostCheckBox *HostDDnsEnable()
+{
+    HostCheckBox *gc = new HostCheckBox("HostDDnsEnable");
+    gc->setLabel(QObject::tr("Enable DDNS"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Update DDNS records at dyndns.com. Visit http://dyndns.com to setup your account."));
+    return gc;
+};
+
+class DDnssettings: public TriggeredConfigurationGroup {
+public:
+    DDnssettings():
+        TriggeredConfigurationGroup(false,false,false,false) {
+        setLabel(QObject::tr("DDNS Settings"));
+        SetVertical(true);
+        Setting* trigger = HostDDnsEnable() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false,false,false);
+        settings->addChild(HostDDnshostname());
+        settings->addChild(HostDDnslogin());
+        settings->addChild(HostDDnspassword());
+
+        addTarget("0", new VerticalConfigurationGroup(false, false));
+        addTarget("1", settings);
+    };
+};
+
+
+
+QString findnet()
+{
+
+    QString netdev="";
+    //QString netdev="eth0 eth1 wlan0 wlan1 ath0 ";
+    //QString netdev="eth0 eth1";
+    QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();
+    for (int i = 0; i < ifaces.count(); ++i)
+    {
+        netdev+=ifaces[i].name();
+    }
+    return netdev;
+}
+
+/*
+    system("/sbin/ifconfig -a > /tmp/.netinfo");
+    QString line;
+    QFile file("/tmp/.netinfo");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.contains("HWaddr"))
+            {
+                QString s = line.simplifyWhiteSpace();
+                s = s.section( " ", 0, 0 );   // s == "surname"
+                netdev+=s;
+                netdev+=" ";
+            }
+        }
+        file.close();
+    }
+    return netdev;*/
+//}
+
+QString findnet_wireless()
+{
+
+    QString netdev="";
+//QString netdev="eth0 eth1 wlan0 wlan1 ath0 ";
+    system("/usr/sbin/iwconfig  > /tmp/.netinfo_wireless");
+    QString line;
+    QFile file("/tmp/.netinfo_wireless");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.contains("Nickname") || line.contains("ESSID"))
+            {
+                QString s = line.simplifyWhiteSpace();
+                s = s.section( " ", 0, 0 );   // s == "surname"
+                netdev+=s;
+                netdev+=" ";
+            }
+        }
+        file.close();
+    }
+    return netdev;
+}
+
+static HostComboBox *HostNetDevice()
+{
+    HostComboBox *gc = new HostComboBox("HostNetDevice");
+    gc->setLabel(QObject::tr("Device"));
+    QString foundnet=findnet();
+
+    if (foundnet.contains(hostparm.ThisHostnetOLD))
+    {
+        QString s = "HostActiveonboot";
+        s+=hostparm.ThisHostnetOLD;
+        gCoreContext->SaveSetting(s, hostparm.ThisHostnetActiveOLD );
+    }
+
+    if (foundnet.contains("eth0"))
+        gc->addSelection("eth0");
+
+    if (foundnet.contains("eth1"))
+        gc->addSelection("eth1");
+
+    if (foundnet.contains("wlan0"))
+        gc->addSelection("wlan0");
+
+    if (foundnet.contains("wlan1"))
+        gc->addSelection("wlan1");
+
+    if (foundnet.contains("ath0"))
+        gc->addSelection("ath0");
+
+    int findoldnetdevice=gc->findSelection(hostparm.ThisHostnetOLD);
+    gc->setValue(findoldnetdevice);
+
+
+
+    gc->setHelpText(QObject::tr("Network interface"));
+    return gc;
+};
+
+
+static HostCheckBox *HostActiveonboot()
+{
+    HostCheckBox *gc = new HostCheckBox("HostActiveonboot");
+    gc->setLabel(QObject::tr("Device is active on boot"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Network is started on boot"));
+    return gc;
+};
+
+/*
+static HostCheckBox *HostServiceSamba()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba");
+    gc->setLabel(QObject::tr("Windows sharing"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Allow window machines to access recorded files"));
+    return gc;
+};
+
+static HostCheckBox *HostServiceSamba_write()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_write");
+    gc->setLabel(QObject::tr("Readonly"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only.  If not checked then remote clients will have write and delete abilites. "));
+    return gc;
+};
+
+
+static HostCheckBox *HostServiceSamba_writehome()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_writehome");
+    gc->setLabel(QObject::tr("Readonly"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only.  If not checked then remote clients will have write and delete abilites. "));
+    return gc;
+};
+
+static HostCheckBox *HostServiceSamba_media()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_media");
+    gc->setLabel(QObject::tr("share media"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr(" "));
+    return gc;
+};
+
+static HostCheckBox *HostServiceSamba_home()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceSamba_home");
+    gc->setLabel(QObject::tr("share home"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr(" "));
+    return gc;
+};
+
+
+
+static HostComboBox *HostServiceSamba_domain()
+{
+    HostComboBox *gc = new HostComboBox("HostServiceSamba_domain",true);
+    gc->setLabel(QObject::tr("Workgroup"));
+    gc->setHelpText(QObject::tr("Workgroup for smb share"));
+    gc->addSelection("WORKGROUP");
+    QString currentitem;
+    QString line;
+    QFile file("/tmp/smbdomainlist");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.startsWith("domain"))
+            {
+                currentitem = line.section( " ", 1, 1 );
+                if ( currentitem != "-" )
+                    gc->addSelection(currentitem);
+            }
+        }
+        file.close();
+    }
+    gc->addSelection("type_workgroup_here");
+    return gc;
+};*/
+
+static HostCheckBox *HostLircWait()
+{
+    HostCheckBox *gc = new HostCheckBox("HostLircWait");
+    gc->setLabel(QObject::tr("Wait for lirc"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("System will wait for lirc before starting the UI "));
+    return gc;
+};
+
+static HostCheckBox *HostBEWait()
+{
+    HostCheckBox *gc = new HostCheckBox("HostBEWait");
+    gc->setLabel(QObject::tr("Delay starting mythfrontend until mythbackend is running"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("The system will check if mythbackend is online before starting mythfrontend. This will avoid connection errors and configuration screens."));
+    return gc;
+};
+
+
+
+// static HostComboBox *HostEvrouterConfig()
+// {
+//     HostComboBox *gc = new HostComboBox("HostEvrouterConfig",true);
+//     gc->setLabel(QObject::tr("Key Configuration"));
+//     gc->setHelpText(QObject::tr("Choose the key definations that will be used by the event router"));
+//     QString dirtxt;
+//     dirtxt=MV_ROOT;
+//     dirtxt.append("templates/evrouter");
+//     QDir evrouter(dirtxt);
+//
+//     evrouter.setSorting(QDir::Name | QDir::IgnoreCase);
+//     QFileInfoList fil = evrouter.entryInfoList(QDir::Dirs);
+//     for( QFileInfoList::iterator it =  fil.begin();
+//             it != fil.end();
+//             ++it )
+//     {
+//         QFileInfo  &currentitem = *it;
+//         //JM VERBOSE(VB_IMPORTANT, currentitem.fileName());
+//         if ( currentitem.fileName() != ".." && currentitem.fileName() != "." && currentitem.fileName() != "")
+//         {
+//             gc->addSelection(currentitem.fileName());
+//         }
+//     }
+//     gc->addSelection("tinker");
+//     return gc;
+// };
+
+
+// static HostCheckBox *HostServiceNFS()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostServiceNFS");
+//     gc->setLabel(QObject::tr("Standard file sharing"));
+//     gc->setValue(true);
+//     gc->setHelpText(QObject::tr("Allow all machines to access recorded files with nfs"));
+//     return gc;
+// };
+
+
+static HostCheckBox *HostServiceMythWEB()
+{
+    HostCheckBox *gc = new HostCheckBox("HostServiceMythWEB");
+    gc->setLabel(QObject::tr("Enable MythWeb"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Allow MythTV scheduling using a web browser."));
+    return gc;
+};
+
+// static HostCheckBox *HostServiceHobbitclient()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostServiceHobbitclient");
+//     gc->setLabel(QObject::tr("Hobbit-client"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Report stats and other stuff to the master backend"));
+//     return gc;
+// };
+//
+// static GlobalCheckBox *GlobalServiceHobbitserver()
+// {
+//     GlobalCheckBox *gc = new GlobalCheckBox("GlobalServiceHobbitserver");
+//     gc->setLabel(QObject::tr("Hobbit-server"));
+//     gc->setValue(true);
+//     gc->setHelpText(QObject::tr("Run the hobbit server to collect stats and other stuff"));
+//     return gc;
+// };
+
+
+// static HostCheckBox *HostServiceRRD()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostServiceRRD");
+//     gc->setLabel(QObject::tr("rrd_stats"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Collect stats and create graphs of various system resources."));
+//     return gc;
+// };
+
+static HostCheckBox *HostUseDHCP()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseDHCP");
+    gc->setLabel(QObject::tr("Static ip address"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used."));
+    return gc;
+};
+
+static HostCheckBox *HostRunDHCP()
+{
+    HostCheckBox *gc = new HostCheckBox("HostRunDHCP");
+    gc->setLabel(QObject::tr("DHCP Server"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Only one DHCP server should run on a network. Leave this unchecked if you are not sure."));
+    return gc;
+};
+
+// static HostCheckBox *HostRunEvrouter()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostRunEvrouter");
+//     gc->setLabel(QObject::tr("Use evrouter"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Evrouter will run custom actions, based on the user defined events."));
+//     return gc;
+// };
+
+static HostCheckBox *HostUsemythfrontend()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseMythWelcome");
+    gc->setLabel(QObject::tr("Run MythWelcome"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If checked mythwelcome will be started instead of mythfrontend."));
+    return gc;
+};
+
+static HostCheckBox *HostRunFrontend()
+{
+    HostCheckBox *gc = new HostCheckBox("HostRunFrontend");
+    gc->setLabel(QObject::tr("Run Frontend"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("If checked the frontend X windows GUI will start. Most people will want this checked. Disable the frontend if you want the system to run without a display connected."));
+    return gc;
+};
+
+
+static HostComboBox *HostMysqlserverip_listbox()
+{
+    HostComboBox *gc = new HostComboBox("HostMysqlServer",true);
+    gc->setLabel(QObject::tr("Mysql server"));
+
+    QString currentitem;
+    QString prevline;
+    QString line;
+    QFile file("/tmp/mysqllist");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.startsWith("   address"))
+            {
+                currentitem = line.section( " ", 5, 5 );
+                currentitem = currentitem.section( "[" , 1,1 );
+                currentitem = currentitem.section( "]" , 0, 0 );
+
+                currentitem = currentitem + "\t" +  prevline.section( " ",5,5  );
+                gc->addSelection(currentitem);
+            }
+            prevline = line;
+        }
+        file.close();
+        //system ("rm -f /tmp/mysqllist");
+    }
+    gc->addSelection("Manual: type ip here");
+    gc->setHelpText(QObject::tr(""));
+
+    QString NETBOOT = getenv("NETBOOT");
+    NETBOOT=NETBOOT.stripWhiteSpace();
+    if ( NETBOOT   != "YES" )
+    {
+        if ( ((gCoreContext->GetSetting("HostaccesshostypeSystemtype")) == "0" ))
+            gc->setEnabled(false);
+    }
+
+    return gc;
+}
+
+
+
+static HostCheckBox *HostRemoteBackup()
+{
+    HostCheckBox *gc = new HostCheckBox("HostRemoteBackup");
+    gc->setLabel(QObject::tr("Remote Backup"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Copy the system backup file to another directory or host."));
+    return gc;
+};
+
+
+static HostComboBox *HostRemoteBackupDir()
+{
+    QString tempItem;
+    HostComboBox *gc = new HostComboBox("HostRemoteBackupDir",true);
+    gc->setLabel(QObject::tr("  Dir or Host" ));
+    gc->addSelection("dir:/data/storage/disk0");
+    MSqlQuery query(MSqlQuery::InitCon());
+
+
+    query.prepare( "SELECT DISTINCT hostname from settings where hostname is not null and not (hostname=:HOSTNAME);");
+    query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+    if (query.exec() && query.isActive() && query.size() > 0)
+    {
+        while (query.next())
+        {
+            tempItem = query.value(0).toString();
+            gc->addSelection(tempItem);
+        }
+    }
+
+    gc->setHelpText(QObject::tr("Remote host that will receive a copy of the backup file. To copy the file to a local dir instead of a remote host use dir:/backup_dir_name"));
+
+    return gc;
+};
+
+class Backupsettings: public TriggeredConfigurationGroup {
+public:
+    Backupsettings():
+        TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        SetVertical(false);
+        setLabel(QObject::tr("Backup Settings"));
+        Setting* trigger = HostRemoteBackup();
+        addChild(trigger);
+        setTrigger(trigger);
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false);
+        settings->addChild(HostRemoteBackupDir());
+
+        addTarget("0", new VerticalConfigurationGroup(false, false));
+        addTarget("1", settings);
+
+    };
+};
+
+
+
+// static HostCheckBox *HostPKG_MIRROR()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostPKG_MIRROR");
+//     gc->setLabel(QObject::tr("Use Local mirror"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Master Backend will be used as the repo source."));
+//     return gc;
+// };
+
+// static GlobalCheckBox *GlobalPKG_MIRROR()
+// {
+//     GlobalCheckBox *gc = new GlobalCheckBox("GlobalPKG_MIRROR");
+//     gc->setLabel(QObject::tr("Local mirror"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Keep a local copy of the packages.  Allow other frontends to install from the local copy."));
+//     return gc;
+// };
+
+
+
+static HostCheckBox *HostncidClient()
+{
+    HostCheckBox *gc = new HostCheckBox("HostncidClient");
+    gc->setLabel(QObject::tr("Show CallerID"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Show CallerID popup. The backend must be running the CallerID program."));
+    return gc;
+};
+
+static HostCheckBox *HostncidDaemon()
+{
+    HostCheckBox *gc = new HostCheckBox("HostncidDaemon");
+    gc->setLabel(QObject::tr("Run CallerID"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Run daemon to collect CallerID information."));
+    return gc;
+};
+
+static HostComboBox *HostSerialPortncid()
+{
+    HostComboBox *gc = new HostComboBox("HostSerialPortncid",false);
+    gc->setLabel(QObject::tr("Serial Port"));
+    gc->addSelection("ttyS0");
+    gc->addSelection("ttyS1");
+    gc->addSelection("ttyS2");
+    gc->addSelection("ttyS3");
+    gc->addSelection("ttyACM0");
+    gc->setHelpText(QObject::tr("Serial port where callerid capable modem is connected"));
+    return gc;
+}
+
+static HostCheckBox *HostNcidDeviceNetCallerID()
+{
+    HostCheckBox *gc = new HostCheckBox("HostNcidDeviceNetCallerID");
+    gc->setLabel(QObject::tr("Using a NetCallerID"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Instead of a typical modem, the serial device is a NetCallerID"));
+    return gc;
+};
+
+
+static HostCheckBox *Hostbootsplash()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostbootsplash");
+    gc->setLabel(QObject::tr("Enable Boot Splash"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Covers up boot messages with LinHES logo."));
+    return gc;
+};
+
+//-------------------------------------screensaver settings-------------------
+
+static HostComboBox *HostScreensaverType()
+{
+    HostComboBox *gc = new HostComboBox("HostScreensaverType");
+    gc->setLabel(QObject::tr("Screensaver Program"));
+    gc->addSelection("xscreensaver");
+    //gc->addSelection("gscreensaver");
+    gc->addSelection("none");
+    gc->addSelection("tinker");
+    gc->setHelpText(QObject::tr("Set the screensaver program."));
+    gc->setValue("none");
+    return gc;
+};
+
+static HostSpinBox *HostScreensaverIdle()
+{
+    HostSpinBox *gc = new HostSpinBox("HostScreensaverIdle", 5, 60, 1, true);
+    gc->setLabel(QObject::tr("Idle Time"));
+    gc->setValue(5);
+    gc->setHelpText(QObject::tr("Number of minutes to wait before starting the screensaver."  ));
+    return gc;
+}
+
+static HostCheckBox *HostScreensaverBlank()
+{
+    HostCheckBox *gc = new HostCheckBox("HostScreensaverBlank");
+    gc->setLabel(QObject::tr("Blank"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Blank the screen instead of using a screensaver"));
+    return gc;
+};
+
+static HostCheckBox *HostScreensaverRandom()
+{
+    HostCheckBox *gc = new HostCheckBox("HostScreensaverRandom");
+    gc->setLabel(QObject::tr("Random"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Use a random screensaver."));
+    return gc;
+};
+
+
+
+static HostComboBox *HostGScreensaverTheme()
+{
+    HostComboBox *gc = new HostComboBox("HostGScreensaverTheme");
+    gc->setLabel(QObject::tr("Screensaver"));
+    gc->setHelpText(QObject::tr("Screen saver program to use."));
+    QString line;
+    QString dirtxt=MV_ROOT;
+    dirtxt.append("templates/gscreensavers");
+    QFile file(dirtxt);
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            gc->addSelection(line);
+        }
+        file.close();
+    }
+    return gc;
+};
+
+static HostComboBox *HostXScreensaverTheme()
+{
+    HostComboBox *gc = new HostComboBox("HostXScreensaverTheme");
+    gc->setLabel(QObject::tr("Screensaver"));
+    gc->setHelpText(QObject::tr("Screensaver to display."));
+    QString dirtxt;
+    dirtxt=MV_ROOT;
+    dirtxt.append("templates/xscreensavers");
+    //read in from a file.
+    QString line;
+    QFile file(dirtxt);
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            gc->addSelection(line);
+        }
+        file.close();
+    }
+    return gc;
+};
+
+class Screensaverhostsettings: public TriggeredConfigurationGroup {
+public:
+    Screensaverhostsettings():
+
+        TriggeredConfigurationGroup() {
+        SetVertical(true);
+        setLabel(QObject::tr("Screensaver Settings"));
+        Setting* trigger = HostScreensaverType() ;
+        addChild(trigger);
+        setTrigger(trigger);
+        ConfigurationGroup* screensaversettings = new GridConfigurationGroup(2);
+        screensaversettings->addChild(HostScreensaverBlank());
+        screensaversettings->addChild(HostScreensaverRandom());
+
+        ConfigurationGroup* xscreensaversettings = new VerticalConfigurationGroup();
+        xscreensaversettings->addChild(screensaversettings);
+        xscreensaversettings->addChild(HostScreensaverIdle());
+        xscreensaversettings->addChild(HostXScreensaverTheme());
+
+
+        ConfigurationGroup* gscreensaversettings = new VerticalConfigurationGroup();
+        gscreensaversettings->addChild(screensaversettings);
+        gscreensaversettings->addChild(HostScreensaverIdle());
+        gscreensaversettings->addChild(HostGScreensaverTheme());
+
+
+
+        addTarget("tinker", new VerticalConfigurationGroup(false, false));
+        addTarget("none", new VerticalConfigurationGroup(false, false));
+        addTarget("gscreensaver", gscreensaversettings);
+        addTarget("xscreensaver", xscreensaversettings);
+    };
+};
+
+
+
+
+//-------------------------------------access setting----------------------
+
+static HostCheckBox *Hostaccessnetwork()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessnetwork");
+    gc->setLabel(QObject::tr("Network"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Control access to Network Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccesshostype()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccesshostype");
+    gc->setLabel(QObject::tr("Host"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Host Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *HostaccesshostypeSystemtype()
+{
+    HostCheckBox *gc = new HostCheckBox("HostaccesshostypeSystemtype");
+    gc->setLabel(QObject::tr("Change System Type"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Ability to change the System Type in Host Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessmisc()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessmisc");
+    gc->setLabel(QObject::tr("Miscellanous"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Miscellanous Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccesssleep()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccesssleep");
+    gc->setLabel(QObject::tr("Shutdown"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Shutdown Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessadvanced()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessadvanced");
+    gc->setLabel(QObject::tr("Advanced"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Advanced Settings. Checked means the screen is enabled. "));
+    return gc;
+};
+
+static HostCheckBox *HostaccessadvancedX()
+{
+    HostCheckBox *gc = new HostCheckBox("HostaccessadvancedX");
+    gc->setLabel(QObject::tr("Display"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Display Settings. Checked means the screen is enabled. "));
+    return gc;
+};
+static HostCheckBox *Hostaccessddns()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessddns");
+    gc->setLabel(QObject::tr("Dynamic DNS"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to DDNS Settings. Checked means the screen is enabled. "));
+    return gc;
+};
+
+static HostCheckBox *Hostaccesssound()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccesssound");
+    gc->setLabel(QObject::tr("Audio"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Audio Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessscreensaver()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessscreensaver");
+    gc->setLabel(QObject::tr("Screensaver"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Screensaver Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessir()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessir");
+    gc->setLabel(QObject::tr("Remotes"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Remotes Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessplugins()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessplugins");
+    gc->setLabel(QObject::tr("Programs"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Programs. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessuser()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessuser");
+    gc->setLabel(QObject::tr("User Accounts"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Control access to User Accounts. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccesswebuser()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccesswebuser");
+    gc->setLabel(QObject::tr("Web Security"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Web Security Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+static HostCheckBox *Hostaccessvnc()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessvnc");
+    gc->setLabel(QObject::tr("Screen Sharing"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to Screen Sharing Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+
+static HostCheckBox *Hostaccessfileshare()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostaccessfileshare");
+    gc->setLabel(QObject::tr("File Sharing"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Control access to File Sharing Settings. Checked means the screen is enabled."));
+    return gc;
+};
+
+
+class ACCESShostsettings: public TriggeredConfigurationGroup {
+public:
+    ACCESShostsettings():
+        TriggeredConfigurationGroup(false,false,false,false) {
+        SetVertical(false);
+        Setting* trigger = Hostaccesshostype () ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false,false,false);
+        //settings->addChild(HostServiceSamba());
+        settings->addChild(HostaccesshostypeSystemtype());
+
+
+        addTarget("0", new VerticalConfigurationGroup(false, false));
+        addTarget("1", settings);
+    };
+};
+
+
+//----------------------------------  PLUGINS ----------------------
+
+static HostCheckBox *Hostpluginmytharchive()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmytharchive");
+    gc->setLabel(QObject::tr("MythArchive"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Check to enable MythArchive."));
+    return gc;
+};
+
+
+static HostCheckBox *Hostpluginmythbrowser()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythbrowser");
+    gc->setLabel(QObject::tr("MythBrowser"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Check to enable MythBrowser."));
+    return gc;
+};
+
+
+// static HostCheckBox *Hostpluginmythcontrols()
+// {
+//     HostCheckBox *gc = new HostCheckBox("Hostpluginmythcontrols");
+//     gc->setLabel(QObject::tr("mythcontrols"));
+//     gc->setValue(true);
+//     gc->setHelpText(QObject::tr("check to enable mythcontrols"));
+//     return gc;
+// };
+
+
+static HostCheckBox *Hostpluginmythnetvision()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythnetvision");
+    gc->setLabel(QObject::tr("MythNetvision"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Check to enable MythNetvision."));
+    return gc;
+};
+
+
+static HostCheckBox *Hostpluginmythgallery()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythgallery");
+    gc->setLabel(QObject::tr("MythGallery"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Check to enable MythGallery."));
+    return gc;
+};
+
+
+static HostCheckBox *Hostpluginmythgame()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythgame");
+    gc->setLabel(QObject::tr("MythGame"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Check to enable MythGame."));
+    return gc;
+};
+
+static HostCheckBox *Hostpluginmythgamesnes9x()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythgamesnes9x");
+    gc->setLabel(QObject::tr("snes9x"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Super Nintendo emulator"));
+    return gc;
+};
+
+static HostCheckBox *Hostpluginmythgamefceux()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythgamefceux");
+    gc->setLabel(QObject::tr("fceux"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("NES emulator"));
+    return gc;
+};
+
+static HostCheckBox *HostpluginmythgameMame()
+{
+    HostCheckBox *gc = new HostCheckBox("HostpluginmythgameMame");
+    gc->setLabel(QObject::tr("mame"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Mame, Multiple Arcade Machine Emulator"));
+    return gc;
+};
+
+static HostCheckBox *HostpluginmythgameMednafen()
+{
+    HostCheckBox *gc = new HostCheckBox("HostpluginmythgameMednafen");
+    gc->setLabel(QObject::tr("Mednafen"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Mednafen is a portable, utilizing OpenGL and SDL, command-line driven multi-system emulator with many advanced features."));
+    return gc;
+};
+
+static HostCheckBox *HostpluginmythgameROMDB()
+{
+    HostCheckBox *gc = new HostCheckBox("HostpluginmythgameROMDB");
+    gc->setLabel(QObject::tr("RomDB"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Table used my MythGame to store information about games. If you are into games, this is recommended."));
+    return gc;
+};
+
+static HostCheckBox *Hostpluginmythgamemupen64()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythgamemupen64");
+    gc->setLabel(QObject::tr("mupen64"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("n64 emulator"));
+    return gc;
+};
+
+static HostCheckBox *HostpluginmythgameDolphin()
+{
+    HostCheckBox *gc = new HostCheckBox("HostpluginmythgameDolphin");
+    gc->setLabel(QObject::tr("Dolphin"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Nintendo Wii emulator"));
+    return gc;
+};
+
+static HostCheckBox *HostpluginmythgameXe()
+{
+    HostCheckBox *gc = new HostCheckBox("HostpluginmythgameXe");
+    gc->setLabel(QObject::tr("Xe"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Xe is a multisystem emulator. http://www.xe-emulator.com/ for the complete list."));
+    return gc;
+};
+
+
+/*
+static HostCheckBox *Hostpluginmythmovietime()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythmovietime");
+    gc->setLabel(QObject::tr("mythmovietime"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Check to enable mythmovietime"));
+    return gc;
+};*/
+
+
+static HostCheckBox *Hostpluginmythmusic()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythmusic");
+    gc->setLabel(QObject::tr("MythMusic"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Check to enable MythMusic."));
+    return gc;
+};
+
+
+static HostCheckBox *Hostpluginmythnews()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythnews");
+    gc->setLabel(QObject::tr("MythNews"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Check to enable MythNews."));
+    return gc;
+};
+
+
+// static HostCheckBox *Hostpluginmythsmolt()
+// {
+//     HostCheckBox *gc = new HostCheckBox("Hostpluginmythsmolt");
+//     gc->setLabel(QObject::tr("mythsmolt"));
+//     gc->setValue(true);
+//     gc->setHelpText(QObject::tr("check to enable mythsmolt"));
+//     return gc;
+// };
+
+
+// static HostCheckBox *Hostpluginmythvideo()
+// {
+//     HostCheckBox *gc = new HostCheckBox("Hostpluginmythvideo");
+//     gc->setLabel(QObject::tr("mythvideo"));
+//     gc->setValue(true);
+//     gc->setHelpText(QObject::tr("check to enable mythvideo"));
+//     return gc;
+// };
+
+static HostCheckBox *Hostpluginmythvideo_dvdcss()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythvideo_dvdcss");
+    gc->setLabel(QObject::tr("dvdcss"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption."));
+    return gc;
+};
+
+
+
+// static HostCheckBox *Hostpluginmythstream()
+// {
+//     HostCheckBox *gc = new HostCheckBox("Hostpluginmythstream");
+//     gc->setLabel(QObject::tr("mythstream"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("MythStream is an unofficial MythTv plugin that plays Internet audio and video streams."));
+//     return gc;
+// };
+
+static HostCheckBox *Hostpluginmythappletrailers()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythappletrailers");
+    gc->setLabel(QObject::tr("MythAppleTrailers"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Stream trailer's from Apple's website."));
+    return gc;
+};
+
+
+static HostCheckBox *Hostpluginmythweather()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythweather");
+    gc->setLabel(QObject::tr("MythWeather"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Check to enable MythWeather."));
+    return gc;
+};
+
+
+static HostCheckBox *HostMiro()
+{
+    HostCheckBox *gc = new HostCheckBox("HostMiro");
+    gc->setLabel(QObject::tr("Miro"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Miro is a popular, free, and open internet TV application. It brings video channels from thousands of sources and has more free HD than any other platform."));
+    return gc;
+};
+
+
+// static HostCheckBox *HostXine()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostXine");
+//     gc->setLabel(QObject::tr("Xine"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Xine is a free multimedia player"));
+//     return gc;
+// };
+
+
+// static HostCheckBox *Hostwebmin()
+// {
+//     HostCheckBox *gc = new HostCheckBox("Hostwebmin");
+//     gc->setLabel(QObject::tr("Webmin"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Webmin is a web-based interface for system  administration for Unix. Once installed, you can access it at https://ip.of.back.end:10000 using your root password."));
+//     return gc;
+// };
+
+// static HostCheckBox *Hostfuppes()
+// {
+//     HostCheckBox *gc = new HostCheckBox("Hostfuppes");
+//     gc->setLabel(QObject::tr("Fuppes"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Upnp server"));
+//     return gc;
+// };
+
+static HostCheckBox *Hostfoldingathome()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostfoldingathome");
+    gc->setLabel(QObject::tr("Folding@home"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("A distributed computing project which studies protein folding, misfolding, aggregation, and related diseases."));
+    return gc;
+};
+
+
+
+static HostCheckBox *Hostwebonlinhes()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostwebonlinhes");
+    gc->setLabel(QObject::tr("Web On LinHES"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Includes Google Chrome and multiple websites with 10' UIs in Media Library --> Online Content."));
+    return gc;
+};
+
+static HostCheckBox *HostHuluDesktop()
+{
+    HostCheckBox *gc = new HostCheckBox("HostHuluDesktop");
+    gc->setLabel(QObject::tr("Hulu Desktop"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Hulu Desktop for Linux."));
+    return gc;
+};
+
+
+static HostComboBox *Hostfoldingusername()
+{
+    // If there is an old R5.5 style folding directory /myth/folding@home, attempt
+    // to retrieve the old username.
+
+    FILE *username_pipe;
+    username_pipe =
+        popen (
+            "grep username= /myth/folding@home/client.cfg 2> /dev/null | "
+            "sed 's/username=//g'", "r");
+
+    if (username_pipe)
+    {
+        char username[200];
+        if (fgets (username, sizeof (username), username_pipe))
+        {
+            char *new_line;
+            username[sizeof(username)-1]=0;
+            if ((new_line = strchr (username, '\n')))
+                new_line[0] = 0;
+
+            cout << "found old username " << username << endl;
+            //FIXME??
+            //gCoreContext->SetSetting("Hostfoldingusername", username);
+            gCoreContext->SaveSetting("Hostfoldingusername", username);
+        }
+        pclose (username_pipe);
+    }
+
+    HostComboBox *gc = new HostComboBox("Hostfoldingusername",true);
+    gc->setLabel(QObject::tr("Folding Username"));
+    gc->setValue("");
+
+    gc->setHelpText(QObject::tr("The username associated to the work-units you return."));
+    return gc;
+};
+
+static HostComboBox *Hostfoldingworksize()
+{
+    HostComboBox *gc = new HostComboBox("Hostfoldingworksize");
+    gc->setLabel(QObject::tr("Work Packet Size"));
+    gc->addSelection("Big", "big");
+    gc->addSelection("Normal", "normal");
+    gc->addSelection("Small", "small");
+    gc->setHelpText(QObject::tr("Acceptable size of work assignment and work result packets (bigger units may have large memory demands)."));
+    return gc;
+};
+
+// static HostCheckBox *HostXscreensaver()
+// {
+//     HostCheckBox *gc = new HostCheckBox("HostXscreensaver");
+//     gc->setLabel(QObject::tr("Screensaver"));
+//     gc->setValue(false);
+//     gc->setHelpText(QObject::tr("Run screensaver after 10 minutes of inactivity."));
+//     return gc;
+// };
+
+
+static HostCheckBox *Hostpluginmythzoneminder()
+{
+    HostCheckBox *gc = new HostCheckBox("Hostpluginmythzoneminder");
+    gc->setLabel(QObject::tr("MythZoneMinder"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Check to enable MythZoneMinder."));
+    return gc;
+};
+
+
+// -------------End plugins--------------------------------
+
+
+
+class NCIDsettings: public TriggeredConfigurationGroup {
+public:
+    NCIDsettings():
+        TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        SetVertical(true);
+        Setting* trigger =  HostncidDaemon() ;
+        addChild(trigger);
+        setTrigger(trigger);
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false,false);
+        settings->addChild(HostSerialPortncid());
+        settings->addChild(HostNcidDeviceNetCallerID());
+        addTarget("0", new HorizontalConfigurationGroup(false, false));
+        addTarget("1", settings);
+    };
+};
+
+// class SAMBAsettings: public TriggeredConfigurationGroup {
+// public:
+//     SAMBAsettings():
+//         TriggeredConfigurationGroup(false, true, true, true,false, false, true, true) {
+//         SetVertical(false);
+//         Setting* trigger =  HostServiceSamba() ;
+//         addChild(trigger);
+//         setTrigger(trigger);
+//
+//         ConfigurationGroup* settings = new GridConfigurationGroup(2,false,false);
+//         //settings->addChild(HostServiceSamba());
+//         settings->addChild(HostServiceSamba_media());
+//         settings->addChild(HostServiceSamba_write());
+//         settings->addChild(HostServiceSamba_home());
+//         settings->addChild(HostServiceSamba_writehome());
+//         settings->addChild(HostServiceSamba_domain());
+//
+//         addTarget("0", new GridConfigurationGroup(2,false, false));
+//         addTarget("1", settings);
+//     };
+// };
+
+
+// class Evroutersettings: public TriggeredConfigurationGroup {
+// public:
+//     Evroutersettings():
+//         TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+//         setLabel(QObject::tr("Evrouter config"));
+//         Setting* trigger =  HostRunEvrouter() ;
+//         addChild(trigger);
+//         setTrigger(trigger);
+//
+//         ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false);
+//         settings->addChild(HostEvrouterConfig());
+//
+//         addTarget("0", new VerticalConfigurationGroup(false, false));
+//         addTarget("1", settings);
+//     };
+// };
+
+class MythGamesettings: public TriggeredConfigurationGroup {
+public:
+    MythGamesettings():
+        TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        setLabel(QObject::tr("Programs - Games"));
+        Setting* trigger =  Hostpluginmythgame() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(3,true,true);
+        settings->addChild(HostpluginmythgameROMDB());
+        settings->addChild(Hostpluginmythgamesnes9x());
+        settings->addChild(Hostpluginmythgamefceux());
+        settings->addChild(HostpluginmythgameMame());
+        settings->addChild(HostpluginmythgameMednafen());
+        settings->addChild(Hostpluginmythgamemupen64());
+        settings->addChild(HostpluginmythgameDolphin());
+        settings->addChild(HostpluginmythgameXe());
+
+
+        addTarget("0", new VerticalConfigurationGroup(false, false));
+        addTarget("1", settings);
+    };
+};
+
+
+//____________________________________________________________________________
+class eth0_settings:          public TriggeredConfigurationGroup {
+public:
+    eth0_settings():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+
+        HostComboBox *HOSTESSIDeth0 = new HostComboBox("HOSTESSIDeth0",true);
+        HOSTESSIDeth0->setLabel(QObject::tr("ESSID"));
+        HOSTESSIDeth0->addSelection("MythVantage");
+        HOSTESSIDeth0->addSelection("home_lan");
+        HOSTESSIDeth0->addSelection("type_it_here");
+        HOSTESSIDeth0->setHelpText(QObject::tr("ESSID"));
+        addChild(HOSTESSIDeth0);
+
+        HostComboBox *HostUseEncryptioneth0 = new HostComboBox("HostUseEncryptioneth0");
+        HostUseEncryptioneth0->setLabel(QObject::tr("Encryption"));
+        HostUseEncryptioneth0->setHelpText(QObject::tr("WPA uses a shared key phrase this is the most secure. For WEP use the generated key, this type of encryption is not recommended."));
+        HostUseEncryptioneth0->addSelection("none");
+        HostUseEncryptioneth0->addSelection("WPA");
+        HostUseEncryptioneth0->addSelection("WEP");
+
+        Setting*  HostUseEncryption =  HostUseEncryptioneth0;
+        addChild(HostUseEncryption);
+        setTrigger(HostUseEncryption);
+
+        HostLineEdit *Hostkeyeth0 = new HostLineEdit("Hostkeyeth0");
+        Hostkeyeth0->setLabel(QObject::tr("key"));
+        Hostkeyeth0->setHelpText(QObject::tr("Key to use for encryption."));
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false);
+        settings->addChild(Hostkeyeth0);
+        addTarget("none", new GridConfigurationGroup(1,false));
+        addTarget("WPA", settings);
+        addTarget("WEP", settings);
+    };
+};
+
+
+NetworkSettingseth0::NetworkSettingseth0():
+    TriggeredConfigurationGroup(false,false,false,false) {
+    setLabel(QObject::tr("Network Settings"));
+    HostLineEdit  *HostIPeth0 = new HostLineEdit("HostIPeth0");
+    HostIPeth0->setLabel(QObject::tr("IP Address"));
+    HostIPeth0->setValue("192.168.1.12");
+    HostIPeth0->setHelpText(QObject::tr("IP address of the new installation."));
+
+    HostComboBox *HostNETMASKeth0 = new HostComboBox("HostNETMASKeth0");
+    HostNETMASKeth0->setLabel(QObject::tr("Netmask"));
+    HostNETMASKeth0->addSelection("/0     0.0.0.0");
+    HostNETMASKeth0->addSelection("/1     128.0.0.0");
+    HostNETMASKeth0->addSelection("/2     192.0.0.0");
+    HostNETMASKeth0->addSelection("/3     224.0.0.0");
+    HostNETMASKeth0->addSelection("/4     240.0.0.0");
+    HostNETMASKeth0->addSelection("/5     248.0.0.0");
+    HostNETMASKeth0->addSelection("/6     252.0.0.0");
+    HostNETMASKeth0->addSelection("/7     254.0.0.0");
+    HostNETMASKeth0->addSelection("/8     255.0.0.0");
+    HostNETMASKeth0->addSelection("/9     255.128.0.0");
+    HostNETMASKeth0->addSelection("/10    255.192.0.0 ");
+    HostNETMASKeth0->addSelection("/11    255.224.0.0");
+    HostNETMASKeth0->addSelection("/12    255.240.0.0");
+    HostNETMASKeth0->addSelection("/13    255.248.0.0");
+    HostNETMASKeth0->addSelection("/14    255.252.0.0");
+    HostNETMASKeth0->addSelection("/15    255.254.0.0");
+    HostNETMASKeth0->addSelection("/16    255.255.0.0");
+    HostNETMASKeth0->addSelection("/17    255.255.128.0");
+    HostNETMASKeth0->addSelection("/18    255.255.192.0");
+    HostNETMASKeth0->addSelection("/19    255.255.224.0");
+    HostNETMASKeth0->addSelection("/20    255.255.240.0");
+    HostNETMASKeth0->addSelection("/21    255.255.248.0");
+    HostNETMASKeth0->addSelection("/22    255.255.252.0");
+    HostNETMASKeth0->addSelection("/23    255.255.254.0");
+    HostNETMASKeth0->addSelection("/24    255.255.255.0");
+    HostNETMASKeth0->addSelection("/25    255.255.255.128");
+    HostNETMASKeth0->addSelection("/26    255.255.255.192");
+    HostNETMASKeth0->addSelection("/27    255.255.255.224");
+    HostNETMASKeth0->addSelection("/28    255.255.255.240");
+    HostNETMASKeth0->addSelection("/29    255.255.255.248");
+    HostNETMASKeth0->addSelection("/30    255.255.255.252");
+    HostNETMASKeth0->addSelection("/31    255.255.255.254");
+    HostNETMASKeth0->addSelection("/32    255.255.255.255");
+    HostNETMASKeth0->setHelpText(QObject::tr("Netmask"));
+    HostNETMASKeth0->setValue(24);
+
+    HostLineEdit *HostGWeth0 = new HostLineEdit("HostGWeth0");
+    HostGWeth0->setLabel(QObject::tr("Gateway"));
+    HostGWeth0->setValue("192.168.1.1");
+    HostGWeth0->setHelpText(QObject::tr("This is the default route."));
+
+
+    HostLineEdit *HostDNSeth0 = new HostLineEdit("HostDNSeth0");
+    HostDNSeth0->setLabel(QObject::tr("Name Server"));
+    HostDNSeth0->setValue("192.168.1.1");
+    HostDNSeth0->setHelpText(QObject::tr("Name server"));
+
+
+    HostCheckBox *HostActiveonbooteth0 = new HostCheckBox("HostActiveonbooteth0");
+    HostActiveonbooteth0->setLabel(QObject::tr("Active"));
+    HostActiveonbooteth0->setValue(true);
+    HostActiveonbooteth0->setHelpText(QObject::tr("Network is started on boot."));
+
+    HostDefaulteth0 = new HostCheckBox("HostDefaulteth0");
+    HostDefaulteth0->setLabel(QObject::tr("Default"));
+    HostDefaulteth0->setValue(true);
+    HostDefaulteth0->setHelpText(QObject::tr("Will be used as the primary interface."));
+
+    connect(HostDefaulteth0, SIGNAL(valueChanged(bool)), this, SLOT(eth0_disable_others()));
+
+    HostCheckBox *HostUseDHCPeth0 = new HostCheckBox("HostUseDHCPeth0");
+    HostUseDHCPeth0 ->setLabel(QObject::tr("Static IP Address"));
+    HostUseDHCPeth0 ->setValue(false);
+    HostUseDHCPeth0 ->setHelpText(QObject::tr("Enable to use a static IP address, otherwise DHCP will be used."));
+
+    wirelessbuttoneth0 = new TransButtonSetting();
+    wirelessbuttoneth0->setLabel(tr("Wireless Settings"));
+    connect(wirelessbuttoneth0, SIGNAL(pressed()), this,   SLOT(eth0_wireless_settings()));
+
+    ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, true, true);
+    settings1->addChild(HostActiveonbooteth0);
+    settings1->addChild(HostDefaulteth0);
+    settings1-> addChild(wirelessbuttoneth0);
+    addChild(settings1);
+
+
+    Setting* dhcpEnabled = HostUseDHCPeth0;
+    addChild(dhcpEnabled);
+    setTrigger(dhcpEnabled);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false, false, false);
+    settings->addChild(HostIPeth0);
+    settings->addChild(HostNETMASKeth0);
+    settings->addChild(HostGWeth0);
+    settings->addChild(HostDNSeth0);
+
+    addTarget("0", new VerticalConfigurationGroup(false,false,false,false));
+    addTarget("1", settings);
+};
+
+eth0options::eth0options()
+{
+
+    VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
+    rec->setLabel(QObject::tr("Wireless configuration for eth0"));
+    //rec->setUseLabel(true);
+    rec->addChild(new eth0_settings);
+    addChild(rec);
+}
+
+void NetworkSettingseth0::eth0_disable_others()
+{
+    QString my_current_value;
+    my_current_value = HostDefaulteth0->getValue();
+    if ( my_current_value == "1" )
+    {
+        hostparm.ThisHostDefaultInterface="eth0";
+        emit eth0_is_default();
+    }
+}
+void NetworkSettingseth0::eth0_disabled()
+{
+    HostDefaulteth0->setValue(0);
+}
+void NetworkSettingseth0::eth0_wireless_settings(void)
+{
+    eth0options eth0screen;
+    eth0screen.exec();
+}
+
+void NetworkSettingseth0::eth0_wireless_disable()
+{
+    wirelessbuttoneth0->setEnabled(false);
+}
+
+class eth1_settings:          public TriggeredConfigurationGroup {
+public:
+    eth1_settings():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+
+        HostComboBox *HOSTESSIDeth1 = new HostComboBox("HOSTESSIDeth1",true);
+        HOSTESSIDeth1->setLabel(QObject::tr("ESSID"));
+        HOSTESSIDeth1->addSelection("MythVantage");
+        HOSTESSIDeth1->addSelection("home_lan");
+        HOSTESSIDeth1->addSelection("type_it_here");
+        HOSTESSIDeth1->setHelpText(QObject::tr("ESSID"));
+        addChild(HOSTESSIDeth1);
+        HostComboBox *HostUseEncryptioneth0 = new HostComboBox("HostUseEncryptioneth0");
+        HostUseEncryptioneth0->setLabel(QObject::tr("Encryption"));
+        HostUseEncryptioneth0->setHelpText(QObject::tr("WPA, WEP, none"));
+        HostUseEncryptioneth0->addSelection("none");
+        HostUseEncryptioneth0->addSelection("WPA");
+        HostUseEncryptioneth0->addSelection("WEP");
+
+        Setting*  HostUseEncryption =  HostUseEncryptioneth0;
+        addChild(HostUseEncryption);
+        setTrigger(HostUseEncryption);
+
+        HostLineEdit *Hostkeyeth0 = new HostLineEdit("Hostkeyeth0");
+        Hostkeyeth0->setLabel(QObject::tr("key"));
+        Hostkeyeth0->setHelpText(QObject::tr("Key to use for encryption"));
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false);
+        settings->addChild(Hostkeyeth0);
+        addTarget("none", new GridConfigurationGroup(1,false));
+        addTarget("WPA", settings);
+        addTarget("WEP", settings);
+    };
+};
+
+
+NetworkSettingseth1::NetworkSettingseth1():
+    TriggeredConfigurationGroup(false,false,false,false) {
+    setLabel(QObject::tr("Network Settings"));
+    HostLineEdit  *HostIPeth1 = new HostLineEdit("HostIPeth1");
+    HostIPeth1->setLabel(QObject::tr("Ip address"));
+    HostIPeth1->setValue("192.168.1.12");
+    HostIPeth1->setHelpText(QObject::tr("IP address of the new installation"));
+
+    HostComboBox *HostNETMASKeth1 = new HostComboBox("HostNETMASKeth1");
+    HostNETMASKeth1->setLabel(QObject::tr("Netmask"));
+    HostNETMASKeth1->addSelection("/0     0.0.0.0");
+    HostNETMASKeth1->addSelection("/1     128.0.0.0");
+    HostNETMASKeth1->addSelection("/2     192.0.0.0");
+    HostNETMASKeth1->addSelection("/3     224.0.0.0");
+    HostNETMASKeth1->addSelection("/4     240.0.0.0");
+    HostNETMASKeth1->addSelection("/5     248.0.0.0");
+    HostNETMASKeth1->addSelection("/6     252.0.0.0");
+    HostNETMASKeth1->addSelection("/7     254.0.0.0");
+    HostNETMASKeth1->addSelection("/8     255.0.0.0");
+    HostNETMASKeth1->addSelection("/9     255.128.0.0");
+    HostNETMASKeth1->addSelection("/10    255.192.0.0 ");
+    HostNETMASKeth1->addSelection("/11    255.224.0.0");
+    HostNETMASKeth1->addSelection("/12    255.240.0.0");
+    HostNETMASKeth1->addSelection("/13    255.248.0.0");
+    HostNETMASKeth1->addSelection("/14    255.252.0.0");
+    HostNETMASKeth1->addSelection("/15    255.254.0.0");
+    HostNETMASKeth1->addSelection("/16    255.255.0.0");
+    HostNETMASKeth1->addSelection("/17    255.255.128.0");
+    HostNETMASKeth1->addSelection("/18    255.255.192.0");
+    HostNETMASKeth1->addSelection("/19    255.255.224.0");
+    HostNETMASKeth1->addSelection("/20    255.255.240.0");
+    HostNETMASKeth1->addSelection("/21    255.255.248.0");
+    HostNETMASKeth1->addSelection("/22    255.255.252.0");
+    HostNETMASKeth1->addSelection("/23    255.255.254.0");
+    HostNETMASKeth1->addSelection("/24    255.255.255.0");
+    HostNETMASKeth1->addSelection("/25    255.255.255.128");
+    HostNETMASKeth1->addSelection("/26    255.255.255.192");
+    HostNETMASKeth1->addSelection("/27    255.255.255.224");
+    HostNETMASKeth1->addSelection("/28    255.255.255.240");
+    HostNETMASKeth1->addSelection("/29    255.255.255.248");
+    HostNETMASKeth1->addSelection("/30    255.255.255.252");
+    HostNETMASKeth1->addSelection("/31    255.255.255.254");
+    HostNETMASKeth1->addSelection("/32    255.255.255.255");
+    HostNETMASKeth1->setHelpText(QObject::tr("Netmask"));
+    HostNETMASKeth1->setValue(24);
+
+    HostLineEdit *HostGWeth1 = new HostLineEdit("HostGWeth1");
+    HostGWeth1->setLabel(QObject::tr("Gateway"));
+    HostGWeth1->setValue("192.168.1.1");
+    HostGWeth1->setHelpText(QObject::tr("This is the default route"));
+
+
+    HostLineEdit *HostDNSeth1 = new HostLineEdit("HostDNSeth1");
+    HostDNSeth1->setLabel(QObject::tr("Name server"));
+    HostDNSeth1->setValue("192.168.1.1");
+    HostDNSeth1->setHelpText(QObject::tr("Name server"));
+
+
+    HostCheckBox *HostActiveonbooteth1 = new HostCheckBox("HostActiveonbooteth1");
+    HostActiveonbooteth1->setLabel(QObject::tr("Active"));
+    HostActiveonbooteth1->setValue(false);
+    HostActiveonbooteth1->setHelpText(QObject::tr("Network is started on boot"));
+
+    HostDefaulteth1 = new HostCheckBox("HostDefaulteth1");
+    HostDefaulteth1->setLabel(QObject::tr("Default"));
+    HostDefaulteth1->setValue(false);
+    HostDefaulteth1->setHelpText(QObject::tr("Will be used as the primary interface"));
+    connect(HostDefaulteth1, SIGNAL(valueChanged(bool)), this, SLOT(eth1_disable_others()));
+
+    HostCheckBox *HostUseDHCPeth1 = new HostCheckBox("HostUseDHCPeth1");
+    HostUseDHCPeth1 ->setLabel(QObject::tr("Static ip address"));
+    HostUseDHCPeth1 ->setValue(false);
+    HostUseDHCPeth1 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used."));
+
+    wirelessbuttoneth1 = new TransButtonSetting();
+    wirelessbuttoneth1->setLabel(tr("Wireless Settings"));
+    connect(wirelessbuttoneth1, SIGNAL(pressed()), this,   SLOT(eth1_wireless_settings()));
+
+    ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false,false);
+    settings1->addChild(HostActiveonbooteth1);
+    settings1->addChild(HostDefaulteth1);
+    settings1-> addChild(wirelessbuttoneth1);
+
+    addChild(settings1);
+
+    Setting* dhcpEnabled = HostUseDHCPeth1;
+    addChild(dhcpEnabled);
+    setTrigger(dhcpEnabled);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false);
+    settings->addChild(HostIPeth1);
+    settings->addChild(HostNETMASKeth1);
+    settings->addChild(HostGWeth1);
+    settings->addChild(HostDNSeth1);
+
+    addTarget("0", new VerticalConfigurationGroup(false,false,false,false));
+    addTarget("1", settings);
+};
+eth1options::eth1options()
+{
+    VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
+    rec->setLabel(QObject::tr("Wireless configuration for eth1"));
+    rec->addChild(new eth1_settings);
+    addChild(rec);
+}
+
+void NetworkSettingseth1::eth1_disable_others()
+{
+    QString my_current_value;
+    my_current_value = HostDefaulteth1->getValue();
+    if ( my_current_value == "1" )
+    {
+        hostparm.ThisHostDefaultInterface="eth1";
+        emit eth1_is_default();
+    }
+}
+void NetworkSettingseth1::eth1_disabled()
+{
+    HostDefaulteth1->setValue(0);
+}
+
+void NetworkSettingseth1::eth1_wireless_settings(void)
+{
+    eth1options eth1screen;
+    eth1screen.exec();
+}
+
+void NetworkSettingseth1::eth1_wireless_disable()
+{
+    wirelessbuttoneth1->setEnabled(false);
+}
+
+
+class wlan0_settings:          public TriggeredConfigurationGroup {
+public:
+    wlan0_settings():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+
+        HostComboBox *HOSTESSIDwlan0 = new HostComboBox("HOSTESSIDwlan0",true);
+        HOSTESSIDwlan0->setLabel(QObject::tr("ESSID"));
+        HOSTESSIDwlan0->addSelection("MythVantage");
+        HOSTESSIDwlan0->addSelection("home_lan");
+        HOSTESSIDwlan0->addSelection("type_it_here");
+        HOSTESSIDwlan0->setHelpText(QObject::tr("ESSID"));
+        addChild(HOSTESSIDwlan0);
+        HostComboBox *HostUseEncryptionwlan0 = new HostComboBox("HostUseEncryptionwlan0");
+        HostUseEncryptionwlan0->setLabel(QObject::tr("Encryption"));
+        HostUseEncryptionwlan0->setHelpText(QObject::tr("WPA, WEP, none"));
+        HostUseEncryptionwlan0->addSelection("none");
+        HostUseEncryptionwlan0->addSelection("WPA");
+        HostUseEncryptionwlan0->addSelection("WEP");
+
+        Setting*  HostUseEncryption =  HostUseEncryptionwlan0;
+        addChild(HostUseEncryption);
+        setTrigger(HostUseEncryption);
+
+        HostLineEdit *Hostkeywlan0 = new HostLineEdit("Hostkeywlan0");
+        Hostkeywlan0->setLabel(QObject::tr("key"));
+        Hostkeywlan0->setHelpText(QObject::tr("Key to use for encryption"));
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false);
+        settings->addChild(Hostkeywlan0);
+        addTarget("none", new GridConfigurationGroup(1,false));
+        addTarget("WPA", settings);
+        addTarget("WEP", settings);
+    };
+};
+
+NetworkSettingswlan0::NetworkSettingswlan0():
+    TriggeredConfigurationGroup(false,false,false,false) {
+    setLabel(QObject::tr("Network Settings"));
+
+    HostIPwlan0 = new HostLineEdit("HostIPwlan0");
+    HostIPwlan0->setLabel(QObject::tr("Ip address"));
+    HostIPwlan0->setValue("192.168.1.12");
+    HostIPwlan0->setHelpText(QObject::tr("IP address of the new installation"));
+
+    HostNETMASKwlan0 = new HostComboBox("HostNETMASKwlan0");
+    HostNETMASKwlan0->setLabel(QObject::tr("Netmask"));
+    HostNETMASKwlan0->addSelection("/0     0.0.0.0");
+    HostNETMASKwlan0->addSelection("/1     128.0.0.0");
+    HostNETMASKwlan0->addSelection("/2     192.0.0.0");
+    HostNETMASKwlan0->addSelection("/3     224.0.0.0");
+    HostNETMASKwlan0->addSelection("/4     240.0.0.0");
+    HostNETMASKwlan0->addSelection("/5     248.0.0.0");
+    HostNETMASKwlan0->addSelection("/6     252.0.0.0");
+    HostNETMASKwlan0->addSelection("/7     254.0.0.0");
+    HostNETMASKwlan0->addSelection("/8     255.0.0.0");
+    HostNETMASKwlan0->addSelection("/9     255.128.0.0");
+    HostNETMASKwlan0->addSelection("/10    255.192.0.0 ");
+    HostNETMASKwlan0->addSelection("/11    255.224.0.0");
+    HostNETMASKwlan0->addSelection("/12    255.240.0.0");
+    HostNETMASKwlan0->addSelection("/13    255.248.0.0");
+    HostNETMASKwlan0->addSelection("/14    255.252.0.0");
+    HostNETMASKwlan0->addSelection("/15    255.254.0.0");
+    HostNETMASKwlan0->addSelection("/16    255.255.0.0");
+    HostNETMASKwlan0->addSelection("/17    255.255.128.0");
+    HostNETMASKwlan0->addSelection("/18    255.255.192.0");
+    HostNETMASKwlan0->addSelection("/19    255.255.224.0");
+    HostNETMASKwlan0->addSelection("/20    255.255.240.0");
+    HostNETMASKwlan0->addSelection("/21    255.255.248.0");
+    HostNETMASKwlan0->addSelection("/22    255.255.252.0");
+    HostNETMASKwlan0->addSelection("/23    255.255.254.0");
+    HostNETMASKwlan0->addSelection("/24    255.255.255.0");
+    HostNETMASKwlan0->addSelection("/25    255.255.255.128");
+    HostNETMASKwlan0->addSelection("/26    255.255.255.192");
+    HostNETMASKwlan0->addSelection("/27    255.255.255.224");
+    HostNETMASKwlan0->addSelection("/28    255.255.255.240");
+    HostNETMASKwlan0->addSelection("/29    255.255.255.248");
+    HostNETMASKwlan0->addSelection("/30    255.255.255.252");
+    HostNETMASKwlan0->addSelection("/31    255.255.255.254");
+    HostNETMASKwlan0->addSelection("/32    255.255.255.255");
+    HostNETMASKwlan0->setHelpText(QObject::tr("Netmask"));
+    HostNETMASKwlan0->setValue(24);
+
+    HostGWwlan0 = new HostLineEdit("HostGWwlan0");
+    HostGWwlan0->setLabel(QObject::tr("Gateway"));
+    HostGWwlan0->setValue("192.168.1.1");
+    HostGWwlan0->setHelpText(QObject::tr("This is the default route"));
+
+
+    HostDNSwlan0 = new HostLineEdit("HostDNSwlan0");
+    HostDNSwlan0->setLabel(QObject::tr("Name server"));
+    HostDNSwlan0->setValue("192.168.1.1");
+    HostDNSwlan0->setHelpText(QObject::tr("Name server"));
+
+
+    HostActiveonbootwlan0 = new HostCheckBox("HostActiveonbootwlan0");
+    HostActiveonbootwlan0->setLabel(QObject::tr("Active"));
+    HostActiveonbootwlan0->setValue(false);
+    HostActiveonbootwlan0->setHelpText(QObject::tr("Network is started on boot"));
+
+    HostDefaultwlan0 = new HostCheckBox("HostDefaultwlan0");
+    HostDefaultwlan0->setLabel(QObject::tr("Default"));
+    HostDefaultwlan0->setValue(false);
+    HostDefaultwlan0->setHelpText(QObject::tr("Will be used as the primary interface"));
+    connect(HostDefaultwlan0, SIGNAL(valueChanged(bool)), this, SLOT(wlan0_disable_others()));
+
+    HostUseDHCPwlan0 = new HostCheckBox("HostUseDHCPwlan0");
+    HostUseDHCPwlan0 ->setLabel(QObject::tr("Static ip address"));
+    HostUseDHCPwlan0 ->setValue(false);
+    HostUseDHCPwlan0 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used."));
+
+    wirelessbuttonwlan0 = new TransButtonSetting();
+    wirelessbuttonwlan0->setLabel(tr("Wireless Settings"));
+    connect(wirelessbuttonwlan0, SIGNAL(pressed()), this,   SLOT(wlan0_wireless_settings()));
+
+
+    ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false,false);
+    settings1->addChild(HostActiveonbootwlan0);
+    settings1->addChild(HostDefaultwlan0);
+    settings1-> addChild(wirelessbuttonwlan0);
+    addChild(settings1);
+
+    Setting* dhcpEnabled = HostUseDHCPwlan0;
+    addChild(dhcpEnabled);
+    setTrigger(dhcpEnabled);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false);
+    settings->addChild(HostIPwlan0);
+    settings->addChild(HostNETMASKwlan0);
+    settings->addChild(HostGWwlan0);
+    settings->addChild(HostDNSwlan0);
+
+    addTarget("0", new VerticalConfigurationGroup(false,false,false,false));
+    addTarget("1", settings);
+
+};
+
+Wlan0options::Wlan0options()
+{
+    VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
+    rec->setLabel(QObject::tr("Wireless configuration for wlan0"));
+    rec->addChild(new wlan0_settings);
+    addChild(rec);
+}
+
+void NetworkSettingswlan0::wlan0_disable_others()
+{
+    QString my_current_value;
+    my_current_value = HostDefaultwlan0->getValue();
+    if ( my_current_value == "1" )
+    {
+        hostparm.ThisHostDefaultInterface="wlan0";
+        emit wlan0_is_default();
+    }
+
+
+
+}
+void NetworkSettingswlan0::wlan0_disabled()
+{
+    HostDefaultwlan0->setValue(0);
+}
+
+
+void NetworkSettingswlan0::wlan0_wireless_settings(void)
+{
+    Wlan0options wlan0screen;
+    wlan0screen.exec();
+}
+void NetworkSettingswlan0::wlan0_wireless_disable()
+{
+    wirelessbuttonwlan0->setEnabled(false);
+}
+
+
+class wlan1_settings:          public TriggeredConfigurationGroup {
+public:
+    wlan1_settings():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+
+        HostComboBox *HOSTESSIDwlan1 = new HostComboBox("HOSTESSIDwlan1",true);
+        HOSTESSIDwlan1->setLabel(QObject::tr("ESSID"));
+        HOSTESSIDwlan1->addSelection("MythVantage");
+        HOSTESSIDwlan1->addSelection("home_lan");
+        HOSTESSIDwlan1->addSelection("type_it_here");
+        HOSTESSIDwlan1->setHelpText(QObject::tr("ESSID"));
+        addChild(HOSTESSIDwlan1);
+
+
+        HostComboBox *HostUseEncryptionwlan1 = new HostComboBox("HostUseEncryptionwlan1");
+        HostUseEncryptionwlan1->setLabel(QObject::tr("Encryption"));
+        HostUseEncryptionwlan1->setHelpText(QObject::tr("WPA, WEP, none"));
+        HostUseEncryptionwlan1->addSelection("none");
+        HostUseEncryptionwlan1->addSelection("WPA");
+        HostUseEncryptionwlan1->addSelection("WEP");
+
+        Setting*  HostUseEncryption =  HostUseEncryptionwlan1;
+        addChild(HostUseEncryption);
+        setTrigger(HostUseEncryption);
+
+        HostLineEdit *Hostkeywlan1 = new HostLineEdit("Hostkeywlan1");
+        Hostkeywlan1->setLabel(QObject::tr("key"));
+        Hostkeywlan1->setHelpText(QObject::tr("Key to use for encryption"));
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false);
+        settings->addChild(Hostkeywlan1);
+        addTarget("none", new GridConfigurationGroup(1,false));
+        addTarget("WPA", settings);
+        addTarget("WEP", settings);
+
+    };
+};
+
+NetworkSettingswlan1::NetworkSettingswlan1():
+    TriggeredConfigurationGroup(false,false,false,false) {
+    setLabel(QObject::tr("Network Settings"));
+
+    HostIPwlan1 = new HostLineEdit("HostIPwlan1");
+    HostIPwlan1->setLabel(QObject::tr("Ip address"));
+    HostIPwlan1->setValue("192.168.1.12");
+    HostIPwlan1->setHelpText(QObject::tr("IP address of the new installation"));
+
+    HostNETMASKwlan1 = new HostComboBox("HostNETMASKwlan1");
+    HostNETMASKwlan1->setLabel(QObject::tr("Netmask"));
+    HostNETMASKwlan1->addSelection("/0     0.0.0.0");
+    HostNETMASKwlan1->addSelection("/1     128.0.0.0");
+    HostNETMASKwlan1->addSelection("/2     192.0.0.0");
+    HostNETMASKwlan1->addSelection("/3     224.0.0.0");
+    HostNETMASKwlan1->addSelection("/4     240.0.0.0");
+    HostNETMASKwlan1->addSelection("/5     248.0.0.0");
+    HostNETMASKwlan1->addSelection("/6     252.0.0.0");
+    HostNETMASKwlan1->addSelection("/7     254.0.0.0");
+    HostNETMASKwlan1->addSelection("/8     255.0.0.0");
+    HostNETMASKwlan1->addSelection("/9     255.128.0.0");
+    HostNETMASKwlan1->addSelection("/10    255.192.0.0 ");
+    HostNETMASKwlan1->addSelection("/11    255.224.0.0");
+    HostNETMASKwlan1->addSelection("/12    255.240.0.0");
+    HostNETMASKwlan1->addSelection("/13    255.248.0.0");
+    HostNETMASKwlan1->addSelection("/14    255.252.0.0");
+    HostNETMASKwlan1->addSelection("/15    255.254.0.0");
+    HostNETMASKwlan1->addSelection("/16    255.255.0.0");
+    HostNETMASKwlan1->addSelection("/17    255.255.128.0");
+    HostNETMASKwlan1->addSelection("/18    255.255.192.0");
+    HostNETMASKwlan1->addSelection("/19    255.255.224.0");
+    HostNETMASKwlan1->addSelection("/20    255.255.240.0");
+    HostNETMASKwlan1->addSelection("/21    255.255.248.0");
+    HostNETMASKwlan1->addSelection("/22    255.255.252.0");
+    HostNETMASKwlan1->addSelection("/23    255.255.254.0");
+    HostNETMASKwlan1->addSelection("/24    255.255.255.0");
+    HostNETMASKwlan1->addSelection("/25    255.255.255.128");
+    HostNETMASKwlan1->addSelection("/26    255.255.255.192");
+    HostNETMASKwlan1->addSelection("/27    255.255.255.224");
+    HostNETMASKwlan1->addSelection("/28    255.255.255.240");
+    HostNETMASKwlan1->addSelection("/29    255.255.255.248");
+    HostNETMASKwlan1->addSelection("/30    255.255.255.252");
+    HostNETMASKwlan1->addSelection("/31    255.255.255.254");
+    HostNETMASKwlan1->addSelection("/32    255.255.255.255");
+    HostNETMASKwlan1->setHelpText(QObject::tr("Netmask"));
+    HostNETMASKwlan1->setValue(24);
+
+    HostGWwlan1 = new HostLineEdit("HostGWwlan1");
+    HostGWwlan1->setLabel(QObject::tr("Gateway"));
+    HostGWwlan1->setValue("192.168.1.1");
+    HostGWwlan1->setHelpText(QObject::tr("This is the default route"));
+
+
+    HostDNSwlan1 = new HostLineEdit("HostDNSwlan1");
+    HostDNSwlan1->setLabel(QObject::tr("Name server"));
+    HostDNSwlan1->setValue("192.168.1.1");
+    HostDNSwlan1->setHelpText(QObject::tr("Name server"));
+
+
+    HostActiveonbootwlan1 = new HostCheckBox("HostActiveonbootwlan1");
+    HostActiveonbootwlan1->setLabel(QObject::tr("Active"));
+    HostActiveonbootwlan1->setValue(false);
+    HostActiveonbootwlan1->setHelpText(QObject::tr("Network is started on boot"));
+
+    HostUseDHCPwlan1 = new HostCheckBox("HostUseDHCPwlan1");
+    HostUseDHCPwlan1 ->setLabel(QObject::tr("Static ip address"));
+    HostUseDHCPwlan1 ->setValue(false);
+    HostUseDHCPwlan1 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used."));
+
+    wirelessbuttonwlan1 = new TransButtonSetting();
+    wirelessbuttonwlan1->setLabel(tr("Wireless Settings"));
+    connect(wirelessbuttonwlan1, SIGNAL(pressed()), this,   SLOT(wlan1_wireless_settings()));
+
+    HostDefaultwlan1 = new HostCheckBox("HostDefaultwlan1");
+    HostDefaultwlan1->setLabel(QObject::tr("Default"));
+    HostDefaultwlan1->setValue(false);
+    HostDefaultwlan1->setHelpText(QObject::tr("Will be used as the primary interface"));
+    connect(HostDefaultwlan1, SIGNAL(valueChanged(bool)), this, SLOT(wlan1_disable_others()));
+
+
+    ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false, false);
+    settings1->addChild(HostActiveonbootwlan1);
+    settings1->addChild(HostDefaultwlan1);
+    settings1-> addChild(wirelessbuttonwlan1);
+
+    addChild(settings1);
+
+    Setting* dhcpEnabled = HostUseDHCPwlan1;
+    addChild(dhcpEnabled);
+    setTrigger(dhcpEnabled);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false);
+    settings->addChild(HostIPwlan1);
+    settings->addChild(HostNETMASKwlan1);
+    settings->addChild(HostGWwlan1);
+    settings->addChild(HostDNSwlan1);
+
+    addTarget("0", new VerticalConfigurationGroup(true));
+    addTarget("1", settings);
+};
+
+wlan1options::wlan1options()
+{
+    VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
+    rec->setLabel(QObject::tr("Wireless configuration for wlan1"));
+    rec->addChild(new wlan1_settings);
+    addChild(rec);
+}
+void NetworkSettingswlan1::wlan1_disable_others()
+{
+    QString my_current_value;
+    my_current_value = HostDefaultwlan1->getValue();
+    if ( my_current_value == "1" )
+    {
+        hostparm.ThisHostDefaultInterface="wlan1";
+        emit wlan1_is_default();
+    }
+}
+
+void NetworkSettingswlan1::wlan1_disabled()
+{
+    HostDefaultwlan1->setValue(0);
+}
+void NetworkSettingswlan1::wlan1_wireless_disable()
+{
+    wirelessbuttonwlan1->setEnabled(false);
+}
+
+void NetworkSettingswlan1::wlan1_wireless_settings(void)
+{
+    wlan1options wlan1screen;
+    wlan1screen.exec();
+}
+
+//---
+
+class ath0_settings:          public TriggeredConfigurationGroup {
+public:
+    ath0_settings():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+
+        HostComboBox *HOSTESSIDath0 = new HostComboBox("HOSTESSIDath0",true);
+        HOSTESSIDath0->setLabel(QObject::tr("ESSID"));
+        HOSTESSIDath0->addSelection("MythVantage");
+        HOSTESSIDath0->addSelection("home_lan");
+        HOSTESSIDath0->addSelection("type_it_here");
+        HOSTESSIDath0->setHelpText(QObject::tr("ESSID"));
+        addChild(HOSTESSIDath0);
+
+        HostComboBox *HostUseEncryptionath0 = new HostComboBox("HostUseEncryptionath0");
+        HostUseEncryptionath0->setLabel(QObject::tr("Encryption"));
+        HostUseEncryptionath0->setHelpText(QObject::tr("WPA, WEP, none"));
+        HostUseEncryptionath0->addSelection("none");
+        HostUseEncryptionath0->addSelection("WPA");
+        HostUseEncryptionath0->addSelection("WEP");
+
+        Setting*  HostUseEncryption =  HostUseEncryptionath0;
+        addChild(HostUseEncryption);
+        setTrigger(HostUseEncryption);
+
+        HostLineEdit *Hostkeyath0 = new HostLineEdit("Hostkeyath0");
+        Hostkeyath0->setLabel(QObject::tr("key"));
+        Hostkeyath0->setHelpText(QObject::tr("Key to use for encryption"));
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false);
+        settings->addChild(Hostkeyath0);
+        addTarget("none", new GridConfigurationGroup(1,false));
+        addTarget("WPA", settings);
+        addTarget("WEP", settings);
+        //-
+
+    };
+};
+
+
+NetworkSettingsath0::NetworkSettingsath0():
+    TriggeredConfigurationGroup(false,false,false,false) {
+    setLabel(QObject::tr("Network Settings"));
+    HostLineEdit  *HostIPath0 = new HostLineEdit("HostIPath0");
+    HostIPath0->setLabel(QObject::tr("Ip address"));
+    HostIPath0->setValue("192.168.1.12");
+    HostIPath0->setHelpText(QObject::tr("IP address of the new installation"));
+
+    HostComboBox *HostNETMASKath0 = new HostComboBox("HostNETMASKath0");
+    HostNETMASKath0->setLabel(QObject::tr("Netmask"));
+    HostNETMASKath0->addSelection("/0     0.0.0.0");
+    HostNETMASKath0->addSelection("/1     128.0.0.0");
+    HostNETMASKath0->addSelection("/2     192.0.0.0");
+    HostNETMASKath0->addSelection("/3     224.0.0.0");
+    HostNETMASKath0->addSelection("/4     240.0.0.0");
+    HostNETMASKath0->addSelection("/5     248.0.0.0");
+    HostNETMASKath0->addSelection("/6     252.0.0.0");
+    HostNETMASKath0->addSelection("/7     254.0.0.0");
+    HostNETMASKath0->addSelection("/8     255.0.0.0");
+    HostNETMASKath0->addSelection("/9     255.128.0.0");
+    HostNETMASKath0->addSelection("/10    255.192.0.0 ");
+    HostNETMASKath0->addSelection("/11    255.224.0.0");
+    HostNETMASKath0->addSelection("/12    255.240.0.0");
+    HostNETMASKath0->addSelection("/13    255.248.0.0");
+    HostNETMASKath0->addSelection("/14    255.252.0.0");
+    HostNETMASKath0->addSelection("/15    255.254.0.0");
+    HostNETMASKath0->addSelection("/16    255.255.0.0");
+    HostNETMASKath0->addSelection("/17    255.255.128.0");
+    HostNETMASKath0->addSelection("/18    255.255.192.0");
+    HostNETMASKath0->addSelection("/19    255.255.224.0");
+    HostNETMASKath0->addSelection("/20    255.255.240.0");
+    HostNETMASKath0->addSelection("/21    255.255.248.0");
+    HostNETMASKath0->addSelection("/22    255.255.252.0");
+    HostNETMASKath0->addSelection("/23    255.255.254.0");
+    HostNETMASKath0->addSelection("/24    255.255.255.0");
+    HostNETMASKath0->addSelection("/25    255.255.255.128");
+    HostNETMASKath0->addSelection("/26    255.255.255.192");
+    HostNETMASKath0->addSelection("/27    255.255.255.224");
+    HostNETMASKath0->addSelection("/28    255.255.255.240");
+    HostNETMASKath0->addSelection("/29    255.255.255.248");
+    HostNETMASKath0->addSelection("/30    255.255.255.252");
+    HostNETMASKath0->addSelection("/31    255.255.255.254");
+    HostNETMASKath0->addSelection("/32    255.255.255.255");
+    HostNETMASKath0->setHelpText(QObject::tr("Netmask"));
+    HostNETMASKath0->setValue(24);
+
+    HostLineEdit *HostGWath0 = new HostLineEdit("HostGWath0");
+    HostGWath0->setLabel(QObject::tr("Gateway"));
+    HostGWath0->setValue("192.168.1.1");
+    HostGWath0->setHelpText(QObject::tr("This is the default route"));
+
+
+    HostLineEdit *HostDNSath0 = new HostLineEdit("HostDNSath0");
+    HostDNSath0->setLabel(QObject::tr("Name server"));
+    HostDNSath0->setValue("192.168.1.1");
+    HostDNSath0->setHelpText(QObject::tr("Name server"));
+
+
+    HostCheckBox *HostActiveonbootath0 = new HostCheckBox("HostActiveonbootath0");
+    HostActiveonbootath0->setLabel(QObject::tr("Active"));
+    HostActiveonbootath0->setValue(false);
+    HostActiveonbootath0->setHelpText(QObject::tr("Network is started on boot"));
+
+    HostDefaultath0 = new HostCheckBox("HostDefaultath0");
+    HostDefaultath0->setLabel(QObject::tr("Default"));
+    HostDefaultath0->setValue(false);
+    HostDefaultath0->setHelpText(QObject::tr("Will be used as the primary interface"));
+    connect(HostDefaultath0, SIGNAL(valueChanged(bool)), this, SLOT(ath0_disable_others()));
+
+    HostCheckBox *HostUseDHCPath0 = new HostCheckBox("HostUseDHCPath0");
+    HostUseDHCPath0 ->setLabel(QObject::tr("Static ip address"));
+    HostUseDHCPath0 ->setValue(false);
+    HostUseDHCPath0 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used."));
+
+    wirelessbuttonath0 = new TransButtonSetting();
+    wirelessbuttonath0->setLabel(tr("Wireless Settings"));
+    connect(wirelessbuttonath0, SIGNAL(pressed()), this,   SLOT(ath0_wireless_settings()));
+
+    ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false,false);
+    settings1->addChild(HostActiveonbootath0);
+    settings1->addChild(HostDefaultath0);
+    settings1-> addChild(wirelessbuttonath0);
+
+    addChild(settings1);
+
+    Setting* dhcpEnabled = HostUseDHCPath0;
+    addChild(dhcpEnabled);
+    setTrigger(dhcpEnabled);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false);
+    settings->addChild(HostIPath0);
+    settings->addChild(HostNETMASKath0);
+    settings->addChild(HostGWath0);
+    settings->addChild(HostDNSath0);
+
+    addTarget("0", new VerticalConfigurationGroup(false,false,false,false));
+    addTarget("1", settings);
+};
+ath0options::ath0options()
+{
+
+    VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
+    rec->setLabel(QObject::tr("Wireless configuration for ath0"));
+    rec->addChild(new ath0_settings);
+    addChild(rec);
+}
+
+void NetworkSettingsath0::ath0_disable_others()
+{
+    QString my_current_value;
+    my_current_value = HostDefaultath0->getValue();
+    if ( my_current_value == "1" )
+    {
+        hostparm.ThisHostDefaultInterface="ath0";
+        emit ath0_is_default();
+    }
+}
+void NetworkSettingsath0::ath0_disabled()
+{
+    HostDefaultath0->setValue(0);
+}
+
+void NetworkSettingsath0::ath0_wireless_settings(void)
+{
+    ath0options ath0screen;
+    ath0screen.exec();
+}
+
+void NetworkSettingsath0::ath0_wireless_disable()
+{
+    wirelessbuttonath0->setEnabled(false);
+}
+
+
+//--
+
+class NetworkSettingsFrame:
+    public TriggeredConfigurationGroup {
+public:
+    NetworkSettingsFrame():
+        TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        setLabel(QObject::tr("Network Settings (1/2)"));
+        Setting* netdevice = HostNetDevice();
+        addChild(netdevice);
+        setTrigger(netdevice);
+
+        NetworkSettingswlan0 *Nwlan0 = new NetworkSettingswlan0 ;
+        NetworkSettingswlan1 *Nwlan1 = new NetworkSettingswlan1 ;
+        NetworkSettingseth0 *Neth0 = new NetworkSettingseth0 ;
+        NetworkSettingseth1 *Neth1 = new NetworkSettingseth1 ;
+        NetworkSettingsath0 *Nath0 = new NetworkSettingsath0 ;
+
+        QString found_wireless=findnet_wireless();
+
+        if ( not found_wireless.contains("eth0"))
+        {
+            Neth0->eth0_wireless_disable();
+            hostparm.ThisHOST_iswirelesseth0="0";
+        }
+        else
+        {
+            hostparm.ThisHOST_iswirelesseth0="1";
+        }
+
+        if ( not found_wireless.contains("eth1"))
+        {
+            Neth1->eth1_wireless_disable();
+            hostparm.ThisHOST_iswirelesseth1="0";
+        }
+        else
+        {
+            hostparm.ThisHOST_iswirelesseth1="1";
+        }
+
+        if ( not found_wireless.contains("wlan0"))
+        {
+            Nwlan0->wlan0_wireless_disable();
+            hostparm.ThisHOST_iswirelesswlan0="0";
+        }
+        else
+        {
+            hostparm.ThisHOST_iswirelesswlan0="1";
+        }
+
+        if ( not found_wireless.contains("wlan1"))
+        {
+            Nwlan1->wlan1_wireless_disable();
+            hostparm.ThisHOST_iswirelesswlan1="0";
+        }
+        else
+        {
+            hostparm.ThisHOST_iswirelesswlan0="1";
+        }
+
+        if ( not found_wireless.contains("ath0"))
+        {
+            Nath0->ath0_wireless_disable();
+            hostparm.ThisHOST_iswirelessath0="0";
+        }
+        else
+        {
+            hostparm.ThisHOST_iswirelessath0="1";
+        }
+        connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Nwlan0,  SLOT(wlan0_disabled()));
+        connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Neth0,   SLOT(eth0_disabled()));
+        connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Neth1,   SLOT(eth1_disabled()));
+        connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Nath0,   SLOT(ath0_disabled()));
+
+        connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Nwlan1,  SLOT(wlan1_disabled()));
+        connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Neth0,   SLOT(eth0_disabled()));
+        connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Neth1,   SLOT(eth1_disabled()));
+        connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Nath0,   SLOT(ath0_disabled()));
+
+        connect(Neth1, SIGNAL(eth1_is_default(void)), Nwlan1,   SLOT(wlan1_disabled()));
+        connect(Neth1, SIGNAL(eth1_is_default(void)), Nwlan0,   SLOT(wlan0_disabled()));
+        connect(Neth1, SIGNAL(eth1_is_default(void)), Neth0,    SLOT(eth0_disabled()));
+        connect(Neth1, SIGNAL(eth1_is_default(void)), Nath0,    SLOT(ath0_disabled()));
+
+        connect(Neth0, SIGNAL(eth0_is_default(void)), Nwlan0,   SLOT(wlan0_disabled()));
+        connect(Neth0, SIGNAL(eth0_is_default(void)), Nwlan1,   SLOT(wlan1_disabled()));
+        connect(Neth0, SIGNAL(eth0_is_default(void)), Neth1,    SLOT(eth1_disabled()));
+        connect(Neth0, SIGNAL(eth0_is_default(void)), Nath0,    SLOT(ath0_disabled()));
+
+        connect(Nath0, SIGNAL(ath0_is_default(void)), Nwlan0,   SLOT(wlan0_disabled()));
+        connect(Nath0, SIGNAL(ath0_is_default(void)), Nwlan1,   SLOT(wlan1_disabled()));
+        connect(Nath0, SIGNAL(ath0_is_default(void)), Neth1,    SLOT(eth1_disabled()));
+        connect(Nath0, SIGNAL(ath0_is_default(void)), Neth0,    SLOT(eth0_disabled()));
+
+
+        HostLineEdit *HostMTUeth0 = new HostLineEdit("HostMTUeth0");
+        HostMTUeth0->setLabel(QObject::tr("MTU"));
+        HostMTUeth0->setValue("");
+        HostMTUeth0->setHelpText(QObject::tr("Leave this blank for default values.  Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device."));
+
+        ConfigurationGroup* settingseth0 = new GridConfigurationGroup(1,false, false, false, false);
+        settingseth0->addChild(Neth0);
+        settingseth0->addChild(HostMTUeth0);
+
+
+        HostLineEdit *HostMTUeth1 = new HostLineEdit("HostMTUeth1");
+        HostMTUeth1->setLabel(QObject::tr("MTU"));
+        HostMTUeth1->setValue("");
+        HostMTUeth1->setHelpText(QObject::tr("Leave this blank for default values.  Changing this setting can have adverse affects, use with caution.  Not all values will be supported by the device."));
+
+        ConfigurationGroup* settingseth1 = new GridConfigurationGroup(1,false, false, true, true);
+        settingseth1->addChild(Neth1);
+        settingseth1->addChild(HostMTUeth1);
+
+        HostLineEdit *HostMTUwlan0 = new HostLineEdit("HostMTUwlan0");
+        HostMTUwlan0->setLabel(QObject::tr("MTU"));
+        HostMTUwlan0->setValue("");
+        HostMTUwlan0->setHelpText(QObject::tr("Leave this blank for default values.  Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device."));
+
+        ConfigurationGroup* settingswlan0 = new GridConfigurationGroup(1,false, false, false, false);
+        settingswlan0->addChild(Nwlan0);
+        settingswlan0->addChild(HostMTUwlan0);
+
+        HostLineEdit *HostMTUwlan1 = new HostLineEdit("HostMTUwlan1");
+        HostMTUwlan1->setLabel(QObject::tr("MTU"));
+        HostMTUwlan1->setValue("");
+        HostMTUwlan1->setHelpText(QObject::tr("Leave this blank for default values.  Changing this setting can have adverse affects, use with caution.  Not all values will be supported by the device."));
+
+        ConfigurationGroup* settingswlan1 = new GridConfigurationGroup(1,false, false, false, false);
+        settingswlan1->addChild(Nwlan1);
+        settingswlan1->addChild(HostMTUwlan1);
+
+        HostLineEdit *HostMTUath0 = new HostLineEdit("HostMTUath0");
+        HostMTUath0->setLabel(QObject::tr("MTU"));
+        HostMTUath0->setValue("");
+        HostMTUath0->setHelpText(QObject::tr("Leave this blank for default values.  Changing this setting can have adverse affects, use with caution.  Not all values will be supported by the device."));
+
+        ConfigurationGroup* settingsath0 = new GridConfigurationGroup(1,false, false, false, false);
+        settingsath0->addChild(Nath0);
+        settingsath0->addChild(HostMTUath0);
+
+        addTarget("wlan0", settingswlan0);
+        addTarget("wlan1", settingswlan1);
+        addTarget("eth0",  settingseth0);
+        addTarget("eth1",  settingseth1);
+        addTarget("ath0",  settingsath0);
+    };
+};
+
+
+
+NetworkOptionsFrame::NetworkOptionsFrame():
+    VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("Network Settings (2/2)"));
+    HostMyhostname = new HostComboBox("HostMyhostname",true);
+    HostMyhostname->setLabel(QObject::tr("Hostname"));
+    HostMyhostname->addSelection("Envy");
+    HostMyhostname->addSelection("Greed");
+    HostMyhostname->addSelection("Lust");
+    HostMyhostname->addSelection("Sloth");
+    HostMyhostname->addSelection("Wrath");
+    HostMyhostname->addSelection("Gluttony");
+    HostMyhostname->addSelection("Pride");
+    HostMyhostname->addSelection("Humility");
+    HostMyhostname->addSelection("Generosity");
+    HostMyhostname->addSelection("Love");
+    HostMyhostname->addSelection("Kindness");
+    HostMyhostname->addSelection("SelfControl");
+    HostMyhostname->addSelection("Faith");
+    HostMyhostname->addSelection("Zeal");
+    HostMyhostname->addSelection("type_hostname_here");
+    HostMyhostname->setHelpText(QObject::tr("The hostname must resolve via DNS. If DNS is not available then append .local to the end of the hostname. When using .local, names must not include an additional ."));
+
+    FetchDhcpHostnameButton = new TransButtonSetting();
+    FetchDhcpHostnameButton ->setLabel(tr("Ask DHCP server for hostname"));
+    connect(FetchDhcpHostnameButton, SIGNAL(pressed()), this,   SLOT(fetch_hostname()));
+
+    networklabel = new TransLabelSetting();
+    QString labelstring;
+    labelstring = "Will use " + hostparm.ThisHostDefaultInterface + " to check for hostname";
+    networklabel->setValue(labelstring);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false);
+    settings->addChild(HostMyhostname);
+    settings->addChild(networklabel);
+    settings->addChild(FetchDhcpHostnameButton);
+
+    addChild(settings);
+
+}
+
+QString NetworkOptionsFrame::find_hostname()
+{
+    QString new_host;
+    QString cmdtxt;
+    new_host="null";
+    cmdtxt="sudo ";
+    cmdtxt.append(MV_ROOT) ;
+    cmdtxt.append("bin/systemconfig.py -m dhcp_request -d " );
+    cmdtxt.append(hostparm.ThisHostDefaultInterface);
+    myth_system(cmdtxt);
+    system(cmdtxt);
+    QString line;
+    QFile file("/tmp/mvnetwork.dhcpinfo");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if ( line.contains("new_host_name"))
+            {
+                QString s = line.simplifyWhiteSpace();
+                s = s.section( "=", 1, 1 );   // s == "surname"
+                new_host = s.simplifyWhiteSpace();
+            }
+        }
+        file.close();
+    }
+
+    return new_host;
+}
+
+void NetworkOptionsFrame::fetch_hostname()
+{
+    QString new_host;
+    new_host=find_hostname();
+    if ( new_host != "null" )
+    {
+        networklabel->setValue("Updated the hostname.");
+        HostMyhostname->addSelection(new_host);
+        HostMyhostname->setValue(new_host);
+    }
+    else
+        networklabel->setValue("DHCP server did not return a hostname.");
+}
+
+static HostCheckBox *HostAutodown()
+{
+    HostCheckBox *gc = new HostCheckBox("HostAutodown");
+    gc->setLabel(QObject::tr("Turn off machine at a specified time"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Will turn off this system."));
+    return gc;
+};
+
+static HostSpinBox *HostWakeupTime()
+{
+    HostSpinBox *gc = new HostSpinBox("HostWakeupTime", -1, 23, 1, true);
+    gc->setLabel(QObject::tr("Power on  time"));
+    gc->setValue(6);
+    gc->setHelpText(QObject::tr("Select the hour to auto poweron this system. Use -1 to disable"  ));
+    return gc;
+}
+
+static HostSpinBox *HostShutdownTime()
+{
+    HostSpinBox *gc = new HostSpinBox("HostShutdownTime", -1, 23, 1, true);
+    gc->setLabel(QObject::tr("Auto Shutdown time"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Select the hour to  poweroff this syste.  Times are in 24hour format.  Use -1 to disable"  ));
+    return gc;
+}
+
+static HostSpinBox *HostShutdownTime2()
+{
+    HostSpinBox *gc = new HostSpinBox("HostShutdownTime2", -1, 23, 1, true);
+    gc->setLabel(QObject::tr("2nd auto Shutdown time"));
+    gc->setValue(2);
+    gc->setHelpText(QObject::tr("Select the hour to  poweroff this syste.  Times are in 24hour format.  Use -1 to disable"  ));
+    return gc;
+}
+
+
+
+static HostCheckBox *HostUseWOL()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseWOL");
+    gc->setLabel(QObject::tr("Use Wake on Lan to turn on system"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Unless you know what your doing leave it checked"));
+    return gc;
+};
+
+static HostCheckBox *HostUseNVRAM()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseNVRAM");
+    gc->setLabel(QObject::tr("Use nvram to turn on system"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Leaved checked unless nvram causes problems."));
+    return gc;
+};
+
+
+static HostCheckBox *HostUseXLargeMouse()
+{
+    HostCheckBox *gc = new HostCheckBox("HostUseXLargeMouse");
+    gc->setLabel(QObject::tr("Large Mouse Pointer"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Use an extra large mouse pointer. This takes effect the next time the frontend is started."));
+    return gc;
+};
+
+
+
+class WakeSettings:                     public TriggeredConfigurationGroup {
+public:
+    WakeSettings():
+
+        TriggeredConfigurationGroup(true) {
+        setLabel(QObject::tr("Shutdown Settings"));
+        Setting* Autodown = HostAutodown();
+        addChild(Autodown);
+        setTrigger(Autodown);
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false);
+        settings->addChild(HostShutdownTime());
+        settings->addChild(HostShutdownTime2());
+      //  settings->addChild(HostWakeupTime());
+      //  settings->addChild(HostUseNVRAM());
+      //  settings->addChild(HostUseWOL());
+        addTarget("0", new VerticalConfigurationGroup(true));
+        addTarget("1", settings);
+    };
+};
+
+class Frontend_settings_group:          public TriggeredConfigurationGroup {
+public:
+    Frontend_settings_group():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+        Setting* fe = HostRunFrontend();
+        addChild(fe);
+        setTrigger(fe);
+        ConfigurationGroup* setting1 = new GridConfigurationGroup(2,false);
+
+	setting1->addChild(HostUseXLargeMouse());
+        setting1->addChild(HostUsemythfrontend());
+//        setting1->addChild(HostXres());
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false);
+        settings->addChild(setting1);
+
+//        settings->addChild(new HostRemoteType);
+
+        addTarget("0", new VerticalConfigurationGroup(false));
+        addTarget("1", settings);
+
+    };
+};
+
+SystemtypeGroup::SystemtypeGroup():        TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+    setLabel(QObject::tr("System Type"));
+    HostSystemType = new HostComboBox("HostSystemType");
+    HostSystemType->setLabel(QObject::tr("System Type"));
+    HostSystemType->addSelection("Master_backend");
+    HostSystemType->addSelection("Frontend_only");
+//     HostSystemType->addSelection("Standalone");
+    HostSystemType->addSelection("Slave_backend");
+
+    if ( ((gCoreContext->GetSetting("HostaccesshostypeSystemtype")) == "0" ))
+        HostSystemType->setEnabled(false);
+
+    addChild(HostSystemType);
+    setTrigger(HostSystemType);
+
+     ConfigurationGroup* fe1 = new GridConfigurationGroup(2,false,false,true,true);
+          fe1->addChild(HostUseXLargeMouse());
+          fe1->addChild(HostUsemythfrontend());
+
+    ConfigurationGroup* standalone = new VerticalConfigurationGroup(false,false,true,true);
+//        standalone->addChild(HostXres());
+        //FIXME
+//        standalone->addChild(new HostRemoteType);
+        standalone->addChild(fe1);
+
+
+    ConfigurationGroup* frontend = new VerticalConfigurationGroup(false,false,true,true);
+        frontend->addChild(HostMysqlserverip_listbox());
+//        frontend->addChild(HostXres());
+        //FIXME
+//        frontend->addChild(new HostRemoteType);
+        frontend->addChild(fe1);
+
+    ConfigurationGroup* backend = new VerticalConfigurationGroup(false,false,false,false);
+        backend->addChild( new Frontend_settings_group);
+
+    ConfigurationGroup* slave = new VerticalConfigurationGroup(false,false,true,true);
+    slave->addChild(HostMysqlserverip_listbox());
+    slave->addChild( new Frontend_settings_group);
+
+
+    addTarget("Standalone", standalone);
+    addTarget("Frontend_only", frontend);
+    addTarget("Master_backend", backend);
+    addTarget("Slave_backend", slave);
+    connect(HostSystemType, SIGNAL(valueChanged(const QString&)),
+            this,    SLOT(SystemtypeHelp()));
+
+};
+
+void SystemtypeGroup::SystemtypeHelp(void)
+{
+    QString msg = (QObject::tr("Type of configuration for this system"));
+    QString selectedhostype;
+    selectedhostype = HostSystemType->getValue();
+    if  ( selectedhostype.isEmpty())
+    {
+        HostSystemType->setHelpText(msg) ;
+        return;
+    }
+
+    if (selectedhostype == "Standalone")
+        msg="Complete System, that doesn't allow outside connections.";
+    if (selectedhostype == "Frontend_only")
+        msg="Frontend_only needs a primary system (master backend) already on the network.";
+    if (selectedhostype ==  "Master_backend")
+        msg="Primary system with tuners, scheduling and database. This allows for remote frontend and slave backends.";
+    if (selectedhostype == "Slave_backend")
+        msg="Secondary system for extra tuners.";
+
+    HostSystemType->setHelpText(msg) ;
+}
+
+
+
+// HostRemoteType::HostRemoteType():
+//     HostImageSelect("HostRemoteType") {
+//     setLabel(QObject::tr("Remote"));
+//     QString dirtxt;
+//     dirtxt=MV_ROOT;
+//     dirtxt.append("templates/remotes");
+//     QDir remotes(dirtxt);
+//     remotes.setFilter(QDir::Dirs);
+//     remotes.setSorting(QDir::Name | QDir::IgnoreCase);
+//     QFileInfoList fil = remotes.entryInfoList(QDir::Dirs);
+//     for( QFileInfoList::iterator it =  fil.begin();
+//             it != fil.end();
+//             ++it )
+//     {
+//         QFileInfo  &remote = *it;
+//         if (remote.fileName() == "." || remote.fileName() == ".." )
+//             continue;
+//
+//         QString name = remote.fileName();
+//         QString defaultpreview = remotes.absolutePath();
+//         defaultpreview += "/";
+//         defaultpreview += name;
+//         defaultpreview += "/preview.jpg";
+//         QFileInfo preview(defaultpreview);
+//         if (!preview.exists())
+//         {
+//             LOG(VB_GENERAL, LOG_ERR, QString("Theme %1 missing preview image.").arg(remote.fileName()));
+//         }
+//         else
+//         {
+//             QImage* previewImage = new QImage(preview.absoluteFilePath());
+//             if (previewImage->width() == 0 || previewImage->height() == 0)
+//                 LOG(VB_GENERAL, LOG_ERR, QString("Problem reading remote preview %1").arg(preview.filePath()));
+//
+//             //Add the remote
+//             addImageSelection(name, previewImage, remote.fileName());
+//             LOG(VB_GENERAL, LOG_DEBUG, QString("Adding remote %1.").arg(name));
+//         }
+//     }
+//
+// }
+
+class AdvancedSettings:    public TriggeredConfigurationGroup {
+public:
+
+    AdvancedSettings():
+        TriggeredConfigurationGroup(true,true,true,true,true,true,true,true)
+    {
+
+        setLabel(QObject::tr("Advanced Settings (1/2)"));
+        Setting* Autodown = HostAutodown();
+        setTrigger(Autodown);
+        hostparm.ThisSystemType 	= gCoreContext->GetSetting("HostSystemType");
+        ConfigurationGroup *checkbox = new GridConfigurationGroup(2,false);
+        checkbox->addChild(HostServiceMythWEB());
+       // checkbox->addChild(HostServiceNFS());
+        checkbox->addChild(Hostbootsplash());
+        checkbox->addChild(HostncidClient());
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false);
+        if  ( hostparm.ThisSystemType == "Standalone" )
+        {
+          //  smb_busy_box();
+            settings->addChild(new NCIDsettings);
+           // settings->addChild(new SAMBAsettings);
+         //   checkbox->addChild(HostServiceRRD() );
+            settings->addChild(checkbox)                ;
+        }
+        else if  (hostparm.ThisSystemType == "Master_backend" )
+        {
+          //  smb_busy_box();
+//            checkbox->addChild(GlobalPKG_MIRROR());
+            settings->addChild(new NCIDsettings);
+           // settings->addChild(new SAMBAsettings);
+       //     checkbox->addChild(HostServiceRRD() );
+            settings->addChild(checkbox)                ;
+        }
+        else if  (hostparm.ThisSystemType == "Frontend_only" )
+        {
+            settings->addChild(Hostbootsplash());
+            settings->addChild(HostncidClient());
+//            settings->addChild(HostServiceRRD() );
+        }
+        else if  (hostparm.ThisSystemType == "Slave_backend" )
+        {
+            settings->addChild(Hostbootsplash());
+            settings->addChild(HostncidClient());
+
+//            settings->addChild(HostServiceRRD() );
+
+//             if (  (gCoreContext->GetSetting("GlobalPKG_MIRROR")) == "1")
+//                 settings->addChild(HostPKG_MIRROR());
+        };
+        addTarget("", settings);
+    };
+};
+
+
+class AdvancedSettings_2:    public TriggeredConfigurationGroup {
+public:
+    AdvancedSettings_2():
+        TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+        setLabel(QObject::tr("Advanced Settings (2/2)"));
+        Setting* Autodown = HostAutodown();
+        setTrigger(Autodown);
+        hostparm.ThisSystemType     = gCoreContext->GetSetting("HostSystemType");
+/*
+        ConfigurationGroup *checkbox = new GridConfigurationGroup(2,false);
+        checkbox->addChild(HostServiceMythWEB());
+        checkbox->addChild(HostServiceNFS());
+        checkbox->addChild(Hostbootsplash());
+        checkbox->addChild(HostncidClient());*/
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false);
+        if  ( hostparm.ThisSystemType == "Standalone" )
+        {
+            settings->addChild(HostRunDHCP());
+            settings->addChild(HostBEWait());
+            //settings->addChild(new Evroutersettings);
+        }
+        else if  (hostparm.ThisSystemType == "Master_backend" )
+        {
+            settings->addChild(new Backupsettings);
+            settings->addChild(HostRunDHCP());
+            settings->addChild(HostBEWait());
+            //settings->addChild(new Evroutersettings);
+        }
+        else if  (hostparm.ThisSystemType == "Frontend_only" )
+        {
+            //settings->addChild(new Evroutersettings);
+            settings->addChild(HostBEWait());
+        }
+        else if  (hostparm.ThisSystemType == "Slave_backend" )
+        {
+            //settings->addChild(new Evroutersettings);
+            settings->addChild(HostBEWait());
+        };
+
+        addTarget("", settings);
+    };
+};
+
+
+/*_______________________________Sound settings ____________________*/
+SoundSettings::SoundSettings():
+    TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+    setLabel(QObject::tr("Audio Settings"));
+
+    HostAudiotype = new HostComboBox("HostAudiotype",false);
+    HostAudiotype->setLabel(QObject::tr("Sound Card Driver"));
+    HostAudiotype->addSelection("OSS");
+    HostAudiotype->addSelection("ALSA");
+    HostAudiotype->addSelection("tinker");
+
+    HostAudiotype->setHelpText(QObject::tr("Select the sound driver, OSS or ALSA." ) );
+    addChild(HostAudiotype);
+    setTrigger(HostAudiotype);
+
+//     HostsyncXine = new HostCheckBox("HostsyncXine");
+//     HostsyncXine->setLabel(QObject::tr("Xine"));
+//     HostsyncXine->setValue(true);
+//
+//     HostsyncMplayer = new HostCheckBox("HostsyncMplayer");
+//     HostsyncMplayer->setLabel(QObject::tr("mplayer"));
+//     HostsyncMplayer->setValue(true);
+//
+//     HostsyncMythMusic = new HostCheckBox("HostsyncMythMusic");
+//     HostsyncMythMusic->setLabel(QObject::tr("mythmusic"));
+//     HostsyncMythMusic->setValue(true);
+//
+//     HostsyncMythFrontend = new HostCheckBox("HostsyncMythFrontend");
+//     HostsyncMythFrontend->setLabel(QObject::tr("mythfrontend"));
+//     HostsyncMythFrontend->setValue(true);
+
+
+
+
+//     HorizontalConfigurationGroup *syncboxes =   new HorizontalConfigurationGroup(false, false, true, true);
+//     syncboxes->addChild(HostsyncXine);
+//     syncboxes->addChild(HostsyncMplayer);
+//     syncboxes->addChild(HostsyncMythMusic);
+//     syncboxes->addChild(HostsyncMythFrontend);
+
+    HorizontalConfigurationGroup *lp = new HorizontalConfigurationGroup(false, false, true, true);
+    HorizontalConfigurationGroup *lpalsa = new HorizontalConfigurationGroup(false, false, true, true);
+
+    TransButtonSetting *LoadOSSbutton = new TransButtonSetting();
+    LoadOSSbutton->setLabel(tr("Load OSS driver"));
+    TransButtonSetting *LoadALSAbutton = new TransButtonSetting();
+    LoadALSAbutton->setLabel(tr("Load ALSA driver"));
+
+    TransButtonSetting *TestAudiobutton = new TransButtonSetting();
+    TestAudiobutton->setLabel(tr("Test Audio Settings"));
+    lp->addChild(TestAudiobutton);
+    lp->addChild(LoadOSSbutton);
+
+    TransButtonSetting *TestALSAAudiobutton = new TransButtonSetting();
+    TestALSAAudiobutton->setLabel(tr("Test ALSA  Audio Settings"));
+    lpalsa->addChild(TestALSAAudiobutton);
+    lpalsa->addChild(LoadALSAbutton);
+
+    TransLabelSetting *osslabel = new TransLabelSetting();
+    osslabel->setValue("The original OSS! More information can be found at:");
+
+    TransLabelSetting *osslabel1 = new TransLabelSetting();
+    osslabel1->setValue("http://www.opensound.com  \n\nPlease note to fully configure sound visit the \nMythTV audio setup.\n");
+
+    TransLabelSetting *AlsaLabel = new TransLabelSetting();
+    AlsaLabel->setValue("ALSA, the alternative to OSS\n\nPlease note to fully configure sound visit the \nMythTV audio setup.\n");
+
+// OSS GROUP
+    SoundOSSsettings  *OSS = new SoundOSSsettings ;
+    ConfigurationGroup* osssettings = new VerticalConfigurationGroup(false);
+    osssettings->addChild(osslabel);
+    osssettings->addChild(osslabel1);
+    osssettings->addChild(OSS);
+   // osssettings->addChild(syncboxes);
+    osssettings->addChild(lp);
+    connect(this, SIGNAL(oss_sig()),
+            OSS,   SLOT(soundossgathersettings()));
+    connect(TestAudiobutton, SIGNAL(pressed()),
+            this,   SLOT(soundossgathersettings_1()));
+    connect(LoadOSSbutton, SIGNAL(pressed()),
+            OSS,   SLOT(loadossdriver()));
+
+// ALSA GROUP
+    SoundALSAsettings  *ALSA = new SoundALSAsettings ;
+    ConfigurationGroup* alsasettings = new VerticalConfigurationGroup(false);
+    alsasettings->addChild(AlsaLabel);
+    alsasettings->addChild(ALSA);
+//    alsasettings->addChild(syncboxes);
+    alsasettings->addChild(lpalsa);
+
+    connect(this, SIGNAL(alsa_sig()),
+            ALSA,   SLOT(soundalsagathersettings()));
+    connect(TestALSAAudiobutton, SIGNAL(pressed()),
+            this,   SLOT(soundalsagathersettings_1()));
+    connect(LoadALSAbutton, SIGNAL(pressed()),
+            ALSA,   SLOT(loadalsadriver()));
+    addTarget("ALSA", alsasettings);
+    addTarget("OSS", osssettings);
+    addTarget("tinker", new VerticalConfigurationGroup(false));
+};
+
+
+SoundOSSsettings::SoundOSSsettings():
+    TriggeredConfigurationGroup(true,false,true,true,true,true,true,true)
+{
+    SetVertical(true);
+    HostSoundTypeout = new HostComboBox("HostSoundTypeout");
+    HostSoundTypeout->setLabel(QObject::tr("Type"));
+    HostSoundTypeout->addSelection("Analog");
+    HostSoundTypeout->addSelection("Digital");
+    HostSoundTypeout->setHelpText(QObject::tr(""));
+
+    HostSoundOssAnalog = new HostComboBox("HostSoundOssAnalog");
+    HostSoundOssDigital = new HostComboBox("HostSoundOssDigital");
+    fillossselection();
+    int findossanalog=HostSoundOssAnalog->findSelection(hostparm.OLDHostSoundOSSAnalog );
+    int findossdigital=HostSoundOssDigital->findSelection(hostparm.OLDHostSoundOSSDigital );
+    HostSoundOssAnalog->setValue(findossanalog);
+    HostSoundOssDigital->setValue(findossdigital);
+    addChild(HostSoundTypeout);
+    setTrigger(HostSoundTypeout);
+    addTarget("Analog", HostSoundOssAnalog);
+    addTarget("Digital", HostSoundOssDigital);
+};
+
+SoundALSAsettings::SoundALSAsettings():
+    TriggeredConfigurationGroup(true,false,true,true,true,true,true,true)
+{
+    SetVertical(true);
+    HostSoundALSATypeout = new HostComboBox("HostSoundALSATypeout");
+    HostSoundALSATypeout->setLabel(QObject::tr("Type"));
+    HostSoundALSATypeout->addSelection("Analog");
+    HostSoundALSATypeout->addSelection("Digital");
+    HostSoundALSATypeout->setHelpText(QObject::tr(""));
+
+    HostSoundALSAAnalog = new HostComboBox("HostSoundALSAAnalog");
+    HostSoundALSADigital = new HostComboBox("HostSoundALSADigital");
+    fillALSAselection();
+    int findalsaanalog=HostSoundALSAAnalog->findSelection(hostparm.OLDHostSoundALSAAnalog );
+    int findalsadigital=HostSoundALSADigital->findSelection(hostparm.OLDHostSoundALSADigital );
+    HostSoundALSAAnalog->setValue(findalsaanalog);
+    HostSoundALSADigital->setValue(findalsadigital);
+    addChild(HostSoundALSATypeout);
+    setTrigger(HostSoundALSATypeout);
+    addTarget("Analog", HostSoundALSAAnalog);
+    addTarget("Digital", HostSoundALSADigital);
+};
+
+void  SoundOSSsettings::loadossdriver()
+{
+// Add info popup right here
+    QString cmdtxt;
+    cmdtxt="sudo ";
+    cmdtxt.append(MV_ROOT) ;
+    cmdtxt.append("bin/soundconfig.sh -t LOAD  -i OSS &");
+    system(cmdtxt);
+    int return_code = 0;
+
+    QString msgtext = "Loading OSS driver" ;
+
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,
+                                                       "ossbusy");
+
+    int progressbar=1;
+    MythProgressDialog *popupProgress = NULL;
+    popupProgress = new MythProgressDialog(msgtext, 50);
+    if (popupProgress)
+    {
+        popupProgress->setProgress(progressbar);
+    }
+
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+
+    while (  return_code == 0 )
+    {
+        progressbar++;
+        popupProgress->setProgress(progressbar);
+        if (progressbar > 50 )
+            progressbar = 10;
+
+        return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null");
+        qApp->processEvents ();
+        usleep(900);
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+
+    if (popupProgress)
+    {
+        popupProgress->Close();
+        popupProgress->deleteLater();
+    }
+
+    fillossselection();
+
+}
+void  SoundALSAsettings::loadalsadriver()
+{
+    QString cmdtxt;
+    cmdtxt="sudo ";
+    cmdtxt.append(MV_ROOT) ;
+    cmdtxt.append("bin/soundconfig.sh -t LOAD  -i ALSA &");
+    system(cmdtxt);
+    int return_code = 0;
+    QString msgtext = "Loading ALSA driver" ;
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+
+    int progressbar=1;
+    MythProgressDialog *popupProgress = NULL;
+    popupProgress = new MythProgressDialog(msgtext, 50);
+    if (popupProgress)
+    {
+        popupProgress->setProgress(progressbar);
+    }
+
+
+    while (  return_code == 0 )
+    {
+        progressbar++;
+        popupProgress->setProgress(progressbar);
+        if (progressbar > 50 )
+            progressbar = 10;
+
+        return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null");
+        qApp->processEvents ();
+        usleep(900);
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+    if (popupProgress)
+    {
+        popupProgress->Close();
+        popupProgress->deleteLater();
+    }
+
+     HostSoundALSAAnalog-> clearSelections();
+     HostSoundALSADigital-> clearSelections();
+
+    fillALSAselection();
+
+}
+void  SoundOSSsettings::fillossselection()
+{
+    myth_system("ossinfo -v1 -a |grep device > /tmp/ossdevices");
+    QString currentitem;
+    QString currentfile = "/tmp/ossdevices";
+    QString line;
+    QString legacy_device;
+    QString simpleitem;
+    QString currentitemtext;
+    QRegExp sep( "\t"   );
+    QFile file(currentfile);
+    QString ossfound="false";
+    HostSoundOssAnalog->clearSelections();
+    HostSoundOssDigital-> clearSelections();
+
+
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if (line.contains("device index") )
+            {
+                legacy_device = t.readLine();
+                legacy_device= legacy_device.section( "/",2,2);
+                currentitemtext=line.section( "/" , 0 ,0 );
+                simpleitem = currentitemtext.simplifyWhiteSpace();
+                simpleitem = simpleitem.remove ( "(" );
+                simpleitem = simpleitem.remove ( ")" );
+                simpleitem.append(" (");
+                simpleitem.append(legacy_device);
+                simpleitem.append(")");
+                if (line.contains("spdout") || line.contains("digital") )
+                    HostSoundOssDigital->addSelection(simpleitem);
+                else
+                    HostSoundOssAnalog->addSelection(simpleitem);
+                ossfound="true";
+            }
+        }
+        if (ossfound=="false")
+        {
+            simpleitem="No cards found, try loading the OSS drivers";
+            HostSoundOssAnalog->addSelection(simpleitem);
+            HostSoundOssDigital->addSelection(simpleitem);
+        }
+    }
+    return ;
+};
+
+
+void  SoundALSAsettings::fillALSAselection()
+{
+    HostSoundALSAAnalog-> clearSelections();
+    HostSoundALSADigital-> clearSelections();
+    myth_system("aplay -l > /tmp/alsadevices");
+    QString currentfile = "/tmp/alsadevices";
+    QString line;
+    QString hwdevice;
+    QString alsadescription;
+    QString alsadescription2;
+    QString temphwdevice;
+    QString simpleitem;
+    QFile file(currentfile);
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if (line.startsWith("card") )
+            {
+                if (line.contains("snd_ctl_card_info"))
+                {
+                    simpleitem="Try loading the alsa drivers";
+                    HostSoundALSAAnalog->addSelection(simpleitem);
+                    HostSoundALSADigital->addSelection(simpleitem);
+                    break;
+                }
+                //card 0: I82801DBICH4:q [Intel 82801DB-ICH4], device 0: Intel ICH [Intel 82801DB-ICH4]
+                alsadescription=line.section( "," , 0 ,0 );
+                alsadescription=alsadescription.section(":",1,1);
+
+                alsadescription2=line.section( "," , 1 ,1 );
+                //alsadescription2=alsadescription.section(":",0,0);
+
+                hwdevice=line.section( ":" , 0 ,0 );
+                hwdevice=hwdevice.section( " " , -1,-1 );
+                //grabbing 2nd half of device
+                temphwdevice=line.section(",",1,1);
+                temphwdevice=temphwdevice.section(":",0,0);
+                temphwdevice=temphwdevice.section(" ",-1,-1 );
+                hwdevice.append(",");
+                hwdevice.append(temphwdevice);
+                simpleitem=alsadescription2 + "(hw:" + hwdevice + ")";
+                if (line.contains("IEC958") || line.contains("Digital"))
+                    HostSoundALSADigital->addSelection(simpleitem);
+                else
+                    HostSoundALSAAnalog->addSelection(simpleitem);
+            }
+        }
+    }
+    return ;
+
+}
+
+void SoundSettings::soundossgathersettings_1 (void)
+{
+    hostparm.ThisHostAudiotype = HostAudiotype->getValue();
+//     hostparm.ThisHostsyncXine = HostsyncXine->getValue();
+//     hostparm.ThisHostsyncMplayer = HostsyncMplayer->getValue();
+//     hostparm.ThisHostsyncMythMusic = HostsyncMythMusic->getValue();
+//     hostparm.ThisHostsyncMythFrontend = HostsyncMythFrontend->getValue();
+    // emit the signal to call soundossgathersetting.
+    emit oss_sig();
+};
+void SoundSettings::soundalsagathersettings_1 (void)
+{
+    hostparm.ThisHostAudiotype = HostAudiotype->getValue();
+//     hostparm.ThisHostsyncXine = HostsyncXine->getValue();
+//     hostparm.ThisHostsyncMplayer = HostsyncMplayer->getValue();
+//     hostparm.ThisHostsyncMythMusic = HostsyncMythMusic->getValue();
+//     hostparm.ThisHostsyncMythFrontend = HostsyncMythFrontend->getValue();
+    // emit the signal to call soundALSAgathersetting.
+    emit alsa_sig();
+};
+
+
+void SoundOSSsettings::soundossgathersettings(void)
+{
+    hostparm.ThisHostSoundTypeout =  HostSoundTypeout->getValue() ;
+    hostparm.ThisHostSoundOSSAnalog = HostSoundOssAnalog->getValue();
+    hostparm.ThisHostSoundOSSDigital = HostSoundOssDigital->getValue();
+    QString tempdevice;
+    if  ( hostparm.ThisHostSoundTypeout == "Analog" )
+    {
+        tempdevice  =  hostparm.ThisHostSoundOSSAnalog ;
+    }
+    else
+    {
+        tempdevice = hostparm.ThisHostSoundOSSDigital ;
+    };
+    tempdevice = tempdevice.section( "(", 1,1 );
+    tempdevice = tempdevice.section( ")", 0,0 );
+    hostparm.ThisHostSoundDevice = "/dev/";
+    hostparm.ThisHostSoundDevice.append(tempdevice);
+    // Add info popup right here
+    QString cmdtxt;
+    cmdtxt=MV_ROOT  ;
+    cmdtxt.append("bin/soundconfig.sh -t test  -i OSS -d " +  hostparm.ThisHostSoundDevice + "&");
+    system(cmdtxt);
+    int return_code = 0;
+    QString msgtext = "Playing sample audio" ;
+
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+
+    int progressbar=1;
+    MythProgressDialog *popupProgress = NULL;
+    popupProgress = new MythProgressDialog(msgtext, 50);
+    if (popupProgress)
+    {
+        popupProgress->setProgress(progressbar);
+    }
+
+
+
+
+
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+
+
+
+    while (  return_code == 0 )
+    {
+        progressbar++;
+        popupProgress->setProgress(progressbar);
+        if (progressbar > 50 )
+            progressbar = 10;
+
+        return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null");
+        qApp->processEvents ();
+        usleep(900);
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+    if (popupProgress)
+    {
+        popupProgress->Close();
+        popupProgress->deleteLater();
+    }
+
+};
+
+void SoundALSAsettings::soundalsagathersettings(void)
+{
+
+    hostparm.ThisHostSoundALSATypeout =  HostSoundALSATypeout->getValue() ;
+    hostparm.ThisHostSoundALSAAnalog = HostSoundALSAAnalog->getValue();
+    hostparm.ThisHostSoundALSADigital = HostSoundALSADigital->getValue();
+
+    QString tempdevice;
+    if  ( hostparm.ThisHostSoundALSATypeout == "Analog" )
+    {
+        tempdevice  =  hostparm.ThisHostSoundALSAAnalog ;
+    }
+    else
+    {
+        tempdevice = hostparm.ThisHostSoundALSADigital ;
+    };
+    tempdevice = tempdevice.section( "(", 1,1 );
+    tempdevice = tempdevice.section( ")", 0,0 );
+    hostparm.ThisHostSoundDevice = tempdevice;
+    // Add info popup right here
+    QString cmdtxt;
+    cmdtxt=MV_ROOT  ;
+    cmdtxt.append("bin/soundconfig.sh -t test  -i ALSA -d " +  hostparm.ThisHostSoundDevice + "&");
+    system(cmdtxt);
+    int return_code = 0;
+    QString msgtext = "Playing sample audio" ;
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+
+    int progressbar=1;
+    MythProgressDialog *popupProgress = NULL;
+    popupProgress = new MythProgressDialog(msgtext, 50);
+    if (popupProgress)
+    {
+        popupProgress->setProgress(progressbar);
+    }
+
+
+
+    while (  return_code == 0 )
+    {
+        progressbar++;
+        popupProgress->setProgress(progressbar);
+        if (progressbar > 50 )
+            progressbar = 10;
+
+
+        return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null");
+        qApp->processEvents ();
+        usleep(900);
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+        if (popupProgress)
+        {
+            popupProgress->Close();
+            popupProgress->deleteLater();
+        }
+
+
+
+
+};
+
+
+/* __________________________ END OF CLASSES_________________________*/
+
+void pre_writesettings ()
+{
+    hostparm.ThisSystemType = gCoreContext->GetSetting("HostSystemType");
+    hostparm.ThisDBhost = gCoreContext->GetSetting("HostMysqlServer");
+    hostparm.ThisHostName   	= gCoreContext->GetSetting("HostMyhostname");
+
+    if  ( hostparm.ThisSystemType == "Standalone" )
+    {
+        hostparm.ThisDBhost = "localhost" ;
+        hostparm.ThisRunfrontend = "1" ;
+        gCoreContext->SaveSetting("HostRunFrontend", hostparm.ThisRunfrontend );
+        // disable pkgmirror
+//         hostparm.ThisHostPKG_MIRROR = "0";
+//         //gCoreContext->SaveSetting("GlobalPKG_MIRROR", hostparm.ThisHostPKG_MIRROR );
+//         hostparm.ThisHostServiceHobbit = gCoreContext->GetSetting("GlobalServiceHobbitserver");
+//         if (hostparm.ThisHostServiceHobbit == "" )
+//         {
+//             hostparm.ThisHostServiceHobbit = "1";
+//             QString s = "GlobalServiceHobbitserver";
+//             gCoreContext->SaveSettingOnHost(s, hostparm.ThisHostServiceHobbit ,NULL);
+//         }
+    }
+    else if  (hostparm.ThisSystemType == "Master_backend" )
+    {
+        if ( hostparm.ThisNFS =="" &&  gCoreContext->GetSetting("HostServiceNFS")  == "" )
+        {
+            hostparm.ThisNFS = "1";
+            gCoreContext->SaveSetting("HostServiceNFS",hostparm.ThisNFS );
+        }
+        hostparm.ThisDBhost = "127.0.0.1" ;
+        //GlobalPKG is only an option for MBE
+//         hostparm.ThisHostPKG_MIRROR = (gCoreContext->GetSetting("GlobalPKG_MIRROR")) ;
+//         hostparm.ThisHostServiceHobbit = gCoreContext->GetSetting("GlobalServiceHobbitserver");
+//         if (hostparm.ThisHostServiceHobbit == "" )
+//         {
+//             hostparm.ThisHostServiceHobbit = "1";
+//             QString s = "GlobalServiceHobbitserver";
+//             gCoreContext->SaveSettingOnHost(s, hostparm.ThisHostServiceHobbit,NULL );
+//         }
+    }
+    else if  (hostparm.ThisSystemType == "Frontend_only" )
+    {
+        hostparm.ThisRunfrontend     = "1" ;
+        hostparm.ThisSamba    = "0";
+        hostparm.ThisNFS       = "0";
+        hostparm.ThisMythWEB         = "0";
+        gCoreContext->SaveSetting("HostRunFrontend",  hostparm.ThisRunfrontend );
+        gCoreContext->SaveSetting("HostServiceSamba", hostparm.ThisSamba );
+        gCoreContext->SaveSetting("HostServiceNFS",  hostparm.ThisNFS );
+        gCoreContext->SaveSetting("HostServiceMythWEB",hostparm.ThisMythWEB );
+        // if GBL is enabled, then check for host setting, else disable it
+//         if ( (gCoreContext->GetSetting("GlobalPKG_MIRROR") ) == "1"  )
+//         {
+//             hostparm.ThisHostPKG_MIRROR     = gCoreContext->GetSetting("HostPKG_MIRROR");
+//         }
+//         else
+//         {
+//             hostparm.ThisHostPKG_MIRROR = "0";
+//         };
+//
+//         if ( ((gCoreContext->GetSetting("GlobalServiceHobbitserver") ) == "1") || install_hobbit )
+//         {
+//             hostparm.ThisHostServiceHobbit = gCoreContext->GetSetting("HostServiceHobbitclient");
+//         }
+//         else
+//         {
+//             hostparm.ThisHostServiceHobbit = "0";
+//         }
+//
+//         gCoreContext->SaveSetting("HostPKG_MIRROR",   hostparm.ThisHostPKG_MIRROR );
+//         gCoreContext->SaveSetting("HostServiceHobbitclient",   hostparm.ThisHostServiceHobbit);
+
+    }
+    else if  (hostparm.ThisSystemType == "Slave_backend" )
+    {
+        hostparm.ThisSamba      	 = "0";
+        hostparm.ThisNFS        	 = "0";
+        hostparm.ThisMythWEB         = "0";
+        gCoreContext->SaveSetting("HostServiceSamba", hostparm.ThisSamba );
+        gCoreContext->SaveSetting("HostServiceNFS",  hostparm.ThisNFS );
+        gCoreContext->SaveSetting("HostServiceMythWEB",hostparm.ThisMythWEB );
+//         if ( (gCoreContext->GetSetting("GlobalPKG_MIRROR") ) == "1"  )
+//         {
+//             hostparm.ThisHostPKG_MIRROR     = gCoreContext->GetSetting("HostPKG_MIRROR");
+//         }
+//         else
+//         {
+//             hostparm.ThisHostPKG_MIRROR = "0";
+//         }
+//         if ( ((gCoreContext->GetSetting("GlobalServiceHobbitserver") ) == "1") || install_hobbit )
+//         {
+//             hostparm.ThisHostServiceHobbit = gCoreContext->GetSetting("HostServiceHobbitclient");
+//         }
+//         else
+//         {
+//
+//             hostparm.ThisHostServiceHobbit = "0";
+//         }
+//
+//         gCoreContext->SaveSetting("HostPKG_MIRROR",   hostparm.ThisHostPKG_MIRROR );
+//         gCoreContext->SaveSetting("HostServiceHobbitclient",   hostparm.ThisHostServiceHobbit);
+
+    };
+
+//     if ( hostparm.ThisHostDefaultInterface == "" )
+//     {
+//         if ( gCoreContext->GetSetting("HostDefaulteth0") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "eth0";
+//         else if ( gCoreContext->GetSetting("HostDefaulteth1") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "eth1";
+//         else if ( gCoreContext->GetSetting("HostDefaultwlan0") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "wlan0";
+//         else if ( gCoreContext->GetSetting("HostDefaultwlan1") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "wlan1";
+//         else if ( gCoreContext->GetSetting("HostActiveonbooteth0") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "eth0";
+//         else if ( gCoreContext->GetSetting("HostActiveonbooteth1") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "eth1";
+//         else if ( gCoreContext->GetSetting("HostActiveonbootwlan0") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "wlan0";
+//         else if ( gCoreContext->GetSetting("HostActiveonbootwlan1") == "1" )
+//                 hostparm.ThisHostDefaultInterface = "wlan1";
+//         else
+//                 hostparm.ThisHostDefaultInterface = "ack";
+//     }
+// Even after all the above, it's still possible to set the Default interface to one that isn't active.
+
+    hostparm.ThisDBhost =  hostparm.ThisDBhost.section( "\t", 0, 0 );
+    if ( hostparm.ThisHostName == "" || hostparm.ThisHostName == "type_hostname_here")
+        hostparm.ThisHostName = "diamonds";
+    //remove spaces from hostname
+    QString s =  hostparm.ThisHostName.replace ( QRegExp(" "),"");
+    hostparm.ThisHostName = s;
+    if  ( hostparm.ThisHostName == "" )
+    {
+        hostparm.ThisHostName=gCoreContext->GetHostName();
+    }
+
+    // piece togther the timezone
+    QString tz;
+    QString tregion;
+    QString tsubregion;
+//-----------------
+//I don't think this is needed anymore
+    tz=gCoreContext->GetSetting("HostTimeZone");
+    if ( tz.isEmpty() || (tz == "Unknown"))
+        timezone_unknown = TRUE;
+//-----------
+
+    tregion=gCoreContext->GetSetting("HostTimeZoneRegion");
+    tsubregion=gCoreContext->GetSetting("HostTimeZoneRegion_"+tregion);
+    if ( tsubregion.isEmpty() )
+        hostparm.ThisTimeZone  = tregion;
+    else
+        hostparm.ThisTimeZone  = tregion + "/" + tsubregion;
+
+    gCoreContext->SaveSetting("HostMyhostname" , hostparm.ThisHostName );
+    gCoreContext->SaveSetting("HostMysqlserver", hostparm.ThisDBhost );
+    gCoreContext->SaveSetting("HostTimeZone", hostparm.ThisTimeZone );
+}
+
+void run_systemconfig(QString modulelist, bool restart, QString dbcommand)
+{
+    QString cmdtxt;
+    cmdtxt="sudo ";
+    cmdtxt.append(MV_ROOT) ;
+    cmdtxt.append("bin/systemconfig.sh " + modulelist + " &");
+    myth_system(cmdtxt);
+    int return_code = 0;
+    QString msgtext = "Please wait while  " ;
+    msgtext.append(gCoreContext->GetSetting("HostMyhostname"));
+    msgtext.append(" is configured");
+    MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+    MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+    if (busyPopup->Create())
+    {
+        popupStack->AddScreen(busyPopup, false);
+    }
+    else
+    {
+        delete busyPopup;
+        busyPopup = NULL;
+    }
+    while (  return_code == 0 )
+    {
+        return_code = myth_system("ps -ef|grep systemconfig.sh|grep -v grep > /dev/null");
+        qApp->processEvents ();
+        usleep(900);
+    }
+
+    if (busyPopup)
+    {
+        busyPopup->Close();
+        busyPopup = NULL;
+    }
+
+
+
+    if  (restart)
+    {
+        return_code = 1;
+        int loopnumber=0 ;
+        bool doloop = true;
+
+        QString msgtext = "Transferring database settings" ;
+        MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
+        MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,"installbusy");
+        if (busyPopup->Create())
+        {
+            popupStack->AddScreen(busyPopup, false);
+        }
+        else
+        {
+            delete busyPopup;
+            busyPopup = NULL;
+        }
+
+
+
+
+        while (  doloop )
+        {
+            return_code = myth_system(dbcommand);
+            qApp->processEvents ();
+            usleep(100);
+            loopnumber++ ;
+            if  ( return_code == 0 || loopnumber >= 20000000 )
+                doloop=false;
+        }
+        if (busyPopup)
+        {
+            busyPopup->Close();
+            busyPopup = NULL;
+        }
+
+     };
+
+
+
+}
+
+
+
+int runsettings (bool mysqlonly , bool shownetwork , bool showhostype,
+                 bool showmisc , bool showshutdown, bool showadvanced,
+                 bool showsound,bool showadvancedX, bool showaccesscontrol,
+                 bool showplugins , bool showsoftware, bool showuser ,
+                 bool showwebuser , bool showddns , bool showinfrared ,
+                 bool showscreensaver , bool showsupplemental,
+                 bool showremotesonly, bool showvnc, bool showfileshare)
+{
+    displaymysqlonly = false ;
+    displayshownetwork =false ;
+    displayshowhostype = false ;
+    displayshowmisc =false ;
+    displayshowshutdown =false ;
+    displayshowadvanced = false;
+    displayshowsound = false ;
+    displayshowadvancedX = false;
+    displayaccesscontrol= false;
+    displayplugins= false;
+    displaysoftware= false;
+    displayuser = false;
+    displaywebuser = false;
+    displayddns = false;
+    displayinfrared = false;
+    displayscreensaver = false;
+    displaysupplemental = false;
+    displayremotesonly = false;
+    displayvnc  = false;
+    displayfileshare = false;
+
+    //gCoreContext->ActivateSettingsCache(true);
+    //gCoreContext->ClearSettingsCache();
+    bool  runothers=false;
+    bool continuerun=true;
+    int retc = 0 ;
+    displaymysqlonly = mysqlonly;
+
+    if (displaymysqlonly )
+    {
+        MythInstallSettings mysqlsettings;
+        mysqlsettings.Load();
+        mysqlsettings.Save();
+        if ( mysqlsettings.exec() == QDialog::Accepted )
+        {
+            retc = 1;
+        }
+        else
+        {
+            retc=2;
+        };
+    };
+
+    if ( shownetwork )
+    {
+        displayshownetwork = shownetwork;
+        MythInstallSettings settings;
+        settings.Load();
+        settings.Save();
+        if ( settings.exec() == QDialog::Accepted )
+        {
+            retc = 1;
+        }
+        else
+        {
+            continuerun=false;
+            retc=2;
+        };
+        displayshownetwork = false;
+    };
+
+    if (   showhostype && continuerun )
+    {
+        displayshowhostype = showhostype;
+        system ("avahi-browse -l -r  -t  _mysql._tcp > /tmp/mysqllist");
+        MythInstallSettings settings1;
+        settings1.Load();
+        settings1.Save();
+        if ( settings1.exec() == QDialog::Accepted )
+        {
+            retc = 1;
+        }
+        else
+        {
+            continuerun=false;
+            retc=2;
+        };
+        displayshowhostype=false;
+    }
+
+    if ( showmisc  ||  showshutdown || showsound   || showadvancedX || showadvanced || showaccesscontrol || showplugins || showsoftware || showuser || showwebuser || showddns || showinfrared || showscreensaver  || showsupplemental || showremotesonly || showvnc || showfileshare)
+    {
+        runothers=true;
+        displayshowmisc = showmisc;
+        displayshowshutdown = showshutdown;
+        displayshowadvanced = showadvanced;
+        displayshowsound = showsound;
+        displayshowadvancedX = showadvancedX;
+        hostparm.displayshowadvancedX=showadvancedX;
+        displayaccesscontrol = showaccesscontrol ;
+        displayplugins = showplugins;
+        displaysoftware = showsoftware;
+        displayuser = showuser;
+        displaywebuser = showwebuser;
+        displayddns = showddns ;
+        displayinfrared = showinfrared;
+        displayscreensaver = showscreensaver;
+        displaysupplemental = showsupplemental ;
+        displayremotesonly = showremotesonly ;
+        displayvnc  = showvnc ;
+        displayfileshare = showfileshare;
+//         if (displayshowadvancedX)
+//         {
+//             ReadDDCvalues();
+//         }
+    };
+
+
+    if ( runothers && continuerun )
+    {
+        //do I need this prewerite?
+        pre_writesettings();
+        //FINDME
+        DatabaseParams params = gContext->GetDatabaseParams();
+        QString cmdtxt=MV_ROOT  ;
+        cmdtxt.append("bin/timezip.py -m ");
+        QString zipcommand=cmdtxt;
+        zipcommand.append(hostparm.ThisDBhost);
+        //FINDME
+        zipcommand.append("  -d " + params.dbHostName );
+        //cout << zipcommand << endl;
+        myth_system(zipcommand);
+        //hostparm.ThisHostZipcode        = gCoreContext->GetSetting("HostZipcode");
+        hostparm.ThisTimeZone           = gCoreContext->GetSetting("HostTimeZone");
+//         hostparm.ThisHostServiceHobbit  = gCoreContext->GetSetting("HostServiceHobbitclient");
+//         if  ( hostparm.ThisHostServiceHobbit == "1" )
+//             install_hobbit = true;
+
+        MythInstallSettings settings2;
+        settings2.Load();
+        settings2.Save();
+//        gCoreContext->SaveSetting("HostServiceHobbitclient", hostparm.ThisHostServiceHobbit );
+        if ( settings2.exec() == QDialog::Accepted )
+        {
+            retc = 1;
+        }
+        else
+        {
+            continuerun=false;
+            retc=2;
+        };
+    };
+    pre_writesettings();
+    if ( mysqlonly )
+    {
+        QString cmdtxt;
+        cmdtxt=MV_ROOT  ;
+        cmdtxt.append("bin/systemconfig.sh Mysql_only " +  hostparm.ThisDBhost);
+        myth_system(cmdtxt);
+    }
+    else
+    {
+        if (retc == 1)
+            writesettings();
+    }
+    return retc;
+};
+
+
+
+void writesettings ()
+{
+    //    ofstream myfile;
+    gCoreContext->ClearSettingsCache();
+    //gCoreContext->ActivateSettingsCache(false);
+    hostparm.language = gCoreContext->GetSetting("language");
+    hostparm.ThisHostName   	= gCoreContext->GetSetting("HostMyhostname").toLower();
+    hostparm.ThisTimeZone       = gCoreContext->GetSetting("HostTimeZone");
+
+    hostparm.ThisHostIPeth0         =  gCoreContext->GetSetting("HostIPeth0");
+    hostparm.ThisHostNETMASKeth0    =  gCoreContext->GetSetting("HostNETMASKeth0");
+    hostparm.ThisHostDNSeth0        =  gCoreContext->GetSetting("HostDNSeth0");
+    hostparm.ThisHostUSEDHCPeth0    =  gCoreContext->GetSetting("HostUseDHCPeth0");
+    hostparm.ThisHostGWeth0         =  gCoreContext->GetSetting("HostGWeth0");
+    hostparm.ThisHostActiveonbooteth0  =  gCoreContext->GetSetting("HostActiveonbooteth0");
+    hostparm.ThisHOSTESSIDeth0      =  gCoreContext->GetSetting("HOSTESSIDeth0");
+    hostparm.ThisHostUseEncryptioneth0 = gCoreContext->GetSetting("HostUseEncryptioneth0");
+    hostparm.ThisHostkeyeth0           = gCoreContext->GetSetting("Hostkeyeth0");
+    hostparm.ThisHostMTUeth0        = gCoreContext->GetSetting("HostMTUeth0");
+
+    hostparm.ThisHostIPeth1         =  gCoreContext->GetSetting("HostIPeth1");
+    hostparm.ThisHostNETMASKeth1    =  gCoreContext->GetSetting("HostNETMASKeth1");
+    hostparm.ThisHostDNSeth1        =  gCoreContext->GetSetting("HostDNSeth1");
+    hostparm.ThisHostUSEDHCPeth1    =  gCoreContext->GetSetting("HostUseDHCPeth1");
+    hostparm.ThisHostGWeth1         =  gCoreContext->GetSetting("HostGWeth1");
+    hostparm.ThisHostActiveonbooteth1  =  gCoreContext->GetSetting("HostActiveonbooteth1");
+    hostparm.ThisHOSTESSIDeth1      =  gCoreContext->GetSetting("HOSTESSIDeth1");
+    hostparm.ThisHostUseEncryptioneth1 = gCoreContext->GetSetting("HostUseEncryptioneth1");
+    hostparm.ThisHostkeyeth1           = gCoreContext->GetSetting("Hostkeyeth1");
+    hostparm.ThisHostMTUeth1        = gCoreContext->GetSetting("HostMTUeth1");
+
+    hostparm.ThisHostIPwlan0         =  gCoreContext->GetSetting("HostIPwlan0");
+    hostparm.ThisHostNETMASKwlan0    =  gCoreContext->GetSetting("HostNETMASKwlan0");
+    hostparm.ThisHostDNSwlan0        =  gCoreContext->GetSetting("HostDNSwlan0");
+    hostparm.ThisHostUSEDHCPwlan0    =  gCoreContext->GetSetting("HostUseDHCPwlan0");
+    hostparm.ThisHostGWwlan0         =  gCoreContext->GetSetting("HostGWwlan0");
+    hostparm.ThisHostActiveonbootwlan0  =  gCoreContext->GetSetting("HostActiveonbootwlan0");
+    hostparm.ThisHOSTESSIDwlan0      =  gCoreContext->GetSetting("HOSTESSIDwlan0");
+    hostparm.ThisHostUseEncryptionwlan0 = gCoreContext->GetSetting("HostUseEncryptionwlan0");
+    hostparm.ThisHostkeywlan0           = gCoreContext->GetSetting("Hostkeywlan0");
+    hostparm.ThisHostMTUwlan0        = gCoreContext->GetSetting("HostMTUwlan0");
+
+    hostparm.ThisHostIPwlan1         =  gCoreContext->GetSetting("HostIPwlan1");
+    hostparm.ThisHostNETMASKwlan1    =  gCoreContext->GetSetting("HostNETMASKwlan1");
+    hostparm.ThisHostDNSwlan1        =  gCoreContext->GetSetting("HostDNSwlan1");
+    hostparm.ThisHostUSEDHCPwlan1    =  gCoreContext->GetSetting("HostUseDHCPwlan1");
+    hostparm.ThisHostGWwlan1         =  gCoreContext->GetSetting("HostGWwlan1");
+    hostparm.ThisHostActiveonbootwlan1  =  gCoreContext->GetSetting("HostActiveonbootwlan1");
+    hostparm.ThisHOSTESSIDwlan1      =  gCoreContext->GetSetting("HOSTESSIDwlan1");
+    hostparm.ThisHostUseEncryptionwlan1 = gCoreContext->GetSetting("HostUseEncryptionwlan1");
+    hostparm.ThisHostkeywlan1           = gCoreContext->GetSetting("Hostkeywlan1");
+    hostparm.ThisHostMTUwlan1        = gCoreContext->GetSetting("HostMTUwlan1");
+
+    hostparm.ThisHostIPath0         =  gCoreContext->GetSetting("HostIPath0");
+    hostparm.ThisHostNETMASKath0    =  gCoreContext->GetSetting("HostNETMASKath0");
+    hostparm.ThisHostDNSath0        =  gCoreContext->GetSetting("HostDNSath0");
+    hostparm.ThisHostUSEDHCPath0    =  gCoreContext->GetSetting("HostUseDHCPath0");
+    hostparm.ThisHostGWath0         =  gCoreContext->GetSetting("HostGWath0");
+    hostparm.ThisHostActiveonbootath0  =  gCoreContext->GetSetting("HostActiveonbootath0");
+    hostparm.ThisHOSTESSIDath0      =  gCoreContext->GetSetting("HOSTESSIDath0");
+    hostparm.ThisHostUseEncryptionath0 = gCoreContext->GetSetting("HostUseEncryptionath0");
+    hostparm.ThisHostkeyath0           = gCoreContext->GetSetting("Hostkeyath0");
+    hostparm.ThisHostMTUath0        = gCoreContext->GetSetting("HostMTUath0");
+
+
+   // hostparm.ThisHostServiceRRD = gCoreContext->GetSetting("HostServiceRRD");
+    hostparm.ThisSamba          = gCoreContext->GetSetting("HostServiceSamba");
+    hostparm.ThisHostServiceSamba_media = gCoreContext->GetSetting("HostServiceSamba_media");
+    hostparm.ThisHostServiceSamba_write = gCoreContext->GetSetting("HostServiceSamba_write");
+    hostparm.ThisHostServiceSamba_home = gCoreContext->GetSetting("HostServiceSamba_home");
+    hostparm.ThisHostServiceSamba_writehome = gCoreContext->GetSetting("HostServiceSamba_writehome");
+    hostparm.ThisHostServiceSamba_domain = gCoreContext->GetSetting("HostServiceSamba_domain");
+    hostparm.ThisNFS               	= gCoreContext->GetSetting("HostServiceNFS");
+    hostparm.ThisHostCentralNFSallhosts = gCoreContext->GetSetting("HostCentralNFSallhosts");
+    hostparm.ThisMythWEB    	       = gCoreContext->GetSetting("HostServiceMythWEB");
+    hostparm.ThisHostwebauth           = gCoreContext->GetSetting("HOSTwebauth");
+
+    hostparm.ThisHostRunDHCP =  gCoreContext->GetSetting("HostRunDHCP");
+    hostparm.ThisSystemType 	= gCoreContext->GetSetting("HostSystemType");
+
+    // determine the remote based off the host bucket.
+    hostparm.ThisHostRemotebucket = gCoreContext->GetSetting("HostRemotebucket");
+    if  ( hostparm.ThisHostRemotebucket == "favorites" )
+        hostparm.ThisRemote = gCoreContext->GetSetting("HostRemoteType_favorites");
+    if  ( hostparm.ThisHostRemotebucket == "user" )
+        hostparm.ThisRemote = gCoreContext->GetSetting("HostRemoteType_user");
+    if  ( hostparm.ThisHostRemotebucket == "other" )
+        hostparm.ThisRemote = gCoreContext->GetSetting("HostRemoteType_other");
+    if  ( hostparm.ThisHostRemotebucket == "hauppauge" )
+        hostparm.ThisRemote = gCoreContext->GetSetting("HostRemoteType_hauppauge");
+    if  ( hostparm.ThisHostRemotebucket == "ATI" )
+        hostparm.ThisRemote = gCoreContext->GetSetting("HostRemoteType_ATI");
+
+    hostparm.ThisHostBEWait      = gCoreContext->GetSetting("HostBEWait");
+    hostparm.ThisHostLircWait      = gCoreContext->GetSetting("HostLircWait");
+
+    hostparm.ThisHDHRlirc_device      = gCoreContext->GetSetting("HostHDHRlirc_device");
+    hostparm.ThisReceiverType  	= gCoreContext->GetSetting("HostReceiverType");
+    hostparm.ThisHostSerialPortlirc = gCoreContext->GetSetting("HostSerialPortlirc");
+   // hostparm.ThisHostUseEvrouter = gCoreContext->GetSetting("HostRunEvrouter");
+   // hostparm.ThisHostEvrouterConfig = gCoreContext->GetSetting("HostEvrouterConfig");
+    hostparm.ThisXres     		= gCoreContext->GetSetting("HostXres");
+    hostparm.ThisHostUseXLargeMouse  = gCoreContext->GetSetting("HostUseXLargeMouse");
+    hostparm.ThisAutodown		= gCoreContext->GetSetting("HostAutodown");
+    hostparm.ThisShutdowntime	= gCoreContext->GetSetting("HostShutdownTime");
+    hostparm.ThisShutdowntime2  = gCoreContext->GetSetting("HostShutdownTime2");
+    hostparm.ThisWakeuptime	= gCoreContext->GetSetting("HostWakeupTime");
+    hostparm.ThisUseNVRAM		= gCoreContext->GetSetting("HostUseNVRAM");
+    hostparm.ThisUseWOL		= gCoreContext->GetSetting("HostUseWOL");
+    hostparm.ThisKeepPackage	= gCoreContext->GetSetting("HostKeepPackages");
+    hostparm.ThisMythWelcome	= gCoreContext->GetSetting("HostUseMythWelcome");
+    hostparm.ThisHaveNFS            = gCoreContext->GetSetting("HostHaveCentralNFS");
+    hostparm.ThisNFSserver          = gCoreContext->GetSetting("HostCentralNFSIP");
+    hostparm.ThisNFSmountpoint      = gCoreContext->GetSetting("HostNFSmountpoint");
+    hostparm.ThisHostupdateplan     = gCoreContext->GetSetting("Hostupdateplan");
+    hostparm.ThisShowToolTips       = gCoreContext->GetSetting("HostShowToolTips");
+    hostparm.ThisRunfrontend        = gCoreContext->GetSetting("HostRunFrontend");
+    //hostparm.ThisHostZipcode        = gCoreContext->GetSetting("HostZipcode");
+    hostparm.ThisHostncidClient     = gCoreContext->GetSetting("HostncidClient");
+    hostparm.ThisHostncidDaemon     = gCoreContext->GetSetting("HostncidDaemon");
+    hostparm.ThisHostSerialPortncid = gCoreContext->GetSetting("HostSerialPortncid");
+    hostparm.ThisHostNcidDeviceNetCallerID = gCoreContext->GetSetting("HostNcidDeviceNetCallerID");
+    hostparm.ThisHostbootsplash     = gCoreContext->GetSetting("Hostbootsplash");
+
+    hostparm.ThisXIgnoreConfig      =gCoreContext->GetSetting("HostXIgnoreConfig");
+    hostparm.ThisXcardtype          =gCoreContext->GetSetting("HostXcardtype");
+    hostparm.ThisXUseAdvanced       =gCoreContext->GetSetting("HostXUseAdvanced");
+    hostparm.ThisXIgnoreEDID        =gCoreContext->GetSetting("HostXIgnoreEDID");
+    hostparm.ThisXconnection        =gCoreContext->GetSetting("HostXconnection");
+    hostparm.ThisXDisplaysize       =gCoreContext->GetSetting("HostXDisplaysize");
+    hostparm.ThisHostXNvidia1080p   =gCoreContext->GetSetting("HostXNvidia1080p");
+    hostparm.ThisHostXNvidia1080i   =gCoreContext->GetSetting("HostXNvidia1080i");
+    hostparm.ThisHostXNvidia720p    =gCoreContext->GetSetting("HostXNvidia720p");
+    hostparm.ThisHostXNvidia480p    =gCoreContext->GetSetting("HostXNvidia480p");
+//  EDID settings
+    QString tempstring;
+    tempstring = gCoreContext->GetSetting("HostXHsyncLow");
+    tempstring.append(" - ");
+    tempstring.append(gCoreContext->GetSetting("HostXHsyncHigh") );
+    hostparm.ThisXHsync=tempstring;
+    tempstring ="";
+    tempstring=gCoreContext->GetSetting("HostXVrefreshLow");
+    tempstring.append(" - ");
+    tempstring.append(gCoreContext->GetSetting("HostXVrefreshHigh"));
+    hostparm.ThisXVrefresh=tempstring;
+
+//  Assemble the advanced modeline string
+    QString modelinetype = gCoreContext->GetSetting("HostXModelineCatagory");;
+    QString tempmodeline = "HostXadvancedres" + modelinetype ;
+    QString modeline    = gCoreContext->GetSetting(tempmodeline);
+    hostparm.ThisXresadvanced = modelinetype +"_"+modeline;
+
+//   Gather settings based on card type
+    if ( hostparm.ThisXcardtype == "nVidia" )
+    {
+        hostparm.ThisXTVstandard = gCoreContext->GetSetting("HostXnVidiaTVstandard");
+        hostparm.ThisXTVconnection= gCoreContext->GetSetting("HostXnVidiaTVformat");
+        modelinetype = gCoreContext->GetSetting("HostXNvidiaModelineCatagory");;
+        tempmodeline = "HostXNvidiaadvancedres" + modelinetype ;
+        modeline    = gCoreContext->GetSetting(tempmodeline);
+        hostparm.ThisXresadvanced = modelinetype +"_"+modeline;
+    }
+    else if  ( hostparm.ThisXcardtype == "ATI" )
+    {
+        hostparm.ThisXTVstandard = gCoreContext->GetSetting("HostXATITVstandard");
+        hostparm.ThisXTVconnection= gCoreContext->GetSetting("HostXati-tvformat");
+    }
+
+
+//*********************************************************************************************
+// AUDIO SETTINGS
+//******************************************************************************************
+    hostparm.ThisHostAudiotype =  gCoreContext->GetSetting("HostAudiotype");
+//     hostparm.ThisHostsyncXine = gCoreContext->GetSetting("HostsyncXine");
+//     hostparm.ThisHostsyncMplayer = gCoreContext->GetSetting("HostsyncMplayer");
+//     hostparm.ThisHostsyncMythMusic = gCoreContext->GetSetting("HostsyncMythMusic");
+//     hostparm.ThisHostsyncMythFrontend = gCoreContext->GetSetting("HostsyncMythFrontend");
+    hostparm.ThisHostSoundTypeout =  gCoreContext->GetSetting("HostSoundTypeout") ;
+    hostparm.ThisHostSoundOSSAnalog = gCoreContext->GetSetting("HostSoundOssAnalog");
+    hostparm.ThisHostSoundOSSDigital = gCoreContext->GetSetting("HostSoundOssDigital");
+    hostparm.ThisHostSoundALSATypeout =  gCoreContext->GetSetting("HostSoundALSATypeout") ;
+    hostparm.ThisHostSoundALSAAnalog = gCoreContext->GetSetting("HostSoundALSAAnalog");
+    hostparm.ThisHostSoundALSADigital = gCoreContext->GetSetting("HostSoundALSADigital");
+
+    if ( hostparm.ThisHostAudiotype  == "OSS"   )
+    {
+        QString tempdevice;
+        QChar tempchar  ;
+        hostparm.ThisHostSoundDevice = "/dev/dsp";
+        if  ( hostparm.ThisHostSoundTypeout == "Analog" )
+            tempdevice  =  hostparm.ThisHostSoundOSSAnalog ;
+
+        if  ( hostparm.ThisHostSoundTypeout == "Digital" )
+            tempdevice = hostparm.ThisHostSoundOSSDigital ;
+
+        int tlength=(tempdevice.length()  -2 );
+        if  ( tlength > 0  )
+        {
+            tempchar = tempdevice.at( tlength);
+            hostparm.ThisHostSoundDevice.append(tempchar);
+        };
+    }
+
+
+    if ( hostparm.ThisHostAudiotype  == "ALSA"   )
+    {
+        QString tempdevice;
+        hostparm.ThisHostSoundTypeout = hostparm.ThisHostSoundALSATypeout;
+        if (  hostparm.ThisHostSoundTypeout == "Digital" )
+            tempdevice=hostparm.ThisHostSoundALSADigital;
+        if (  hostparm.ThisHostSoundTypeout == "Analog" )
+            tempdevice=hostparm.ThisHostSoundALSAAnalog;
+
+        tempdevice = tempdevice.section( "(", 1,1 );
+        tempdevice = tempdevice.section( ")", 0,0 );
+        hostparm.ThisHostSoundDevice = tempdevice;
+    }
+// Turn off internal audio controls is digital audio is seleced
+    if  ( hostparm.ThisHostSoundTypeout == "Digital" )
+        gCoreContext->SaveSetting("MythControlsVolume","0");
+
+//  LCD TYPE
+    hostparm.ThisHostLCDType = gCoreContext->GetSetting("HostLCDType");
+    if  ( hostparm.ThisHostLCDType  != "no_lcd" && hostparm.ThisHostLCDType  != "tinker" && hostparm.ThisHostLCDType != "" )
+    {
+        // enable mythtv lcddevice
+        gCoreContext->SaveSetting("LCDEnable","1");
+    };
+// Backupsettings
+    hostparm.ThisHostRemoteBackup = gCoreContext->GetSetting("HostRemoteBackup");
+    hostparm.ThisHostRemoteBackupDir = gCoreContext->GetSetting("HostRemoteBackupDir");
+//plugins
+    hostparm.ThisHostpluginmytharchive = gCoreContext->GetSetting("Hostpluginmytharchive");
+    hostparm.ThisHostpluginmythbrowser = gCoreContext->GetSetting("Hostpluginmythbrowser");
+    //hostparm.ThisHostpluginmythcontrols = gCoreContext->GetSetting("Hostpluginmythcontrols");
+    hostparm.ThisHostpluginmythnetvision = gCoreContext->GetSetting("Hostpluginmythnetvision");
+    hostparm.ThisHostpluginmythgallery = gCoreContext->GetSetting("Hostpluginmythgallery");
+    hostparm.ThisHostpluginmythgame = gCoreContext->GetSetting("Hostpluginmythgame");
+   // hostparm.ThisHostpluginmythmovietime = gCoreContext->GetSetting("Hostpluginmythmovietime");
+    hostparm.ThisHostpluginmythmusic = gCoreContext->GetSetting("Hostpluginmythmusic");
+    hostparm.ThisHostpluginmythnews = gCoreContext->GetSetting("Hostpluginmythnews");
+//         hostparm.ThisHostpluginmythphone = gCoreContext->GetSetting("Hostpluginmythphone");
+//    hostparm.ThisHostpluginmythsmolt = gCoreContext->GetSetting("Hostpluginmythsmolt");
+//    hostparm.ThisHostpluginmythvideo = gCoreContext->GetSetting("Hostpluginmythvideo");
+    hostparm.ThisHostpluginmythweather = gCoreContext->GetSetting("Hostpluginmythweather");
+    hostparm.ThisHostpluginmythzoneminder = gCoreContext->GetSetting("Hostpluginmythzoneminder");
+    hostparm.ThisHostpluginmythgamefceux = gCoreContext->GetSetting("Hostpluginmythgamefceux");
+    hostparm.ThisHostpluginmythgamesnes9x = gCoreContext->GetSetting("Hostpluginmythgamesnes9x");
+    hostparm.ThisHostpluginmythgameMame = gCoreContext->GetSetting("HostpluginmythgameMame");
+    hostparm.ThisHostpluginmythgameDolphin = gCoreContext->GetSetting("HostpluginmythgameDolphin");
+    hostparm.ThisHostpluginmythgameXe = gCoreContext->GetSetting("HostpluginmythgameXe");
+
+    hostparm.ThisHostpluginmythvideo_dvdcss = gCoreContext->GetSetting("Hostpluginmythvideo_dvdcss");
+    hostparm.ThisHostpluginmythappletrailers= gCoreContext->GetSetting("Hostpluginmythappletrailers");
+//    hostparm.ThisHostpluginmythstream= gCoreContext->GetSetting("Hostpluginmythstream");
+//         hostparm.ThisHostpluginmythvodka= gCoreContext->GetSetting("Hostpluginmythvodka");
+    hostparm.ThisHostMiro= gCoreContext->GetSetting("HostMiro");
+    hostparm.ThisHostpluginmythgameMednafen= gCoreContext->GetSetting("HostpluginmythgameMednafen");
+    hostparm.ThisHostpluginmythgameROMDB= gCoreContext->GetSetting("HostpluginmythgameROMDB");
+    hostparm.ThisHostpluginmythgameMupen64= gCoreContext->GetSetting("HostpluginmythgameMupen64");
+//    hostparm.ThisHostXine = gCoreContext->GetSetting("HostXine");
+//    hostparm.ThisHostwebmin = gCoreContext->GetSetting("Hostwebmin");
+//    hostparm.ThisHostfuppes = gCoreContext->GetSetting("Hostfuppes");
+    hostparm.ThisHostHuluDesktop = gCoreContext->GetSetting("HostHuluDesktop");
+    hostparm.ThisHostwebonlinhes = gCoreContext->GetSetting("HostWebonlinhes");
+
+//    hostparm.ThisHostfuppes = gCoreContext->GetSetting("Hostfuppes");
+
+
+
+
+    hostparm.ThisHostfoldingathome = gCoreContext->GetSetting("Hostfoldingathome");
+    hostparm.ThisHostfoldingusername = gCoreContext->GetSetting("Hostfoldingusername");
+    hostparm.ThisHostfoldingworksize = gCoreContext->GetSetting("Hostfoldingworksize");
+    hostparm.ThisHostDDnslogin = gCoreContext->GetSetting("HostDDnslogin");
+    hostparm.ThisHostDDnspassword = gCoreContext->GetSetting("HostDDnspassword");
+    hostparm.ThisHostDDnshostname = gCoreContext->GetSetting("HostDDnshostname");
+    hostparm.ThisHostDDnsEnable = gCoreContext->GetSetting("HostDDnsEnable");
+    hostparm.ThisHostscreensavertype =  gCoreContext->GetSetting("Hostscreensavertype");
+    hostparm.ThisHostscreensaveridle = gCoreContext->GetSetting("Hostscreensaveridle");
+    if (gCoreContext->GetSetting("HostScreensaverBlank") == "1" )
+        hostparm.ThisHostscreensavertheme="Blank";
+    else if (gCoreContext->GetSetting("HostScreensaverRandom") == "1" )
+        hostparm.ThisHostscreensavertheme="Random";
+    else
+    {
+        if ( hostparm.ThisHostscreensavertype == "gscreensaver" )
+            hostparm.ThisHostscreensavertheme = gCoreContext->GetSetting("HostGScreensavertheme");
+        if ( hostparm.ThisHostscreensavertype == "xscreensaver" )
+            hostparm.ThisHostscreensavertheme = gCoreContext->GetSetting("HostXScreensavertheme");
+    }
+
+    hostparm.ThisHostTransmitproto_1 =
+        gCoreContext->GetSetting("HostTransmitproto_1");
+    hostparm.ThisHostTransmitproto_2 =
+        gCoreContext->GetSetting("HostTransmitproto_2");
+    hostparm.ThisHostTransmitproto_3 =
+        gCoreContext->GetSetting("HostTransmitproto_3");
+    hostparm.ThisHostTransmitproto_4 =
+        gCoreContext->GetSetting("HostTransmitproto_4");
+    hostparm.ThisHostBlasterType =
+        gCoreContext->GetSetting("HostBlasterType");
+    hostparm.ThisHostSerialPort_blasterlirc =
+        gCoreContext->GetSetting("HostSerialPort_blasterlirc");
+    hostparm.ThisHostnumblaster = "1";
+    if ( hostparm.ThisHostBlasterType == "CommandIR" )
+        hostparm.ThisHostnumblaster = "4" ;
+    if ( hostparm.ThisHostBlasterType == "MCE" )
+        hostparm.ThisHostnumblaster = "2" ;
+
+    hostparm.ThisHostTransmitDelay_1 =
+        gCoreContext->GetSetting("HostTransmitDelay_1");
+    hostparm.ThisHostTransmitSend_after_1 =
+        gCoreContext->GetSetting("HostTransmitSend_after_1");
+
+    hostparm.ThisHostTransmitDelay_2 =
+        gCoreContext->GetSetting("HostTransmitDelay_2");
+    hostparm.ThisHostTransmitSend_after_2 =
+        gCoreContext->GetSetting("HostTransmitSend_after_2");
+
+    hostparm.ThisHostTransmitDelay_3 =
+        gCoreContext->GetSetting("HostTransmitDelay_3");
+    hostparm.ThisHostTransmitSend_after_3 =
+        gCoreContext->GetSetting("HostTransmitSend_after_3");
+
+
+    hostparm.ThisHostTransmitDelay_4 =
+        gCoreContext->GetSetting("HostTransmitDelay_4");
+    hostparm.ThisHostTransmitSend_after_4 =
+        gCoreContext->GetSetting("HostTransmitSend_after_4");
+
+
+    hostparm.ThisHOSTrootSSH =  gCoreContext->GetSetting("HOSTrootSSH");
+
+
+
+    hostparm.ThisHostSupplemental =  gCoreContext->GetSetting("HostSupplemental");
+    hostparm.ThisHostWindowManager =  gCoreContext->GetSetting("HostWindowManager");
+    hostparm.ThisHostEnhancedWMStyle =  gCoreContext->GetSetting("HostEnhancedWMStyle");
+
+    hostparm.ThisHostVNCEnable =  gCoreContext->GetSetting("HostVNCEnable");
+    hostparm.ThisHostVNCpassword =  gCoreContext->GetSetting("HostVNCpassword");
+    hostparm.ThisHostXVNCEnable =  gCoreContext->GetSetting("HostXVNCEnable");
+    hostparm.ThisHostXVNCpassword =  gCoreContext->GetSetting("HostXVNCpassword");
+
+
+
+
+
+//______________________WRITE OUT THE FILE__________________________
+    QString systemheader;
+    QString divider;
+
+    QFile f( "/etc/systemconfig" );
+    if( !f.open( IO_WriteOnly  ) )
+        std::cout << "Failed to open file /etc/systemconfig." << std::endl;
+    QTextStream myfile( &f );
+
+    divider = "#-----------------------------\n";
+    systemheader= "\n#    Language \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "language=\""     + hostparm.language   + "\"\n";
+
+    divider = "#-----------------------------\n";
+    systemheader= "\n#    Hostype \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "SystemType=\""     + hostparm.ThisSystemType   + "\"\n";
+    myfile << "dbhost=\""       + hostparm.ThisDBhost           + "\"\n";
+    myfile << "RunFrontend=\""      + hostparm.ThisRunfrontend      + "\"\n";
+    myfile << "UseMythWelcome=\""   + hostparm.ThisMythWelcome  + "\"\n";
+
+    systemheader= "\n#    Network config\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "hostname=\""     + hostparm.ThisHostName + "\"\n";
+    myfile << "default_interface=\""    + hostparm.ThisHostDefaultInterface          + "\"\n";
+
+
+
+    if ( hostparm.ThisHostActiveonbooteth0 == "1" )
+    {
+        systemheader= "\n#    Network config for eth0 \n"  ;
+        myfile << systemheader ;
+        myfile << divider ;
+        myfile << "Hostipeth0=\""   + hostparm.ThisHostIPeth0           + "\"\n";
+        myfile << "Hostnetmasketh0=\""   +hostparm.ThisHostNETMASKeth0      + "\"\n";
+        myfile << "HostDNSeth0=\""   +hostparm.ThisHostDNSeth0          + "\"\n";
+        myfile << "HostUSEDHCPeth0=\""   +hostparm.ThisHostUSEDHCPeth0      + "\"\n";
+        myfile << "HostGWeth0=\""   +hostparm.ThisHostGWeth0            + "\"\n";
+        myfile << "HostActiveeth0=\""   +hostparm.ThisHostActiveonbooteth0      + "\"\n";
+        myfile << "HostESSIDeth0=\"" + hostparm.ThisHOSTESSIDeth0  + "\"\n";
+        myfile << "HostUseEncryptioneth0=\"" + hostparm.ThisHostUseEncryptioneth0 + "\"\n";
+        myfile << "HostKeyeth0=\"" + hostparm.ThisHostkeyeth0         + "\"\n";
+        myfile << "HOST_iswirelesseth0=\"" + hostparm.ThisHOST_iswirelesseth0         + "\"\n";
+        myfile << "HostMTUeth0=\"" + hostparm.ThisHostMTUeth0         + "\"\n";
+    }
+
+    if ( hostparm.ThisHostActiveonbooteth1 == "1" )
+    {
+        systemheader= "\n#    Network config for eth1 \n"  ;
+        myfile << systemheader ;
+        myfile << divider ;
+        myfile << "Hostipeth1=\""   + hostparm.ThisHostIPeth1           + "\"\n";
+        myfile << "Hostnetmasketh1=\""   +hostparm.ThisHostNETMASKeth1      + "\"\n";
+        myfile << "HostDNSeth1=\""   +hostparm.ThisHostDNSeth1          + "\"\n";
+        myfile << "HostUSEDHCPeth1=\""   +hostparm.ThisHostUSEDHCPeth1      + "\"\n";
+        myfile << "HostGWeth1=\""   +hostparm.ThisHostGWeth1            + "\"\n";
+        myfile << "HostActiveeth1=\""   +hostparm.ThisHostActiveonbooteth1      + "\"\n";
+        myfile << "HostESSIDeth1=\"" + hostparm.ThisHOSTESSIDeth1  + "\"\n";
+        myfile << "HostUseEncryptioneth1=\"" + hostparm.ThisHostUseEncryptioneth1 + "\"\n";
+        myfile << "HostKeyeth1=\"" + hostparm.ThisHostkeyeth1         + "\"\n";
+        myfile << "HOST_iswirelesseth1=\"" + hostparm.ThisHOST_iswirelesseth1         + "\"\n";
+        myfile << "HostMTUeth1=\"" + hostparm.ThisHostMTUeth1         + "\"\n";
+    }
+    if ( hostparm.ThisHostActiveonbootwlan0 == "1" )
+    {
+        systemheader= "\n#    Network config for wlan0 \n"  ;
+        myfile << systemheader ;
+        myfile << divider ;
+        myfile << "Hostipwlan0=\""   + hostparm.ThisHostIPwlan0           + "\"\n";
+        myfile << "Hostnetmaskwlan0=\""   +hostparm.ThisHostNETMASKwlan0      + "\"\n";
+        myfile << "HostDNSwlan0=\""   +hostparm.ThisHostDNSwlan0          + "\"\n";
+        myfile << "HostUSEDHCPwlan0=\""   +hostparm.ThisHostUSEDHCPwlan0      + "\"\n";
+        myfile << "HostGWwlan0=\""   +hostparm.ThisHostGWwlan0            + "\"\n";
+        myfile << "HostActivewlan0=\""   +hostparm.ThisHostActiveonbootwlan0      + "\"\n";
+        myfile << "HostESSIDwlan0=\"" + hostparm.ThisHOSTESSIDwlan0  + "\"\n";
+        myfile << "HostUseEncryptionwlan0=\"" + hostparm.ThisHostUseEncryptionwlan0 + "\"\n";
+        myfile << "HostKeywlan0=\"" + hostparm.ThisHostkeywlan0         + "\"\n";
+        myfile << "HOST_iswirelesswlan0=\"" + hostparm.ThisHOST_iswirelesswlan0         + "\"\n";
+        myfile << "HostMTUwlan0=\"" + hostparm.ThisHostMTUwlan0         + "\"\n";
+    }
+    if ( hostparm.ThisHostActiveonbootwlan1 == "1" )
+    {
+        systemheader= "\n#    Network config for wlan1 \n"  ;
+        myfile << systemheader ;
+        myfile << divider ;
+        myfile << "Hostipwlan1=\""   + hostparm.ThisHostIPwlan1           + "\"\n";
+        myfile << "Hostnetmaskwlan1=\""   +hostparm.ThisHostNETMASKwlan1      + "\"\n";
+        myfile << "HostDNSwlan1=\""   +hostparm.ThisHostDNSwlan1          + "\"\n";
+        myfile << "HostUSEDHCPwlan1=\""   +hostparm.ThisHostUSEDHCPwlan1      + "\"\n";
+        myfile << "HostGWwlan1=\""   +hostparm.ThisHostGWwlan1            + "\"\n";
+        myfile << "HostActivewlan1=\""   +hostparm.ThisHostActiveonbootwlan1      + "\"\n";
+        myfile << "HostESSIDwlan1=\"" + hostparm.ThisHOSTESSIDwlan1  + "\"\n";
+        myfile << "HostUseEncryptionwlan1=\"" + hostparm.ThisHostUseEncryptionwlan1 + "\"\n";
+        myfile << "HostKeywlan1=\"" + hostparm.ThisHostkeywlan1         + "\"\n";
+        myfile << "HOST_iswirelesswlan1=\"" + hostparm.ThisHOST_iswirelesswlan1         + "\"\n";
+        myfile << "HostMTUwlan1=\"" + hostparm.ThisHostMTUwlan1         + "\"\n";
+    }
+
+    if ( hostparm.ThisHostActiveonbootath0 == "1" )
+    {
+        systemheader= "\n#    Network config for ath0 \n"  ;
+        myfile << systemheader ;
+        myfile << divider ;
+        myfile << "Hostipath0=\""   + hostparm.ThisHostIPath0           + "\"\n";
+        myfile << "Hostnetmaskath0=\""   +hostparm.ThisHostNETMASKath0      + "\"\n";
+        myfile << "HostDNSath0=\""   +hostparm.ThisHostDNSath0          + "\"\n";
+        myfile << "HostUSEDHCPath0=\""   +hostparm.ThisHostUSEDHCPath0      + "\"\n";
+        myfile << "HostGWath0=\""   +hostparm.ThisHostGWath0            + "\"\n";
+        myfile << "HostActiveath0=\""   +hostparm.ThisHostActiveonbootath0      + "\"\n";
+        myfile << "HostESSIDath0=\"" + hostparm.ThisHOSTESSIDath0  + "\"\n";
+        myfile << "HostUseEncryptionath0=\"" + hostparm.ThisHostUseEncryptionath0 + "\"\n";
+        myfile << "HostKeyath0=\"" + hostparm.ThisHostkeyath0         + "\"\n";
+        myfile << "HOST_iswirelessath0=\"" + hostparm.ThisHOST_iswirelessath0         + "\"\n";
+        myfile << "HostMTUath0=\"" + hostparm.ThisHostMTUath0         + "\"\n";
+    }
+
+
+    systemheader= "\n#    Misc \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "timezone=\""     + hostparm.ThisTimeZone        + "\"\n";
+    myfile << "Hostupdateplan=\""   + hostparm.ThisHostupdateplan   + "\"\n";
+    myfile << "ShowTips=\""         + hostparm.ThisShowToolTips     + "\"\n";
+
+
+    systemheader= "\n#    Advanced \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "bewait=\"" + hostparm.ThisHostBEWait + "\"\n";
+    myfile << "ncidclient=\""       + hostparm.ThisHostncidClient + "\"\n";
+    myfile << "Runncidd=\""        + hostparm.ThisHostncidDaemon +  "\"\n";
+    myfile << "nciddSerialPort=\""      + hostparm.ThisHostSerialPortncid +  "\"\n";
+    myfile << "nciddDeviceNetCallerID=\""      + hostparm.ThisHostNcidDeviceNetCallerID +  "\"\n";
+    myfile << "Usebootsplash=\""        + hostparm.ThisHostbootsplash + "\"\n";
+    myfile << "RemoteBackup=\"" + hostparm.ThisHostRemoteBackup + "\"\n";
+    myfile << "RemoteBackupDir=\"" + hostparm.ThisHostRemoteBackupDir + "\"\n";
+    // special keys
+  //  myfile << "UseEvrouter=\"" + hostparm.ThisHostUseEvrouter + "\"\n";
+  //  myfile << "EvrouterConfig=\"" + hostparm.ThisHostEvrouterConfig + "\"\n";
+    //run dhcp server
+    myfile << "RunDHCP=\""      + hostparm.ThisHostRunDHCP             + "\"\n";
+    myfile << "UseMythWEB=\""   + hostparm.ThisMythWEB      + "\"\n";
+
+    systemheader= "\n#    fileshare \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "UseSamba=\""        + hostparm.ThisSamba        + "\"\n";
+    myfile << "Samba_media=\"" +  hostparm.ThisHostServiceSamba_media + "\"\n";
+    myfile << "Samba_mediareadonly=\"" +  hostparm.ThisHostServiceSamba_write + "\"\n";
+    myfile << "Samba_home=\"" +  hostparm.ThisHostServiceSamba_home + "\"\n";
+    myfile << "Samba_homereadonly=\"" +  hostparm.ThisHostServiceSamba_writehome + "\"\n";
+    myfile << "Samba_domain=\"" + hostparm.ThisHostServiceSamba_domain + "\"\n";
+    myfile << "UseNFS=\""       + hostparm.ThisNFS              + "\"\n";
+    myfile << "HaveCentralNFS=\""   + hostparm.ThisHaveNFS          + "\"\n";
+    myfile << "NFSserver=\""        + hostparm.ThisNFSserver        + "\"\n";
+    myfile << "NFSmount=\""         + hostparm.ThisNFSmountpoint    + "\"\n";
+    myfile << "CentralNFSallhosts=\""         + hostparm.ThisHostCentralNFSallhosts    + "\"\n";
+
+
+
+
+
+    //not used anymore
+  //  myfile << "UseDHCP=\""      + hostparm.ThisDHCP             + "\"\n";
+
+
+    systemheader= "\n#    sleep \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "AutoShutdown=\""	+ hostparm.ThisAutodown		+ "\"\n";
+    myfile << "Shutdowntime=\""	+ hostparm.ThisShutdowntime	+ "\"\n";
+    myfile << "Shutdowntime2=\"" + hostparm.ThisShutdowntime2 + "\"\n";
+
+    //myfile << "Wakeuptime=\""	+ hostparm.ThisWakeuptime	+ "\"\n";
+    //myfile << "UseNVRAM=\""		+ hostparm.ThisUseNVRAM		+ "\"\n";
+    //myfile << "UseWOL=\""		+ hostparm.ThisUseWOL		+ "\"\n";
+    //not used
+    //myfile << "KeepPackages=\""	+ hostparm.ThisKeepPackage	+ "\"\n";
+    //   myfile << "PKG_MIRROR=\""       + hostparm.ThisHostPKG_MIRROR   + "\"\n";
+    //myfile << "zipcode=\""          + hostparm.ThisHostZipcode + "\"\n";
+
+
+
+
+
+
+    systemheader= "\n#    X display settings \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "XIgnoreConfig=\""        + hostparm.ThisXIgnoreConfig    + "\"\n";
+    myfile << "Xcardtype=\""              + hostparm.ThisXcardtype     + "\"\n";
+    myfile << "XUseAdvanced=\""       + hostparm.ThisXUseAdvanced + "\"\n";
+    myfile << "Xres=\""         + hostparm.ThisXres             + "\"\n";
+    myfile << "UseXLargeMouse=\"" + hostparm.ThisHostUseXLargeMouse + "\"\n";
+//     myfile << "XIgnoreEDID=\""         + hostparm.ThisXIgnoreEDID  + "\"\n";
+//     myfile << "Xconnection=\""           + hostparm.ThisXconnection  + "\"\n";
+//     myfile << "XHsync=\""                  + hostparm.ThisXHsync  + "\"\n";
+//     myfile << "XVrefresh=\""              + hostparm.ThisXVrefresh+ "\"\n";
+//     myfile << "Xresadvanced=\""        + hostparm.ThisXresadvanced + "\"\n";
+//     myfile << "XTVstandard=\""         +  hostparm.ThisXTVstandard +  "\"\n";
+//     myfile << "XTVconnection=\""      +  hostparm.ThisXTVconnection +  "\"\n";
+//     myfile << "XDisplaysize=\""         + hostparm.ThisXDisplaysize + "\"\n";
+//     myfile << "XnVidia1080p=\""         + hostparm.ThisHostXNvidia1080p+ "\"\n";
+//     myfile << "XnVidia1080i=\""         + hostparm.ThisHostXNvidia1080i+ "\"\n";
+//     myfile << "XnVidia720p=\""         + hostparm.ThisHostXNvidia720p+ "\"\n";
+//     myfile << "XnVidia480p=\""         + hostparm.ThisHostXNvidia480p+ "\"\n";
+
+    systemheader= "\n#    Audio settings\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "Audiotype=\""            + hostparm.ThisHostAudiotype + "\"\n";
+    myfile << "Audiotypeout=\""            + hostparm.ThisHostSoundTypeout + "\"\n";
+    myfile << "SoundDevice=\""    + hostparm.ThisHostSoundDevice+  "\"\n";
+//     myfile << "syncXine=\""   + hostparm.ThisHostsyncXine + "\"\n";
+//     myfile << "syncMplayer=\""   + hostparm.ThisHostsyncMplayer + "\"\n";
+//     myfile << "syncMythMusic=\""   + hostparm.ThisHostsyncMythMusic + "\"\n";
+//     myfile << "syncMythFrontend=\""   + hostparm.ThisHostsyncMythFrontend + "\"\n";
+
+
+    systemheader= "\n#    Software settings\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "mytharchive=\"" + hostparm.ThisHostpluginmytharchive + "\"\n";
+    myfile << "mythbrowser=\"" + hostparm.ThisHostpluginmythbrowser + "\"\n";
+    myfile << "mythnetvision=\"" + hostparm.ThisHostpluginmythnetvision + "\"\n";
+    myfile << "mythgallery=\"" + hostparm.ThisHostpluginmythgallery + "\"\n";
+    myfile << "mythgame=\"" + hostparm.ThisHostpluginmythgame + "\"\n";
+    myfile << "mythmusic=\"" + hostparm.ThisHostpluginmythmusic + "\"\n";
+    myfile << "mythnews=\"" + hostparm.ThisHostpluginmythnews + "\"\n";
+    myfile << "mythzoneminder=\"" + hostparm.ThisHostpluginmythzoneminder + "\"\n";
+    myfile << "mythweather=\"" + hostparm.ThisHostpluginmythweather + "\"\n";
+    myfile << divider ;
+    //game emulator
+    myfile << "romdb=\"" + hostparm.ThisHostpluginmythgameROMDB + "\"\n";
+    myfile << "snes9x=\"" + hostparm.ThisHostpluginmythgamesnes9x + "\"\n";
+    myfile << "fceux=\"" + hostparm.ThisHostpluginmythgamefceux + "\"\n";
+    myfile << "mame=\"" + hostparm.ThisHostpluginmythgameMame + "\"\n";
+    myfile << "mednafen=\"" + hostparm.ThisHostpluginmythgameMednafen + "\"\n";
+    myfile << "mupen64=\"" + hostparm.ThisHostpluginmythgameMupen64 + "\"\n";
+    myfile << "dolphinemu=\"" + hostparm.ThisHostpluginmythgameDolphin + "\"\n";
+    myfile << "xe=\"" + hostparm.ThisHostpluginmythgameXe + "\"\n";
+    myfile << divider ;
+    //other
+    myfile << "dvdcss=\"" + hostparm.ThisHostpluginmythvideo_dvdcss + "\"\n";
+    myfile << "mythappletrailers=\"" + hostparm.ThisHostpluginmythappletrailers + "\"\n";
+
+    myfile << "miro=\"" + hostparm.ThisHostMiro + "\"\n";
+    myfile << "webonlinhes=\"" + hostparm.ThisHostwebonlinhes + "\"\n";
+    myfile << "huludesktop=\"" + hostparm.ThisHostHuluDesktop + "\"\n";
+    //myfile << "fuppes=\"" + hostparm.ThisHostfuppes  + "\"\n";
+    myfile << "foldingathome=\"" + hostparm.ThisHostfoldingathome  + "\"\n";
+    myfile << "foldingusername=\"" + hostparm.ThisHostfoldingusername  + "\"\n";
+    myfile << "foldingworksize=\"" + hostparm.ThisHostfoldingworksize  + "\"\n";
+    //myfile << "mythstream=\"" + hostparm.ThisHostpluginmythstream + "\"\n";
+    //  myfile << "mythphone=\"" + hostparm.ThisHostpluginmythphone + "\"\n";
+    //  myfile << "mythsmolt=\"" + hostparm.ThisHostpluginmythsmolt + "\"\n";
+    //  myfile << "mythvideo=\"" + hostparm.ThisHostpluginmythvideo + "\"\n";
+    //  myfile << "mythcontrols=\"" + hostparm.ThisHostpluginmythcontrols + "\"\n";
+    //  myfile << "mythmovietime=\"" + hostparm.ThisHostpluginmythmovietime + "\"\n";
+    //  myfile << "mythvodka=\"" +hostparm.ThisHostpluginmythvodka + "\"\n";
+    //  myfile << "xine=\"" + hostparm.ThisHostXine  + "\"\n";
+    //  myfile << "webmin=\"" + hostparm.ThisHostwebmin  + "\"\n";er + "\"\n";
+
+
+    systemheader="\n#    ddns settings\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "DDnslogin=\"" +     hostparm.ThisHostDDnslogin + "\"\n";
+    myfile << "DDnspassword=\"" + hostparm.ThisHostDDnspassword + "\"\n";
+    myfile << "DDnshostname=\"" +   hostparm.ThisHostDDnshostname + "\"\n";
+    myfile << "DDnsEnable=\"" +    hostparm.ThisHostDDnsEnable + "\"\n";
+
+    systemheader="\n#    screensaver settings\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "Screensavertype=\"" + hostparm.ThisHostscreensavertype + "\"\n";
+    myfile << "Screensaveridle=\"" + hostparm.ThisHostscreensaveridle + "\"\n";
+    myfile << "Screensavertheme=\"" + hostparm.ThisHostscreensavertheme + "\"\n";
+
+    systemheader="\n#    IR settings\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "Remotetype=\""     + hostparm.ThisRemote       + "\"\n";
+    myfile << "Remotebucket=\""  + hostparm.ThisHostRemotebucket     + "\"\n";
+    myfile << "ReceiverType=\"" + hostparm.ThisReceiverType     + "\"\n";
+    myfile << "HDHRlirc_device=\"" + hostparm.ThisHDHRlirc_device     + "\"\n";
+    myfile << "HostLircWait=\"" + hostparm.ThisHostLircWait + "\"\n";
+
+    myfile << "ReceiverSerialport=\"" + hostparm.ThisHostSerialPortlirc + "\"\n";
+    myfile << "HostTransmitproto_1=\"" +  hostparm.ThisHostTransmitproto_1 + "\"\n";
+    myfile << "HostTransmitproto_2=\"" +  hostparm.ThisHostTransmitproto_2 + "\"\n";
+    myfile << "HostTransmitproto_3=\"" +  hostparm.ThisHostTransmitproto_3 + "\"\n";
+    myfile << "HostTransmitproto_4=\"" +  hostparm.ThisHostTransmitproto_4 + "\"\n";
+
+    myfile << "HostTransmitDelay_1=\"" +  hostparm.ThisHostTransmitDelay_1 + "\"\n";
+    myfile << "HostTransmitDelay_2=\"" +  hostparm.ThisHostTransmitDelay_2 + "\"\n";
+    myfile << "HostTransmitDelay_3=\"" +  hostparm.ThisHostTransmitDelay_3 + "\"\n";
+    myfile << "HostTransmitDelay_4=\"" +  hostparm.ThisHostTransmitDelay_4 + "\"\n";
+
+//     myfile << "HostTransmitSend_after_1=\"" +  hostparm.ThisHostTransmitSend_after_1 + "\"\n";
+//     myfile << "HostTransmitSend_after_2=\"" +  hostparm.ThisHostTransmitSend_after_2 + "\"\n";
+//     myfile << "HostTransmitSend_after_3=\"" +  hostparm.ThisHostTransmitSend_after_3 + "\"\n";
+//     myfile << "HostTransmitSend_after_4=\"" +  hostparm.ThisHostTransmitSend_after_4 + "\"\n";
+
+    myfile << "HostBlasterType=\"" + hostparm.ThisHostBlasterType + "\"\n";
+    myfile << "HostSerialPort_blasterlirc=\"" +  hostparm.ThisHostSerialPort_blasterlirc + "\"\n";
+    myfile << "Hostnumblaster=\"" + hostparm.ThisHostnumblaster + "\"\n";
+    myfile << "LCDtype=\"" + hostparm.ThisHostLCDType + "\"\n";
+
+
+    systemheader="\n#    user settings\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "rootSSH=\"" + hostparm.ThisHOSTrootSSH  + "\"\n";
+
+    systemheader="\n#    Supplemental\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "supplemental=\"" + hostparm.ThisHostSupplemental + "\"\n";
+    myfile << "windowmanager=\"" + hostparm.ThisHostWindowManager + "\"\n";
+    myfile << "EnhancedWMStyle=\"" + hostparm.ThisHostEnhancedWMStyle + "\"\n";
+
+    systemheader="\n#    VNC\n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "vncenable=\"" + hostparm.ThisHostVNCEnable + "\"\n";
+    myfile << "vncpassword=\"" + hostparm.ThisHostVNCpassword + "\"\n";
+    myfile << "xvncenable=\"" + hostparm.ThisHostXVNCEnable + "\"\n";
+    myfile << "xvncpassword=\"" + hostparm.ThisHostXVNCpassword + "\"\n";
+
+    systemheader= "\n#    webuser \n"  ;
+    myfile << systemheader ;
+    myfile << divider ;
+    myfile << "UseMythWEB_auth=\""   + hostparm.ThisHostwebauth      + "\"\n";
+
+
+
+    f.close();
+
+}
+
+
+MythInstallSettings::MythInstallSettings()
+{
+    VerticalConfigurationGroup* vcg =   new VerticalConfigurationGroup(false,false,true,true);
+    VerticalConfigurationGroup* denied =  new VerticalConfigurationGroup(false,false,true,true);
+    TransLabelSetting *deniedlabel = new TransLabelSetting();
+    deniedlabel->setValue("                Access to these settings is disabled.\n                Access can be enabled in Access Settings." );
+    denied->addChild(deniedlabel);
+    if  ( displaymysqlonly  )
+    {
+        vcg->addChild(HostMysqlserverip_listbox());
+        vcg->addChild(ThemePainter());
+        addChild(vcg);
+    }
+    else
+    {
+        // This is needed to stop default=interface from being wiped every time
+        if ( gCoreContext->GetSetting("HostDefaulteth0") == "1" )
+            hostparm.ThisHostDefaultInterface = "eth0";
+        else if ( gCoreContext->GetSetting("HostDefaulteth1") == "1" )
+            hostparm.ThisHostDefaultInterface = "eth1";
+        else if ( gCoreContext->GetSetting("HostDefaultwlan0") == "1" )
+            hostparm.ThisHostDefaultInterface = "wlan0";
+        else if ( gCoreContext->GetSetting("HostDefaultwlan1") == "1" )
+            hostparm.ThisHostDefaultInterface = "wlan1";
+        else if ( gCoreContext->GetSetting("HostActiveonbooteth0") == "1" )
+            hostparm.ThisHostDefaultInterface = "eth0";
+        else if ( gCoreContext->GetSetting("HostActiveonbooteth1") == "1" )
+            hostparm.ThisHostDefaultInterface = "eth1";
+        else if ( gCoreContext->GetSetting("HostActiveonbootwlan0") == "1" )
+            hostparm.ThisHostDefaultInterface = "wlan0";
+        else if ( gCoreContext->GetSetting("HostActiveonbootwlan1") == "1" )
+            hostparm.ThisHostDefaultInterface = "wlan1";
+        else if ( gCoreContext->GetSetting("HostActiveonbootath0") == "1" )
+            hostparm.ThisHostDefaultInterface = "ath0";
+        else
+            hostparm.ThisHostDefaultInterface = "eth0";
+
+
+
+        vcg->setLabel(QObject::tr("Host Settings"));
+        // Check to see if screen should appear
+        if ( displayshownetwork )
+        {
+            //Check to see if screen is allowed to appear
+            if (  ((gCoreContext->GetSetting("Hostaccessnetwork"))  == "0" )  )
+            {
+                denied ->setLabel(QObject::tr("Network Settings"));
+                addChild(denied);
+            }
+            else
+            {
+
+                hostparm.ThisHostnetOLD = gCoreContext->GetSetting("HostNetDevice");
+                QString s = "HostActiveonboot";
+                s+=hostparm.ThisHostnetOLD;
+                hostparm.ThisHostnetActiveOLD = gCoreContext->GetSetting(s);
+                MSqlQuery query(MSqlQuery::InitCon());
+                query.prepare( "delete from settings where  hostname=:HOSTNAME  and value = 'HOSTNetDevice';  "  );
+                query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+                query.exec();
+
+
+                if ( gCoreContext->GetSetting("HostDefaulteth0") == "1" )
+                    hostparm.ThisHostDefaultInterface = "eth0";
+                else if ( gCoreContext->GetSetting("HostDefaulteth1") == "1" )
+                    hostparm.ThisHostDefaultInterface = "eth1";
+                else if ( gCoreContext->GetSetting("HostDefaultwlan0") == "1" )
+                    hostparm.ThisHostDefaultInterface = "wlan0";
+                else if ( gCoreContext->GetSetting("HostDefaultwlan1") == "1" )
+                    hostparm.ThisHostDefaultInterface = "wlan1";
+                else if ( gCoreContext->GetSetting("HostActiveonbooteth0") == "1" )
+                    hostparm.ThisHostDefaultInterface = "eth0";
+                else if ( gCoreContext->GetSetting("HostActiveonbooteth1") == "1" )
+                    hostparm.ThisHostDefaultInterface = "eth1";
+                else if ( gCoreContext->GetSetting("HostActiveonbootwlan0") == "1" )
+                    hostparm.ThisHostDefaultInterface = "wlan0";
+                else if ( gCoreContext->GetSetting("HostActiveonbootwlan1") == "1" )
+                    hostparm.ThisHostDefaultInterface = "wlan1";
+                else if ( gCoreContext->GetSetting("HostActiveonbootath0") == "1" )
+                    hostparm.ThisHostDefaultInterface = "ath0";
+                else
+                    hostparm.ThisHostDefaultInterface = "eth0";
+
+
+                NetworkOptionsFrame  *networkoptionsframe = new NetworkOptionsFrame();
+                NetworkSettingsFrame *netsettingsframe = new NetworkSettingsFrame();
+
+                addChild(netsettingsframe);
+                addChild(networkoptionsframe);
+
+            };
+        }
+
+        if ( displayshowhostype )
+        {
+            if (  ((gCoreContext->GetSetting("Hostaccesshostype")) =="0" ))
+            {
+                denied ->setLabel(QObject::tr("Host Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                SystemtypeGroup *systemtypegroup = new SystemtypeGroup();
+                vcg->addChild(systemtypegroup);
+                addChild(vcg);
+            }
+        }
+
+        if ( displayremotesonly )
+        {
+            if (  ((gCoreContext->GetSetting("Hostaccessir")) =="0" ))
+            {
+                denied ->setLabel(QObject::tr("Remotes Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                IRFrame *irframe = new IRFrame();
+                addChild(irframe);
+            }
+        }
+
+        if ( displayshowadvancedX )
+        {
+            if ( ((gCoreContext->GetSetting("HostaccessadvancedX")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("Display Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                AdvancedXSettings *advancedXsettings = new AdvancedXSettings();
+                addChild(advancedXsettings);
+            }
+        }
+
+        if ( displayvnc )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessvnc")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("VNC Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                VNChostsettings* vnchostsettings= new VNChostsettings();
+                addChild(vnchostsettings);
+            }
+        }
+
+        if ( displayfileshare )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessfileshare")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("File Sharing Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                FileShareMainFrameClient *nfsclient = new FileShareMainFrameClient();
+                addChild(nfsclient);
+
+                FileShareMainFrameServer *fileserver = new FileShareMainFrameServer();
+                addChild(fileserver);
+            }
+        }
+
+        if ( displayshowmisc )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessmisc")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("Miscellanous"));
+                addChild(denied);
+            }
+            else
+            {
+                MiscMainFrame *miscsettings = new MiscMainFrame();
+              //  MiscMainFrame2 *miscsettings2 = new MiscMainFrame2();
+                addChild(miscsettings);
+              //  addChild(miscsettings2);
+            }
+        }
+
+        if ( displaysupplemental )
+        {
+            //JM VERBOSE(VB_IMPORTANT, "screensaver");
+            Supplementalhostsettings  *supplemental = new Supplementalhostsettings();
+            addChild(supplemental);
+        }
+
+        if ( displayshowshutdown )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccesssleep")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("Shutdown Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                WakeSettings *wakesettings = new WakeSettings();
+                addChild(wakesettings);
+            }
+        }
+
+        if ( displayshowadvanced )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessadvanced")) == "0" ) )
+            {
+                denied ->setLabel(QObject::tr("Advanced Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                AdvancedSettings *advancedsettings = new AdvancedSettings();
+                AdvancedSettings_2 *advancedsettings_2 = new AdvancedSettings_2();
+
+                addChild(advancedsettings);
+                addChild(advancedsettings_2);
+            }
+        }
+
+        if ( displayshowsound )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccesssound")) =="0") )
+            {
+                denied ->setLabel(QObject::tr("Audio Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                //remove old sound card setting from the db.  This is useful for when the saved setting is no longer valid for this machine.
+                // Later search the list and set the value to the old setting if found in the dropdown.
+                hostparm.OLDHostSoundOSSAnalog = gCoreContext->GetSetting("HostSoundOssAnalog");
+                hostparm.OLDHostSoundOSSDigital = gCoreContext->GetSetting("HostSoundOssDigital");
+                hostparm.OLDHostSoundALSAAnalog = gCoreContext->GetSetting("HostSoundALSAAnalog");
+                hostparm.OLDHostSoundALSADigital= gCoreContext->GetSetting("HostSoundALSADigital");
+
+
+                MSqlQuery query(MSqlQuery::InitCon());
+                query.prepare( "delete from settings where  hostname=:HOSTNAME  and value = 'HOSTSoundOssAnalog';  "  );
+                query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+                query.exec();
+                query.prepare( "delete from settings where  hostname=:HOSTNAME  and value = 'HOSTSoundALSAAnalog';  "  );
+                query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+                query.exec();
+                query.prepare( "delete from settings where  hostname=:HOSTNAME  and value = 'HOSTSoundALSADigital';  "  );
+                query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+                query.exec();
+                query.prepare( "delete from settings where  hostname=:HOSTNAME  and value = 'HOSTSoundOssDigital';  "  );
+                query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+                query.exec();
+
+
+                SoundSettings *soundsettings = new SoundSettings();
+                addChild(soundsettings);
+            }
+        }
+
+        if ( displayaccesscontrol )
+        {
+            VerticalConfigurationGroup* accessettings =
+                new VerticalConfigurationGroup(false,true,false,false);
+            ConfigurationGroup *GridAccess =
+                new GridConfigurationGroup(2,false,false,false,false);
+
+            GridAccess->addChild(Hostaccessadvanced());
+            GridAccess->addChild(Hostaccesssound());
+            GridAccess->addChild(HostaccessadvancedX());
+            GridAccess->addChild(Hostaccessddns());
+            GridAccess->addChild(Hostaccessfileshare());
+            GridAccess->addChild(Hostaccessmisc());
+            GridAccess->addChild(Hostaccessnetwork());
+            GridAccess->addChild(Hostaccessplugins());
+            GridAccess->addChild(Hostaccessir());
+            GridAccess->addChild(Hostaccessscreensaver());
+//screensaver
+            GridAccess->addChild(Hostaccessvnc());
+            GridAccess->addChild(Hostaccesssleep());
+//            GridAccess->addChild(Hostaccessuser());
+            GridAccess->addChild(Hostaccesswebuser());
+
+//            accessettings->addChild(Hostaccessnetwork());
+            accessettings->addChild(new ACCESShostsettings);
+            accessettings->addChild(GridAccess);
+            accessettings ->setLabel(QObject::tr("Access Settings"));
+            addChild(accessettings);
+        }
+
+        if ( displayplugins )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessplugins")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("Programs"));
+                addChild(denied);
+            }
+            else
+            {
+                ConfigurationGroup *GridShowPlugin = new GridConfigurationGroup(2,false);
+                GridShowPlugin->setLabel(QObject::tr("Programs (1/4)"));
+                GridShowPlugin->addChild(Hostpluginmytharchive());
+                GridShowPlugin->addChild(Hostpluginmythbrowser());
+                //GridShowPlugin->addChild(Hostpluginmythcontrols());
+                GridShowPlugin->addChild(Hostpluginmythnetvision());
+                GridShowPlugin->addChild(Hostpluginmythgallery());
+                //GridShowPlugin->addChild(Hostpluginmythmovietime());
+
+                //ConfigurationGroup *GridShowPlugin2 = new GridConfigurationGroup(2);
+                GridShowPlugin->addChild(Hostpluginmythmusic());
+                GridShowPlugin->addChild(Hostpluginmythnews());
+                //GridShowPlugin2->addChild(Hostpluginmythphone());
+                //GridShowPlugin2->addChild(Hostpluginmythsmolt());
+                GridShowPlugin->addChild(Hostpluginmythweather());
+                GridShowPlugin->addChild(Hostpluginmythzoneminder());
+
+
+//                ConfigurationGroup *Mythvideoplugin = new HorizontalConfigurationGroup();
+//                Mythvideoplugin->addChild(Hostpluginmythvideo());
+//                Mythvideoplugin->addChild(Hostpluginmythvideo_dvdcss());
+
+
+                ConfigurationGroup *GridShowPlugin3 = new VerticalConfigurationGroup(false,true);
+                GridShowPlugin3->setLabel(QObject::tr("Programs (2/4)"));
+                GridShowPlugin3->addChild(new MythGamesettings);
+                GridShowPlugin3->addChild(Hostpluginmythvideo_dvdcss());
+                //GridShowPlugin3->addChild(Mythvideoplugin);
+
+                addChild(GridShowPlugin);
+//                addChild(GridShowPlugin2);
+                addChild(GridShowPlugin3);
+            }
+        }
+
+        if ( displaysoftware )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessplugins")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("Programs"));
+                addChild(denied);
+            }
+            else
+            {
+                ConfigurationGroup *GridShowPlugin4 = new GridConfigurationGroup(2,false);
+                GridShowPlugin4->setLabel(QObject::tr("Programs (3/4)"));
+                GridShowPlugin4->addChild(Hostpluginmythappletrailers());
+                //GridShowPlugin4->addChild(Hostpluginmythstream());
+                //GridShowPlugin4->addChild(Hostpluginmythvodka());
+                GridShowPlugin4->addChild(HostMiro());
+                //GridShowPlugin4->addChild(HostXine());
+                //GridShowPlugin4->addChild(Hostwebmin());
+                //GridShowPlugin4->addChild(Hostfuppes());
+                GridShowPlugin4->addChild(HostHuluDesktop());
+                GridShowPlugin4->addChild(Hostwebonlinhes());
+
+
+                ConfigurationGroup *GridShowPlugin5 = new GridConfigurationGroup(2);
+                //GridShowPlugin5->addChild(Hostfuppes());
+
+                ConfigurationGroup *GridShowPlugin6 = new VerticalConfigurationGroup(false,true);
+                GridShowPlugin6->setLabel(QObject::tr("Programs (4/4)"));
+                GridShowPlugin6->addChild(Hostfoldingathome());
+                GridShowPlugin6->addChild(Hostfoldingusername());
+                GridShowPlugin6->addChild(Hostfoldingworksize());
+
+                addChild(GridShowPlugin4);
+                //addChild(GridShowPlugin5);
+                addChild(GridShowPlugin6);
+            }
+        }
+        if ( displayuser )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessuser")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("User Accounts"));
+                addChild(denied);
+            }
+            else
+            {
+                UserManagement *usermanagement = new UserManagement();
+                addChild(usermanagement);
+            }
+        }
+
+        if ( displaywebuser )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccesswebuser")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("Web Security Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                WebPasswordFrame *webpasswordframe = new WebPasswordFrame();
+                addChild(webpasswordframe);
+            }
+
+        }
+
+        if ( displayddns )
+        {
+            if ( ((gCoreContext->GetSetting("Hostaccessddns")) == "0" ))
+            {
+                denied ->setLabel(QObject::tr("DDNS Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                DDnssettings *ddnsframe = new DDnssettings();
+                addChild(ddnsframe);
+            }
+        }
+
+        if ( displayinfrared )
+        {
+            if (  ((gCoreContext->GetSetting("Hostaccessir")) =="0" ))
+            {
+                denied ->setLabel(QObject::tr("Remotes Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                IRFrame *irframe = new IRFrame();
+                IR_TransmitFrame *transmitframe =  new IR_TransmitFrame();
+                LCDFrame     *lcdframe = new LCDFrame();
+                addChild(irframe);
+                addChild(transmitframe);
+                addChild(lcdframe);
+            }
+        }
+
+        if ( displayscreensaver )
+        {
+            if (  ((gCoreContext->GetSetting("Hostaccessscreensaver")) =="0" ))
+            {
+                denied ->setLabel(QObject::tr("Screensaver Settings"));
+                addChild(denied);
+            }
+            else
+            {
+                //JM VERBOSE(VB_IMPORTANT, "screensaver");
+                Screensaverhostsettings  *screensaver = new Screensaverhostsettings();
+                addChild(screensaver);
+            }
+        }
+
+
+    }
+
+};
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.h b/abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.h
new file mode 100755
index 0000000..23c00f0
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/installsettings.h
@@ -0,0 +1,589 @@
+#ifndef WELCOMESETTINGS_H
+#define WELCOMESETTINGS_H
+
+#include <settings.h>
+#include "mythdialogs.h"
+#include "libmyth/mythdialogs.h"
+#include "libmyth/mythwidgets.h"
+#include "compat-mv.h"
+
+class SystemtypeGroup: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    SystemtypeGroup();
+    HostComboBox  *HostSystemType;
+public slots:
+    void SystemtypeHelp();
+};
+
+//-------------------------------------------
+class NetworkSettingseth0:
+    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    NetworkSettingseth0();
+
+    HostLineEdit *HostIPeth0;
+    HostComboBox *HostNETMASKeth0;
+    HostLineEdit *HostGWeth0;
+    HostLineEdit *HostDNSeth0;
+    HostCheckBox *HostActiveonbooteth0;
+    HostCheckBox *HostUseDHCPeth0 ;
+    HostCheckBox *HostDefaulteth0;
+    TransButtonSetting *wirelessbuttoneth0;
+
+signals:
+    void eth0_is_default(void);
+public slots:
+    void eth0_wireless_settings();
+    void eth0_disable_others();
+    void eth0_disabled();
+    void eth0_wireless_disable();
+};
+
+class eth0options : public ConfigurationWizard
+{
+public:
+    eth0options();
+};
+
+
+class NetworkSettingseth1:
+    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    NetworkSettingseth1();
+
+    HostLineEdit  *HostIPeth1;
+    HostComboBox *HostNETMASKeth1;
+    HostLineEdit *HostGWeth1;
+    HostLineEdit *HostDNSeth1;
+    HostCheckBox *HostActiveonbooteth1;
+    HostCheckBox *HostUseDHCPeth1 ;
+    HostCheckBox *HostDefaulteth1;
+    TransButtonSetting *wirelessbuttoneth1;
+signals:
+    void eth1_is_default(void);
+public slots:
+    void eth1_wireless_settings();
+    void eth1_disable_others();
+    void eth1_disabled();
+    void eth1_wireless_disable();
+};
+
+class eth1options : public ConfigurationWizard
+{
+public:
+    eth1options();
+};
+
+
+
+class NetworkSettingswlan0:
+    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    NetworkSettingswlan0();
+
+    HostLineEdit  *HostIPwlan0;
+    HostComboBox *HostNETMASKwlan0;
+    HostLineEdit *HostGWwlan0;
+    HostLineEdit *HostDNSwlan0;
+    HostCheckBox *HostActiveonbootwlan0;
+    HostCheckBox *HostUseDHCPwlan0 ;
+    HostCheckBox *HostDefaultwlan0;
+    TransButtonSetting *wirelessbuttonwlan0;
+signals:
+    void wlan0_is_default(void);
+public slots:
+    void wlan0_wireless_settings();
+    void wlan0_disable_others();
+    void wlan0_disabled();
+    void wlan0_wireless_disable();
+};
+
+class Wlan0options : public ConfigurationWizard
+{
+public:
+    Wlan0options();
+};
+
+
+class NetworkSettingswlan1:
+    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    NetworkSettingswlan1();
+
+    HostLineEdit *HostIPwlan1;
+    HostComboBox *HostNETMASKwlan1;
+    HostLineEdit *HostGWwlan1;
+    HostLineEdit *HostDNSwlan1;
+    HostCheckBox *HostActiveonbootwlan1;
+    HostCheckBox *HostUseDHCPwlan1 ;
+    HostCheckBox *HostDefaultwlan1;
+    TransButtonSetting *wirelessbuttonwlan1;
+signals:
+    void wlan1_is_default(void);
+public slots:
+    void wlan1_wireless_settings();
+    void wlan1_disable_others();
+    void wlan1_disabled();
+    void wlan1_wireless_disable();
+};
+
+class wlan1options : public ConfigurationWizard
+{
+public:
+    wlan1options();
+};
+
+
+
+class NetworkSettingsath0:
+    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    NetworkSettingsath0();
+
+    HostLineEdit *HostIPath0;
+    HostComboBox *HostNETMASKath0;
+    HostLineEdit *HostGWath0;
+    HostLineEdit *HostDNSath0;
+    HostCheckBox *HostActiveonbootath0;
+    HostCheckBox *HostUseDHCPath0 ;
+    HostCheckBox *HostDefaultath0;
+    TransButtonSetting *wirelessbuttonath0;
+signals:
+    void ath0_is_default(void);
+public slots:
+    void ath0_wireless_settings();
+    void ath0_disable_others();
+    void ath0_disabled();
+    void ath0_wireless_disable();
+};
+
+class ath0options : public ConfigurationWizard
+{
+public:
+    ath0options();
+};
+
+class NetworkOptionsFrame: public VerticalConfigurationGroup {
+    Q_OBJECT
+public:
+    NetworkOptionsFrame();
+    TransButtonSetting *FetchDhcpHostnameButton;
+    TransLabelSetting *networklabel;
+    HostComboBox *HostMyhostname;
+    QString find_hostname();
+public slots:
+    void fetch_hostname();
+};
+
+
+//--------------------------------------------
+
+
+class SoundSettings:    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    SoundSettings();
+    HostComboBox *HostAudiotype;
+    HostCheckBox *HostsyncXine;
+    HostCheckBox *HostsyncMplayer;
+    HostCheckBox *HostsyncMythMusic;
+    HostCheckBox *HostsyncMythFrontend;
+
+
+signals:
+    void oss_sig(void);
+    void alsa_sig(void);
+public slots:
+    void soundossgathersettings_1();
+    void soundalsagathersettings_1();
+
+};
+
+
+class SoundOSSsettings: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    SoundOSSsettings();
+    HostComboBox *HostSoundOssAnalog;
+    HostComboBox *HostSoundOssDigital;
+    HostComboBox *HostSoundTypeout;
+    void fillossselection();
+public slots:
+    void soundossgathersettings();
+    void loadossdriver();
+};
+
+class SoundALSAsettings: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    SoundALSAsettings();
+    HostComboBox *HostSoundALSAAnalog;
+    HostComboBox *HostSoundALSADigital;
+    HostComboBox *HostSoundALSATypeout;
+    void fillALSAselection();
+public slots:
+    void soundalsagathersettings();
+    void loadalsadriver();
+
+};
+
+
+//############################################
+class MythInstallSettings:  public ConfigurationWizard
+{
+
+public:
+    MythInstallSettings();
+    void testme();
+private:
+    MythPopupBox *popup;
+
+};
+/*
+#include "mythstorage.h"
+
+class MPUBLIC ImageSelectSetting: public SelectSetting {
+    Q_OBJECT
+public:
+    ImageSelectSetting(Storage *_storage) :
+            SelectSetting(_storage),
+                    bxwidget(NULL), imagelabel(NULL), combo(NULL),
+                            m_hmult(1.0f), m_wmult(1.0f) { }
+                                virtual QWidget* configWidget(ConfigurationGroup *cg, QWidget* parent,
+                                                              const char* widgetName = 0);
+                                virtual void widgetInvalid(QObject *obj);
+                                virtual void deleteLater(void);
+                                virtual void setHelpText(const QString &str);
+
+                                virtual void addImageSelection(const QString& label,
+                                                               QImage* image,
+                                                               QString value=QString::null,
+                                                               bool select=false);
+
+protected slots:
+    void imageSet(int);
+
+protected:
+    void Teardown(void);
+    virtual ~ImageSelectSetting();
+
+protected:
+    vector<QImage*> images;
+    QWidget *bxwidget;
+    QLabel *imagelabel;
+    MythComboBox *combo;
+    float m_hmult, m_wmult;
+};
+
+
+class MPUBLIC HostImageSelect : public ImageSelectSetting, public HostDBStorage
+{
+public:
+    HostImageSelect(const QString &name) :
+            ImageSelectSetting(this), HostDBStorage(this, name) { }
+};*/
+
+
+class HostRemoteType: public HostImageSelect {
+public:
+    HostRemoteType();
+};
+
+
+
+#define MV_ROOT "/usr/MythVantage/"
+int runsettings(bool = false , bool = false ,  bool = false ,bool = false ,bool = false, bool = false,bool = false,bool = false , bool = false , bool = false , bool = false, bool = false , bool = false , bool = false , bool = false, bool = false , bool = false , bool = false , bool = false, bool = false);
+//void ReadDDCifno(void);
+void run_systemconfig(QString,bool = false,QString = "");
+void writesettings();
+
+//void testXconfiguration();
+
+
+
+
+
+struct HostParms
+{
+
+    QString language;
+    QString ThisHostName;
+    //QString ThisHostDHCPhostname;
+
+    QString ThisHostIP;
+    QString ThisNETMASK;
+    QString ThisGW;
+    QString ThisDNS;
+    QString ThisDHCP;
+    QString ThisHostnetOLD;
+    QString ThisHostnetActiveOLD;
+
+    QString ThisHostDefaultInterface;
+    QString ThisHostIPeth0;
+    QString ThisHostNETMASKeth0;
+    QString ThisHostDNSeth0;
+    QString ThisHostUSEDHCPeth0;
+    QString ThisHostGWeth0;
+    QString ThisHOST_iswirelesseth0;
+    QString ThisHostActiveonbooteth0;
+    QString ThisHOSTESSIDeth0;
+    QString ThisHostUseEncryptioneth0;
+    QString ThisHostkeyeth0;
+    QString ThisHostMTUeth0;
+
+
+    QString ThisHostIPeth1;
+    QString ThisHostNETMASKeth1;
+    QString ThisHostDNSeth1;
+    QString ThisHostUSEDHCPeth1;
+    QString ThisHostGWeth1;
+    QString ThisHostActiveonbooteth1 ;
+    QString ThisHOST_iswirelesseth1;
+    QString ThisHOSTESSIDeth1;
+    QString ThisHostUseEncryptioneth1;
+    QString ThisHostkeyeth1;
+    QString ThisHostMTUeth1;
+
+    QString ThisHostIPwlan0;
+    QString ThisHostNETMASKwlan0;
+    QString ThisHostDNSwlan0;
+    QString ThisHostUSEDHCPwlan0;
+    QString ThisHostGWwlan0;
+    QString ThisHostActiveonbootwlan0;
+    QString ThisHOST_iswirelesswlan0;
+    QString ThisHOSTESSIDwlan0;
+    QString ThisHostUseEncryptionwlan0;
+    QString ThisHostkeywlan0;
+    QString ThisHostMTUwlan0;
+
+
+    QString ThisHostIPwlan1;
+    QString ThisHostNETMASKwlan1;
+    QString ThisHostDNSwlan1;
+    QString ThisHostUSEDHCPwlan1;
+    QString ThisHostGWwlan1;
+    QString ThisHostActiveonbootwlan1;
+    QString ThisHOST_iswirelesswlan1;
+    QString ThisHOSTESSIDwlan1;
+    QString ThisHostUseEncryptionwlan1;
+    QString ThisHostkeywlan1;
+    QString ThisHostMTUwlan1;
+
+    QString ThisHostIPath0;
+    QString ThisHostNETMASKath0;
+    QString ThisHostDNSath0;
+    QString ThisHostUSEDHCPath0;
+    QString ThisHostGWath0;
+    QString ThisHostActiveonbootath0;
+    QString ThisHOST_iswirelessath0;
+    QString ThisHOSTESSIDath0;
+    QString ThisHostUseEncryptionath0;
+    QString ThisHostkeyath0;
+    QString ThisHostMTUath0;
+
+
+    QString ThisRemote;
+    QString ThisHostRemotebucket;
+
+    QString ThisTimeZone;
+    QString ThisSamba;
+    QString ThisHostServiceSamba_media;
+    QString ThisHostServiceSamba_home;
+    QString ThisHostServiceSamba_writehome;
+    QString ThisHostServiceSamba_write;
+    QString ThisHostServiceSamba_domain;
+    QString ThisNFS;
+    QString ThisMythWEB;
+    QString ThisHostwebauth;
+  //  QString ThisHostServiceHobbit;
+ //    QString ThisHostServiceRRD;
+
+    QString ThisHostRunDHCP;
+    QString ThisSystemType;
+//        QString ThisBlaster;
+
+    QString ThisHostTransmitproto_1;
+    QString ThisHostTransmitproto_2;
+    QString ThisHostTransmitproto_3;
+    QString ThisHostTransmitproto_4;
+    QString ThisHostBlasterType;
+    QString ThisHostSerialPort_blasterlirc;
+    QString ThisHostnumblaster;
+    QString ThisHostTransmitDelay_1;
+    QString ThisHostTransmitSend_after_1;
+    QString ThisHostTransmitDelay_2;
+    QString ThisHostTransmitSend_after_2;
+    QString ThisHostTransmitDelay_3;
+    QString ThisHostTransmitSend_after_3;
+    QString ThisHostTransmitDelay_4;
+    QString ThisHostTransmitSend_after_4;
+
+
+
+
+
+
+
+    QString ThisReceiverType;
+    QString ThisHDHRlirc_device;
+    QString ThisHostLircWait;
+    QString ThisHostSerialPortlirc;
+    QString ThisHostUseEvrouter;
+    QString ThisHostEvrouterConfig;
+    QString ThisDBhost;
+    QString ThisXres;
+
+
+
+    QString ThisHostBEWait;
+    QString ThisHostUseXLargeMouse;
+    QString ThisShutdowntime;
+    QString ThisShutdowntime2;
+    QString ThisWakeuptime;
+    QString ThisAutodown;
+    QString ThisUseNVRAM;
+    QString ThisUseWOL;
+    QString ThisKeepPackage;
+    QString ThisMythWelcome;
+    QString ThisHaveNFS;
+    QString ThisNFSserver;
+    QString ThisNFSmountpoint;
+    QString ThisHostCentralNFSallhosts;
+    QString ThisHostupdateplan;
+    // QString ThisOSS;
+    QString ThisShowToolTips;
+   // QString ThisHostPKG_MIRROR;
+    QString ThisRunfrontend;
+    QString ThisHostZipcode;
+    QString ThisHostncidClient;
+    QString ThisHostncidDaemon;
+    QString ThisHostSerialPortncid;
+    QString ThisHostNcidDeviceNetCallerID;
+
+    QString ThisHostbootsplash;
+    QString ThisXIgnoreConfig;
+    QString ThisXcardtype;
+    QString ThisXUseAdvanced;
+    QString ThisXIgnoreEDID;
+    QString ThisXconnection;
+    QString ThisXHsync;
+    QString ThisXVrefresh;
+    QString ThisXresadvanced;
+    QString ThisXTVstandard;
+    QString ThisXTVconnection;
+    QString ThisXDisplaysize ;
+
+    QString ThisHostXNvidia1080p;
+    QString ThisHostXNvidia1080i;
+    QString ThisHostXNvidia720p;
+    QString ThisHostXNvidia480p;
+    QString ThisHostAudiotype;
+
+    QString ThisHostSoundTypeout;
+    QString ThisHostSoundOSSAnalog;
+    QString OLDHostSoundOSSAnalog;
+    QString ThisHostSoundOSSDigital;
+    QString OLDHostSoundOSSDigital;
+
+    QString ThisHostSoundDigital;
+    QString ThisHostSoundDevice;
+
+    QString ThisHostSoundALSAAnalog;
+    QString OLDHostSoundALSAAnalog;
+    QString ThisHostSoundALSADigital;
+    QString OLDHostSoundALSADigital;
+    QString ThisHostSoundALSATypeout;
+
+
+    QString ThisHostsyncXine;
+    QString ThisHostsyncMplayer;
+    QString ThisHostsyncMythMusic;
+    QString ThisHostsyncMythFrontend;
+    QString ThisHostLCDType;
+    QString ThisHostRemoteBackup;
+    QString ThisHostRemoteBackupDir;
+    QString ThisHostpluginmytharchive;
+    QString ThisHostpluginmythbrowser;
+    QString ThisHostpluginmythcontrols;
+    QString ThisHostpluginmythnetvision;
+    QString ThisHostpluginmythgallery;
+    QString ThisHostpluginmythgame;
+    QString ThisHostpluginmythmovietime;
+    QString ThisHostpluginmythmusic;
+    QString ThisHostpluginmythnews;
+    QString ThisHostpluginmythphone;
+    QString ThisHostpluginmythsmolt;
+    QString ThisHostpluginmythvideo;
+    QString ThisHostpluginmythweather;
+    QString ThisHostpluginmythzoneminder;
+
+
+
+    QString ThisHostpluginmythvideo_dvdcss;
+    QString ThisHostpluginmythappletrailers;
+    QString ThisHostpluginmythstream;
+    QString ThisHostpluginmythvodka;
+
+    QString ThisHostMiro;
+    QString ThisHostwebonlinhes;
+    QString ThisHostHuluDesktop;
+
+    QString ThisHostpluginmythgameMame;
+    QString ThisHostpluginmythgamefceux;
+    QString ThisHostpluginmythgamesnes9x;
+    QString ThisHostpluginmythgameMednafen;
+    QString ThisHostpluginmythgameROMDB;
+    QString ThisHostpluginmythgameMupen64;
+    QString ThisHostpluginmythgameDolphin;
+    QString ThisHostpluginmythgameXe;
+
+//    QString ThisHostXine;
+//    QString ThisHostwebmin;
+//    QString ThisHostfuppes;
+    QString ThisHostfoldingathome;
+    QString ThisHostfoldingusername;
+    QString ThisHostfoldingworksize;
+
+    QString ThisHostDDnslogin;
+    QString ThisHostDDnspassword;
+    QString ThisHostDDnshostname;
+    QString ThisHostDDnsEnable;
+    QString ThisHostscreensavertype;
+    QString ThisHostscreensaveridle;
+    QString ThisHostscreensavertheme;
+    QString ThisHOSTrootSSH;
+    bool displayshowadvancedX;
+
+    // supplemental
+    QString ThisHostSupplemental;
+    QString ThisHostWindowManager;
+    QString ThisHostEnhancedWMStyle;
+
+    //VNC
+    QString ThisHostVNCEnable;
+    QString ThisHostVNCpassword;
+    QString ThisHostXVNCEnable;
+    QString ThisHostXVNCpassword;
+
+};
+
+struct DDCinfo
+{
+    QString XVrefresh;
+    QString XHsync;
+    QString Displaysize;
+};
+
+
+
+
+
+
+
+#endif
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/main.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/main.cpp
new file mode 100755
index 0000000..fa16918
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/main.cpp
@@ -0,0 +1,597 @@
+//#include <qapplication.h>
+//Added by qt3to4:
+#include <Q3TextStream>
+
+
+#include "installdialog.h"
+#include "installsettings.h"
+#include "password_manage.h"
+#include "autocard.h"
+#include "settemplate.h"
+
+
+
+
+// Qt
+#include <QApplication>
+#include <QFileInfo>
+#include <QDir>
+
+
+
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+
+
+
+#include <stdio.h>
+
+//MythTV
+#include "langsettings.h"
+#include "mythcontext.h"
+#include "mythversion.h"
+#include "mythtranslation.h"
+#include "mythdbcon.h"
+#include "exitcodes.h"
+#include "compat.h"
+#include "lcddevice.h"
+#include "commandlineparser.h"
+#include "mythlogging.h"
+#include "dialogbox.h"
+
+
+// libmythui
+#include "mythmainwindow.h"
+#include "mythuihelper.h"
+
+
+//??
+#include "myththemebase.h"
+
+
+HostParms hostparm;
+DDCinfo ddcinfo;
+
+
+void initKeys(void)
+{
+    REG_KEY("Welcome", "STARTXTERM", "Open an Xterm window", "F12");
+    REG_KEY("Welcome", "SHOWSETTINGS", "Show Mythshutdown settings", "F11");
+}
+
+int main(int argc, char **argv)
+{
+    bool showLang = false;
+    bool bShowSettings = false;
+    bool bShowNetwork = false;
+    bool bShowHostype = false;
+    bool bShowMisc = false;
+    bool bShowshutdown = false;
+    bool bShowadvanced = false;
+    bool bShowsound = false;
+    bool bShowadvancedX = false;
+    bool bShowAccesscontrol = false;
+    bool bShowplugins = false;
+    bool bShowsoftware = false;
+    bool bShowTemplate = false;
+    bool bShowuser  = false;
+    bool bShowwebuser = false;
+    bool bRunSetup = false;
+    bool bShowHelp = false;
+    bool bShowReadme = false;
+    bool bShowddns = false;
+    bool bShowinfrared = false;
+    bool bShowscreensaver = false;
+    bool bShowquestion = false;
+    bool bShowsupplemental = false;
+    bool bShowremotes_only = false;
+    bool bShowvnc   = false;
+    bool bShowFileshare   = false;
+
+    QStringList template_c_line  ;
+    QString modulelist = "" ;
+    QString templateop="";
+    QString templatename="";
+    QString templatehostname="";
+    QString question;
+
+
+    int FRONTEND_EXIT_NO_MYTHCONTEXT = 1;
+    int FRONTEND_EXIT_INVALID_CMDLINE =1 ;
+    QApplication a(argc, argv);
+    QCoreApplication::setApplicationName("mythinstall");
+
+    // Check command line arguments
+    MythInstallCommandLineParser cmdline;
+    int retval;
+    if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK)
+         return retval;
+
+    if (!cmdline.Parse(argc, argv))
+    {
+      cmdline.PrintHelp();
+      return 4;
+      return GENERIC_EXIT_INVALID_CMDLINE;
+    }
+
+    if (cmdline.toBool("showhelp"))
+    {
+          cmdline.PrintHelp();
+          return GENERIC_EXIT_OK;
+    }
+
+    if (cmdline.toBool("showversion"))
+    {
+      cmdline.PrintVersion();
+      return GENERIC_EXIT_OK;
+    }
+//--------------------Start of real stuff---------------------
+    gContext = new MythContext(MYTH_BINARY_VERSION);
+
+    if (!gContext->Init())
+    {
+      LOG(VB_GENERAL, LOG_ERR,
+          "mythinstall: Could not initialize MythContext. Exiting.");
+      return GENERIC_EXIT_NO_MYTHCONTEXT;
+    }
+
+    if (!MSqlQuery::testDBConnection())
+    {
+      LOG(VB_GENERAL, LOG_ERR,
+          "mythinstall: Could not open the database. Exiting.");
+      return -1;
+    }
+
+    if (cmdline.toBool("screen"))
+    {
+      bShowSettings = true;
+      LOG(VB_GENERAL, LOG_INFO, QString("mythinstall: Screen stuff"));
+      QString tmpArg = (cmdline.toString("screen")) ;
+      QStringList pairs = QStringList::split(",", tmpArg);
+        for (unsigned int index = 0; index < pairs.size(); ++index)
+        {
+            if ( pairs[index]  == "network" )
+            {
+                bShowNetwork = true;
+                modulelist.append("network,");
+            }
+            else if ( pairs[index]  == "misc" )
+            {
+                bShowMisc = true;
+                modulelist.append("misc,");
+            }
+            else if ( pairs[index]  == "sleep" )
+            {
+                bShowshutdown = true;
+                modulelist.append("sleep,");
+            }
+            else if ( pairs[index]  == "hostype" )
+            {
+                bShowHostype = true;
+                modulelist.append("hostype,");
+            }
+            else if ( pairs[index]  == "advanced" )
+            {
+                bShowadvanced = true;
+                modulelist.append("advanced,");
+            }
+            else if ( pairs[index]  == "sound" )
+            {
+                bShowsound = true;
+                modulelist.append("audio,");
+            }
+            else if ( pairs[index]  == "advancedX" )
+            {
+                bShowadvancedX = true;
+                modulelist.append("advancedX,");
+            }
+            else if ( pairs[index]  == "accesscontrol" )
+            {
+                bShowAccesscontrol = true;
+                modulelist.append("accesscontrol,");
+            }
+            else if ( pairs[index]  == "plugins" )
+            {
+                bShowplugins = true;
+                modulelist.append("plugins,");
+            }
+            else if ( pairs[index]  == "software" )
+            {
+                bShowsoftware = true;
+                modulelist.append("software,");
+            }
+            else if ( pairs[index]  == "user" )
+            {
+                bShowuser = true;
+                modulelist.append("user,");
+            }
+            else if ( pairs[index]  == "webuser" )
+            {
+                bShowwebuser = true;
+                modulelist.append("webuser,");
+            }
+            else if ( pairs[index]  == "ddns" )
+            {
+                bShowddns = true;
+                modulelist.append("ddns,");
+            }
+            else if ( pairs[index]  == "ir" )
+            {
+                bShowinfrared = true;
+                modulelist.append("ir,");
+            }
+            else if ( pairs[index]  == "screensaver" )
+            {
+                bShowscreensaver = true;
+                modulelist.append("screensaver,");
+            }
+            else if ( pairs[index]  == "supplemental" )
+            {
+                bShowsupplemental = true;
+                modulelist.append("supplemental,");
+            }
+            else if ( pairs[index]  == "remotes_only" )
+            {
+                bShowremotes_only = true;
+                modulelist.append("remotes_only,");
+            }
+            else if ( pairs[index]  == "vnc" )
+            {
+                bShowvnc = true;
+                modulelist.append("vnc,");
+            }
+            else if ( pairs[index]  == "fileshare" )
+            {
+                bShowFileshare = true;
+                modulelist.append("fileshare,");
+            }
+        } //for loop
+    }
+
+    if (cmdline.toBool("help"))
+      bShowHelp = true;
+
+    if (cmdline.toBool("readme"))
+    {
+      bShowReadme = true;
+    }
+    if (cmdline.toBool("question"))
+    {
+      bShowquestion = true;
+      question = (cmdline.toString("question")) ;
+    }
+
+    if (cmdline.toBool("run_mythsetup"))
+      bRunSetup = true;
+
+    if (cmdline.toBool("show_lang"))
+        showLang = true;
+
+    LCD::SetupLCD();
+    if (class LCD *lcd = LCD::Get())
+        lcd->switchToTime();
+
+
+    MythTranslation::load("mythfrontend");
+    GetMythUI()->LoadQtConfig();
+    MythMainWindow *mainWindow = GetMythMainWindow();
+    mainWindow->Init();
+
+//     if parms were passed to -t then doen't init the screen.
+//     if (   template_c_line.size()  == 0 )
+//     {
+//         gCoreContext->SaveSetting("HOSTtemplatetype","Do Nothing" );
+//         mainWindow->Init();
+//     findme
+//       gContext->SetMainWindow(mainWindow);
+//
+//         MythThemeBase *themeBase = new MythThemeBase();
+//         initKeys();
+//     };
+
+    gCoreContext->ActivateSettingsCache(false);
+    gCoreContext->ClearSettingsCache();
+    gCoreContext->ActivateSettingsCache(false);
+
+    if (bShowSettings)
+    {
+        gCoreContext->ActivateSettingsCache(false);
+        gCoreContext->ClearSettingsCache();
+        bool runconfig = false;
+        system("cp -f /etc/systemconfig /tmp/systemconfig.bak");
+        QString olddb = gCoreContext->GetSetting("HostMysqlserver");
+        QString oldhostype = gCoreContext->GetSetting("HostSystemType");
+        runsettings(false,bShowNetwork,bShowHostype,bShowMisc,bShowshutdown,bShowadvanced,bShowsound,bShowadvancedX,bShowAccesscontrol,bShowplugins,bShowsoftware,bShowuser,bShowwebuser,bShowddns,bShowinfrared,bShowscreensaver,bShowsupplemental,bShowremotes_only,bShowvnc,bShowFileshare);
+        QString newdb = gCoreContext->GetSetting("HostMysqlserver");
+        QString newhostype = gCoreContext->GetSetting("HostSystemType");
+        int status = system("diff /tmp/systemconfig.bak /etc/systemconfig");
+        bool restart = false;
+        //save my settings in case db switches
+        QString cmdtxt;
+        cmdtxt=MV_ROOT  ;
+        cmdtxt.append("bin/myth_settings_wrapper.sh -c save -t syssettings  -d "  + olddb);
+        system(cmdtxt);
+
+        if ( status != 0 )
+        {
+            runconfig = true;
+        }
+
+        if ( newdb != olddb )
+        {
+            runconfig = true;
+            restart = true;
+            //db changed save setting from olddb
+            QString cmdtxt;
+            cmdtxt=MV_ROOT  ;
+            cmdtxt.append("bin/myth_settings_wrapper.sh -c save  -t  syssettings  -d " + olddb ) ;
+            system(cmdtxt);
+        }
+
+        if ( runconfig )
+        {
+            //LOG(VB_GENERAL, LOG_ERR,
+            //    "mythinstall: this is where i stalled");
+            if ( newhostype != oldhostype )
+                modulelist.append("hostypec,");
+           // trim off last ,
+            modulelist.truncate(modulelist.length()-1);
+            QString cmdtxt;
+            cmdtxt=MV_ROOT  ;
+            cmdtxt.append("bin/myth_settings_wrapper.sh -c restore -t syssettings -d  ");
+            QString dbcommand = cmdtxt;
+            dbcommand.append(newdb);
+            run_systemconfig(modulelist,restart,dbcommand);
+
+
+
+        }
+        system("rm -f /tmp/systemconfig.bak");
+        gCoreContext->ActivateSettingsCache(false);
+        gCoreContext->ClearSettingsCache();
+        if ( restart )
+        {
+            DialogBox *dia = NULL;
+            QString prompt;
+            QString *problems = new QString("The network address of the database has changed.");
+            problems->append("\n");
+            problems->append("The frontend will need to restart to connect to the new database.");
+            problems->append("\n");
+            dia = new DialogBox(mainWindow, problems->append("\n" ));
+            dia->AddButton(QObject::tr("OK"));
+            int returncode = 0;
+            returncode = dia->exec();
+            dia->deleteLater();
+            //cout << "restarting" << endl;
+            QString cmdtxt;
+            cmdtxt=MV_ROOT  ;
+            cmdtxt.append("bin/systemconfig.sh  reloadfe" );
+            system(cmdtxt);
+        }
+        gCoreContext->ActivateSettingsCache(false);
+        gCoreContext->ClearSettingsCache();
+        gCoreContext->SendMessage("CLEAR_SETTINGS_CACHE");
+
+
+
+    }//run settings
+
+    else if (bShowTemplate)
+    {
+//         if ( template_c_line.size() == 2)
+//         {
+//             templateop=template_c_line[0];
+//             templatename=template_c_line[1];
+//         }
+//         else if ( template_c_line.size() == 3)
+//         {
+//             templateop=template_c_line[0];
+//             templatename=template_c_line[1];
+//             templatehostname=template_c_line[2];
+//         };
+//         choosetemplate(templateop,templatename,templatehostname);
+    }
+
+    else if (bRunSetup)
+    {
+        DialogBox *dia = NULL;
+        QString prompt;
+        QString *problems = new QString("To configure the TV cards and program guide the setup program needs to be run.");
+        problems->append("\n");
+        problems->append("\n");
+
+        problems->append("For those in North America, guide data is provided by Schedules Direct.");
+        problems->append("\n");
+        problems->append("Visit  http://www.schedulesdirect.org/  to signup for your account today");
+        problems->append("\n");
+        problems->append("\n");
+        problems->append("\n");
+
+        problems->append("If you choose to not run mythtv-setup now, the program can be run at any time by typing mythtv-setup or hitting ALT+s");
+        problems->append("\n");
+
+        problems->append("\n");
+        prompt = QObject::tr("Do you wish to run mythtv-setup ?");
+
+        dia = new DialogBox(mainWindow, problems->append("\n" + prompt));
+        dia->AddButton(QObject::tr("Yes"));
+        dia->AddButton(QObject::tr("Yes and try to autodetect cards"));
+        dia->AddButton(QObject::tr("No"));
+        int returncode = 0;
+        returncode = dia->exec();
+        DialogCode dcode = dia->exec();
+        dia->deleteLater();
+        if (kDialogCodeButton0 == dcode )
+            returncode = 0;
+        if (kDialogCodeButton1 == dcode )
+            returncode = 1;
+        if (kDialogCodeButton2 == dcode )
+            returncode = 2;
+/*
+        if (returncode == 1)
+        {
+            AutoCard listcards;
+            listcards.exec();
+        }*/
+
+        return returncode;
+    }
+
+    else if (bShowHelp)
+    {
+        DialogBox *dia = NULL;
+        QString prompt;
+        QString *problems = new QString("LinHES Help");
+        problems->append("\n");
+        problems->append("Visit http://linhes.org for additional help.");
+        problems->append("\n");
+        problems->append("\n");
+        problems->append("------Keyboard Shortcuts---------------------------------");
+        problems->append("\n");
+        problems->append("Alt + h: This Screen");
+        problems->append("\n");
+#ifdef __MVAPP__
+        problems->append("F2: Open/Close Terminal");
+        problems->append("\n");
+        problems->append("Shift + Return: Open New Terminal (xterm)");
+        problems->append("\n");
+        problems->append("Alt + F2: Show 2nd desktop  Alt + F1 To Go Back");
+        problems->append("\n");
+        problems->append("Alt + c: Capture Myth Screenshot");
+        problems->append("\n");
+#else
+        problems->append("Alt + x: Open New Terminal (xterm)");
+        problems->append("\n");
+        problems->append("Alt + m: Open mythfrontend");
+        problems->append("\n");
+        problems->append("m in mythfrontend: Display Power/About Menu");
+        problems->append("\n");
+#endif
+        problems->append("Alt + 1: Start Master mythbackend");
+        problems->append("\n");
+        problems->append("Alt + 2: Stop Master mythbackend");
+        problems->append("\n");
+        problems->append("Alt + 3: Restart Master mythbackend");
+        problems->append("\n");
+        problems->append("Alt + s: Open mythtv-setup");
+        problems->append("\n");
+        problems->append("Alt + u: Unhide/Hide Mouse Pointer");
+        problems->append("\n");
+        problems->append("Alt + w: Open Web Browser (Chrome if installed)");
+        problems->append("\n");
+        problems->append("Alt + f: Restart Window Manager");
+        problems->append("\n");
+
+
+        dia = new DialogBox(mainWindow, problems->append("\n" ));
+        dia->AddButton(QObject::tr("OK"));
+        int returncode = 0;
+        returncode = dia->exec();
+        dia->deleteLater();
+        DestroyMythMainWindow();
+        delete gContext;
+        return returncode;
+    }
+    else if (bShowReadme)
+    {
+        DialogBox *dia = NULL;
+        QString prompt;
+        QString line;
+        QString *problems = new QString("");
+        problems->append("\n");
+        QFile file("/usr/MythVantage/README");
+        if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+        {
+            Q3TextStream t( &file );        // use a text stream
+            while ( !t.eof() )
+            {
+                line = t.readLine();
+                problems->append(line);
+                problems->append("\n");
+            }
+            file.close();
+        }
+        else
+            problems->append("Couldn't open file");
+        dia = new DialogBox(mainWindow, problems->append("\n" ));
+        dia->AddButton(QObject::tr("OK"));
+        int returncode = 0;
+        returncode = dia->exec();
+        dia->deleteLater();
+        DestroyMythMainWindow();
+        delete gContext;
+        return returncode;
+    }
+
+    else if (bShowquestion)
+    {
+        //LOG(VB_GENERAL, LOG_INFO, QString(question));
+        DialogBox *dia = NULL;
+        QString prompt;
+        QString *problems = new QString("");
+        problems->append("\n");
+        problems->append("\n");
+        problems->append(question);
+        dia = new DialogBox(mainWindow, problems->append("\n" ));
+        dia->AddButton(QObject::tr("Yes"));
+        dia->AddButton(QObject::tr("No"));
+        int returncode = 0;
+
+        returncode = dia->exec();
+        dia->deleteLater();
+        DestroyMythMainWindow();
+        delete gContext;
+
+        return returncode;
+    }
+    else
+    {
+        if (LanguageSelection::prompt(showLang)){
+            //taken from reloadTheme mythtv-setup
+            MythTranslation::reload();
+            GetMythMainWindow()->ReinitDone();
+
+        }
+
+        MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+        WelcomeDialog *welcome = new WelcomeDialog(mainStack, "Welcome");
+        if (welcome->Create())
+        {
+            mainStack->AddScreen(welcome, true);
+        }
+        else
+            return -1;
+
+        do
+        {
+
+            qApp->processEvents();
+            usleep(5000);
+        } while (mainStack->TotalScreens() > 0);
+
+
+       // DestroyMythMainWindow();
+   //     delete gContext;
+   //     gContext = NULL;
+   //     delete qApp;
+
+    }
+    DestroyMythMainWindow();
+
+    //gCoreContext->GetSetting("MasterServerIP");
+    //gCoreContext->GetSetting("BackendServerIP");
+
+
+
+    delete gContext;
+    gContext = NULL ;
+    //delete qApp;
+
+    return 0;
+}
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.cpp
new file mode 100755
index 0000000..43f360a
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.cpp
@@ -0,0 +1,623 @@
+#include <unistd.h>
+#include "misc_settings.h"
+#include "mv_common.h"
+//Added by qt3to4:
+#include <Q3TextStream>
+#include "mythuihelper.h"
+#include "mythsystemlegacy.h"
+
+extern  HostParms hostparm;
+
+static HostCheckBox *HostShowToolTips()
+{
+    HostCheckBox *gc = new HostCheckBox("HostShowToolTips");
+    gc->setLabel(QObject::tr("Show Shortcuts"));
+    gc->setValue(true);
+    gc->setHelpText(QObject::tr("Shows a window describing how to open a console and various other items."));
+    return gc;
+};
+
+static HostComboBox *Hostupdateplan()
+{
+    HostComboBox *gc = new HostComboBox("Hostupdateplan");
+    gc->setLabel(QObject::tr("Automatic Updates"));
+    gc->addSelection("None");
+    gc->addSelection("Myth_only");
+    gc->addSelection("All");
+    gc->setHelpText("None: Do not install updates automatically.\nMyth_only: Automatically installs updates for MythTV only.\nAll: Automatically installs all updates for LinHES.");
+    return gc;
+
+}
+// static HostLineEdit *HostZipcode()
+// {
+//     HostLineEdit *gc = new HostLineEdit("HostZipcode");
+//     gc->setLabel(QObject::tr("Zip Code"));
+//     gc->setHelpText(QObject::tr("The zipcode will be used to configure MythMovieTimes.  Leave it blank to use the existing value. People located outside the U.S.A should probably leave this blank"));
+//     //gc->setRW();
+//     //gc->setRO();
+//     return gc;
+// };
+
+//_______________Misc main frame
+MiscMainFrame::MiscMainFrame():
+    VerticalConfigurationGroup(false,false,false,false)
+
+{
+    setLabel(QObject::tr("Miscellaneous Settings"));
+    bool MVAPP;
+#ifdef __MVAPP__
+    MVAPP = true ;
+#else
+    MVAPP = false ;
+#endif
+    bool showLabels;
+    hostparm.ThisSystemType = gCoreContext->GetSetting("HostSystemType");
+    if  ( hostparm.ThisSystemType == "Standalone" || hostparm.ThisSystemType=="Master_backend")
+    {
+        showLabels = false;
+    }
+    else
+    {
+        showLabels = true;
+    }
+    TransLabelSetting *temptimezone = new TransLabelSetting();
+    temptimezone->setValue("Timezone:  " + hostparm.ThisTimeZone );
+//     TransLabelSetting *tempzipcode = new TransLabelSetting();
+//     tempzipcode->setValue("Zipcode: " + hostparm.ThisHostZipcode );
+//     GridConfigurationGroup* miscsettings_2 =
+//         new GridConfigurationGroup(1,true, true,false,false);
+//
+//     if (  showLabels  && ( hostparm.ThisHostZipcode != "" ))
+//         if (MVAPP)
+//             miscsettings_2->addChild(tempzipcode);
+//         else
+//             miscsettings_2->addChild(HostZipcode());
+//     else
+//         miscsettings_2->addChild(HostZipcode());
+
+    TimezoneRegion *timezoneregion = new TimezoneRegion();
+//    TimezoneButton *timezonebutton = new TimezoneButton();
+
+    VerticalConfigurationGroup* miscsettings =
+        new VerticalConfigurationGroup(false, true,false,false);
+//    miscsettings->addChild(timezonebutton);
+    if (  showLabels  && ( hostparm.ThisTimeZone != "" ))
+    {
+        if (MVAPP)
+        {
+            miscsettings->addChild(temptimezone);
+//            timezonebutton->disableButton();
+        }
+        else
+            miscsettings->addChild(timezoneregion);
+    }
+    else
+        miscsettings->addChild(timezoneregion);
+
+    miscsettings->addChild(HostShowToolTips());
+    miscsettings->addChild(Hostupdateplan());
+
+
+    //miscsettings->addChild(miscsettings_2);
+    addChild(miscsettings);
+
+
+
+
+
+
+//    connect(timezonebutton, SIGNAL(mf_launch_tzgui()),timezoneregion ,SLOT(timezone_gathersettings()));
+
+    connect(timezoneregion,SIGNAL(mf_show_tz(QString)),this,SLOT(mf_show_tz(QString)));
+    connect(this,SIGNAL(update_timezone(QString)),timezoneregion,SLOT(update_timezone_values(QString)));
+
+    autoLaunchTimer = new QTimer(this);
+//    connect(autoLaunchTimer, SIGNAL(timeout()), timezonebutton, SLOT(launch_tzgui()));
+    autoLaunchTimer->start(0);
+}
+
+QString MiscMainFrame::mf_show_tz(QString tz)
+{
+    QString GTimezone;
+    int rc;
+    bool showLabels;
+    if (autoLaunchTimer->isActive())
+    {
+        autoLaunchTimer->stop();
+
+        // This was triggered by the timer. Only launch the timezone gui if the timezone is unknown.
+        if ( hostparm.ThisTimeZone != "" )
+            return NULL;
+    }
+
+    if ( hostparm.ThisTimeZone == "" )
+        tz = "guess";
+
+    //launch tzgui and load output into Gtimezone
+    int m_screenheight = 0, m_screenwidth = 0;
+    float m_wmult = 0, m_hmult = 0;
+    QString m_height , m_width , cmd;
+    GetMythUI()->GetScreenSettings(m_screenwidth, m_wmult, m_screenheight, m_hmult);
+    m_height.setNum(m_screenheight);
+    m_width.setNum(m_screenwidth);
+    QString tzpath;
+    tzpath=MV_ROOT;
+    tzpath.append("bin/timezone.bin");
+    cmd=tzpath + " -z " + tz + " -h " + m_height + " -w " + m_width + " > /tmp/.selected_tz" ;
+    rc=myth_system(cmd);
+    if ( rc == 0 )
+    {
+        //read in value
+        QString line;
+        QFile file("/tmp/.selected_tz");
+        if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+        {
+            Q3TextStream t( &file );        // use a text stream
+            while ( !t.eof() )
+            {
+                line = t.readLine();
+                if ( line.contains("/"))
+                {
+                    GTimezone = line.simplifyWhiteSpace();
+                    break;
+                }
+            }
+            file.close();
+        }
+        timezone_unknown = FALSE;
+        emit update_timezone(GTimezone);
+    }
+
+    return GTimezone;
+}
+
+// //_______________Misc main frame
+// MiscMainFrame2::MiscMainFrame2():
+//     VerticalConfigurationGroup(false,false,false,false)
+// {
+//     VerticalConfigurationGroup* miscsettings =
+//         new VerticalConfigurationGroup(false, true,false,false);
+//
+//     GridConfigurationGroup* miscsettings_2 =
+//         new GridConfigurationGroup(1,false, false,false,false);
+//     miscsettings_2->addChild(HostShowToolTips());
+//     miscsettings_2->addChild(Hostupdateplan());
+//
+// //     NFSSettings *nfssettings = new NFSSettings();
+// //
+// //     miscsettings->addChild(nfssettings);
+//     miscsettings->addChild(miscsettings_2);
+//
+//     addChild(miscsettings);
+// }
+
+
+//_______________Misc time timezone
+/*
+TimezoneButton::TimezoneButton():
+    VerticalConfigurationGroup(false,false,false,false)
+{
+    TZButton = new TransButtonSetting;
+    TZButton->setLabel("Hitchhikers guide to timezones");
+    addChild(TZButton);
+    connect(TZButton, SIGNAL(pressed()),this,SLOT(launch_tzgui()));
+
+};
+
+void TimezoneButton::launch_tzgui()
+{
+    emit mf_launch_tzgui();
+}
+
+void TimezoneButton::disableButton()
+{
+    TZButton->setEnabled(false);
+}
+*/
+//This is used for the timezone
+QStringList findFilesRecursively ( QStringList paths, QString fileTypes ) {
+    if ( fileTypes.isEmpty() ) fileTypes = "*";
+    QStringList result, more;
+    QStringList::Iterator it;
+    for ( uint i = 0 ; i < paths.size() ; i++ )
+    {   // inefficient...whatever
+        QDir dir( paths[i] );
+        dir.setSorting( QDir::Reversed );
+        more = dir.entryList( fileTypes, QDir::Files );
+        for ( it = more.begin() ; it != more.end() ; ++it )
+            result.append( paths[i] + "/" + *it );
+        // reg exp in next line excludes . and .. dirs (and .* actually)
+        more = dir.entryList( QDir::Dirs ).grep( QRegExp( "[^.]" ) );
+        for ( it = more.begin() ; it != more.end() ; ++it )
+            *it = paths[i] + "/" + *it;
+        more = findFilesRecursively( more, fileTypes );
+        for ( it = more.begin() ; it != more.end() ; ++it )
+            result.append( *it );
+    }
+    return result; // yields absolute paths
+}
+
+void TimezoneRegion::timezoneregion_fillselection_zone()
+{
+    HostTimeZoneRegion->setLabel(QObject::tr("Time Zone"));
+    HostTimeZoneRegion->addSelection("US");
+    HostTimeZoneRegion->addSelection("Pacific");
+    HostTimeZoneRegion->addSelection("Mideast");
+    HostTimeZoneRegion->addSelection("Mexico");
+    HostTimeZoneRegion->addSelection("Indian");
+    HostTimeZoneRegion->addSelection("Europe");
+    HostTimeZoneRegion->addSelection("Etc");
+    HostTimeZoneRegion->addSelection("Chile");
+    HostTimeZoneRegion->addSelection("Canada");
+    HostTimeZoneRegion->addSelection("Brazil");
+    HostTimeZoneRegion->addSelection("Australia");
+    HostTimeZoneRegion->addSelection("Atlantic");
+    HostTimeZoneRegion->addSelection("Asia");
+    HostTimeZoneRegion->addSelection("Arctic");
+    HostTimeZoneRegion->addSelection("Antarctica");
+    HostTimeZoneRegion->addSelection("America");
+    HostTimeZoneRegion->addSelection("Africa");
+    //--single region
+    HostTimeZoneRegion->addSelection("Zulu");
+    HostTimeZoneRegion->addSelection("WET");
+    HostTimeZoneRegion->addSelection("W-SU");
+    HostTimeZoneRegion->addSelection("Universal");
+    HostTimeZoneRegion->addSelection("UTC");
+    HostTimeZoneRegion->addSelection("UCT");
+    HostTimeZoneRegion->addSelection("Turkey");
+    HostTimeZoneRegion->addSelection("Singapore");
+    HostTimeZoneRegion->addSelection("ROK");
+    HostTimeZoneRegion->addSelection("ROC");
+    HostTimeZoneRegion->addSelection("Portugal");
+    HostTimeZoneRegion->addSelection("Poland");
+    HostTimeZoneRegion->addSelection("PST8PDT");
+    HostTimeZoneRegion->addSelection("PRC");
+    HostTimeZoneRegion->addSelection("Navajo");
+    HostTimeZoneRegion->addSelection("NZ-CHAT");
+    HostTimeZoneRegion->addSelection("NZ");
+    HostTimeZoneRegion->addSelection("MST7MDT");
+    HostTimeZoneRegion->addSelection("MST");
+    HostTimeZoneRegion->addSelection("MET");
+    HostTimeZoneRegion->addSelection("Libya");
+    HostTimeZoneRegion->addSelection("Kwajalein");
+    HostTimeZoneRegion->addSelection("Japan");
+    HostTimeZoneRegion->addSelection("Jamaica");
+    HostTimeZoneRegion->addSelection("Israel");
+    HostTimeZoneRegion->addSelection("Iran");
+    HostTimeZoneRegion->addSelection("Iceland");
+    HostTimeZoneRegion->addSelection("Hongkong");
+    HostTimeZoneRegion->addSelection("HST");
+    HostTimeZoneRegion->addSelection("Greenwich");
+    HostTimeZoneRegion->addSelection("GMT0");
+    HostTimeZoneRegion->addSelection("GMT-0");
+    HostTimeZoneRegion->addSelection("GMT+0");
+    HostTimeZoneRegion->addSelection("GMT");
+    HostTimeZoneRegion->addSelection("GB-Eire");
+    HostTimeZoneRegion->addSelection("GB");
+    HostTimeZoneRegion->addSelection("Factory");
+    HostTimeZoneRegion->addSelection("Eire");
+    HostTimeZoneRegion->addSelection("Egypt");
+    HostTimeZoneRegion->addSelection("EST5EDT");
+    HostTimeZoneRegion->addSelection("EST");
+    HostTimeZoneRegion->addSelection("EET");
+    HostTimeZoneRegion->addSelection("Cuba");
+    HostTimeZoneRegion->addSelection("CST6CDT");
+    HostTimeZoneRegion->addSelection("CET");
+    HostTimeZoneRegion->setHelpText(QObject::tr("Time Zone Region"));
+}
+
+void TimezoneRegion::timezoneregion_fillselection(QString tzonefile )
+{
+    QString currentitem;
+    QString tzfile_with_path="/usr/share/zoneinfo/posix/";
+    bool foundtab;
+    int foundslashes;
+    QStringList timezonefile;
+    tzfile_with_path.append(tzonefile);
+    timezonefile.append(tzfile_with_path);
+    QStringList answer = findFilesRecursively( timezonefile, "*" );
+    QStringList onlyfiles ;
+    QStringList::Iterator it;
+    for ( it = answer.begin(); it != answer.end(); ++it )
+    {
+        currentitem = *it;
+
+        foundtab=currentitem.contains(".tab");
+        if ( ! foundtab  )
+        {
+            foundslashes=currentitem.count("/");
+            currentitem = currentitem.section( '/', 6, foundslashes );
+            if ( tzonefile == "US")
+                HostTimezoneRegion_US->addSelection(currentitem);
+            else if ( tzonefile == "Pacific")
+                HostTimezoneRegion_Pacific->addSelection(currentitem);
+            else if ( tzonefile == "Mideast")
+                HostTimezoneRegion_Mideast->addSelection(currentitem);
+            else if ( tzonefile == "Mexico")
+                HostTimezoneRegion_Mexico->addSelection(currentitem);
+            else if ( tzonefile == "Indian")
+                HostTimezoneRegion_Indian->addSelection(currentitem);
+            else if ( tzonefile == "Europe")
+                HostTimezoneRegion_Europe->addSelection(currentitem);
+            else if ( tzonefile == "Etc")
+                HostTimezoneRegion_Etc->addSelection(currentitem);
+            else if ( tzonefile == "Chile")
+                HostTimezoneRegion_Chile->addSelection(currentitem);
+            else if ( tzonefile == "Canada")
+                HostTimezoneRegion_Canada->addSelection(currentitem);
+            else if ( tzonefile == "Brazil")
+                HostTimezoneRegion_Brazil->addSelection(currentitem);
+            else if ( tzonefile == "Australia")
+                HostTimezoneRegion_Australia->addSelection(currentitem);
+            else if ( tzonefile == "Atlantic")
+                HostTimezoneRegion_Atlantic->addSelection(currentitem);
+            else if ( tzonefile == "Asia")
+                HostTimezoneRegion_Asia->addSelection(currentitem);
+            else if ( tzonefile == "Arctic")
+                HostTimezoneRegion_Arctic->addSelection(currentitem);
+            else if ( tzonefile == "Antarctica")
+                HostTimezoneRegion_Antarctica->addSelection(currentitem);
+            else if ( tzonefile == "America")
+                HostTimezoneRegion_America->addSelection(currentitem);
+            else if ( tzonefile == "Africa")
+                HostTimezoneRegion_Africa->addSelection(currentitem);
+        }
+    }
+};
+
+void TimezoneRegion::timezone_gathersettings()
+{
+    QString tz;
+    QString subregion;
+    QString region=HostTimeZoneRegion->getValue();
+    if ( region == "US")
+        subregion=HostTimezoneRegion_US->getValue();
+    else if ( region == "Pacific")
+        subregion=HostTimezoneRegion_Pacific->getValue();
+    else if ( region == "Mideast")
+        subregion=HostTimezoneRegion_Mideast->getValue();
+    else if ( region == "Mexico")
+        subregion=HostTimezoneRegion_Mexico->getValue();
+    else if ( region == "Indian")
+        subregion=HostTimezoneRegion_Indian->getValue();
+    else if ( region == "Europe")
+        subregion=HostTimezoneRegion_Europe->getValue();
+    else if ( region == "Etc")
+        subregion=HostTimezoneRegion_Etc->getValue();
+    else if ( region == "Chile")
+        subregion=HostTimezoneRegion_Chile->getValue();
+    else if ( region == "Canada")
+        subregion=HostTimezoneRegion_Canada->getValue();
+    else if ( region == "Brazil")
+        subregion=HostTimezoneRegion_Brazil->getValue();
+    else if ( region == "Australia")
+        subregion=HostTimezoneRegion_Australia->getValue();
+    else if ( region == "Atlantic")
+        subregion=HostTimezoneRegion_Atlantic->getValue();
+    else if ( region == "Asia")
+        subregion=HostTimezoneRegion_Asia->getValue();
+    else if ( region == "Arctic")
+        subregion=HostTimezoneRegion_Arctic->getValue();
+    else if ( region == "Antarctica")
+        subregion=HostTimezoneRegion_Antarctica->getValue();
+    else if ( region == "America")
+        subregion=HostTimezoneRegion_America->getValue();
+    else if ( region == "Africa")
+        subregion=HostTimezoneRegion_Africa->getValue();
+
+    tz=region+"/"+subregion;
+    emit mf_show_tz(tz);
+}
+
+TimezoneRegion::TimezoneRegion():
+    TriggeredConfigurationGroup(true,false,true,true,true,true,true,true)
+{
+    SetVertical(false);
+    HostTimeZoneRegion= new HostComboBox("HostTimeZoneRegion");
+    timezoneregion_fillselection_zone();
+    Setting* trigger = HostTimeZoneRegion;
+    addChild(trigger);
+    setTrigger(trigger);
+    //define all the new comboboxes
+    HostTimezoneRegion_US = new  HostComboBox("HostTimezoneRegion_US");
+    HostTimezoneRegion_Pacific = new HostComboBox("HostTimezoneRegion_Pacific");
+    HostTimezoneRegion_Mideast = new HostComboBox("HostTimezoneRegion_Mideast");
+    HostTimezoneRegion_Mexico = new  HostComboBox("HostTimezoneRegion_Mexico");
+    HostTimezoneRegion_Indian = new HostComboBox("HostTimezoneRegion_Indian");
+    HostTimezoneRegion_Europe = new HostComboBox("HostTimezoneRegion_Europe");
+    HostTimezoneRegion_Etc = new HostComboBox("HostTimezoneRegion_Etc");
+    HostTimezoneRegion_Chile = new HostComboBox("HostTimezoneRegion_Chile");
+    HostTimezoneRegion_Canada = new HostComboBox("HostTimezoneRegion_Canada");
+    HostTimezoneRegion_Brazil = new HostComboBox("HostTimezoneRegion_Brazil");
+    HostTimezoneRegion_Australia = new HostComboBox("HostTimezoneRegion_Australia");
+    HostTimezoneRegion_Atlantic = new HostComboBox("HostTimezoneRegion_Atlantic");
+    HostTimezoneRegion_Asia = new HostComboBox("HostTimezoneRegion_Asia");
+    HostTimezoneRegion_Arctic = new HostComboBox("HostTimezoneRegion_Arctic");
+    HostTimezoneRegion_Antarctica = new HostComboBox("HostTimezoneRegion_Antarctica");
+    HostTimezoneRegion_America = new HostComboBox("HostTimezoneRegion_America");
+    HostTimezoneRegion_Africa = new HostComboBox("HostTimezoneRegion_Africa");
+    //fill the new comboboxes
+    timezoneregion_fillselection("US");
+    timezoneregion_fillselection("Pacific");
+    timezoneregion_fillselection("Mideast");
+    timezoneregion_fillselection("Mexico");
+    timezoneregion_fillselection("Indian");
+    timezoneregion_fillselection("Europe");
+    timezoneregion_fillselection("Etc");
+    timezoneregion_fillselection("Chile");
+    timezoneregion_fillselection("Canada");
+    timezoneregion_fillselection("Brazil");
+    timezoneregion_fillselection("Australia");
+    timezoneregion_fillselection("Atlantic");
+    timezoneregion_fillselection("Asia");
+    timezoneregion_fillselection("Arctic");
+    timezoneregion_fillselection("Antarctica");
+    timezoneregion_fillselection("America");
+    timezoneregion_fillselection("Africa");
+
+    // Add subregions to regions
+    addTarget("US",  HostTimezoneRegion_US );
+    addTarget("Pacific",   HostTimezoneRegion_Pacific  );
+    addTarget("Mideast",    HostTimezoneRegion_Mideast  );
+    addTarget("Mexico", HostTimezoneRegion_Mexico  );
+    addTarget("Indian", HostTimezoneRegion_Indian   );
+    addTarget("Europe",  HostTimezoneRegion_Europe );
+    addTarget("Etc",  HostTimezoneRegion_Etc   );
+    addTarget("Chile",       HostTimezoneRegion_Chile );
+    addTarget("Canada",  HostTimezoneRegion_Canada );
+    addTarget("Brazil",  HostTimezoneRegion_Brazil  );
+    addTarget("Australia",  HostTimezoneRegion_Australia  );
+    addTarget("Atlantic",    HostTimezoneRegion_Atlantic  );
+    addTarget("Asia",   HostTimezoneRegion_Asia );
+    addTarget("Arctic",    HostTimezoneRegion_Arctic );
+    addTarget("Antarctica",     HostTimezoneRegion_Antarctica   );
+    addTarget("America", HostTimezoneRegion_America  );
+    addTarget("Africa",     HostTimezoneRegion_Africa );
+    //--single region
+    addTarget("Zulu", new VerticalConfigurationGroup(false, false));
+    addTarget("WET", new VerticalConfigurationGroup(false, false));
+    addTarget("W-SU", new VerticalConfigurationGroup(false, false));
+    addTarget("Universal", new VerticalConfigurationGroup(false, false));
+    addTarget("UTC", new VerticalConfigurationGroup(false, false));
+    addTarget("UCT", new VerticalConfigurationGroup(false, false));
+    addTarget("Turkey", new VerticalConfigurationGroup(false, false));
+    addTarget("Singapore", new VerticalConfigurationGroup(false, false));
+    addTarget("ROK", new VerticalConfigurationGroup(false, false));
+    addTarget("ROC", new VerticalConfigurationGroup(false, false));
+    addTarget("Portugal", new VerticalConfigurationGroup(false, false));
+    addTarget("Poland", new VerticalConfigurationGroup(false, false));
+    addTarget("PST8PDT", new VerticalConfigurationGroup(false, false));
+    addTarget("PRC", new VerticalConfigurationGroup(false, false));
+    addTarget("Navajo", new VerticalConfigurationGroup(false, false));
+    addTarget("NZ-CHAT", new VerticalConfigurationGroup(false, false));
+    addTarget("NZ", new VerticalConfigurationGroup(false, false));
+    addTarget("MST7MDT", new VerticalConfigurationGroup(false, false));
+    addTarget("MST", new VerticalConfigurationGroup(false, false));
+    addTarget("MET", new VerticalConfigurationGroup(false, false));
+    addTarget("Libya", new VerticalConfigurationGroup(false, false));
+    addTarget("Kwajalein", new VerticalConfigurationGroup(false, false));
+    addTarget("Japan", new VerticalConfigurationGroup(false, false));
+    addTarget("Jamaica", new VerticalConfigurationGroup(false, false));
+    addTarget("Israel", new VerticalConfigurationGroup(false, false));
+    addTarget("Iran", new VerticalConfigurationGroup(false, false));
+    addTarget("Iceland", new VerticalConfigurationGroup(false, false));
+    addTarget("Hongkong", new VerticalConfigurationGroup(false, false));
+    addTarget("HST", new VerticalConfigurationGroup(false, false));
+    addTarget("Greenwich", new VerticalConfigurationGroup(false, false));
+    addTarget("GMT0", new VerticalConfigurationGroup(false, false));
+    addTarget("GMT-0", new VerticalConfigurationGroup(false, false));
+    addTarget("GMT+0", new VerticalConfigurationGroup(false, false));
+    addTarget("GMT", new VerticalConfigurationGroup(false, false));
+    addTarget("GB-Eire", new VerticalConfigurationGroup(false, false));
+    addTarget("GB", new VerticalConfigurationGroup(false, false));
+    addTarget("Factory", new VerticalConfigurationGroup(false, false));
+    addTarget("Eire", new VerticalConfigurationGroup(false, false));
+    addTarget("Egypt", new VerticalConfigurationGroup(false, false));
+    addTarget("EST5EDT", new VerticalConfigurationGroup(false, false));
+    addTarget("EST", new VerticalConfigurationGroup(false, false));
+    addTarget("EET", new VerticalConfigurationGroup(false, false));
+    addTarget("Cuba", new VerticalConfigurationGroup(false, false));
+    addTarget("CST6CDT", new VerticalConfigurationGroup(false, false));
+    addTarget("CET", new VerticalConfigurationGroup(false, false));
+};
+
+void TimezoneRegion::update_timezone_values(QString Gtimezone)
+{
+    QString region;
+    QString subregion;
+    region=Gtimezone.section('/',0,0);
+    subregion=Gtimezone.section('/',1,1);
+    HostTimeZoneRegion->setValue(region);
+
+    if ( region == "US")
+        HostTimezoneRegion_US->setValue(subregion);
+    else if ( region == "Pacific")
+        HostTimezoneRegion_Pacific->setValue(subregion);
+    else if ( region == "Mideast")
+        HostTimezoneRegion_Mideast->setValue(subregion);
+    else if ( region == "Mexico")
+        HostTimezoneRegion_Mexico->setValue(subregion);
+    else if ( region == "Indian")
+        HostTimezoneRegion_Indian->setValue(subregion);
+    else if ( region == "Europe")
+        HostTimezoneRegion_Europe->setValue(subregion);
+    else if ( region == "Etc")
+        HostTimezoneRegion_Etc->setValue(subregion);
+    else if ( region == "Chile")
+        HostTimezoneRegion_Chile->setValue(subregion);
+    else if ( region == "Canada")
+        HostTimezoneRegion_Canada->setValue(subregion);
+    else if ( region == "Brazil")
+        HostTimezoneRegion_Brazil->setValue(subregion);
+    else if ( region == "Australia")
+        HostTimezoneRegion_Australia->setValue(subregion);
+    else if ( region == "Atlantic")
+        HostTimezoneRegion_Atlantic->setValue(subregion);
+    else if ( region == "Asia")
+        HostTimezoneRegion_Asia->setValue(subregion);
+    else if ( region == "Arctic")
+        HostTimezoneRegion_Arctic->setValue(subregion);
+    else if ( region == "Antarctica")
+        HostTimezoneRegion_Antarctica->setValue(subregion);
+    else if ( region == "America")
+        HostTimezoneRegion_America->setValue(subregion);
+    else if ( region == "Africa")
+        HostTimezoneRegion_Africa->setValue(subregion);
+}
+
+/*
+//________________Misc (NFS) Screen SETTINGS_________________________
+static HostComboBox *HostHaveCentralNFS()
+{
+    HostComboBox *gc = new HostComboBox("HostHaveCentralNFS");
+    gc->setLabel(QObject::tr("Central NFS server"));
+    gc->addSelection("no");
+    gc->addSelection("yes") ;
+    gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the masterbackend.  Say no if you are confused."));
+
+    return gc;
+}
+
+static  HostComboBox *HostCentralNFSIP()
+{
+    HostComboBox *gc = new HostComboBox("HostCentralNFSIP",true);
+    gc->setLabel(QObject::tr("NFS server and sharename "));
+    gc->setHelpText(QObject::tr("Format should be  IP:/SHARENAME, for example  192.168.1.6:/media.  file:nfsmap  will load shares from the nfsmap file"));
+    gc->addSelection("file:nfsmap") ;
+    gc->addSelection("") ;
+    return gc;
+};
+
+static HostComboBox *HostNFSmountpoint()
+{
+#ifdef __MVAPP__
+    HostComboBox *gc = new HostComboBox("HostNFSmountpoint");
+    gc->addSelection("/data/media");
+#else
+    HostComboBox *gc = new HostComboBox("HostNFSmountpoint",true);
+    gc->addSelection("/myth");
+#endif
+    gc->setLabel(QObject::tr("Local mount point of NFS share"));
+    gc->addSelection("/mnt") ;
+    gc->setHelpText(QObject::tr(""));
+    return gc;
+}
+
+
+NFSSettings::NFSSettings():
+    TriggeredConfigurationGroup(false,false,false,true,true,false,false,true)
+{
+    setLabel(QObject::tr("Misc Settings"));
+
+    Setting* havenfs = HostHaveCentralNFS();
+    addChild(havenfs);
+    setTrigger(havenfs);
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup();
+    settings->addChild(HostCentralNFSIP());
+    settings->addChild(HostNFSmountpoint());
+
+    addTarget("no", new VerticalConfigurationGroup());
+    addTarget("yes", settings);
+};
+*/
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.h b/abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.h
new file mode 100755
index 0000000..325fc0e
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/misc_settings.h
@@ -0,0 +1,97 @@
+#include <mythcontext.h>
+#include <unistd.h>
+#include <iostream>
+#include <fstream>
+#include <stdio.h>
+#include "settings.h"
+#include "installsettings.h"
+#include <qsqldatabase.h>
+#include <qsqlquery.h>
+
+#include <stdlib.h>
+#include <cstdlib>
+#include <mythtv/mythdbcon.h>
+#include <qdir.h>
+#include <qapplication.h>
+#include "mythmiscutil.h"
+
+
+class MiscMainFrame: public VerticalConfigurationGroup {
+    Q_OBJECT
+public:
+    MiscMainFrame();
+    QTimer *autoLaunchTimer;
+
+public slots:
+    QString mf_show_tz(QString);
+
+signals:
+    void update_timezone(QString);
+};
+
+class MiscMainFrame2: public VerticalConfigurationGroup {
+    Q_OBJECT
+public:
+    MiscMainFrame2();
+};
+
+/*
+class TimezoneButton: public VerticalConfigurationGroup {
+    Q_OBJECT
+public:
+    TimezoneButton();
+    TransButtonSetting   *TZButton;
+    void disableButton();
+public slots:
+    void launch_tzgui();
+signals:
+    QString mf_launch_tzgui();
+
+};
+*/
+class TimezoneRegion: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    TimezoneRegion();
+    HostComboBox *HostTimeZoneRegion;
+    HostComboBox *HostTimezoneRegion_US;
+    HostComboBox *HostTimezoneRegion_Pacific;
+    HostComboBox *HostTimezoneRegion_Mideast;
+    HostComboBox *HostTimezoneRegion_Mexico;
+    HostComboBox *HostTimezoneRegion_Indian;
+    HostComboBox *HostTimezoneRegion_Europe;
+    HostComboBox *HostTimezoneRegion_Etc;
+    HostComboBox *HostTimezoneRegion_Chile;
+    HostComboBox *HostTimezoneRegion_Canada;
+    HostComboBox *HostTimezoneRegion_Brazil;
+    HostComboBox *HostTimezoneRegion_Australia;
+    HostComboBox *HostTimezoneRegion_Atlantic;
+    HostComboBox *HostTimezoneRegion_Asia;
+    HostComboBox *HostTimezoneRegion_Arctic;
+    HostComboBox *HostTimezoneRegion_Antarctica;
+    HostComboBox *HostTimezoneRegion_America;
+    HostComboBox *HostTimezoneRegion_Africa;
+    void timezoneregion_fillselection(QString);
+    void timezoneregion_fillselection_zone();
+
+
+public slots:
+    void update_timezone_values(QString);
+    void timezone_gathersettings();
+signals:
+    void mf_show_tz(QString);
+};
+
+/*
+class NFSSettings: public
+        TriggeredConfigurationGroup {
+public:
+    NFSSettings();
+
+};*/
+
+
+
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mv_common.h b/abs/core/mythinstall/MythVantage-app/mythinstall/mv_common.h
new file mode 100755
index 0000000..720655c
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mv_common.h
@@ -0,0 +1,5 @@
+//#define __MVAPP__ LinHES
+#define RELEASEFILE "LinHES-release"
+
+extern int timezone_unknown;
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro b/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro
new file mode 100755
index 0000000..225d755
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/mythinstall.pro
@@ -0,0 +1,55 @@
+#This is the path to the mythtv src
+
+
+
+PREFIX = /usr/include/mythtv
+LIBVERSION = 0.27
+VERSION = 0.27.0
+
+
+
+
+INCLUDEPATH += $$PREFIX/libmythui  $$PREFIX $$PREFIX/libmyth
+
+LIBS += -L /usr/local/lib
+
+
+
+LIBS += -lmythtv-$$LIBVERSION
+#LIBS += -lmythdb-$$LIBVERSION
+LIBS += -lmythui-$$LIBVERSION
+LIBS += -lmyth-$$LIBVERSION
+LIBS+=  -lmythbase-$$LIBVERSION
+
+
+
+mingw {
+    LIBS += -lpthread
+    CONFIG += console
+}
+
+TEMPLATE = app
+CONFIG += thread
+TARGET = mythinstall
+target.path = $${PREFIX}/bin
+
+INSTALLS = target
+
+uifiles.path = $${PREFIX}/share/mythtv/themes/default
+uifiles.files = install-ui.xml images/*.png
+
+INSTALLS += uifiles
+
+QMAKE_CLEAN += $(TARGET)
+
+# Input
+//HEADERS += commandlineparser.h
+//SOURCES += main.cpp commandlineparser.cpp
+
+HEADERS += installdialog.h commandlineparser.h installsettings.h settemplate.h installationtype.h autocard.h xorgsettings.h password_manage.h misc_settings.h mv_common.h infrared.h compat-mv.h supplemental.h vnc.h fileshare.h
+SOURCES += main.cpp commandlineparser.cpp installdialog.cpp installsettings.cpp settemplate.cpp installationtype.cpp autocard.cpp xorgsettings.cpp password_manage.cpp misc_settings.cpp infrared.cpp compat-mv.cpp supplemental.cpp vnc.cpp fileshare.cpp
+
+
+#The following line was inserted by qt3to4
+QT +=  qt3support sql xml network
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp
new file mode 100755
index 0000000..4acfb9d
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp
@@ -0,0 +1,436 @@
+#include <unistd.h>
+#include "password_manage.h"
+//Added by qt3to4:
+#include <Q3TextStream>
+
+#include <qapplication.h>
+#include "mythmiscutil.h"
+#include "mythsystemlegacy.h"
+
+#include <qdir.h>
+#include <iostream>
+
+/****************************************************************************/
+typedef enum {
+    UseraddPopup_OK = 0,
+    UseraddPopup_CANCEL,
+    UseraddPopup_DELETE
+}
+UseraddPopupResult;
+bool passtoggle = TRUE;
+QString invalid_chars = "&<>/~`;:!";
+
+class AddUserPopup
+{
+public:
+    static UseraddPopupResult showPopup(MythMainWindow *parent, QString title,
+                                        QString message, QString& text);
+};
+
+UseraddPopupResult AddUserPopup::showPopup(MythMainWindow *parent,
+        QString title, QString message, QString& text)
+{
+    MythPopupBox *popup = new MythPopupBox(parent, title);
+    popup->addLabel(message);
+
+    MythLineEdit *textEdit = new MythLineEdit(popup, "chooseEdit");
+    textEdit->setText(text);
+    popup->addWidget(textEdit);
+
+    popup->addButton(QObject::tr("OK"),     popup, SLOT(accept()));
+    popup->addButton(QObject::tr("Cancel"), popup, SLOT(reject()));
+
+    textEdit->setFocus();
+
+    bool ok = (MythDialog::Accepted == popup->ExecPopup());
+    if (ok)
+        text = textEdit->text();
+    popup->hide();
+    popup->deleteLater();
+    return (ok) ? UseraddPopup_OK : UseraddPopup_CANCEL;
+}
+
+/****************************************************************************/
+
+
+void UserManagement::user_fillselection()
+{
+    //only add users with UID above 1000
+    QString line;
+    QString user;
+    QString quid;
+    int uid;
+    QFile file("/etc/passwd");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            user = line.section(":",0,0);
+            quid = line.section(":",2,2);
+            uid=quid.toInt();
+            if ( uid >= 1000 )
+                userlist->addSelection(user);
+        }
+        file.close();
+    }
+
+}
+
+bool UserManagement::user_exisit_check(QString name)
+{
+    QString line;
+    QString user;
+    QString quid;
+    bool founduser;
+    founduser=false;
+    int uid;
+    QFile file("/etc/passwd");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            user = line.section(":",0,0);
+            quid = line.section(":",2,2);
+            uid=quid.toInt();
+            if ( user == name )
+            {
+                founduser=true;
+                break;
+            }
+        }
+        file.close();
+    }
+
+    return founduser;
+
+}
+
+bool UserManagement::user_valid_check(QString check_string)
+{
+    QChar current_char;
+    int upperlimit;
+    bool found_char;
+    int i ;
+    upperlimit = invalid_chars.length() -1 ;
+    for(i= 0; i <= upperlimit; i++)
+    {
+        found_char = FALSE;
+        current_char = invalid_chars.at(i);
+        found_char = check_string.contains(current_char,FALSE);
+        if (  found_char   )
+            return FALSE;
+    }
+    return TRUE ;
+
+}
+
+UserManagement::UserManagement():
+    VerticalConfigurationGroup(false,false,false,false)
+{
+    setLabel(QObject::tr("User Accounts"));
+    userlist = new TransComboBoxSetting(false);
+    userlist->setLabel(QObject::tr("User"));
+    userlist->addSelection("root");
+    userlist->addSelection("mythtv");
+    user_fillselection();
+    userlist->setHelpText(QObject::tr("Select the user to change the user password or delete the user account."));
+
+    userpass1= new TransLineEditSetting(true);
+    userpass1->setLabel("Password");
+    userpass1->SetPasswordEcho(passtoggle);
+    userpass1->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars));
+
+
+    passToggleButton = new TransButtonSetting;
+    passToggleButton->setLabel("Toggle Password View");
+    passToggleButton->setHelpText(QObject::tr("Hide or show the password."));
+
+    info = new TransLabelSetting;
+    info->setValue("");
+
+    userapplyButton = new TransButtonSetting;
+    userapplyButton->setLabel("Apply New Password");
+
+    usercreateButton = new TransButtonSetting;
+    usercreateButton->setLabel("Create New User Account");
+    usercreateButton->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars));
+
+    userdeleteButton = new TransButtonSetting;
+    userdeleteButton->setLabel("Delete User Account");
+    ConfigurationGroup *buttonlist = new GridConfigurationGroup(2,false,false);
+    buttonlist-> addChild(passToggleButton);
+    buttonlist-> addChild(userapplyButton);
+    buttonlist-> addChild(usercreateButton);
+    buttonlist-> addChild(userdeleteButton);
+
+//    ConfigurationGroup *buttonlist2 = new GridConfigurationGroup(2,false);
+//    buttonlist2-> addChild(passToggleButton);
+//    buttonlist2-> addChild(userapplyButton);
+
+    rootSSH  = new HostCheckBox("HOSTrootSSH");
+    rootSSH->setLabel("Enable remote access for the root user account");
+    rootSSH->setHelpText(QObject::tr("If checked, ssh for the root account will be enabled. If you are unsure leave this unchecked."));
+    rootSSH->setValue(false);
+
+    addChild(userlist);
+    addChild(userpass1);
+    addChild(rootSSH);
+//    addChild(buttonlist2);
+    addChild(buttonlist);
+    addChild(info);
+
+    connect(userapplyButton, SIGNAL(pressed()), this,   SLOT(applychanges()));
+    connect(userlist, SIGNAL(valueChanged(const QString&)), this,   SLOT(userchanged()));
+    connect(usercreateButton, SIGNAL(pressed()), this,   SLOT(usercreatepopup()));
+    connect(userdeleteButton, SIGNAL(pressed()), this, SLOT(userdeletepopup()));
+    connect(passToggleButton, SIGNAL(pressed()), this, SLOT(togglepass()));
+};
+
+void UserManagement::togglepass()
+{
+    if ( passtoggle)
+        passtoggle = false;
+    else
+        passtoggle = true;
+
+    userpass1->SetPasswordEcho(passtoggle);
+}
+
+void UserManagement::applychanges()
+{
+    QString user;
+    QString password;
+    QString user_e;
+
+    user=userlist->getValue();
+    password=userpass1->getValue();
+
+    user_e = QRegExp::escape( user );
+    password = QRegExp::escape( password );
+    if ( ! user_valid_check (password))
+    {
+        info->setValue("ERROR: The password contains invalid characters!");
+        return;
+    }
+    info->setValue("The password has been changed for user " + user + ".");
+    QString cmdtxt;
+    cmdtxt="sudo ";
+    cmdtxt.append("myth_user_call -c pass  -u " + user_e + " -p " + password );
+    myth_system(cmdtxt);
+}
+
+void UserManagement::userchanged()
+{
+    info->setValue(" ");
+    userpass1->setValue("");
+}
+
+void UserManagement::usercreatepopup()
+{
+    QString name;
+    QString name_e;
+    int key = 0;
+    UseraddPopupResult result = AddUserPopup::showPopup(
+                                    GetMythMainWindow(),
+                                    tr(""),
+                                    tr("Enter New User Name"), name);
+    if (result == UseraddPopup_CANCEL)
+        return;
+    //check if name exisit || add it
+    if ( user_exisit_check(name) )
+    {
+        info->setValue("User name " + name + " already exists. Cannot create user.");
+        userlist->setFocus();
+        key = Qt::Key_Down;
+        QApplication::postEvent(GetMythMainWindow(),
+                                new ExternalKeycodeEvent(key));
+
+        return;
+    }
+
+    if ( ! user_valid_check (name))
+    {
+        info->setValue("ERROR: The user name contains invalid characters!");
+        return;
+    }
+    userlist->addSelection(name);
+    userlist->setValue(name);
+    //run program to add user right here
+    QString cmdtxt;
+    name_e = QRegExp::escape( name );
+
+    cmdtxt="sudo ";
+    cmdtxt.append("myth_user_call -c add -u " + name_e );
+    myth_system(cmdtxt);
+
+    info->setValue("Enter a password for " + name + " and press Apply New Password.");
+    //Set focus to userlist, then press down three times to set focus to the password box.
+    userlist->setFocus();
+
+    key = Qt::Key_Down;
+    QApplication::postEvent(GetMythMainWindow(),
+                            new ExternalKeycodeEvent(key));
+    key = Qt::Key_Down;
+    QApplication::postEvent(GetMythMainWindow(),
+                            new ExternalKeycodeEvent(key));
+    key = Qt::Key_Down;
+    QApplication::postEvent(GetMythMainWindow(),
+                            new ExternalKeycodeEvent(key));
+
+}
+
+void UserManagement::userdeletepopup()
+{
+    QString user;
+    QString user_e;
+    user=userlist->getValue();
+    QString message = "Remove " + user + "?" ;
+
+    DialogCode value = MythPopupBox::Show2ButtonPopup(
+                           GetMythMainWindow(), "", message,
+                           tr("Remove User"),
+                           tr("Do NOT Remove User"),
+                           kDialogCodeButton1);
+
+    if (kDialogCodeButton0 == value)
+    {
+        info->setValue("Removed user: " + user);
+        if ( user == "root" || user == "mythtv" )
+        {
+            info->setValue("Cannot remove user: " + user);
+            return;
+        }
+        userlist->setValue("root");
+        userlist->removeSelection(user);
+        //run program to remove user
+        QString cmdtxt;
+        user_e = QRegExp::escape( user );
+        cmdtxt="sudo ";
+        cmdtxt.append("myth_user_call -c delete -u " + user_e );
+        myth_system(cmdtxt);
+        info->setValue("Removed user: " + user);
+    }
+    else
+        info->setValue("Did not remove user: " + user);
+}
+
+WebPassword::WebPassword():
+    TriggeredConfigurationGroup(false,false,true,true,true,true,true,true)
+{
+    setLabel(QObject::tr("Web Security Settings"));
+    webAuth  = new HostCheckBox("HOSTwebauth");
+    webAuth->setLabel("Enable Password");
+    webAuth->setHelpText(QObject::tr("Use password protection for the local website."));
+    webAuth->setValue(false);
+    webuser = new HostLineEdit("Hostwebuser");
+    webuser->setLabel("Username");
+    webuser->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars));
+
+    webpassword = new HostLineEdit("Hostwebpassword");
+    webpassword->setLabel("Password");
+    webpassword->SetPasswordEcho(passtoggle);
+    webpassword->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars));
+
+    webpassToggleButton = new TransButtonSetting;
+    webpassToggleButton->setLabel("Toggle Password View");
+    webpassToggleButton->setHelpText(QObject::tr("Hide or show the password."));
+
+    webapplyButton = new TransButtonSetting;
+    webapplyButton->setLabel("Apply New Password");
+
+    info = new TransLabelSetting;
+    info->setValue("");
+
+    connect(webpassToggleButton, SIGNAL(pressed()), this, SLOT(togglepass()));
+    connect(webapplyButton, SIGNAL(pressed()),this , SLOT(webpassword_gathersettings()));
+
+    ConfigurationGroup* webpassgroup = new VerticalConfigurationGroup(false);
+    webpassgroup->addChild(webuser);
+    webpassgroup->addChild(webpassword);
+    webpassgroup->addChild(info);
+    webpassgroup->addChild(webpassToggleButton);
+    webpassgroup->addChild(webapplyButton);
+
+    addChild(webAuth);
+    setTrigger(webAuth);
+
+    addTarget("0", new VerticalConfigurationGroup(false, false));
+    addTarget("1", webpassgroup);
+
+}
+
+
+void WebPassword::togglepass()
+{
+    if ( passtoggle)
+        passtoggle = false;
+    else
+        passtoggle = true;
+    webpassword->SetPasswordEcho(passtoggle);
+}
+
+bool WebPassword::valid_check(QString check_string)
+{
+    // QString invalid_chars;
+    QChar current_char;
+    int upperlimit;
+    bool found_char;
+    int i ;
+    //invalid_chars = "&<>/~`;";
+    upperlimit = invalid_chars.length() -1 ;
+    for(i= 0; i <= upperlimit; i++)
+    {
+        found_char = FALSE;
+        current_char = invalid_chars.at(i);
+        found_char = check_string.contains(current_char,FALSE);
+        if (  found_char    )
+            return FALSE;
+    }
+    return TRUE ;
+
+}
+
+void WebPassword::webpassword_gathersettings()
+{
+
+    QString pass_enabled;
+    QString web_user;
+    QString web_pass;
+    QString webuser_e;
+    QString webpass_e;
+    pass_enabled=webAuth->getValue();
+    web_user=webuser->getValue();
+    web_pass=webpassword->getValue();
+    webuser_e = QRegExp::escape( web_user );
+    webpass_e = QRegExp::escape( web_pass );
+    if ( ! valid_check (webuser_e))
+    {
+        info->setValue("ERROR: The user name contains invalid characters!");
+        return;
+    }
+
+    if ( ! valid_check (webpass_e))
+    {
+        info->setValue("ERROR: The password contains invalid characters!");
+        return;
+    }
+    cout << "Running program to make the changes for web password" << endl;
+    QString cmdtxt;
+
+    cmdtxt="sudo ";
+    cmdtxt.append("myth_user_call -c web -u " + webuser_e + " -p " + webpass_e );
+    myth_system(cmdtxt);
+    info->setValue("The user name and password have been added.");
+
+}
+
+WebPasswordFrame::WebPasswordFrame():
+    VerticalConfigurationGroup()
+{
+    WebPassword *webpassword = new WebPassword();
+    addChild(webpassword);
+}
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.h b/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.h
new file mode 100755
index 0000000..3b4b471
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.h
@@ -0,0 +1,60 @@
+#include <settings.h>
+#include "mythdialogs.h"
+#include "libmyth/mythdialogs.h"
+#include "libmyth/mythwidgets.h"
+#include "installsettings.h"
+
+
+class UserManagement: public VerticalConfigurationGroup {
+    Q_OBJECT
+public:
+    UserManagement();
+    TransComboBoxSetting *userlist;
+    TransLineEditSetting *userpass1;
+    TransButtonSetting   *userapplyButton;
+    TransButtonSetting   *usercreateButton;
+    TransButtonSetting   *userdeleteButton;
+    TransButtonSetting   *passToggleButton;
+    TransLabelSetting    *info;
+    TransCheckBoxSetting *lockaccount;
+    HostCheckBox    *rootSSH;
+    void user_fillselection(void);
+    bool user_exisit_check(QString);
+    bool user_valid_check(QString);
+
+public slots:
+    void applychanges();
+    void userchanged();
+    void usercreatepopup();
+    void userdeletepopup();
+    void togglepass();
+};
+
+
+
+class WebPassword: public
+        TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    WebPassword();
+    HostLineEdit    *webuser;
+    HostLineEdit    *webpassword;
+    HostCheckBox    *webAuth;
+    TransButtonSetting   *webpassToggleButton;
+    TransLabelSetting    *info;
+    bool valid_check(QString);
+    TransButtonSetting   *webapplyButton;
+
+public slots:
+    void webpassword_gathersettings();
+    void togglepass();
+};
+
+class WebPasswordFrame: public
+        VerticalConfigurationGroup {
+    Q_OBJECT
+public:
+    WebPasswordFrame();
+    TransButtonSetting   *webapplyButton;
+
+};
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.cpp
new file mode 100755
index 0000000..f7f9963
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.cpp
@@ -0,0 +1,409 @@
+#include <mythcontext.h>
+#include "installsettings.h"
+#include "settemplate.h"
+#include <stdlib.h>
+
+
+void create_temp_table (QString create_table_name,QString like_name)
+{
+    MSqlQuery query(MSqlQuery::InitCon());
+    query.prepare("create table " +  create_table_name + " like  " +   like_name + ";" );
+    query.exec();
+    if ( like_name == "settings")
+    {
+        query.prepare("Alter table  " + create_table_name +  " add unique ( value ) ; " );
+        query.exec();
+    }
+    query.prepare(" truncate " + create_table_name + ";" );
+    query.exec();
+};
+
+void drop_temp_table (QString tname)
+{
+    MSqlQuery query(MSqlQuery::InitCon());
+    query.prepare("drop table " +  tname + ";" );
+    query.exec();
+}
+
+void restart_frontend ()
+{
+
+    QString cmdtxt;
+    cmdtxt=MV_ROOT  ;
+    cmdtxt.append("bin/systemconfig.sh  reloadfe" );
+    //cout << "Calling systemconfig.sh reloadfe" << endl;
+    system(cmdtxt);
+    //system("/root/systemconfig.sh  reloadfe" );
+}
+
+void choosetemplate (QString templateop, QString templatename  , QString templatehostname = "")
+{
+    if ( templateop == ""  )
+    {
+        MythCtemplate setting;
+//         setting.load();
+//         setting.save();
+        setting.exec();
+    };
+
+    QString thistemplate;
+    QString thisoperation;
+    QString thishost;
+    //QString runcommand = "/root/restore_default_settings.sh";
+    QString runcommand = "echo ";
+    // //cout <<  templateop << endl;
+    // //cout << templatename << endl;
+    // //cout << templatehostname << endl;
+
+    if (templateop == "")
+        thisoperation = gCoreContext->GetSetting("HOSTtemplatetype");
+    else
+        thisoperation = templateop;
+
+    thistemplate = "none";
+
+
+    if ( thisoperation == "save" )
+    {
+        if (templatename == "" )
+            thistemplate = gCoreContext->GetSetting("HostTemplateSave");
+        else
+            thistemplate = templatename;
+
+        savesettings(thistemplate);
+    }
+    else if ( thisoperation == "restore" )
+    {
+        if (templatename == "" )
+            thistemplate = gCoreContext->GetSetting("HostTemplateRestore");
+        else
+            thistemplate = templatename;
+
+        if ( thistemplate == "default_1")
+            c_from("default_1" , thistemplate);
+        else if ( thistemplate == "default_2")
+            c_from("default_2" ,thistemplate);
+        else
+            restoresettings(thistemplate);
+
+    }
+    else if ( thisoperation == "copy_from" )
+    {
+        if (templatename == "" )
+        {
+            thishost = gCoreContext->GetSetting("HostSelectcopy_from");
+            thistemplate = gCoreContext->GetSetting("HostTemplateRestore");
+        }
+        else
+        {
+            thishost=templatehostname;
+            thistemplate=templatename;
+        };
+
+        c_from(thishost,thistemplate);
+    }
+
+
+//	if ( thistemplate != "none" )
+//	{
+// 	    std:://cout <<  runcommand << endl;
+    //   system(runcommand);
+    //}
+};
+
+
+void savesettings (QString templatenumber )
+{
+    //cout << "SAVING....." <<   templatenumber  << endl;
+    QString templatename = "settings_" + templatenumber ;
+    // Remove old saved values
+    MSqlQuery query(MSqlQuery::InitCon());
+    query.prepare( "delete from "  + templatename +  " where hostname=:HOSTNAME   ;"  );
+    query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+    query.exec();
+    //insert all new settings
+    query.prepare( "replace into "  + templatename +  " (select * from settings where hostname=:HOSTNAME  ) ;"  ) ;
+    query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+    query.exec();
+
+    // repeat for keybindings
+    templatename = "keybindings_" + templatenumber ;
+    query.prepare( "delete from "  + templatename +  " where hostname=:HOSTNAME   ;"  );
+    query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+    query.exec();
+
+    query.prepare( "replace into "  + templatename +  " (select * from keybindings  where hostname=:HOSTNAME  ) ;"  );
+    query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+    query.exec();
+
+}
+
+void restoresettings (QString templatenumber )
+{
+//cout << "RESTORING....." << templatenumber << endl;
+// DEFAULT settings are handled by the copy from routine
+    MSqlQuery query(MSqlQuery::InitCon());
+    QStringList tablelist ;
+    QStringList::Iterator it;
+    QString current_table;
+    tablelist.append ("settings");
+    tablelist.append ("keybindings");
+    QString templatename;
+
+    for ( it = tablelist.begin(); it != tablelist.end(); ++it )
+    {
+        current_table = *it ;
+        //find template table to use
+        QString templatename =  current_table + "_" + templatenumber ;
+        QString temptable="temp_table_" + current_table + "_" +   gCoreContext->GetHostName() ;
+        // create temp table for merging settings,  The merge is needed to ac//coutn for any new settings.
+        create_temp_table(temptable, current_table );
+
+        // copy in current settings
+        query.prepare( "replace into  " + temptable + "  (select * from  " + current_table + "  where hostname=:HOSTNAME ) ; "  );
+        query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        query.exec();
+
+        // need to remove all non HOST settigns
+
+        // copy in stored settings
+        query.prepare( "replace into  " + temptable + "  (select * from  " + templatename + "  where hostname=:HOSTNAME ) ; "  );
+        query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        query.exec();
+
+        // remove current settings.  Need to remove because the old table allows for duplicates and replace into doesn' seem to "replace"
+        query.prepare( "delete from " + current_table + "  where hostname=:HOSTNAME ;"  );
+        query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        query.exec();
+
+
+        // copy new settings from temp to current
+        query.prepare( "replace into " + current_table  + "   (select * from  " + temptable + "  );"  );
+        query.exec();
+
+        // drop temptable
+        drop_temp_table(temptable);
+
+    }
+    restart_frontend();
+};
+
+void c_from(QString copyhost, QString templatenumber)
+{
+    //cout << "Copying....." + copyhost + " " + "templatenumber"   << endl;
+    MSqlQuery query(MSqlQuery::InitCon());
+    //Create temp table, copy in settings from host_template, update hostname for new host,copy temp_table to settings.
+    QStringList tablelist ;
+    QStringList::Iterator it;
+    QString current_table ;
+    tablelist.append ("settings");
+    tablelist.append ("keybindings");
+    QString templatename;
+    QString temptable;
+    for ( it = tablelist.begin(); it != tablelist.end(); ++it )
+    {
+        current_table = *it ;
+        //cout << current_table << endl;
+        //find template table to use
+        if  ( templatenumber == "Current" )
+            templatename =  current_table  ;
+        else
+            templatename =  current_table + "_" + templatenumber ;
+
+        temptable="temp_table_" + current_table + "_" +   gCoreContext->GetHostName() ;
+        // create temp table for merging settings
+
+        create_temp_table(temptable, current_table );
+        //cout << temptable + "  "         + current_table << endl;
+
+        //  copy current settings from  this host  into temptable minus all Mythvantage settings
+        if ( current_table == "settings")
+        {
+            query.prepare( "replace into  " + temptable + "    (select * from  " + current_table + "  where hostname=:HOSTNAME and value not like 'HOST%'  ) ; "  );
+            query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        }
+        else
+            query.prepare( "replace into  " + temptable + "    (select * from  " + current_table + " where hostname=:HOSTNAME ) ; "  );
+        query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        query.exec();
+
+        // update hostname to match whatever the hostname of the template is
+        query.prepare ("update " + temptable + "  set hostname=:HOSTNAME ; " );
+        query.bindValue( ":HOSTNAME" ,  copyhost  );
+        query.exec();
+
+        // copy current settings from copy host  into temptable minus all Mythvantage settings
+        if ( current_table == "settings")
+            query.prepare( "replace into  " + temptable + "    (select * from  " + templatename  + "  where hostname=:HOSTNAME and value not like 'HOST%'  ) ; "  );
+
+        else
+            query.prepare( "replace into  " + temptable + "    (select * from  " + templatename  + "  where hostname=:HOSTNAME  ) ; "  );
+
+        query.bindValue( ":HOSTNAME" ,  copyhost  );
+        query.exec();
+
+        //update hostname
+        query.prepare ("update " + temptable + "  set hostname=:HOSTNAME ; " );
+        query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        query.exec();
+
+        // delete old settings from settings table
+        if ( current_table == "settings")
+        {
+            query.prepare( "delete from " + current_table + "   where hostname=:HOSTNAME and value not like 'HOST%' ;"  );
+            query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        }
+        else
+        {
+            query.prepare( "delete from " + current_table + "   where hostname=:HOSTNAME ;"  );
+            query.bindValue( ":HOSTNAME" ,   gCoreContext->GetHostName()  );
+        }
+        query.exec();
+
+        // copy settings from temptable to settings
+        if ( current_table == "settings")
+            query.prepare( "replace into " + current_table + "   (select * from  " + temptable + " where value not like 'HOST% ' ) ;"  );
+        else
+            query.prepare( "replace into " + current_table + "   (select * from  " + temptable + " );"  );
+
+
+        query.exec();
+
+        //  drop temptable
+        // drop_temp_table(temptable);
+
+
+        restart_frontend();
+    };
+
+
+};
+
+
+
+
+static HostComboBox *HOSTtemplatetype()
+{
+    HostComboBox *gc = new HostComboBox("HOSTtemplatetype");
+    gc->setLabel(QObject::tr("Template options"));
+    gc->addSelection("Do Nothing") ;
+    gc->addSelection("restore");
+    gc->addSelection("save") ;
+    gc->addSelection("copy_from");
+
+    gc->setHelpText(QObject::tr("Select the name to save, this will make a copy of your keybindings and videoplayback.  Choose none if you do not wish to change anything."));
+
+    return gc;
+}
+
+static HostComboBox *HostTemplateSave()
+{
+    HostComboBox *gc = new HostComboBox("HostTemplateSave");
+    gc->setLabel(QObject::tr("Save Template"));
+//   gc->addSelection("none");
+    gc->addSelection("user1") ;
+    gc->addSelection("user2") ;
+    gc->addSelection("user3") ;
+    gc->setHelpText(QObject::tr("Select the name to save, this will make a copy of your keybindings and videoplayback.  Choose none if you do not wish to change anything."));
+
+    return gc;
+}
+static HostComboBox *HostTemplateCopy_restore()
+{
+    HostComboBox *gc = new HostComboBox("HostTemplateRestore");
+    gc->setLabel(QObject::tr("Template"));
+    //  gc->addSelection("none");
+    gc->addSelection("Current");
+    gc->addSelection("user1") ;
+    gc->addSelection("user2") ;
+    gc->addSelection("user3") ;
+    gc->setHelpText(QObject::tr("Select the template you wish to restore.  This will change the way Myth repsonds to you remote buttons.  Choose none if you do not wish to change anything."));
+
+    return gc;
+}
+
+static HostComboBox *HostTemplateRestore()
+{
+    HostComboBox *gc = new HostComboBox("HostTemplateRestore");
+    gc->setLabel(QObject::tr("Template"));
+    //  gc->addSelection("none");
+    gc->addSelection("default_1");
+    gc->addSelection("default_2");
+    gc->addSelection("user1") ;
+    gc->addSelection("user2") ;
+    gc->addSelection("user3") ;
+    gc->setHelpText(QObject::tr("Select the template you wish to restore.  This will change the way Myth repsonds to you remote buttons.  Choose none if you do not wish to change anything."));
+
+    return gc;
+}
+
+static HostComboBox *HostSelectcopy_from()
+{
+    HostComboBox *gc = new HostComboBox("HostSelectcopy_from");
+    gc->setLabel(QObject::tr("Host"));
+    //  gc->addSelection("none");
+
+    QString tempItem;
+
+    MSqlQuery query(MSqlQuery::InitCon());
+
+    query.prepare( "SELECT DISTINCT hostname from settings where hostname is not null;");
+
+    if (query.exec() && query.isActive() && query.size() > 0)
+    {
+        while (query.next())
+        {
+            tempItem = query.value(0).toString();
+            gc->addSelection(tempItem);
+
+        }
+    }
+    gc->setHelpText(QObject::tr("Select the Host you wish to copy settings from."));
+
+    return gc;
+}
+
+class TemplateSettings:
+    public TriggeredConfigurationGroup {
+public:
+    TemplateSettings():
+        //ConfigurationGroup(false, true, false, false),
+        //VerticalConfigurationGroup(false, true, false, false),
+        TriggeredConfigurationGroup(true) {
+        setLabel(QObject::tr("Manage templates"));
+//         setUseLabel(false);
+
+        Setting* Mtemplate = HOSTtemplatetype();
+        addChild(Mtemplate);
+        setTrigger(Mtemplate);
+
+
+        ConfigurationGroup* trestore = new VerticalConfigurationGroup(false);
+        trestore->addChild(HostTemplateRestore());
+
+        ConfigurationGroup* tsave = new VerticalConfigurationGroup(false);
+        tsave->addChild(HostTemplateSave());
+
+        ConfigurationGroup* tcopy = new VerticalConfigurationGroup(false);
+        tcopy->addChild(HostSelectcopy_from());
+        tcopy->addChild(HostTemplateCopy_restore());
+
+
+        addTarget("Do Nothing", new VerticalConfigurationGroup(true));
+        addTarget("restore", trestore);
+        addTarget("save", tsave);
+        addTarget("copy_from", tcopy);
+
+    };
+};
+
+MythCtemplate::MythCtemplate()
+{
+
+    TemplateSettings *templatesettings = new TemplateSettings();
+    addChild(templatesettings);
+
+}
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.h b/abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.h
new file mode 100755
index 0000000..a730cf5
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/settemplate.h
@@ -0,0 +1,13 @@
+#include <settings.h>
+#include "mythdialogs.h"
+
+class MythCtemplate: public ConfigurationWizard {
+public:
+    MythCtemplate();
+
+};
+
+void choosetemplate(QString,QString,QString);
+void savesettings(QString);
+void restoresettings(QString);
+void c_from(QString , QString="current" );
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.cpp
new file mode 100755
index 0000000..26d83ee
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.cpp
@@ -0,0 +1,92 @@
+#include <unistd.h>
+#include "misc_settings.h"
+#include "mv_common.h"
+//Added by qt3to4:
+#include <Q3TextStream>
+#include "mythuihelper.h"
+
+#include "supplemental.h"
+
+
+using namespace std;
+
+extern  HostParms hostparm;
+static HostComboBox *HostWindowManager()
+{
+    HostComboBox *gc = new HostComboBox("HostWindowManager");
+    gc->setLabel(QObject::tr("WindowManger"));
+    gc->addSelection("enlightenment");
+    gc->addSelection("fluxbox");
+    gc->addSelection("windowmaker");
+    gc->setValue("enlightenment");
+    gc->setHelpText(QObject::tr("Windowmanager to use.  Most people will want to use the default of enlightenment"));
+    return gc;
+}
+
+WindowManager_settings::WindowManager_settings():
+    TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
+        Setting* trigger =  HostWindowManager() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        QString systemtype = gCoreContext->GetSetting("HostSystemType");
+        QString runfe = gCoreContext->GetSetting("HostRunFrontend");
+
+
+
+        HostSupplemental  = new HostCheckBox("HOSTSupplemental");
+        HostSupplemental->setLabel("Install supplemental package");
+        HostSupplemental->setHelpText(QObject::tr("Checking this will enable xymon and an alternate local website ."));
+        HostSupplemental->setValue(true);
+
+
+        HostEnhancedWMStyle = new HostCheckBox("HostEnhancedWMStyle");
+        HostEnhancedWMStyle->setLabel(QObject::tr("Use Enhanced Sytle"));
+        HostEnhancedWMStyle->setHelpText(QObject::tr("Enhanced will change the startup behaviour of Mythtv and messages.  Checking enhanced will also install supplemental"));
+        HostEnhancedWMStyle->setValue(true);
+
+
+
+         connect(HostEnhancedWMStyle, SIGNAL(valueChanged(bool)),
+                 this, SLOT(change_supplemental(bool)));
+
+
+        ConfigurationGroup* blanksettings = new GridConfigurationGroup(2,true);
+        ConfigurationGroup* settings = new GridConfigurationGroup(2,true);
+            settings->addChild(HostEnhancedWMStyle);
+//             if ( systemtype == "Master_backend" || systemtype == "Standalone" )
+//                 settings->addChild(HostSupplemental);
+
+        addTarget("enlightenment", settings);
+        addTarget("windowmaker", settings );
+        addTarget("fluxbox", settings);
+    };
+//};
+
+void WindowManager_settings::change_supplemental(bool newvalue)
+{
+    if ( newvalue  == true )
+        HostSupplemental->setValue(true);
+}
+
+
+Supplementalhostsettings::Supplementalhostsettings():
+    VerticalConfigurationGroup(false,false,false,false)
+    {
+        WindowManager_settings *wmsettings = new WindowManager_settings();
+        QString systemtype = gCoreContext->GetSetting("HostSystemType");
+        QString runfe = gCoreContext->GetSetting("HostRunFrontend");
+        if (systemtype == "Standalone" || runfe == "1" )
+            addChild(wmsettings);
+
+//         HostComboBox *HostAudiotype;
+//         HostAudiotype = new HostComboBox("HostAudiotype",false);
+//         HostAudiotype->setLabel(QObject::tr("Sound card driver"));
+//         HostAudiotype->addSelection("ALSA");
+//         HostAudiotype->addSelection("OSS");
+//         HostAudiotype->addSelection("tinker");
+//
+//         HostAudiotype->setHelpText(QObject::tr("Select the sound driver set to use (OSS or ALSA)." ) );
+//         addChild(HostAudiotype);
+
+    }
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.h b/abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.h
new file mode 100755
index 0000000..835d161
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/supplemental.h
@@ -0,0 +1,44 @@
+#include <mythcontext.h>
+#include <unistd.h>
+#include <iostream>
+#include <fstream>
+#include <stdio.h>
+#include "settings.h"
+#include "installsettings.h"
+#include <qsqldatabase.h>
+#include <qsqlquery.h>
+
+#include <stdlib.h>
+#include <cstdlib>
+#include <mythtv/mythdbcon.h>
+#include <qdir.h>
+#include <qapplication.h>
+#include "mythmiscutil.h"
+
+class WindowManager_settings: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    WindowManager_settings();
+    HostCheckBox    *HostEnhancedWMStyle;
+    HostCheckBox    *HostSupplemental;
+    signals:
+        void eth0_is_default(void);
+    public slots:
+        void change_supplemental(bool);
+};
+
+
+
+class Supplementalhostsettings: public VerticalConfigurationGroup {
+   // Q_OBJECT
+public:
+    Supplementalhostsettings();
+   // HostCheckBox    *HostSupplemental;
+   // HostComboBox *HostAudiotype;    //duplicated
+
+};
+
+
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/vnc.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/vnc.cpp
new file mode 100755
index 0000000..9f53f18
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/vnc.cpp
@@ -0,0 +1,112 @@
+#include <unistd.h>
+#include "misc_settings.h"
+#include "mv_common.h"
+//Added by qt3to4:
+#include <Q3TextStream>
+#include "mythuihelper.h"
+
+#include "vnc.h"
+
+
+using namespace std;
+
+extern  HostParms hostparm;
+
+// static HostLineEdit *HostVNClogin()
+// {
+//     HostLineEdit *gc = new HostLineEdit("HostVNClogin");
+//     gc->setLabel(QObject::tr("Login"));
+//     gc->setValue("");
+//     gc->setHelpText(QObject::tr("Login for vnc account"));
+//     return gc;
+// };
+//---------x11vnc
+static HostLineEdit *HostXVNCpassword()
+{
+    HostLineEdit *gc = new HostLineEdit("HostXVNCpassword");
+    gc->setLabel(QObject::tr("Password"));
+    gc->setValue("");
+    gc->SetPasswordEcho(true);
+    gc->setHelpText(QObject::tr("Password for XVNC account must be at least 5 characters long. Passwords shorter than 5 characters long will silently fail."));
+    return gc;
+};
+
+static HostCheckBox *HostXVNCEnable()
+{
+    HostCheckBox *gc = new HostCheckBox("HostXVNCEnable");
+    gc->setLabel(QObject::tr("Enable XVNC"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("This will allow you to remotely see what is currently displayed on the main screen. The session will be available on vnc:2 (port 5902)."));
+    return gc;
+};
+
+class XVNCsettings: public TriggeredConfigurationGroup {
+public:
+    XVNCsettings():
+    TriggeredConfigurationGroup(false,false,false,false) {
+        setLabel(QObject::tr("XVNC Settings"));
+        SetVertical(true);
+        Setting* trigger = HostXVNCEnable() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false,false,false);
+        //settings->addChild(HostXVNClogin());
+        settings->addChild(HostXVNCpassword());
+
+        addTarget("0", new VerticalConfigurationGroup(false, false));
+        addTarget("1", settings);
+    };
+};
+
+
+//------------------
+static HostLineEdit *HostVNCpassword()
+{
+    HostLineEdit *gc = new HostLineEdit("HostVNCpassword");
+    gc->setLabel(QObject::tr("Password"));
+    gc->setValue("");
+    gc->SetPasswordEcho(true);
+    gc->setHelpText(QObject::tr("Password for VNC account must be at least 5 characters long. Passwords shorter than 5 characters long will silently fail."));
+    return gc;
+};
+
+static HostCheckBox *HostVNCEnable()
+{
+    HostCheckBox *gc = new HostCheckBox("HostVNCEnable");
+    gc->setLabel(QObject::tr("Enable VNC"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("This will start a seperate VNC session that can be used for remote administration. The session will be available on vnc:1 (port 5901)."));
+    return gc;
+};
+
+class VNCsettings: public TriggeredConfigurationGroup {
+public:
+    VNCsettings():
+    TriggeredConfigurationGroup(false,false,false,false) {
+        setLabel(QObject::tr("VNC Settings"));
+        SetVertical(true);
+        Setting* trigger = HostVNCEnable() ;
+        addChild(trigger);
+        setTrigger(trigger);
+
+        ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false,false,false);
+        //settings->addChild(HostVNClogin());
+        settings->addChild(HostVNCpassword());
+
+        addTarget("0", new VerticalConfigurationGroup(false, false));
+        addTarget("1", settings);
+    };
+};
+
+
+
+VNChostsettings::VNChostsettings():
+    VerticalConfigurationGroup(false,false,false,false)
+    {
+        setLabel(QObject::tr("Screen Sharing Settings"));
+        VNCsettings *vncframe = new VNCsettings();
+        XVNCsettings *xvncframe = new XVNCsettings();
+        addChild(vncframe);
+        addChild(xvncframe);
+    }
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/vnc.h b/abs/core/mythinstall/MythVantage-app/mythinstall/vnc.h
new file mode 100755
index 0000000..3b1b349
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/vnc.h
@@ -0,0 +1,28 @@
+#include <mythcontext.h>
+#include <unistd.h>
+#include <iostream>
+#include <fstream>
+#include <stdio.h>
+#include "settings.h"
+#include "installsettings.h"
+#include <qsqldatabase.h>
+#include <qsqlquery.h>
+
+#include <stdlib.h>
+#include <cstdlib>
+#include <mythtv/mythdbcon.h>
+#include <qdir.h>
+#include <qapplication.h>
+#include "mythmiscutil.h"
+
+
+class VNChostsettings: public VerticalConfigurationGroup {
+public:
+    VNChostsettings();
+
+};
+
+
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.cpp
new file mode 100755
index 0000000..00a375e
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.cpp
@@ -0,0 +1,696 @@
+#include <unistd.h>
+
+
+
+//Added by qt3to4:
+#include <Q3TextStream>
+#include "mythcontext.h"
+//#include "tv.h"
+#include <stdlib.h>
+
+#include "xorgsettings.h"
+
+#include <qdir.h>
+#include <cstdlib>
+
+
+extern  HostParms hostparm;
+extern DDCinfo ddcinfo;
+// __________________All the Xorg settings______________
+void ReadDDCvalues (void)
+{
+    QString line;
+    QString currentitem;
+   // system ("/usr/sbin/ddcprobe > /tmp/ddcinfo");
+    QFile file("/tmp/ddcinfo");
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            if  ( line.contains("Timing ranges:") )
+            {
+                currentitem = line.section( "=", 1,1 );
+                ddcinfo.XVrefresh = line.section( "=", 2,2 );
+                ddcinfo.XHsync  = currentitem.section( "," , 0,0 );
+            }
+            else if  ( line.contains (" Dimensions") )
+            {
+                ddcinfo.Displaysize= line.section( ":", 1,1 );
+            };
+        }
+        file.close();
+    }
+};
+
+static HostCheckBox *HostXUseAdvanced()
+{
+    HostCheckBox *gc = new HostCheckBox("HostXUseAdvanced");
+    gc->setLabel(QObject::tr("Advanced xorg configuration"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("Displays more settings for Xorg"));
+    return gc;
+};
+
+static HostComboBox *HostXgeneric_connection()
+{
+    HostComboBox *gc = new HostComboBox("HostXgenericConnection",false);
+    gc->setLabel(QObject::tr("Connection"));
+    gc->addSelection("VGA");
+    gc->addSelection("DVI");
+    gc->addSelection("TV");
+    gc->addSelection("AUTO");
+    gc->setHelpText(QObject::tr("Video-out"));
+    return gc;
+}
+
+
+static HostCheckBox *HostXIgnoreEDID()
+{
+    HostCheckBox *gc = new HostCheckBox("HostXIgnoreEDID");
+    gc->setLabel(QObject::tr("Ignore data provided by monitor"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr(""));
+    return gc;
+};
+
+
+static HostSpinBox *HostXHsyncLow()
+{
+    HostSpinBox *gc = new HostSpinBox("HostXHsyncLow", 1, 200, 1, true);
+    gc->setLabel(QObject::tr("Hsync"));
+    gc->setValue(6);
+    gc->setHelpText(QObject::tr(""  ));
+    return gc;
+}
+static HostSpinBox *HostXHsyncHigh()
+{
+    HostSpinBox *gc = new HostSpinBox("HostXHsyncHigh", 1, 200, 1, true);
+    gc->setLabel(QObject::tr(""));
+    gc->setValue(6);
+    gc->setHelpText(QObject::tr(""  ));
+    return gc;
+}
+
+static HostSpinBox *HostXVrefreshLow()
+{
+    HostSpinBox *gc = new HostSpinBox("HostXVrefreshLow", 1, 200, 1, true);
+    gc->setLabel(QObject::tr("Vrefresh"));
+    gc->setValue(6);
+    gc->setHelpText(QObject::tr(""  ));
+    return gc;
+}
+static HostSpinBox *HostXVrefreshHigh()
+{
+    HostSpinBox *gc = new HostSpinBox("HostXVrefreshHigh", 1, 200, 1, true);
+    gc->setLabel(QObject::tr(""));
+    gc->setValue(6);
+    gc->setHelpText(QObject::tr(""  ));
+    return gc;
+}
+
+static HostComboBox *HostXDisplaysize()
+{
+    HostComboBox *gc = new HostComboBox("HostXdisplaysize",true);
+    gc->setLabel(QObject::tr("Display size"));
+    gc->setHelpText(QObject::tr("Format should be two numbers    320   250" ));
+    gc->addSelection("487 274 _ 1920x1080 at 100dpi  (16:9)");
+    gc->addSelection("325 182 _ 1280x720 at 100dpi  (16:9)");
+    gc->addSelection("325 243 _ 1280x960 at 100dpi (4:3)");
+    gc->addSelection("260 195 _ 1024x768 at 100dpi  (4:3)");
+    gc->addSelection("203 153 _  800x600 at 100dpi  (4:3)");
+    gc->addSelection("162 121 _  640x480 at 100dpi  (4:3)");
+    gc->addSelection("Custom");
+    return gc;
+}
+
+class EDIDprobedinfo : public TransLabelSetting
+{
+public:
+    EDIDprobedinfo()
+    {
+        QString currentitem = "Reported info \n";
+        currentitem.append("Hsync: ");
+        currentitem.append (ddcinfo.XHsync);
+        currentitem.append (" Vrefresh: ");
+        currentitem.append(ddcinfo.XVrefresh );
+        currentitem.append (" Displaysize: ");
+        currentitem.append(ddcinfo.Displaysize);
+        setLabel(currentitem);
+    };
+};
+
+
+void AdvancedXGeneric_modelines::generic_fillselection(QString modelinefile )
+{
+    if ( hostparm.displayshowadvancedX )
+    {
+        QString currentitem;
+        QString cfiletxt;
+        cfiletxt=MV_ROOT;
+        cfiletxt.append("templates/xorg/modeline." );
+        QString currentfile = cfiletxt;
+        currentfile.append(modelinefile);
+        QString line;
+        QRegExp sep( "\""      );
+        QFile file(currentfile);
+        if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+        {
+            Q3TextStream t( &file );        // use a text stream
+            while ( !t.eof() )
+            {
+                line = t.readLine();
+                if ( line.startsWith("ModeLine"))
+                {
+                    currentitem = line.section( sep , 1,1 );
+                    if ( modelinefile == "VESA")
+                        HostXadvancedresVESA->addSelection(currentitem);
+                    else if ( modelinefile == "ATSC")
+                        HostXadvancedresATSC->addSelection(currentitem);
+                    else if ( modelinefile == "DVD")
+                        HostXadvancedresDVD->addSelection(currentitem);
+                    else if ( modelinefile == "NTSC")
+                        HostXadvancedresNTSC->addSelection(currentitem);
+                    else if ( modelinefile == "Custom")
+                        HostXadvancedresCustom->addSelection(currentitem);
+                }
+            }
+            file.close();
+        }
+    }
+    return ;
+
+}
+
+
+class UseEDID:          public TriggeredConfigurationGroup {
+public:
+    UseEDID():
+        TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
+        Setting* useedid = HostXIgnoreEDID();
+        addChild(useedid);
+        setTrigger(useedid);
+
+        ConfigurationGroup* XSYNC = new GridConfigurationGroup(2,false);
+        XSYNC->addChild(HostXHsyncLow());
+        XSYNC->addChild(HostXHsyncHigh());
+
+        ConfigurationGroup* XVREFRESH = new GridConfigurationGroup(2,false);
+        XVREFRESH->addChild(HostXVrefreshLow());
+        XVREFRESH->addChild(HostXVrefreshHigh());
+
+
+        ConfigurationGroup* settings = new GridConfigurationGroup(1,false);
+        settings->addChild(new EDIDprobedinfo);
+        settings->addChild( XSYNC);
+        settings->addChild(XVREFRESH);
+        settings->addChild(HostXDisplaysize());
+
+        addTarget("0", new GridConfigurationGroup(1,false));
+        addTarget("1", settings);
+    };
+};
+
+
+EDIDOptions::EDIDOptions()
+{
+    VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false);
+    rec->setLabel(QObject::tr("Advanced X options"));
+    rec->setUseLabel(false);
+    rec->addChild(new UseEDID);
+    addChild(rec);
+}
+
+
+AdvancedXGeneric_modelines::AdvancedXGeneric_modelines():
+    TriggeredConfigurationGroup(true,false,true,true,true,true,true,true)
+{
+    SetVertical(false);
+    HostXModelineCatagory = new HostComboBox("HostXModelineCatagory");
+    HostXModelineCatagory->setLabel(QObject::tr("Type"));
+    HostXModelineCatagory->addSelection("Auto");
+    HostXModelineCatagory->addSelection("VESA");
+    HostXModelineCatagory->addSelection("ATSC");
+    HostXModelineCatagory->addSelection("DVD");
+    HostXModelineCatagory->addSelection("NTSC");
+    HostXModelineCatagory->addSelection("Custom");
+    //HostXModelineCatagory->addSelection("Nvidia_modeline");
+    HostXModelineCatagory->setHelpText(QObject::tr(""));
+
+    HostXadvancedresVESA = new HostComboBox("HostXadvancedresVESA");
+    HostXadvancedresATSC = new HostComboBox("HostXadvancedresATSC");
+    HostXadvancedresDVD = new HostComboBox("HostXadvancedresDVD");
+    HostXadvancedresNTSC = new HostComboBox("HostXadvancedresNTSC");
+    HostXadvancedresCustom= new HostComboBox("HostXadvancedresCustom");
+
+    generic_fillselection("VESA");
+    generic_fillselection("ATSC");
+    generic_fillselection("DVD");
+    generic_fillselection("NTSC");
+    generic_fillselection("Custom");
+
+    addChild(HostXModelineCatagory);
+    setTrigger(HostXModelineCatagory);
+
+    addTarget("VESA", HostXadvancedresVESA);
+    addTarget("ATSC", HostXadvancedresATSC);
+    addTarget("DVD", HostXadvancedresDVD);
+    addTarget("NTSC", HostXadvancedresNTSC);
+    addTarget("Custom",HostXadvancedresCustom);
+    addTarget("Auto", new VerticalConfigurationGroup(false, false));
+
+};
+
+void AdvancedXGeneric_modelines::AdvancedXGeneric_modelines_GatherSettings(void)
+{
+    QString modelinetype = HostXModelineCatagory->getValue();
+    QString tempmodeline = "HostXadvancedres" + modelinetype ;
+    QString modeline;
+    if ( modelinetype == "VESA")
+        modeline= HostXadvancedresVESA->getValue() ;
+    else if ( modelinetype == "ATSC")
+        modeline= HostXadvancedresATSC->getValue() ;
+    else if ( modelinetype == "DVD")
+        modeline= HostXadvancedresDVD->getValue();
+    else if ( modelinetype == "NTSC")
+        modeline= HostXadvancedresNTSC->getValue();
+    else if ( modelinetype == "Custom")
+        modeline= HostXadvancedresCustom->getValue();
+    hostparm.ThisXresadvanced = modelinetype +"_"+modeline;
+    // Jump to final step
+    testXconfiguration();
+}
+
+
+// --------------------------------------------start of nvidia specific  ------------------------------------
+
+
+AdvancedXNvidiaConnections::AdvancedXNvidiaConnections():
+    TriggeredConfigurationGroup(false,false,true,true,true,true,true,true) {
+
+    HostXNvidiaConnection = new HostComboBox("HostXNvidiaConnection",false);
+    HostXNvidiaConnection->setLabel(QObject::tr("Connection"));
+    HostXNvidiaConnection->addSelection("Auto");
+    HostXNvidiaConnection->addSelection("DVI");
+    HostXNvidiaConnection->addSelection("VGA");
+    HostXNvidiaConnection->addSelection("TV");
+    HostXNvidiaConnection->setHelpText(QObject::tr("Video-out"));
+
+    addChild(HostXNvidiaConnection);
+    setTrigger(HostXNvidiaConnection);
+    AdvancedXNvidia_modelines *ADVANCEDXNVIDIA_MODELINES = new AdvancedXNvidia_modelines;
+
+    HostXnVidiaTVstandard =  new HostComboBox("HostXnVidiaTVstandard");
+    HostXnVidiaTVstandard->setLabel(QObject::tr("nVidia-out"));
+    HostXnVidiaTVstandard->addSelection("PAL-B"	);
+    HostXnVidiaTVstandard->addSelection("PAL-D"	);
+    HostXnVidiaTVstandard->addSelection("PAL-G"	);
+    HostXnVidiaTVstandard->addSelection("PAL-H"	);
+    HostXnVidiaTVstandard->addSelection("PAL-I"	);
+    HostXnVidiaTVstandard->addSelection("PAL-K1");
+    HostXnVidiaTVstandard->addSelection("PAL-M"	);
+    HostXnVidiaTVstandard->addSelection("PAL-N"	);
+    HostXnVidiaTVstandard->addSelection("PAL-NC");
+    HostXnVidiaTVstandard->addSelection("NTSC-J");
+    HostXnVidiaTVstandard->addSelection("NTSC-M");
+    HostXnVidiaTVstandard->addSelection("HD480i"	);
+    HostXnVidiaTVstandard->addSelection("HD480p"	);
+    HostXnVidiaTVstandard->addSelection("HD720p"	);
+    HostXnVidiaTVstandard->addSelection("HD1080i"	);
+    HostXnVidiaTVstandard->addSelection("HD1080p");
+    HostXnVidiaTVstandard->addSelection("HD576i"	);
+    HostXnVidiaTVstandard->addSelection("HD576p"	);
+    HostXnVidiaTVstandard->setHelpText(QObject::tr("Indrustry standard resolution to send to the TV"));
+
+    HostXnVidiaTVformat = new  HostComboBox("HostXnVidiaTVformat");
+    HostXnVidiaTVformat->setLabel(QObject::tr("TV-Format(nvidia)"));
+    HostXnVidiaTVformat->addSelection("AUTOSELECT");
+    HostXnVidiaTVformat->addSelection("COMPOSITE");
+    HostXnVidiaTVformat->addSelection("SVIDEO");
+    HostXnVidiaTVformat->addSelection("COMPONENT");
+    HostXnVidiaTVformat->addSelection("SCART");
+    HostXnVidiaTVformat->setHelpText(QObject::tr("Physical connection to the nvidia card"));
+
+    ConfigurationGroup* nvtvout = new VerticalConfigurationGroup(false);
+    nvtvout ->addChild(HostXnVidiaTVformat);
+    nvtvout->addChild(HostXnVidiaTVstandard);
+
+    addTarget("Auto",ADVANCEDXNVIDIA_MODELINES  );
+    addTarget("DVI", ADVANCEDXNVIDIA_MODELINES );
+    addTarget("VGA",ADVANCEDXNVIDIA_MODELINES);
+    addTarget("TV", nvtvout);
+
+    connect(this, SIGNAL(nVidia_sig(void)),
+            ADVANCEDXNVIDIA_MODELINES,   SLOT(AdvancedXNvidia_modelines_GatherSettings()));
+};
+
+
+
+
+void AdvancedXNvidia_modelines::Nvidia_fillselection(QString modelinefile )
+{
+    if ( hostparm.displayshowadvancedX )
+    {
+        QString currentitem;
+        QString cfiletxt;
+        cfiletxt=MV_ROOT;
+        cfiletxt.append("templates/xorg/modeline." );
+        QString currentfile = cfiletxt;
+        currentfile.append(modelinefile);
+        QString line;
+        QRegExp sep( "\""      );
+        QFile file(currentfile);
+        if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+        {
+            Q3TextStream t( &file );        // use a text stream
+            while ( !t.eof() )
+            {
+                line = t.readLine();
+                if ( line.startsWith("ModeLine"))
+                {
+                    currentitem = line.section( sep , 1,1 );
+                    if ( modelinefile == "VESA")
+                        HostXNvidiaadvancedresVESA->addSelection(currentitem);
+                    else if ( modelinefile == "ATSC")
+                        HostXNvidiaadvancedresATSC->addSelection(currentitem);
+                    else if ( modelinefile == "DVD")
+                        HostXNvidiaadvancedresDVD->addSelection(currentitem);
+                    else if ( modelinefile == "NTSC")
+                        HostXNvidiaadvancedresNTSC->addSelection(currentitem);
+                    else if ( modelinefile == "Custom")
+                        HostXNvidiaadvancedresCustom->addSelection(currentitem);
+                }
+            }
+            file.close();
+        }
+    }
+    return ;
+
+}
+
+
+
+AdvancedXNvidia_modelines::AdvancedXNvidia_modelines():
+    TriggeredConfigurationGroup(true,false,true,true,true,true,true,true)
+{
+    SetVertical(true);
+    HostXNvidiaModelineCatagory = new HostComboBox("HostXNvidiaModelineCatagory");
+    HostXNvidiaModelineCatagory->setLabel(QObject::tr("Category"));
+    //HostXNvidiaModelineCatagory->addSelection("Auto");
+   // HostXNvidiaModelineCatagory->addSelection("VESA");
+   // HostXNvidiaModelineCatagory->addSelection("ATSC");
+   // HostXNvidiaModelineCatagory->addSelection("DVD");
+   // HostXNvidiaModelineCatagory->addSelection("NTSC");
+   // HostXNvidiaModelineCatagory->addSelection("Custom");
+    HostXNvidiaModelineCatagory->addSelection("Nvidia_modeline");
+    HostXNvidiaModelineCatagory->setHelpText(QObject::tr(""));
+
+//     HostXNvidiaadvancedresVESA = new HostComboBox("HostXNvidiaadvancedresVESA");
+//     HostXNvidiaadvancedresATSC = new HostComboBox("HostXNvidiaadvancedresATSC");
+//     HostXNvidiaadvancedresDVD = new HostComboBox("HostXNvidiaadvancedresDVD");
+//     HostXNvidiaadvancedresNTSC = new HostComboBox("HostXNvidiaadvancedresNTSC");
+//     HostXNvidiaadvancedresCustom= new HostComboBox("HostXNvidiaadvancedresCustom");
+//
+//     Nvidia_fillselection("VESA");
+//     Nvidia_fillselection("ATSC");
+//     Nvidia_fillselection("DVD");
+//     Nvidia_fillselection("NTSC");
+//     Nvidia_fillselection("Custom");
+
+    HostXnVidia1080p = new HostCheckBox("HostXnVidia1080p");
+    HostXnVidia1080p->setLabel(QObject::tr("1080p"));
+    HostXnVidia1080p->setValue(true);
+    HostXnVidia1080p->setHelpText(QObject::tr(" "));
+
+    HostXnVidia1080i = new HostCheckBox("HostXnVidia1080i");
+    HostXnVidia1080i->setLabel(QObject::tr("1080i"));
+    HostXnVidia1080i->setValue(true);
+    HostXnVidia1080i->setHelpText(QObject::tr(" "));
+
+    HostXnVidia720p = new HostCheckBox("HostXnVidia720p");
+    HostXnVidia720p->setLabel(QObject::tr("720p"));
+    HostXnVidia720p->setValue(true);
+    HostXnVidia720p->setHelpText(QObject::tr(" "));
+
+    HostXnVidia480p = new HostCheckBox("HostXnVidia480p");
+    HostXnVidia480p->setLabel(QObject::tr("480p"));
+    HostXnVidia480p->setValue(true);
+    HostXnVidia480p->setHelpText(QObject::tr(" "));
+
+    ConfigurationGroup* nVidiastandard = new GridConfigurationGroup(2,false,false,true,true);
+    nVidiastandard ->addChild(HostXnVidia480p);
+    nVidiastandard ->addChild(HostXnVidia720p);
+    nVidiastandard ->addChild(HostXnVidia1080p);
+    nVidiastandard ->addChild(HostXnVidia1080i);
+    nVidiastandard ->addChild(HostXres());
+    nVidiastandard  ->setLabel(QObject::tr("Standard Nvidia Modelines"));
+
+
+    addChild(HostXNvidiaModelineCatagory);
+    setTrigger(HostXNvidiaModelineCatagory);
+
+//     addTarget("VESA", HostXNvidiaadvancedresVESA);
+//     addTarget("ATSC", HostXNvidiaadvancedresATSC);
+//     addTarget("DVD", HostXNvidiaadvancedresDVD);
+//     addTarget("NTSC", HostXNvidiaadvancedresNTSC);
+//     addTarget("Custom",HostXNvidiaadvancedresCustom);
+    addTarget("Nvidia_modeline",nVidiastandard);
+    addTarget("Auto", new VerticalConfigurationGroup(false, false));
+
+};
+
+
+void AdvancedXNvidiaConnections::AdvancedXNvidiaConnectionsGatherSettings(void)
+{
+    //cout << "inside AdvancedXNvidiaConnectionsGatherSettings"  << endl;
+    hostparm.ThisXconnection = HostXNvidiaConnection->getValue();
+    hostparm.ThisXTVstandard = HostXnVidiaTVformat->getValue();
+    hostparm.ThisXTVconnection = HostXnVidiaTVstandard->getValue();
+    emit nVidia_sig();  // jump to AdvancedXNvidia_modelines_GatherSettings
+
+};
+
+
+void AdvancedXNvidia_modelines::AdvancedXNvidia_modelines_GatherSettings(void)
+{
+    QString modelinecatagory = HostXNvidiaModelineCatagory->getValue();
+    QString tempmodeline = "HostXadvancedres" + modelinecatagory ;
+    QString modeline;
+
+    if ( modelinecatagory == "VESA")
+        modeline= HostXNvidiaadvancedresVESA->getValue() ;
+    else if ( modelinecatagory == "ATSC")
+        modeline= HostXNvidiaadvancedresATSC->getValue() ;
+    else if ( modelinecatagory == "DVD")
+        modeline= HostXNvidiaadvancedresDVD->getValue();
+    else if ( modelinecatagory == "NTSC")
+        modeline= HostXNvidiaadvancedresNTSC->getValue();
+    else if ( modelinecatagory == "Custom")
+        modeline= HostXNvidiaadvancedresCustom->getValue();
+    else if ( modelinecatagory == "Nvidia_modeline" )
+        modeline = "Builtin" ;
+    // need to add stuff to find the built in nvidia modelines
+    hostparm.ThisXresadvanced = modelinecatagory +"_"+modeline;
+    // Jump to final step
+    testXconfiguration();
+};
+// ----------------------------------------END nvidia specific
+
+
+
+AdvancedXcardtype::AdvancedXcardtype():
+    TriggeredConfigurationGroup(false,false,true,true,true,true,false,false) {
+    HostXcardtype = new HostComboBox("HostXcardtype",false);
+    HostXcardtype->setLabel(QObject::tr("Video card/driver"));
+    HostXcardtype->addSelection("nVidia");
+    //HostXcardtype->addSelection("ATI");
+    HostXcardtype->addSelection("VMWARE");
+    HostXcardtype->addSelection("Intel");
+    //HostXcardtype->addSelection("Via");
+    HostXcardtype->setHelpText(QObject::tr("Force video card driver to use."));
+    addChild(HostXcardtype);
+    setTrigger(HostXcardtype);
+
+    AdvancedXGeneric_modelines *ADVANCEDXGENERICMODELINES = new AdvancedXGeneric_modelines;
+    AdvancedXNvidiaConnections *ADVANCEDXNVIDIACONNECTIONS = new AdvancedXNvidiaConnections;
+
+
+
+
+    addTarget("VMWARE", HostXres());
+    addTarget("Intel", HostXres());
+    //addTarget("nVidia",HostXres());
+
+    //addTarget("VMWARE", ADVANCEDXGENERICMODELINES);
+    //addTarget("Intel", ADVANCEDXGENERICMODELINES);
+    addTarget("nVidia",ADVANCEDXNVIDIACONNECTIONS);
+
+    //addTarget("Via", ADVANCEDXGENERICMODELINES);
+    //addTarget("ATI",ADVANCEDXGENERICMODELINES);
+
+    //connect(this, SIGNAL(go(void)),
+    //        ADVANCEDXGENERICMODELINES,   SLOT(AdvancedXGeneric_modelines_GatherSettings()));
+    //connect(this, SIGNAL(gonVidia(void)),
+     //       ADVANCEDXNVIDIACONNECTIONS,   SLOT(AdvancedXNvidiaConnectionsGatherSettings()));
+
+};
+
+void AdvancedXcardtype::AdvancedXcardgatherSettings(void)
+{
+    //called when test button is pressed
+    hostparm.ThisXcardtype =  HostXcardtype->getValue() ;
+    if (hostparm.ThisXcardtype == "nVidia")
+        emit gonVidia();
+    else if (hostparm.ThisXcardtype =="ATI")
+        emit goATI();
+    else
+        emit  go();
+};
+
+
+// AdvancedXSettings::AdvancedXSettings():
+//     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+//     setLabel(QObject::tr("Display Settings"));
+//     Setting* Advancedxsettings = HostXUseAdvanced();
+//     addChild(Advancedxsettings);
+//     setTrigger(Advancedxsettings);
+//     HostXIgnoreConfig = new HostCheckBox("HostXIgnoreConfig");
+//     HostXIgnoreConfig->setLabel(QObject::tr("User supplied config. "));
+//     HostXIgnoreConfig->setValue(false);
+// #ifdef __MVAPP__
+//     HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU.  Place the file you want to use in /data/home/mythtv/templates/xorg.user."));
+// #else
+//     HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU.  Place the file you want to use in /home/mythtv/templates/xorg.user."));
+// #endif
+// //     HorizontalConfigurationGroup *lp =
+// //         new HorizontalConfigurationGroup(false, false, true, true);
+// //
+// //     TransButtonSetting *EDIDbutton = new TransButtonSetting();
+// //     EDIDbutton->setLabel(tr("Display Settings"));
+// //
+// //     TransButtonSetting *TestXbutton = new TransButtonSetting();
+// //     TestXbutton->setLabel(tr("Test X Configuration"));
+// //     lp->addChild(EDIDbutton);
+// //     lp->addChild(TestXbutton);
+//
+//     AdvancedXcardtype *AXCT = new AdvancedXcardtype ;
+//
+//     ConfigurationGroup* settings = new VerticalConfigurationGroup(false);
+//    // settings->addChild(AXCT);
+//     //settings->addChild(lp);
+//
+//     ConfigurationGroup* setting1 = new GridConfigurationGroup(1,false);
+//     setting1->addChild(HostXres());
+//     setting1->addChild(HostXIgnoreConfig);
+//
+//   //  connect(EDIDbutton, SIGNAL(pressed()), this,   SLOT(ADJUSTEDID()));
+//   //  connect(TestXbutton, SIGNAL(pressed()), AXCT,   SLOT(AdvancedXcardgatherSettings()));
+//     addTarget("0",setting1);
+//     addTarget("1", settings);
+//
+//
+//
+//
+// };
+
+AdvancedXSettings::AdvancedXSettings():
+    TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
+    setLabel(QObject::tr("Display Settings"));
+
+
+
+
+    HostXIgnoreConfig = new HostCheckBox("HostXIgnoreConfig");
+    HostXIgnoreConfig->setLabel(QObject::tr("User Supplied Configuration"));
+    HostXIgnoreConfig->setValue(false);
+#ifdef __MVAPP__
+    HostXIgnoreConfig->setHelpText(QObject::tr("If checked, the system will use the configuration file provided by YOU. Place your configuration file in /data/home/mythtv/templates/xorg.user."));
+#else
+    HostXIgnoreConfig->setHelpText(QObject::tr("If checked, the system will use the configuration file provided by YOU. Place your configuration file in /data/home/mythtv/templates/xorg.user."));
+#endif
+
+    Setting* Advancedxsettings = HostXIgnoreConfig;
+    addChild(Advancedxsettings);
+    setTrigger(Advancedxsettings);
+
+
+
+
+
+
+    ConfigurationGroup* settings = new VerticalConfigurationGroup(false);
+
+
+    ConfigurationGroup* setting1 = new GridConfigurationGroup(1,false);
+    setting1->addChild(HostXres());
+
+    addTarget("0",setting1);
+    addTarget("1", settings);
+
+
+
+
+};
+
+
+
+void AdvancedXSettings::ADJUSTEDID(void)
+{
+    EDIDOptions edidscreen;
+    edidscreen.exec();
+}
+
+
+void testXconfiguration(void)
+{
+    hostparm.ThisXIgnoreEDID  =gCoreContext->GetSetting("HostXIgnoreEDID");
+    QString tempstring  ;
+    tempstring = gCoreContext->GetSetting("HostXHsyncLow");
+    tempstring.append(" - ");
+    tempstring.append(gCoreContext->GetSetting("HostXHsyncHigh") );
+    hostparm.ThisXHsync=tempstring;
+
+    tempstring ="";
+    tempstring=gCoreContext->GetSetting("HostXVrefreshLow");
+    tempstring.append(" - ");
+    tempstring.append(gCoreContext->GetSetting("HostXVrefreshHigh"));
+    hostparm.ThisXVrefresh=tempstring;
+    hostparm.ThisXDisplaysize= gCoreContext->GetSetting("HostXDisplaysize");
+
+    QString commandline = "xconfig.sh  test  0 ";
+    commandline.append(hostparm.ThisXcardtype);
+    commandline.append(" " );
+    commandline.append(hostparm.ThisXIgnoreEDID );
+    commandline.append(" " );
+    commandline.append(hostparm.ThisXconnection );
+    commandline.append(" \""  );
+    commandline.append(hostparm.ThisXHsync );
+    commandline.append(" \"  " );
+    commandline.append(" \""  );
+    commandline.append(hostparm.ThisXVrefresh);
+    commandline.append(" \"  " );
+    commandline.append(hostparm.ThisXresadvanced );
+    commandline.append(" " );
+    commandline.append(hostparm.ThisXTVconnection );
+    commandline.append(" " );
+    commandline.append(" \""  );
+    commandline.append(hostparm.ThisXDisplaysize);
+    commandline.append(" \"  " );
+
+    QString message;
+    message = "Someday this button will do something, but for right now all it does is show this message.";
+    message.append ("\n");
+
+    message.append(commandline);
+    MythPopupBox::showOkPopup(
+        GetMythMainWindow(), QObject::tr("Test X button"),
+        message);
+};
+
+
+
+
+
+
+
diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.h b/abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.h
new file mode 100755
index 0000000..f8985cd
--- /dev/null
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/xorgsettings.h
@@ -0,0 +1,130 @@
+#include <settings.h>
+#include "mythdialogs.h"
+#include "libmyth/mythdialogs.h"
+#include "libmyth/mythwidgets.h"
+#include "installsettings.h"
+
+#include <Q3TextStream>
+#include <qdir.h>
+
+
+class AdvancedXNvidiaConnections: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    AdvancedXNvidiaConnections();
+    HostComboBox *HostXNvidiaConnection;
+    HostComboBox *HostXnVidiaTVformat;
+    HostComboBox *HostXnVidiaTVstandard;
+
+public slots:
+    void AdvancedXNvidiaConnectionsGatherSettings();
+signals:
+    void nVidia_sig(void);
+};
+
+
+class AdvancedXNvidia_modelines: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    AdvancedXNvidia_modelines();
+    HostComboBox *HostXNvidiaModelineCatagory;
+    HostComboBox *HostXNvidiaadvancedresVESA;
+    HostComboBox *HostXNvidiaadvancedresATSC;
+    HostComboBox *HostXNvidiaadvancedresDVD;
+    HostComboBox *HostXNvidiaadvancedresNTSC;
+    HostComboBox *HostXNvidiaadvancedresCustom;
+    HostCheckBox *HostXnVidia1080p;
+    HostCheckBox *HostXnVidia1080i;
+    HostCheckBox *HostXnVidia720p;
+    HostCheckBox *HostXnVidia480p;
+    void Nvidia_fillselection(QString);
+public slots:
+    void AdvancedXNvidia_modelines_GatherSettings(void);
+};
+
+
+//-------------------------------------------------
+
+class AdvancedXcardtype: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    AdvancedXcardtype();
+    HostComboBox *HostXcardtype;
+
+public slots:
+    void AdvancedXcardgatherSettings();
+signals:
+    void go(void );
+    void goATI(void);
+    void gonVidia(void);
+};
+
+
+class AdvancedXSettings:    public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    AdvancedXSettings();
+    HostCheckBox *HostXIgnoreConfig;
+protected slots:
+    void ADJUSTEDID(void);
+};
+
+
+class AdvancedXGeneric_modelines: public TriggeredConfigurationGroup {
+    Q_OBJECT
+public:
+    AdvancedXGeneric_modelines();
+    HostComboBox *HostXModelineCatagory;
+    HostComboBox *HostXadvancedresVESA;
+    HostComboBox *HostXadvancedresATSC;
+    HostComboBox *HostXadvancedresDVD;
+    HostComboBox *HostXadvancedresNTSC;
+    HostComboBox *HostXadvancedresCustom;
+    void generic_fillselection(QString);
+public slots:
+    void AdvancedXGeneric_modelines_GatherSettings(void);
+};
+
+
+class EDIDOptions : public ConfigurationWizard
+{
+public:
+    EDIDOptions();
+};
+
+
+void testXconfiguration();
+void ReadDDCvalues();
+
+
+
+
+#include <iostream>
+
+static HostComboBox *HostXres()
+//Used in the simple config
+{
+    HostComboBox *gc = new HostComboBox("HostXres");
+    gc->setLabel(QObject::tr("Initial Resolution"));
+    gc->addSelection("Auto") ;
+    gc->setHelpText(QObject::tr(""));
+    system ("print_xorg_res.py");
+
+    QFile file("/tmp/modelines");
+    QString line;
+    if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
+    {
+        Q3TextStream t( &file );        // use a text stream
+        while ( !t.eof() )
+        {
+            line = t.readLine();
+            gc->addSelection(line) ;
+        }
+        file.close();
+    }
+
+    return gc;
+}
+
+
+
diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index f5265a6..96f7b8d 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Jams
 pkgname=mythinstall
 pkgver=8.1
-pkgrel=4
+pkgrel=5
 pkgdesc="LinHES installer/systemconfig GUI."
 arch=('i686' 'x86_64')
 depends=('mythtv>=0.27')
@@ -9,26 +9,36 @@ makedepends=('mythtv>=0.27')
 logofiles=`ls logo*.png`
 source=('install-ui.xml' $logofiles)
 
+build() {
+#    if [ -d $srcdir/MythVantage-app ]
+#    then
+#        msg "Removing old MythVantage-app src"
+#        rm -rf $srcdir/MythVantage-app
+#    fi
+    msg "Copying MythVantage-app to src"
+#    cp -a $startdir/MythVantage-app $srcdir
+    rsync -au $startdir/MythVantage-app $srcdir
+
+    msg "Building mythinstall"
+    cd $srcdir/MythVantage-app/mythinstall && qmake
+    make || exit 1
+}
+
 package() {
-#   It is assumed that you have built the mythtv package in the same 
-    #cd $startdir
-    #cd -
-    #install -D MythVantage-app/mythinstall/install-ui.xml $pkgdir/usr/share/mythtv/themes/default/install-ui.xml
     install -D $srcdir/install-ui.xml $pkgdir/usr/share/mythtv/themes/default/install-ui.xml
     MVBINDIR=$pkgdir/usr/MythVantage/bin
     mkdir -p $MVBINDIR
-    install -m 0755 $startdir/mythinstall.bin $MVBINDIR/MythVantage
+    install -m 0755 $srcdir/MythVantage-app/mythinstall/mythinstall $MVBINDIR/MythVantage
     cd $MVBINDIR
     ln -s MythVantage mythvantage
     ln -s MythVantage mythinstall
-    #cd -
     echo $logofiles    
     for i in $logofiles
     do
-       install -D -m 0755 $srcdir/$i $pkgdir/usr/MythVantage/logos/$i
+        install -D -m 0755 $srcdir/$i $pkgdir/usr/MythVantage/logos/$i
     done
-
 }
+
 md5sums=('39d6b7bd1ee305c5523a3cf66d4c2338'
          '3291ad55fe6d7884fc732313f1cc2924'
          '80c0326a253df275afbe875a8ec14a3c'
diff --git a/abs/core/mythinstall/checkout_MythVantage.sh b/abs/core/mythinstall/checkout_MythVantage.sh
index ae4bcc7..1b6fe97 100755
--- a/abs/core/mythinstall/checkout_MythVantage.sh
+++ b/abs/core/mythinstall/checkout_MythVantage.sh
@@ -76,9 +76,6 @@ sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app-patched/mythinstall/m
 
 #echo 'INCLUDEPATH += $$MYTHPATH/mythtv/libs/libmythtv/' >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
 
-#patch -N $MYDIR/src/MythVantage-app/mythinstall/installdialog.cpp < $MYDIR/installdialog.cpp.patch
-#patch -N $MYDIR/src/MythVantage-app/mythinstall/installationtype.cpp < $MYDIR/installationtype.cpp.patch
-
 cd $MYDIR/src/MythVantage-app-patched/mythinstall && qmake
 make || exit 1
 #cd $MYDIR/src/MythVantage-app/mythbeselect && qmake
diff --git a/abs/core/mythinstall/fileshare.cpp.patch b/abs/core/mythinstall/fileshare.cpp.patch
deleted file mode 100644
index d220705..0000000
--- a/abs/core/mythinstall/fileshare.cpp.patch
+++ /dev/null
@@ -1,156 +0,0 @@
---- fileshare.cpp.orig	2013-12-07 16:36:24.882995387 +0000
-+++ fileshare.cpp	2013-12-07 17:52:59.075231547 +0000
-@@ -24,10 +24,10 @@
- static HostComboBox *HostHaveCentralNFS()
- {
-     HostComboBox *gc = new HostComboBox("HostHaveCentralNFS");
--    gc->setLabel(QObject::tr("Central NFS server"));
-+    gc->setLabel(QObject::tr("Central NFS Server"));
-     gc->addSelection("no");
-     gc->addSelection("yes") ;
--    gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the masterbackend.  Say no if you are confused."));
-+    gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the master backend. Select no if you are unsure."));
- 
-     return gc;
- }
-@@ -35,8 +35,8 @@
- static  HostComboBox *HostCentralNFSIP()
- {
-     HostComboBox *gc = new HostComboBox("HostCentralNFSIP",true);
--    gc->setLabel(QObject::tr("NFS server"));
--    gc->setHelpText(QObject::tr("Format should be  IP:/SHARENAME, for example  192.168.1.6:/media.  file:nfsmap  will load shares from the nfsmap file"));
-+    gc->setLabel(QObject::tr("NFS Server"));
-+    gc->setHelpText(QObject::tr("Format should be IP:/SHARENAME, For example 192.168.1.6:/media. file:nfsmap will load shares from the nfsmap file."));
-     gc->addSelection("example  ip:share") ;
-     gc->addSelection("file:nfsmap_auto") ;
-     gc->addSelection("file:nfsmap") ;
-@@ -57,7 +57,7 @@
- 
-     HostComboBox *gc = new HostComboBox("HostNFSmountpoint",true);
-     gc->addSelection("/data/storage/central_nfs");
--    gc->setLabel(QObject::tr("Mount point"));
-+    gc->setLabel(QObject::tr("Mount Point"));
-     gc->setHelpText(QObject::tr(""));
-     return gc;
- }
-@@ -65,9 +65,9 @@
- static HostCheckBox *HostCentralNFSallhosts()
- {
-     HostCheckBox *gc = new HostCheckBox("HostCentralNFSallhosts");
--    gc->setLabel(QObject::tr("All hosts use this share"));
-+    gc->setLabel(QObject::tr("All Hosts Use This Share"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("If checked then all new hosts added to the cluster will try to access the same share"));
-+    gc->setHelpText(QObject::tr("If checked then all new hosts added to the cluster will try to access the same share."));
-     return gc;
- };
- 
-@@ -111,6 +111,7 @@
- FileShareMainFrameClient::FileShareMainFrameClient():
- VerticalConfigurationGroup(false,false,false,false)
- {
-+    setLabel(QObject::tr("File Sharing Settings (1/2)"));
-     VerticalConfigurationGroup* fileshareframeclientsettings =
-     new VerticalConfigurationGroup(false, true,false,false);
- 
-@@ -125,26 +126,26 @@
- static HostCheckBox *HostServiceNFS()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceNFS");
--    gc->setLabel(QObject::tr("Standard file sharing using NFS"));
-+    gc->setLabel(QObject::tr("File Sharing using NFS"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Allow any machine on your network access to media via NFS"));
-+    gc->setHelpText(QObject::tr("If checked, any device on the network can access media via NFS."));
-     return gc;
- };
- static HostCheckBox *HostServiceSamba()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceSamba");
--    gc->setLabel(QObject::tr("Windows sharing"));
-+    gc->setLabel(QObject::tr("File Sharing using SMB (Windows Sharing)"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Allow window machines to access media via windows file sharing"));
-+    gc->setHelpText(QObject::tr("If checked, any device on the network can access media via Windows SMB file sharing."));
-     return gc;
- };
- 
- static HostCheckBox *HostServiceSamba_write()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_write");
--    gc->setLabel(QObject::tr("Readonly"));
-+    gc->setLabel(QObject::tr("ReadOnly"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only.  If not checked then remote clients will have write and delete abilites. "));
-+    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked, remote clients will have write and delete abilities."));
-     return gc;
- };
- 
-@@ -152,16 +153,16 @@
- static HostCheckBox *HostServiceSamba_writehome()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_writehome");
--    gc->setLabel(QObject::tr("Readonly"));
-+    gc->setLabel(QObject::tr("ReadOnly"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only.  If not checked then remote clients will have write and delete abilites. "));
-+    gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked, remote clients will have write and delete abilities."));
-     return gc;
- };
- 
- static HostCheckBox *HostServiceSamba_media()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_media");
--    gc->setLabel(QObject::tr("share media"));
-+    gc->setLabel(QObject::tr("Share media"));
-     gc->setValue(true);
-     gc->setHelpText(QObject::tr(" "));
-     return gc;
-@@ -170,7 +171,7 @@
- static HostCheckBox *HostServiceSamba_home()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceSamba_home");
--    gc->setLabel(QObject::tr("share home"));
-+    gc->setLabel(QObject::tr("Share home"));
-     gc->setValue(true);
-     gc->setHelpText(QObject::tr(" "));
-     return gc;
-@@ -182,7 +183,7 @@
- {
-     HostComboBox *gc = new HostComboBox("HostServiceSamba_domain",true);
-     gc->setLabel(QObject::tr("Workgroup"));
--    gc->setHelpText(QObject::tr("Workgroup for smb share"));
-+    gc->setHelpText(QObject::tr("Workgroup for Windows SMB shares."));
-     gc->addSelection("WORKGROUP");
-     QString currentitem;
-     QString line;
-@@ -231,7 +232,7 @@
- 
- void smb_busy_box() {
-     system ("nmbscan -d  > /tmp/smbdomainlist & ");
--    QString msgtext="Searching for windows workgroups";
-+    QString msgtext="Searching for Windows Workgroups";
-     int return_code;
-     MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
-     MythUIBusyDialog *busyPopup = new MythUIBusyDialog(msgtext, popupStack,
-@@ -286,15 +287,17 @@
- 
- //_______________Server NFS Frame
- FileShareMainFrameServer::FileShareMainFrameServer():
--VerticalConfigurationGroup(true,false,false,false)
-+VerticalConfigurationGroup(false,false,false,false)
- {
-+    setLabel(QObject::tr("File Sharing Settings (2/2)"));
-+
-     VerticalConfigurationGroup* denied =  new VerticalConfigurationGroup(false,false,true,true);
-     TransLabelSetting *deniedlabel = new TransLabelSetting();
--    deniedlabel->setValue("               File sharing is not available for Front end only systems  " );
-+    deniedlabel->setValue("               File sharing is not available for frontend_only systems." );
-     denied->addChild(deniedlabel);
- 
-     VerticalConfigurationGroup* fileshare_frame_serversettings =
--        new VerticalConfigurationGroup(false, true,false,false);
-+        new VerticalConfigurationGroup(false,false,false,false);
-         fileshare_frame_serversettings->addChild(HostServiceNFS());
-         fileshare_frame_serversettings->addChild(new SAMBAsettings);
- 
diff --git a/abs/core/mythinstall/infrared.cpp.patch b/abs/core/mythinstall/infrared.cpp.patch
deleted file mode 100644
index 7c3b2cf..0000000
--- a/abs/core/mythinstall/infrared.cpp.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- infrared.cpp.orig	2013-12-06 18:56:39.300263083 +0000
-+++ infrared.cpp	2013-12-06 21:52:25.071935902 +0000
-@@ -339,7 +339,7 @@
-     gc->addSelection("user");
-     gc->addSelection("other");
- 
--    gc->setHelpText(QObject::tr("Remote classification.  Favorites are remotes fully supported by LinHES."));
-+    gc->setHelpText(QObject::tr("Remote classification. Favorites are remotes fully supported by LinHES."));
- 
-     return gc;
- };
-@@ -391,6 +391,7 @@
- IRFrame::IRFrame():
-     VerticalConfigurationGroup(false,false,false,false)
- {
-+    setLabel(QObject::tr("Remotes Settings"));
-     LIRC_ReceiverSettings *receiversettings = new LIRC_ReceiverSettings();
-     //addChild(new HostRemoteTypeIR());
-     addChild(new Remote_bucket());
-@@ -685,6 +686,7 @@
- IR_TransmitFrame::IR_TransmitFrame():
-     VerticalConfigurationGroup(false,false,false,false)
- {
-+    setLabel(QObject::tr("Blaster Settings"));
-     LIRC_BlasterSettings *blastersettings = new LIRC_BlasterSettings();
-     addChild(blastersettings);
- }
-@@ -724,6 +726,7 @@
- LCDFrame::LCDFrame():
-     VerticalConfigurationGroup(false,false,false,false)
- {
-+    setLabel(QObject::tr("LCD Settings"));
-     addChild(HostLCDType());
- }
- 
diff --git a/abs/core/mythinstall/installationtype.cpp.patch b/abs/core/mythinstall/installationtype.cpp.patch
deleted file mode 100644
index bbb2693..0000000
--- a/abs/core/mythinstall/installationtype.cpp.patch
+++ /dev/null
@@ -1,98 +0,0 @@
---- installationtype.cpp.orig	2013-12-06 01:40:00.625732158 +0000
-+++ installationtype.cpp	2013-12-06 17:28:37.733758564 +0000
-@@ -28,13 +28,13 @@
- static HostComboBox *HOSTinstallationtype()
- {
-     HostComboBox *gc = new HostComboBox("HOSTinstallationtype");
--    gc->setLabel(QObject::tr("Upgrade or Full install"));
-+    gc->setLabel(QObject::tr("Installation Type"));
-     gc->addSelection("Full/Auto") ;
- 
-     gc->addSelection("Upgrade");
- 
-     //gc->setValue("Full/Auto");
--    gc->setHelpText(QObject::tr("A full install will erase the entire drive and repartition.  An upgrade will only format or overlay the first parition of the drive."));
-+    gc->setHelpText(QObject::tr("Full install will erase the entire drive and repartition. Upgrade will format only the first parition of the drive. Only LinHES R8.0 or newer can use Upgrade."));
- 
-     return gc;
- }
-@@ -48,7 +48,7 @@
- #endif
-     gc->setLabel(QObject::tr("OS size (GB)"));
-     gc->setValue(2);
--    gc->setHelpText(QObject::tr(""  ));
-+    gc->setHelpText(QObject::tr("Amount of space allocated for the root OS."  ));
- 
-     return gc;
- }
-@@ -68,7 +68,7 @@
-     HostSpinBox *gc = new HostSpinBox("HOSTHOMEsize", 1, 1500, 1, true);
-     gc->setLabel(QObject::tr("Home dir size (GB)"));
-     gc->setValue(3);
--    gc->setHelpText(QObject::tr("Amount of space allocated for home directories.   Three - Five GB will be sufficient for most people.  This space will be formatted the same as the root OS"  ));
-+    gc->setHelpText(QObject::tr("Amount of space allocated for the home directories partition. Three to five GB will be sufficient for most people. The home partition will be the same filesystem as the root OS."  ));
- 
-     return gc;
- }
-@@ -79,7 +79,7 @@
-     HostSpinBox *gc = new HostSpinBox("HOSTDatabasesize", 1, 20, 1, true);
-     gc->setLabel(QObject::tr("Database partition size (GB)"));
-     gc->setValue(4);
--    gc->setHelpText(QObject::tr("Amount of space allocated for the database. One or Two  GB is more then enough for the avg user.  This space will be formated with ext3"  ));
-+    gc->setHelpText(QObject::tr("Amount of space allocated for the database partition. Two GB is more then enough for most people. The database partition space will be formatted with the ext3 filesystem."  ));
- 
-     return gc;
- }
-@@ -111,7 +111,7 @@
-     HostSpinBox *gc = new HostSpinBox("HOSTSWAPsize", 128, 128000, 128, true);
-     gc->setLabel(QObject::tr("Swapspace size (MB)"));
-     gc->setValue(mem);
--    gc->setHelpText(QObject::tr(""  ));
-+    gc->setHelpText(QObject::tr("Amount of space allocated for the swap partition."  ));
- 
-     return gc;
- }
-@@ -130,7 +130,7 @@
-     HostCheckBox *gc = new HostCheckBox("HostUseALLdata");
-     gc->setLabel(QObject::tr("Use all remaining space for data"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("If checked myth will use the rest of the drive for the data.  Otherwise you will be able to set the size of the partition."));
-+    gc->setHelpText(QObject::tr("If checked the remaining space on the drive will be used for storage. Otherwise you can set the size of the partition."));
-     return gc;
- };
- 
-@@ -146,7 +146,7 @@
-     gc->addSelection("xfs");
-     //gc->addSelection("btrfs");
- 
--    gc->setHelpText(QObject::tr("Filesystem for data. "));
-+    gc->setHelpText(QObject::tr("Filesystem type for data storage."));
- 
-     return gc;
- }
-@@ -163,7 +163,7 @@
-     //gc->addSelection("btrfs");
-     gc->addSelection("Do_not_format");
- 
--    gc->setHelpText(QObject::tr("Filesystem for OS. "));
-+    gc->setHelpText(QObject::tr("Filesystem type for OS. "));
- 
-     return gc;
- }
-@@ -179,7 +179,7 @@
-     //gc->addSelection("btrfs");
-     //gc->addSelection("xfs");
- 
--    gc->setHelpText(QObject::tr("Filesystem for OS.  "));
-+    gc->setHelpText(QObject::tr("Filesystem type for root OS."));
- 
-     return gc;
- }
-@@ -233,6 +233,7 @@
- public:
-     Installationtype():
-         TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) {
-+        setLabel(QObject::tr("LinHES Install"));
-         Setting *Mtemplate = HOSTinstallationtype();
-         addChild(Mtemplate);
-         setTrigger(Mtemplate);
diff --git a/abs/core/mythinstall/installdialog.cpp.patch b/abs/core/mythinstall/installdialog.cpp.patch
deleted file mode 100644
index b188bab..0000000
--- a/abs/core/mythinstall/installdialog.cpp.patch
+++ /dev/null
@@ -1,75 +0,0 @@
---- installdialog.cpp.orig	2013-12-05 21:06:13.358926594 +0000
-+++ installdialog.cpp	2013-12-06 17:26:16.491833828 +0000
-@@ -881,50 +881,32 @@
-             }
-             if ( flag )
-             {
--                tflag =  1;
--            }
--            else
--            {
--                cout << "searching for knoppmyth-versin" << endl;
--                //couldn't open /etc/systemconfig, so now look for /tmp/etc/Knoppmyth-version
--                QFile file("/tmp/etc/KnoppMyth-version");
--                if ( file.exists() )
--                {   //appears to be a knoppmyth version, proceed
--                    cout << "found knoppmyth-version" << endl;
--                    QFile kmfile("/tmp/etc/hostname");
--                    if ( kmfile.open(QIODevice::ReadOnly | QIODevice::Text) )
--                    {
--                        Q3TextStream t( &kmfile );        // use a text stream
--                        line = t.readLine();
--                        flag=true;
--                        currentitem = line.stripWhiteSpace();
--                        current_hostname =  currentitem   ;
--                        //gCoreContext->ActivateSettingsCache(true);
--                        gCoreContext->ClearSettingsCache();
--                        //FixME
--                        //gCoreContext->SetSetting("HostMyhostname",current_hostname);
--                        gCoreContext->SaveSetting("HostMyhostname",current_hostname);
--                    }
--                    kmfile.close();
--                    runNextSetting = ask_validate_network();
--                }
--                else
-+                //check if LinHES-release is 8.0 or newer
-+                cout << "searching for LinHES-release" << endl;
-+                //look for /tmp/etc/LinHES-release
-+                QFile file("/tmp/etc/LinHES-release");
-+                if ( file.open(QIODevice::ReadOnly | QIODevice::Text) )
-                 {
--                    //popup things went wrong
--                    DialogCode returncode  = MythPopupBox::Show2ButtonPopup(GetMythMainWindow(),
--                                             QString(""),
--                                             QObject::tr("Couldn't find the old config file, proceed with update?"),
--                                             QObject::tr("No"), QObject::tr("Yes"), kDialogCodeButton1);
--                    if ( returncode == kDialogCodeButton1 )
-+                    Q3TextStream t( &file );        // use a text stream
-+                    while ( !t.eof() )
-                     {
--                        runNextSetting = ask_validate_network();
--                    }
--                    else if ( returncode == kDialogCodeButton0 )
--                    {
--                        runNextSetting = 1;
-+                        line = t.readLine();
-+                        if ( line.contains("8.") )
-+                        {
-+                            tflag = 1;
-+                        }
-                     }
-+                    file.close();
-                 }
--
-+            }
-+            if ( tflag == 0 )
-+            {
-+                //popup install doesn't look like R8
-+                MythPopupBox::showOkPopup(
-+                    GetMythMainWindow(),
-+                    QObject::tr(""),
-+                    QObject::tr("The selected disk cannot be upgraded because it is older than LinHES R8.0."));
-+                runNextSetting = 1;
-             }
-         }
-     }
diff --git a/abs/core/mythinstall/installsettings.cpp.patch b/abs/core/mythinstall/installsettings.cpp.patch
deleted file mode 100644
index 461d26d..0000000
--- a/abs/core/mythinstall/installsettings.cpp.patch
+++ /dev/null
@@ -1,532 +0,0 @@
---- installsettings.cpp.orig	2013-12-06 17:34:15.794137303 +0000
-+++ installsettings.cpp	2013-12-07 17:31:13.642325676 +0000
-@@ -67,7 +67,7 @@
-     HostLineEdit *gc = new HostLineEdit("HostDDnslogin");
-     gc->setLabel(QObject::tr("Login"));
-     gc->setValue("");
--    gc->setHelpText(QObject::tr("Login for ddns account"));
-+    gc->setHelpText(QObject::tr("Login for DDNS account."));
-     return gc;
- };
- 
-@@ -77,7 +77,7 @@
-     gc->setLabel(QObject::tr("Password"));
-     gc->setValue("");
-     gc->SetPasswordEcho(true);
--    gc->setHelpText(QObject::tr("Password for ddns account."));
-+    gc->setHelpText(QObject::tr("Password for DDNS account."));
-     return gc;
- };
- 
-@@ -93,7 +93,7 @@
- static HostCheckBox *HostDDnsEnable()
- {
-     HostCheckBox *gc = new HostCheckBox("HostDDnsEnable");
--    gc->setLabel(QObject::tr("Enable DDNS support"));
-+    gc->setLabel(QObject::tr("Enable DDNS"));
-     gc->setValue(false);
-     gc->setHelpText(QObject::tr("Update DDNS records at dyndns.com. Visit http://dyndns.com to setup your account."));
-     return gc;
-@@ -103,7 +103,7 @@
- public:
-     DDnssettings():
-         TriggeredConfigurationGroup(false,false,false,false) {
--        setLabel(QObject::tr("DDNS settings"));
-+        setLabel(QObject::tr("DDNS Settings"));
-         SetVertical(true);
-         Setting* trigger = HostDDnsEnable() ;
-         addChild(trigger);
-@@ -321,9 +321,9 @@
- static HostCheckBox *HostBEWait()
- {
-     HostCheckBox *gc = new HostCheckBox("HostBEWait");
--    gc->setLabel(QObject::tr("Delay starting the frontend until the server is ready"));
-+    gc->setLabel(QObject::tr("Delay starting mythfrontend until mythbackend is running"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("The system will check if the backend is online before starting mythfrontend.  This is useful to avoid unwanted connection errors or configuration screens. "));
-+    gc->setHelpText(QObject::tr("The system will check if mythbackend is online before starting mythfrontend. This will avoid connection errors and configuration screens."));
-     return gc;
- };
- 
-@@ -370,9 +370,9 @@
- static HostCheckBox *HostServiceMythWEB()
- {
-     HostCheckBox *gc = new HostCheckBox("HostServiceMythWEB");
--    gc->setLabel(QObject::tr("Enable Mythweb"));
-+    gc->setLabel(QObject::tr("Enable MythWeb"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Allow scheduling using a web browser"));
-+    gc->setHelpText(QObject::tr("Allow MythTV scheduling using a web browser."));
-     return gc;
- };
- 
-@@ -416,9 +416,9 @@
- static HostCheckBox *HostRunDHCP()
- {
-     HostCheckBox *gc = new HostCheckBox("HostRunDHCP");
--    gc->setLabel(QObject::tr("DHCP server"));
-+    gc->setLabel(QObject::tr("DHCP Server"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Only one dhcp server should run on a network.  Leave this unchecked if your unsure."));
-+    gc->setHelpText(QObject::tr("Only one DHCP server should run on a network. Leave this unchecked if you are not sure."));
-     return gc;
- };
- 
-@@ -436,16 +436,16 @@
-     HostCheckBox *gc = new HostCheckBox("HostUseMythWelcome");
-     gc->setLabel(QObject::tr("Run MythWelcome"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("If this option is checked mythwelcome will be started first."));
-+    gc->setHelpText(QObject::tr("If checked mythwelcome will be started instead of mythfrontend."));
-     return gc;
- };
- 
- static HostCheckBox *HostRunFrontend()
- {
-     HostCheckBox *gc = new HostCheckBox("HostRunFrontend");
--    gc->setLabel(QObject::tr("Run the Frontend."));
-+    gc->setLabel(QObject::tr("Run Frontend"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("When checked the frontend will start.  Most people will want this checked."));
-+    gc->setHelpText(QObject::tr("If checked the frontend X windows GUI will start. Most people will want this checked. Disable the frontend if you want the system to run without a display connected."));
-     return gc;
- };
- 
-@@ -500,7 +500,7 @@
-     HostCheckBox *gc = new HostCheckBox("HostRemoteBackup");
-     gc->setLabel(QObject::tr("Remote Backup"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Copy the system backup file to another dir or host.   Supplemental services must be installed to copy the file to a remote host."));
-+    gc->setHelpText(QObject::tr("Copy the system backup file to another directory or host."));
-     return gc;
- };
- 
-@@ -509,7 +509,7 @@
- {
-     QString tempItem;
-     HostComboBox *gc = new HostComboBox("HostRemoteBackupDir",true);
--    gc->setLabel(QObject::tr("dir or host" ));
-+    gc->setLabel(QObject::tr("  Dir or Host" ));
-     gc->addSelection("dir:/data/storage/disk0");
-     MSqlQuery query(MSqlQuery::InitCon());
- 
-@@ -573,18 +573,18 @@
- static HostCheckBox *HostncidClient()
- {
-     HostCheckBox *gc = new HostCheckBox("HostncidClient");
--    gc->setLabel(QObject::tr("Show Callerid"));
-+    gc->setLabel(QObject::tr("Show CallerID"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Callerid popup, backend must be running the callerid program"));
-+    gc->setHelpText(QObject::tr("Show CallerID popup. The backend must be running the CallerID program."));
-     return gc;
- };
- 
- static HostCheckBox *HostncidDaemon()
- {
-     HostCheckBox *gc = new HostCheckBox("HostncidDaemon");
--    gc->setLabel(QObject::tr("Run Callerid "));
-+    gc->setLabel(QObject::tr("Run CallerID"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Run Daemon to collect callerid info"));
-+    gc->setHelpText(QObject::tr("Run daemon to collect CallerID information."));
-     return gc;
- };
- 
-@@ -614,9 +614,9 @@
- static HostCheckBox *Hostbootsplash()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostbootsplash");
--    gc->setLabel(QObject::tr("Enable bootsplash"));
-+    gc->setLabel(QObject::tr("Enable Boot Splash"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Covers up boot messages. "));
-+    gc->setHelpText(QObject::tr("Covers up boot messages with LinHES logo."));
-     return gc;
- };
- 
-@@ -752,80 +752,80 @@
- static HostCheckBox *Hostaccessnetwork()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccessnetwork");
--    gc->setLabel(QObject::tr("Network "));
-+    gc->setLabel(QObject::tr("Network"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Control access to network screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Network Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccesshostype()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccesshostype");
--    gc->setLabel(QObject::tr("hostype "));
-+    gc->setLabel(QObject::tr("Host"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to hostype screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Host Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *HostaccesshostypeSystemtype()
- {
-     HostCheckBox *gc = new HostCheckBox("HostaccesshostypeSystemtype");
--    gc->setLabel(QObject::tr("Change hostype"));
-+    gc->setLabel(QObject::tr("Change System Type"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Ability to change sql server and system type. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Ability to change the System Type in Host Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccessmisc()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccessmisc");
--    gc->setLabel(QObject::tr("misc "));
-+    gc->setLabel(QObject::tr("Miscellanous"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to misc screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Miscellanous Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccesssleep()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccesssleep");
--    gc->setLabel(QObject::tr("sleep "));
-+    gc->setLabel(QObject::tr("Shutdown"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to sleep screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Shutdown Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccessadvanced()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccessadvanced");
--    gc->setLabel(QObject::tr("advanced "));
-+    gc->setLabel(QObject::tr("Advanced"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to advanced screen. Checked means the screen is enabled. "));
-+    gc->setHelpText(QObject::tr("Control access to Advanced Settings. Checked means the screen is enabled. "));
-     return gc;
- };
- 
- static HostCheckBox *HostaccessadvancedX()
- {
-     HostCheckBox *gc = new HostCheckBox("HostaccessadvancedX");
--    gc->setLabel(QObject::tr("advancedX "));
-+    gc->setLabel(QObject::tr("Display"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to advancedX screen. Checked means the screen is enabled. "));
-+    gc->setHelpText(QObject::tr("Control access to Display Settings. Checked means the screen is enabled. "));
-     return gc;
- };
- static HostCheckBox *Hostaccesssound()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccesssound");
--    gc->setLabel(QObject::tr("sound "));
-+    gc->setLabel(QObject::tr("Audio"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to sound screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Audio Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccessplugins()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccessplugins");
--    gc->setLabel(QObject::tr("plugins"));
-+    gc->setLabel(QObject::tr("Programs"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to plugin screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Programs. Checked means the screen is enabled."));
-     return gc;
- };
- 
-@@ -834,25 +834,25 @@
-     HostCheckBox *gc = new HostCheckBox("Hostaccessuser");
-     gc->setLabel(QObject::tr("User"));
-     gc->setValue(false);
--    gc->setHelpText(QObject::tr("Control access to the user managment screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to User Management Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccesswebuser()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccesswebuser");
--    gc->setLabel(QObject::tr("Web password"));
-+    gc->setLabel(QObject::tr("Web Security"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to the web password screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to Web Security Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
- static HostCheckBox *Hostaccessvnc()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccessvnc");
--    gc->setLabel(QObject::tr("VNC "));
-+    gc->setLabel(QObject::tr("VNC"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to the vnc password screen. Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to VNC Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
-@@ -860,9 +860,9 @@
- static HostCheckBox *Hostaccessfileshare()
- {
-     HostCheckBox *gc = new HostCheckBox("Hostaccessfileshare");
--    gc->setLabel(QObject::tr("fileshare "));
-+    gc->setLabel(QObject::tr("File Sharing"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Control access to the fileshare.  Checked means the screen is enabled."));
-+    gc->setHelpText(QObject::tr("Control access to File Sharing Settings. Checked means the screen is enabled."));
-     return gc;
- };
- 
-@@ -2202,7 +2202,7 @@
- public:
-     NetworkSettingsFrame():
-         TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) {
--        setLabel(QObject::tr("Network Settings Page (1/2)"));
-+        setLabel(QObject::tr("Network Settings (1/2)"));
-         Setting* netdevice = HostNetDevice();
-         addChild(netdevice);
-         setTrigger(netdevice);
-@@ -2349,6 +2349,7 @@
- NetworkOptionsFrame::NetworkOptionsFrame():
-     VerticalConfigurationGroup(false,false,false,false)
- {
-+    setLabel(QObject::tr("Network Settings (2/2)"));
-     HostMyhostname = new HostComboBox("HostMyhostname",true);
-     HostMyhostname->setLabel(QObject::tr("Hostname"));
-     HostMyhostname->addSelection("Envy");
-@@ -2366,9 +2367,7 @@
-     HostMyhostname->addSelection("Faith");
-     HostMyhostname->addSelection("Zeal");
-     HostMyhostname->addSelection("type_hostname_here");
--    HostMyhostname->setHelpText(QObject::tr("The hostname must resolve via DNS. \
--    If DNS is not available then append .local to the end of the hostname. \
--    When using .local, names must not include additional ."));
-+    HostMyhostname->setHelpText(QObject::tr("The hostname must resolve via DNS. If DNS is not available then append .local to the end of the hostname. When using .local, names must not include an additional ."));
- 
-     FetchDhcpHostnameButton = new TransButtonSetting();
-     FetchDhcpHostnameButton ->setLabel(tr("Ask DHCP server for hostname"));
-@@ -2494,9 +2493,9 @@
- static HostCheckBox *HostUseXLargeMouse()
- {
-     HostCheckBox *gc = new HostCheckBox("HostUseXLargeMouse");
--    gc->setLabel(QObject::tr("Large mouse pointer"));
-+    gc->setLabel(QObject::tr("Large Mouse Pointer"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Use extra large mouse pointer(requires restart of frontend)"));
-+    gc->setHelpText(QObject::tr("Use an extra large mouse pointer. This takes effect the next time the frontend is started."));
-     return gc;
- };
- 
-@@ -2549,7 +2548,7 @@
- SystemtypeGroup::SystemtypeGroup():        TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
-     setLabel(QObject::tr("System Type"));
-     HostSystemType = new HostComboBox("HostSystemType");
--    HostSystemType->setLabel(QObject::tr("Type of system setup"));
-+    HostSystemType->setLabel(QObject::tr("          System Type"));
-     HostSystemType->addSelection("Master_backend");
-     HostSystemType->addSelection("Frontend_only");
- //     HostSystemType->addSelection("Standalone");
-@@ -2608,13 +2607,13 @@
-     }
- 
-     if (selectedhostype == "Standalone")
--        msg="Complete System, that doesn't allow outside connections";
-+        msg="Complete System, that doesn't allow outside connections.";
-     if (selectedhostype == "Frontend_only")
--        msg="Frontend only, needs a  primary system (master backend) already on the network";
-+        msg="Frontend_only needs a primary system (master backend) already on the network.";
-     if (selectedhostype ==  "Master_backend")
--        msg="Primary system with tuners, scheduling and database.  This allows for remote frontend and slave backends";
-+        msg="Primary system with tuners, scheduling and database. This allows for remote frontend and slave backends.";
-     if (selectedhostype == "Slave_backend")
--        msg="Secondary system for extra tuners";
-+        msg="Secondary system for extra tuners.";
- 
-     HostSystemType->setHelpText(msg) ;
- }
-@@ -2670,7 +2669,7 @@
-         TriggeredConfigurationGroup(true,true,true,true,true,true,true,true)
-     {
- 
--        setLabel(QObject::tr("Advanced settings (1/2)"));
-+        setLabel(QObject::tr("Advanced Settings (1/2)"));
-         Setting* Autodown = HostAutodown();
-         setTrigger(Autodown);
-         hostparm.ThisSystemType 	= gCoreContext->GetSetting("HostSystemType");
-@@ -2723,7 +2722,7 @@
- public:
-     AdvancedSettings_2():
-         TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
--        setLabel(QObject::tr("Advanced settings (2/2)"));
-+        setLabel(QObject::tr("Advanced Settings (2/2)"));
-         Setting* Autodown = HostAutodown();
-         setTrigger(Autodown);
-         hostparm.ThisSystemType     = gCoreContext->GetSetting("HostSystemType");
-@@ -2767,15 +2766,15 @@
- /*_______________________________Sound settings ____________________*/
- SoundSettings::SoundSettings():
-     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
--    setLabel(QObject::tr("Audio out settings"));
-+    setLabel(QObject::tr("Audio Settings"));
- 
-     HostAudiotype = new HostComboBox("HostAudiotype",false);
--    HostAudiotype->setLabel(QObject::tr("Sound card driver"));
-+    HostAudiotype->setLabel(QObject::tr("Sound Card Driver"));
-     HostAudiotype->addSelection("OSS");
-     HostAudiotype->addSelection("ALSA");
-     HostAudiotype->addSelection("tinker");
- 
--    HostAudiotype->setHelpText(QObject::tr("Select the sound driver set to use (OSS or ALSA)." ) );
-+    HostAudiotype->setHelpText(QObject::tr("Select the sound driver, OSS or ALSA." ) );
-     addChild(HostAudiotype);
-     setTrigger(HostAudiotype);
- 
-@@ -2826,10 +2825,10 @@
-     osslabel->setValue("The original OSS! More information can be found at:");
- 
-     TransLabelSetting *osslabel1 = new TransLabelSetting();
--    osslabel1->setValue("http://www.opensound.com  \n\nPlease note to fully configure sound visit the \nmythtv audio setup screens\n");
-+    osslabel1->setValue("http://www.opensound.com  \n\nPlease note to fully configure sound visit the \nMythTV audio setup.\n");
- 
-     TransLabelSetting *AlsaLabel = new TransLabelSetting();
--    AlsaLabel->setValue("ALSA, the alternative to OSS\n\nPlease note to fully configure sound visit the \nmythtv audio setup screens\n");
-+    AlsaLabel->setValue("ALSA, the alternative to OSS\n\nPlease note to fully configure sound visit the \nMythTV audio setup.\n");
- 
- // OSS GROUP
-     SoundOSSsettings  *OSS = new SoundOSSsettings ;
-@@ -4477,7 +4476,7 @@
-             //Check to see if screen is allowed to appear
-             if (  ((gCoreContext->GetSetting("Hostaccessnetwork"))  == "0" )  )
-             {
--                denied ->setLabel(QObject::tr("Network settings"));
-+                denied ->setLabel(QObject::tr("Network Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4528,7 +4527,7 @@
-         {
-             if (  ((gCoreContext->GetSetting("Hostaccesshostype")) =="0" ))
-             {
--                denied ->setLabel(QObject::tr("System type"));
-+                denied ->setLabel(QObject::tr("Host Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4548,7 +4547,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("HostaccessadvancedX")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("AdvancedX Settings"));
-+                denied ->setLabel(QObject::tr("Display Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4562,7 +4561,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessvnc")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("VNC settings"));
-+                denied ->setLabel(QObject::tr("VNC Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4576,7 +4575,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessfileshare")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("File Share settings"));
-+                denied ->setLabel(QObject::tr("File Sharing Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4595,7 +4594,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessmisc")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("Misc"));
-+                denied ->setLabel(QObject::tr("Miscellanous"));
-                 addChild(denied);
-             }
-             else
-@@ -4618,7 +4617,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccesssleep")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("WOL settings"));
-+                denied ->setLabel(QObject::tr("Shutdown Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4647,7 +4646,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccesssound")) =="0") )
-             {
--                denied ->setLabel(QObject::tr("Sound Settings"));
-+                denied ->setLabel(QObject::tr("Audio Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4705,7 +4704,7 @@
-             accessettings->addChild(Hostaccessnetwork());
-             accessettings->addChild(new ACCESShostsettings);
-             accessettings->addChild(GridAccess);
--            accessettings ->setLabel(QObject::tr("Access control"));
-+            accessettings ->setLabel(QObject::tr("Access Control Settings"));
-             addChild(accessettings);
-         }
- 
-@@ -4713,7 +4712,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessplugins")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("Plugins"));
-+                denied ->setLabel(QObject::tr("Programs"));
-                 addChild(denied);
-             }
-             else
-@@ -4754,7 +4753,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessplugins")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("Software"));
-+                denied ->setLabel(QObject::tr("Programs"));
-                 addChild(denied);
-             }
-             else
-@@ -4788,7 +4787,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessuser")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("User Management"));
-+                denied ->setLabel(QObject::tr("User Management Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4802,7 +4801,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccesswebuser")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("Web security"));
-+                denied ->setLabel(QObject::tr("Web Security Settings"));
-                 addChild(denied);
-             }
-             else
-@@ -4817,7 +4816,7 @@
-         {
-             if ( ((gCoreContext->GetSetting("Hostaccessddns")) == "0" ))
-             {
--                denied ->setLabel(QObject::tr("DDNS security"));
-+                denied ->setLabel(QObject::tr("DDNS Settings"));
-                 addChild(denied);
-             }
-             else
diff --git a/abs/core/mythinstall/misc_settings.cpp.patch b/abs/core/mythinstall/misc_settings.cpp.patch
deleted file mode 100644
index 0afaf0a..0000000
--- a/abs/core/mythinstall/misc_settings.cpp.patch
+++ /dev/null
@@ -1,53 +0,0 @@
---- misc_settings.cpp.orig	2013-12-07 17:56:37.984108492 +0000
-+++ misc_settings.cpp	2013-12-07 18:14:07.783476609 +0000
-@@ -11,20 +11,20 @@
- static HostCheckBox *HostShowToolTips()
- {
-     HostCheckBox *gc = new HostCheckBox("HostShowToolTips");
--    gc->setLabel(QObject::tr("Show shortcuts"));
-+    gc->setLabel(QObject::tr("Show Shortcuts"));
-     gc->setValue(true);
--    gc->setHelpText(QObject::tr("Shows a popup window describing how to open a console and various other items."));
-+    gc->setHelpText(QObject::tr("Shows a window describing how to open a console and various other items."));
-     return gc;
- };
- 
- static HostComboBox *Hostupdateplan()
- {
-     HostComboBox *gc = new HostComboBox("Hostupdateplan");
--    gc->setLabel(QObject::tr("Automatic updates"));
-+    gc->setLabel(QObject::tr("Automatic Updates"));
-     gc->addSelection("None");
-     gc->addSelection("Myth_only");
-     gc->addSelection("All");
--    gc->setHelpText("Download and apply updates.  None: Will not download any updates , Myth_only: automatic updates for MythTV, All: Automatic updates for the entire system.");
-+    gc->setHelpText("None: Do not install updates automatically.\nMyth_only: Automatically installs updates for MythTV only.\nAll: Automatically installs all updates for LinHES.");
-     return gc;
- 
- }
-@@ -43,6 +43,7 @@
-     VerticalConfigurationGroup(false,false,false,false)
- 
- {
-+    setLabel(QObject::tr("Miscellaneous Settings"));
-     bool MVAPP;
- #ifdef __MVAPP__
-     MVAPP = true ;
-@@ -238,7 +239,7 @@
- 
- void TimezoneRegion::timezoneregion_fillselection_zone()
- {
--    HostTimeZoneRegion->setLabel(QObject::tr("TimeZone"));
-+    HostTimeZoneRegion->setLabel(QObject::tr("Time Zone"));
-     HostTimeZoneRegion->addSelection("US");
-     HostTimeZoneRegion->addSelection("Pacific");
-     HostTimeZoneRegion->addSelection("Mideast");
-@@ -302,7 +303,7 @@
-     HostTimeZoneRegion->addSelection("Cuba");
-     HostTimeZoneRegion->addSelection("CST6CDT");
-     HostTimeZoneRegion->addSelection("CET");
--    HostTimeZoneRegion->setHelpText(QObject::tr("Timezone Region"));
-+    HostTimeZoneRegion->setHelpText(QObject::tr("Time Zone Region"));
- }
- 
- void TimezoneRegion::timezoneregion_fillselection(QString tzonefile )
diff --git a/abs/core/mythinstall/xorgsettings.cpp.patch b/abs/core/mythinstall/xorgsettings.cpp.patch
deleted file mode 100644
index 7678b9c..0000000
--- a/abs/core/mythinstall/xorgsettings.cpp.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- xorgsettings.cpp.orig	2013-12-06 22:24:53.351187115 +0000
-+++ xorgsettings.cpp	2013-12-06 23:18:44.107475010 +0000
-@@ -551,7 +551,7 @@
- 
- // AdvancedXSettings::AdvancedXSettings():
- //     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
--//     setLabel(QObject::tr("Advanced X  settings"));
-+//     setLabel(QObject::tr("Display Settings"));
- //     Setting* Advancedxsettings = HostXUseAdvanced();
- //     addChild(Advancedxsettings);
- //     setTrigger(Advancedxsettings);
-@@ -596,18 +596,18 @@
- 
- AdvancedXSettings::AdvancedXSettings():
-     TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) {
--    setLabel(QObject::tr("Advanced X  settings"));
-+    setLabel(QObject::tr("Display Settings"));
- 
- 
- 
- 
-     HostXIgnoreConfig = new HostCheckBox("HostXIgnoreConfig");
--    HostXIgnoreConfig->setLabel(QObject::tr("User supplied config. "));
-+    HostXIgnoreConfig->setLabel(QObject::tr("User Supplied Configuration"));
-     HostXIgnoreConfig->setValue(false);
- #ifdef __MVAPP__
--    HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU.  Place the file you want to use in /data/home/mythtv/templates/xorg.user."));
-+    HostXIgnoreConfig->setHelpText(QObject::tr("If checked, the system will use the configuration file provided by YOU. Place your configuration file in /data/home/mythtv/templates/xorg.user."));
- #else
--    HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU.  Place the file you want to use in /home/mythtv/templates/xorg.user."));
-+    HostXIgnoreConfig->setHelpText(QObject::tr("If checked, the system will use the configuration file provided by YOU. Place your configuration file in /data/home/mythtv/templates/xorg.user."));
- #endif
- 
-     Setting* Advancedxsettings = HostXIgnoreConfig;
diff --git a/abs/core/mythinstall/xorgsettings.h.patch b/abs/core/mythinstall/xorgsettings.h.patch
deleted file mode 100644
index d774899..0000000
--- a/abs/core/mythinstall/xorgsettings.h.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- xorgsettings.h.orig	2013-12-06 22:40:05.424359651 +0000
-+++ xorgsettings.h	2013-12-06 22:40:31.537678172 +0000
-@@ -105,7 +105,7 @@
- //Used in the simple config
- {
-     HostComboBox *gc = new HostComboBox("HostXres");
--    gc->setLabel(QObject::tr("Initial resolution"));
-+    gc->setLabel(QObject::tr("Initial Resolution"));
-     gc->addSelection("Auto") ;
-     gc->setHelpText(QObject::tr(""));
-     system ("print_xorg_res.py");
-- 
cgit v0.12


From 4ae50c913a901b6e73a4825e2054a57978a0bd22 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 9 Dec 2013 18:26:38 -0600
Subject: mythtv & mythplugins: update to latest .27/fixes. refs #933

add systemconfig.py -m config_xml to mythtv.install to make sure config.xml is created.

made a few changes to LinHES Settings
---
 abs/core/mythtv/stable-0.27/git_src/git_hash               |  2 +-
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD           |  2 +-
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD                |  6 +++---
 .../mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml   | 14 +++++++-------
 abs/core/mythtv/stable-0.27/mythtv/mythtv.install          |  1 +
 5 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index 04945da..53e3e8d 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-cb744f810c6133aa293ad95d65225890371951f0
+f7852552a089a87d7dd53b5da59958205fbae6fd
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index 00814e2..196f8be 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=5
+pkgrel=6
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index f98b3db..59aa538 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=5
+pkgrel=6
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
@@ -8,8 +8,8 @@ url="http://www.mythtv.org/"
 license=('GPL')
 depends=('avahi' 'faad2' 'fftw' 'glew' 'lame' 'libass' 'libavc1394' 'libcdio'
          'libcec' 'libcrystalhd-git' 'libiec61883' 'libva' 'libvdpau' 'libvpx'
-         'libxinerama' 'libxrandr' 'libxml2' 'lirc-utils' 'mysql-clients'
-         'mysql-python' 'openssl' 'perl-date-manip' 'perl-dbd-mysql'
+         'libxinerama' 'libxrandr' 'libxml2' 'LinHES-config>=8.1-6' 'lirc-utils'
+         'mysql-clients' 'mysql-python' 'openssl' 'perl-date-manip' 'perl-dbd-mysql'
          'perl-io-socket-inet6' 'perl-libwww' 'perl-math-round'
          'perl-net-upnp' 'perl-soap-lite' 'perl-xml-sax' 'python-pycurl'
          'python2-lxml' 'qt' 'qtwebkit' 'taglib' 'urlgrabber' 'x264' 'xmltv')
diff --git a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
index 2577ed0..e454959 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
+++ b/abs/core/mythtv/stable-0.27/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -9,7 +9,7 @@
     <button>
         <type>MV_ADVANCED_SETUP_MENU</type>
         <text>Advanced</text>
-        <description>Manage Boot Screen, CallerID &amp; MythFrontend</description>
+        <description>Manage various Advanced Settings</description>
         <action>EXEC  mythinstall -s advanced</action>
     </button>
 
@@ -65,7 +65,7 @@
     <button>
         <type>MV_SOFTWARE_MENU</type>
         <text>Programs</text>
-        <description>Manage programs for the LinHES system</description>
+        <description>Manage programs for LinHES</description>
         <action>EXEC  mythinstall -s  plugins,software </action>
     </button>
 
@@ -93,21 +93,21 @@
    <button>
         <type>MV_SHUTDOWN_SETUP_MENU</type>
         <text>Shutdown</text>
-        <description>Set when to turn of the LinHES system</description>
+        <description>Set when to turn off LinHES</description>
         <action>EXEC  mythinstall -s sleep </action>
    </button>
-
+<!-- disabled in the db so no need to show
    <button>
         <type>MV_USER_SETUP_MENU</type>
         <text>User Accounts</text>
-        <description>Manage Users on the LinHES system</description>
+        <description>Manage Users on LinHES</description>
         <action>EXEC  mythinstall -s user </action>
    </button>
-
+-->
    <button>
         <type>MV_WEBACCESS_SETUP_MENU</type>
         <text>Web Security</text>
-        <description>Manage the password for the local website</description>
+        <description>Manage local website security</description>
         <action>EXEC  mythinstall -s webuser </action>
    </button>
 
diff --git a/abs/core/mythtv/stable-0.27/mythtv/mythtv.install b/abs/core/mythtv/stable-0.27/mythtv/mythtv.install
index 8e900ed..4ca5ebc 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/mythtv.install
+++ b/abs/core/mythtv/stable-0.27/mythtv/mythtv.install
@@ -2,6 +2,7 @@
 post_install() {
         gen_is_xml.py
         gen_lib_xml.py
+        systemconfig.py -m config_xml
 }
 
 pre_upgrade() {
-- 
cgit v0.12


From 607c551acfde02fef63c133565fe232191a6b6c4 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 10 Dec 2013 11:20:59 -0600
Subject: mythinstall: add Web Security header

---
 .../MythVantage-app/mythinstall/password_manage.cpp        | 14 +++++++-------
 abs/core/mythinstall/PKGBUILD                              |  8 +-------
 2 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp b/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp
index 4acfb9d..ed7d369 100755
--- a/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp
+++ b/abs/core/mythinstall/MythVantage-app/mythinstall/password_manage.cpp
@@ -321,7 +321,6 @@ void UserManagement::userdeletepopup()
 WebPassword::WebPassword():
     TriggeredConfigurationGroup(false,false,true,true,true,true,true,true)
 {
-    setLabel(QObject::tr("Web Security Settings"));
     webAuth  = new HostCheckBox("HOSTwebauth");
     webAuth->setLabel("Enable Password");
     webAuth->setHelpText(QObject::tr("Use password protection for the local website."));
@@ -348,7 +347,7 @@ WebPassword::WebPassword():
     connect(webpassToggleButton, SIGNAL(pressed()), this, SLOT(togglepass()));
     connect(webapplyButton, SIGNAL(pressed()),this , SLOT(webpassword_gathersettings()));
 
-    ConfigurationGroup* webpassgroup = new VerticalConfigurationGroup(false);
+    ConfigurationGroup* webpassgroup = new VerticalConfigurationGroup(false,false);
     webpassgroup->addChild(webuser);
     webpassgroup->addChild(webpassword);
     webpassgroup->addChild(info);
@@ -429,8 +428,9 @@ void WebPassword::webpassword_gathersettings()
 }
 
 WebPasswordFrame::WebPasswordFrame():
-    VerticalConfigurationGroup()
-{
-    WebPassword *webpassword = new WebPassword();
-    addChild(webpassword);
-}
+    VerticalConfigurationGroup(false,false)
+    {
+        setLabel(QObject::tr("Web Security Settings"));
+        WebPassword *webpassword = new WebPassword();
+        addChild(webpassword);
+    }
diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD
index 96f7b8d..9e18549 100644
--- a/abs/core/mythinstall/PKGBUILD
+++ b/abs/core/mythinstall/PKGBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Jams
 pkgname=mythinstall
 pkgver=8.1
-pkgrel=5
+pkgrel=6
 pkgdesc="LinHES installer/systemconfig GUI."
 arch=('i686' 'x86_64')
 depends=('mythtv>=0.27')
@@ -10,13 +10,7 @@ logofiles=`ls logo*.png`
 source=('install-ui.xml' $logofiles)
 
 build() {
-#    if [ -d $srcdir/MythVantage-app ]
-#    then
-#        msg "Removing old MythVantage-app src"
-#        rm -rf $srcdir/MythVantage-app
-#    fi
     msg "Copying MythVantage-app to src"
-#    cp -a $startdir/MythVantage-app $srcdir
     rsync -au $startdir/MythVantage-app $srcdir
 
     msg "Building mythinstall"
-- 
cgit v0.12


From f98e66f2bbab5165f3e5beca171b599ba6084573 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 10 Dec 2013 11:41:17 -0600
Subject: google-chrome: update to 31.0.1650.63

---
 abs/extra/google-chrome/PKGBUILD | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/abs/extra/google-chrome/PKGBUILD b/abs/extra/google-chrome/PKGBUILD
index 7000c9d..9127569 100644
--- a/abs/extra/google-chrome/PKGBUILD
+++ b/abs/extra/google-chrome/PKGBUILD
@@ -5,13 +5,13 @@
 # or use: $ curl -s https://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/other.xml.gz | gzip -df | awk -F\" '/pkgid/{ sub(".*-","",$4); print $4": "$10 }'
 
 pkgname=google-chrome
-pkgver=31.0.1650.57
+pkgver=31.0.1650.63
 pkgrel=1
 pkgdesc="An attempt at creating a safer, faster, and more stable browser (Stable Channel)"
 arch=('i686' 'x86_64')
 url="https://www.google.com/chrome"
 license=('custom:chrome')
-depends=('alsa-lib' 'gconf' 'gtk2' 'hicolor-icon-theme' 'libpng' 'libxslt' 'libxss' 'nss' 'ttf-font' 'xdg-utils')
+depends=('alsa-lib' 'gconf' 'gtk2' 'hicolor-icon-theme' 'libpng' 'libxslt' 'libxss' 'libxtst' 'nss' 'ttf-font' 'xdg-utils')
 optdepends=('kdebase-kdialog: needed for file dialogs in KDE'
             'ttf-google-fonts-git')
 provides=("google-chrome=$pkgver")
@@ -24,7 +24,7 @@ _arch=i386
 [ "$CARCH" = 'x86_64' ] && _arch=amd64
 source=("google-chrome-${_channel}_${pkgver}_${_arch}.deb::https://dl.google.com/linux/direct/google-chrome-${_channel}_current_${_arch}.deb"
         'https://www.google.com/intl/en/chrome/browser/privacy/eula_text.html')
-[ "$CARCH" = 'x86_64' ] && md5sums[0]='71b197df869c71ec662732b830e4e98d'
+[ "$CARCH" = 'x86_64' ] && md5sums[0]='83c6ddb1c281da8243aba0b5f2e3763f'
 
 #PKGEXT='.pkg.tar'
 
@@ -57,5 +57,5 @@ package() {
   msg2 "Rename google-chrome-stable to google-chrome"
   mv "$pkgdir"/usr/bin/google-chrome-stable "$pkgdir"/usr/bin/google-chrome
 }
-md5sums=('71b197df869c71ec662732b830e4e98d'
+md5sums=('83c6ddb1c281da8243aba0b5f2e3763f'
          '6d57da7476a4b1b7a81821d9c036425c')
-- 
cgit v0.12


From 90045f9eb43a0258addc5f1e8283d43f17ea7c56 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 10 Dec 2013 14:45:15 -0600
Subject: LinHES-system LinHES-start: add MYTH_RUN_STATUS

---
 abs/core/LinHES-system/LinHES-start | 1 +
 abs/core/LinHES-system/PKGBUILD     | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-system/LinHES-start b/abs/core/LinHES-system/LinHES-start
index 3157a2e..88ecffb 100755
--- a/abs/core/LinHES-system/LinHES-start
+++ b/abs/core/LinHES-system/LinHES-start
@@ -12,6 +12,7 @@
 #
 # $XFree86: xc/programs/xinit/startx.cpp,v 3.16tsi Exp $
 . /etc/profile
+MYTH_RUN_STATUS="1"
 
 unset DBUS_SESSION_BUS_ADDRESS
 unset SESSION_MANAGER
diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index d400e6d..48be7d5 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=7
+pkgrel=8
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -77,7 +77,7 @@ package() {
 
 md5sums=('7f5624a2d965a4cd3ed6a37ebee13fd9'
          'de32a1c50101265dd7f6ca5037f7a26a'
-         'a875ee97f86e46f34a741c2bc455f894'
+         '301884fb60521627fffd1160b2cf5181'
          '76b2637cac0452b3acdbeeb4e8a5474b'
          '79a63270794ef7de244af10dad51330a'
          '6f5b757524d905b5d2420519a88edc93'
-- 
cgit v0.12


From fd6e4fe79f52b5a35ff42178bc83c4c1194cea33 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 10 Dec 2013 15:05:30 -0600
Subject: LinHES-config: push release on post_install so new installs have the
 release in the Myth About menu.

---
 abs/core/LinHES-config/PKGBUILD       | 2 +-
 abs/core/LinHES-config/config.install | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 99f2213..25dd960 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=8.1
-pkgrel=6
+pkgrel=7
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
diff --git a/abs/core/LinHES-config/config.install b/abs/core/LinHES-config/config.install
index c9171a6..4c99e03 100644
--- a/abs/core/LinHES-config/config.install
+++ b/abs/core/LinHES-config/config.install
@@ -15,6 +15,7 @@ post_install() {
         echo "List of packages to ignore" > /etc/blacklist.package
         echo "one package per line" >> /etc/blacklist.package
     fi
+    cat /etc/LinHES-release > /etc/os_myth_release
 }
 
 # arg 1:  the new package version
-- 
cgit v0.12


From 103316d0eeb0845951b2750b9fcad3b6831caff4 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 10 Dec 2013 16:01:34 -0600
Subject: linhes-theme: add video-ui.xml.patch

change the size of the info done and play buttons in videos so when pushed the overlay is the right size
---
 abs/core/linhes-theme/PKGBUILD | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index d23da5a..3eda250 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,13 +1,14 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=10
+pkgrel=11
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
 patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
-         'menu-ui.xml.patch' 'recordings-ui.xml.patch' 'schedule-ui.xml.patch')
+         'menu-ui.xml.patch' 'recordings-ui.xml.patch' 'schedule-ui.xml.patch'
+         'video-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git#branch=fixes/0.27"
@@ -56,6 +57,7 @@ md5sums=('SKIP'
          '83b03852c6f46bc791bfa6e8c894ca01'
          '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
+         'e502da82e6d76b3f43dd7ddc20c1e2e7'
          '7d7bc458a8f4af408700609f3e1f412e'
          '909d7a8114436dcfc28a01d0d97ec11f'
          'cbe5f663ebb5d51abe811f81dafec303'
-- 
cgit v0.12


From 6c8c36f726c7cba3bf9091d97d9b2e49ead38597 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 10 Dec 2013 16:11:50 -0600
Subject: linhes-theme: add video-ui.xml.patch

---
 abs/core/linhes-theme/video-ui.xml.patch | 58 ++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 abs/core/linhes-theme/video-ui.xml.patch

diff --git a/abs/core/linhes-theme/video-ui.xml.patch b/abs/core/linhes-theme/video-ui.xml.patch
new file mode 100644
index 0000000..55fb750
--- /dev/null
+++ b/abs/core/linhes-theme/video-ui.xml.patch
@@ -0,0 +1,58 @@
+--- video-ui.xml.orig	2013-12-10 21:58:00.909431846 +0000
++++ video-ui.xml	2013-12-10 21:57:48.940952773 +0000
+@@ -3116,15 +3116,15 @@
+             <preserveaspect>false</preserveaspect>
+         </imagetype>
+ 
+-        <button name="done_button" from="base_wide_button">
+-            <area>25,443,390,40</area>
++        <button name="done_button" from="base_medium_button">
++            <area>50,443,350,40</area> 
+             <statetype name="buttonstate">
+                 <state name="active">
+                     <shape name="background" from="base_button_background_active">
+-                        <area>0,0,390,40</area>
++                        <area>0,0,350,40</area>
+                     </shape>
+                     <textarea name="buttontext">
+-                        <area>10,5,370,30</area>
++                        <area>10,5,330,30</area>
+                         <align>allcenter</align>
+                         <font>basesmall</font>
+                         <value>Done</value>
+@@ -3132,21 +3132,21 @@
+                 </state>
+                 <state name="selected" from="active">
+                     <shape name="background" from="base_button_background_selected">
+-                        <area>0,0,390,40</area>
++                        <area>0,0,350,40</area>
+                     </shape>
+                 </state>
+             </statetype>
+         </button>
+         
+-        <button name="play_button" from="base_wide_button">
+-            <area>435,443,390,40</area>
++        <button name="play_button" from="base_medium_button">
++            <area>450,443,350,40</area>
+             <statetype name="buttonstate">
+                 <state name="active">
+                     <shape name="background" from="base_button_background_active">
+-                        <area>0,0,390,40</area>
++                        <area>0,0,350,40</area>
+                     </shape>
+                     <textarea name="buttontext">
+-                        <area>10,5,370,30</area>
++                        <area>10,5,330,30</area>
+                         <align>allcenter</align>
+                         <font>basesmall</font>
+                         <value>Play</value>
+@@ -3154,7 +3154,7 @@
+                 </state>
+                 <state name="selected" from="active">
+                     <shape name="background" from="base_button_background_selected">
+-                        <area>0,0,390,40</area>
++                        <area>0,0,350,40</area>
+                     </shape>
+                 </state>
+             </statetype>
-- 
cgit v0.12


From 8ae3e21c370d8a60b4572f35ea8d1654bc197f9f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 11 Dec 2013 16:00:21 +0000
Subject: runit-scripts: msg_daemon run: add exec env to allow runit to control
 the service

---
 abs/core/runit-scripts/PKGBUILD                             | 2 +-
 abs/core/runit-scripts/runitscripts/services/msg_daemon/run | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index 1f1c12c..7c4de92 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=8.1
-pkgrel=3
+pkgrel=4
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core/runit-scripts/runitscripts/services/msg_daemon/run b/abs/core/runit-scripts/runitscripts/services/msg_daemon/run
index 76bb702..6f1b4b7 100755
--- a/abs/core/runit-scripts/runitscripts/services/msg_daemon/run
+++ b/abs/core/runit-scripts/runitscripts/services/msg_daemon/run
@@ -5,4 +5,5 @@ export TERM=linux
 . /etc/rc.d/functions
 . /etc/profile
 stat_runit "Starting osd message daemon"
-DISPLAY=127.0.0.1:0 /usr/LH/bin/msg_daemon.py
+exec env DISPLAY=127.0.0.1:0 /usr/LH/bin/msg_daemon.py
+
-- 
cgit v0.12


From 78e5c0eb57d6bd88bbf81ddbe9f474a0a896b298 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 11 Dec 2013 10:57:42 -0600
Subject: LinHES-system: myth_status.py: add support for color levels. refs
 #943 #945

remove diskspace.cron as xymon now monitors and notifies disk levels
---
 abs/core/LinHES-system/PKGBUILD       |  8 +++-----
 abs/core/LinHES-system/diskspace.cron |  2 --
 abs/core/LinHES-system/myth_status.py | 10 +++++++---
 3 files changed, 10 insertions(+), 10 deletions(-)
 delete mode 100755 abs/core/LinHES-system/diskspace.cron

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 48be7d5..e03cb7d 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=8
+pkgrel=9
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -28,7 +28,7 @@ binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh
  mythwelcome-config.py mythwelcome-set-alarm.sh mythwelcome-test-wakeup.sh"
 
 source=(LinHES-session LinHES-profile.sh $binfiles
-    alsa-base diskspace.cron cacheclean.cron xfs_defrag.cron
+    alsa-base cacheclean.cron xfs_defrag.cron
     readme_is_xml readme_light add_storage.readme
     system-sudo.rules msg.cfg)
 
@@ -61,7 +61,6 @@ package() {
     #cron files
     #install -m755 -D $srcdir/smolt.cron $pkgdir/etc/cron.weekly/smolt.cron
     install -m755 -D $srcdir/cacheclean.cron $pkgdir/etc/cron.weekly/cacheclean
-    install -m755 -D $srcdir/diskspace.cron $pkgdir/etc/cron.tenminutes/diskspace
     install -m755 -D $srcdir/xfs_defrag.cron $pkgdir/etc/cron.weekly/xfs_defrag
 
     #sudo rules
@@ -86,7 +85,7 @@ md5sums=('7f5624a2d965a4cd3ed6a37ebee13fd9'
          '542e670e78d117657f93141e9689f54d'
          '8da6a7f1703a002f84e66629e847d8a6'
          'bb72ab230c7a71706285bd0f31a4fb1f'
-         '07fc64580cc98aa28561730ac7695eca'
+         '42981e30e016c5f00b841b8490a3a489'
          '962a3e9eaba2d1466251b7ab0956705d'
          '1758aed160de64abfafb28a3a8f3390e'
          '33fbebbd546672cedd3c5e7350ab414e'
@@ -129,7 +128,6 @@ md5sums=('7f5624a2d965a4cd3ed6a37ebee13fd9'
          '95c092f67036a361ef7a57436f44332e'
          '410795ef9039e4c6c0484e706ecfd567'
          'eb879fee9603a05d5420d4ce8ed9e450'
-         '84492954db16740f949d795b74383189'
          '02c810c2f47b7c4495fdacaf54189473'
          '474d5c6883fcfffae4f199aceb3b1356'
          '36bdfa8d877cea20ca3870faf08e08d5'
diff --git a/abs/core/LinHES-system/diskspace.cron b/abs/core/LinHES-system/diskspace.cron
deleted file mode 100755
index ab3c91b..0000000
--- a/abs/core/LinHES-system/diskspace.cron
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-/usr/bin/nice -n19 /usr/LH/bin/diskspace.sh -osd
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index 0f2edfb..df8c84a 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -5,6 +5,7 @@
 from MythTV import MythBE,MythDB,MythLog
 import datetime,time,sys,subprocess,re
 import os,glob
+from socket import gethostname;
 
 def formatTD(td):
     days = td.days
@@ -56,6 +57,7 @@ def print_alerts():
             out_line=''
             datahost = ''
             dataservice = ''
+            datacolor = ''
             datadown = ''
             try:
                 #print "    myth_staus: reading in %s" %alert_file
@@ -76,14 +78,16 @@ def print_alerts():
                     datahost = value.strip()
                 elif data == 'SERVICE':
                     dataservice = value.strip()
+                elif data == 'COLOR':
+                    datacolor = value.strip()
                 elif data == 'DOWN':
                     datadown = value.strip()
                     sec=int(datadown)
                     td_sec = datetime.timedelta(seconds=sec)
                     td_sec_formated = formatTD(td_sec)
             
-            out_line ="    %s on %s  down for %s \n" %(dataservice,
-                                                           datahost,
+            out_line ="    %s on %s %s for %s \n" %(dataservice,
+                                                           datahost,datacolor.upper(),
                                                            td_sec_formated)
             out_alert += out_line
                 
@@ -91,7 +95,7 @@ def print_alerts():
         print "---------------"
         if len(out_alert) > 0:
             print out_alert 
-            print "    Please see the system health webpage for more information"
+            print "    Go to http://%s and click Health & Maintenance for more information." %gethostname()
         else:
             print "    All systems OK"
 
-- 
cgit v0.12


From 5f58ea928f87bc20e8bb8102f8ce6272d3d6fc47 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 11 Dec 2013 14:01:55 -0600
Subject: xymon: alerts.cfg and login_notify.sh: changes to push color to
 loging file. refs #945

---
 abs/core/xymon/PKGBUILD        | 6 +++---
 abs/core/xymon/alerts.cfg      | 2 +-
 abs/core/xymon/login_notify.sh | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/abs/core/xymon/PKGBUILD b/abs/core/xymon/PKGBUILD
index 5c55a66..e880b98 100755
--- a/abs/core/xymon/PKGBUILD
+++ b/abs/core/xymon/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=xymon
 pkgname=(xymonserver xymonclient)
 pkgver=4.3.5
-pkgrel=53
+pkgrel=54
 pkgdesc="Hobbit is a system for monitoring servers and networks. "
 license="GPL"
 arch=('i686' 'x86_64')
@@ -143,8 +143,8 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          '0469d775db9fdd18ea95dd41937ada82'
          '0757294eec13771f8e63da23cf066796'
          '6baa410da1dfb86435191f4805186ea7'
-         'a834dd134b6d640d753b1e26609d37df'
-         '9b5f3079c461f1e0a1b5fb805d073665'
+         '4bc37b700146e4f4206a729c835903b0'
+         '9af2ad60ac4c3cb653754618f603e311'
          'b8eb10070f2ad6a245d3da15091694ba'
          'b4e8641e97e6b689dbc634af785e6799'
          'e2844513e2c92e8b5084818f3b2a478d'
diff --git a/abs/core/xymon/alerts.cfg b/abs/core/xymon/alerts.cfg
index 3ba26bd..a5e5bc2 100755
--- a/abs/core/xymon/alerts.cfg
+++ b/abs/core/xymon/alerts.cfg
@@ -123,6 +123,6 @@ HOST=* SERVICE=func
 
 HOST=* SERVICE=* EXSERVICE=conn
     SCRIPT /home/xymon/server/bin/hobbit_notify.sh dummy_notice FORMAT=plain DURATION>4h REPEAT=12h COLOR=red 
-    SCRIPT /home/xymon/server/bin/login_notify.sh  dummy_notice FORMAT=plain DURATION>5m REPEAT=5m COLOR=red RECOVERED
+    SCRIPT /home/xymon/server/bin/login_notify.sh  dummy_notice FORMAT=plain DURATION>5m REPEAT=5m COLOR=!purple RECOVERED
     
 
diff --git a/abs/core/xymon/login_notify.sh b/abs/core/xymon/login_notify.sh
index 6696165..8c17342 100644
--- a/abs/core/xymon/login_notify.sh
+++ b/abs/core/xymon/login_notify.sh
@@ -56,8 +56,8 @@ else
    echo "SERVICE: $BBSVCNAME" >> $NOTICE_DIR/$BBHOSTSVC
    echo "HOST: $BBHOSTNAME" >> $NOTICE_DIR/$BBHOSTSVC
    echo "ACKCODE: $ACKCODE" >> $NOTICE_DIR/$BBHOSTSVC
-   echo "MSG $BBALPHAMSG" >> $NOTICE_DIR/$BBHOSTSVC
-   
+   echo "COLOR: $BBCOLORLEVEL" >> $NOTICE_DIR/$BBHOSTSVC
+   echo "MSG $BBALPHAMSG" >> $NOTICE_DIR/$BBHOSTSVC   
 fi
 
 
-- 
cgit v0.12


From b97e90ff739fa2f7d27ed5c62ae8436c6ce2bb8d Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Dec 2013 14:26:55 -0600
Subject: LinHES-system: change myth_mtc.py to run in cron hourly to run more
 reliably after system is down or is busy.

---
 abs/core/LinHES-system/PKGBUILD              | 17 +++++++------
 abs/core/LinHES-system/lh_system_backup_job  | 10 +++-----
 abs/core/LinHES-system/lh_system_host_update |  9 +++----
 abs/core/LinHES-system/myth_mtc.cron         | 23 +++++++++++++++++
 abs/core/LinHES-system/myth_mtc.py           | 37 ++++++++++++++++++----------
 abs/core/LinHES-system/myth_mtc.sh           | 14 -----------
 abs/core/LinHES-system/myth_status.py        |  4 +--
 abs/core/LinHES-system/system.install        | 12 +++------
 8 files changed, 68 insertions(+), 58 deletions(-)
 create mode 100755 abs/core/LinHES-system/myth_mtc.cron
 delete mode 100755 abs/core/LinHES-system/myth_mtc.sh

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index e03cb7d..b0b8ba7 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=8.1
-pkgrel=9
+pkgrel=10
 arch=('i686' 'x86_64')
 install=system.install
 pkgdesc="Everything that makes LinHES an automated system"
@@ -11,7 +11,7 @@ depends=('linhes-sounds' 'xdotool' 'tilda' 'keylaunch'
         'ethtool' 'gnu-netcat' 'normalize' 'ttf-overlock'
         'handbrake-cli' 'mkvtoolnix' 'mplayer')
 backup=('etc/modprobe.d/alsa-base.conf')
-binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh
+binfiles="LinHES-start optimize_mythdb.py myth_mtc.py
  load-modules-mythvantage.sh unclutter-toggle.sh tvterm.sh
  mythfrontend-start set_windowmanager.sh myth_status.py myth_status.sh
  install_supplemental_service.sh get_airplay_key importfiles.sh
@@ -28,7 +28,7 @@ binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh
  mythwelcome-config.py mythwelcome-set-alarm.sh mythwelcome-test-wakeup.sh"
 
 source=(LinHES-session LinHES-profile.sh $binfiles
-    alsa-base cacheclean.cron xfs_defrag.cron
+    alsa-base cacheclean.cron myth_mtc.cron xfs_defrag.cron
     readme_is_xml readme_light add_storage.readme
     system-sudo.rules msg.cfg)
 
@@ -62,6 +62,7 @@ package() {
     #install -m755 -D $srcdir/smolt.cron $pkgdir/etc/cron.weekly/smolt.cron
     install -m755 -D $srcdir/cacheclean.cron $pkgdir/etc/cron.weekly/cacheclean
     install -m755 -D $srcdir/xfs_defrag.cron $pkgdir/etc/cron.weekly/xfs_defrag
+    install -m755 -D $srcdir/myth_mtc.cron $pkgdir/etc/cron.hourly/myth_mtc
 
     #sudo rules
     mkdir -p $pkgdir/etc/sudoers.d/
@@ -78,22 +79,21 @@ md5sums=('7f5624a2d965a4cd3ed6a37ebee13fd9'
          'de32a1c50101265dd7f6ca5037f7a26a'
          '301884fb60521627fffd1160b2cf5181'
          '76b2637cac0452b3acdbeeb4e8a5474b'
-         '79a63270794ef7de244af10dad51330a'
-         '6f5b757524d905b5d2420519a88edc93'
+         '22807bd1e37d2a07bc0bd3f2a9fd2bb4'
          'dc3eef2a624754e16805d72bbe488b67'
          '617af86b901538817ebdcaf646248dc5'
          '542e670e78d117657f93141e9689f54d'
          '8da6a7f1703a002f84e66629e847d8a6'
          'bb72ab230c7a71706285bd0f31a4fb1f'
-         '42981e30e016c5f00b841b8490a3a489'
+         'f8683caddf74dca1ea5cc3db4d748764'
          '962a3e9eaba2d1466251b7ab0956705d'
          '1758aed160de64abfafb28a3a8f3390e'
          '33fbebbd546672cedd3c5e7350ab414e'
          'c773d8caacba8fbd4968e8afe5137bc6'
          '3edef50a49a47694bf8add39cc160add'
-         'aa6010065f5ec2afe1d2bee4cf81dec7'
+         'b376c30f95892b8682fad84f81685f75'
          'bc69a520add58ede9b060c73e67ace13'
-         '26fdd26e945f0c187f9fdcf98a7a5bef'
+         '2e5e1b3187f75154366bffe806ff8ae9'
          '47e093e8cfe4b5b96602358e1f540832'
          '4d6a6e88b519caf917ebe6c85c32c45b'
          '2c005d95312018bef80092136f80f254'
@@ -129,6 +129,7 @@ md5sums=('7f5624a2d965a4cd3ed6a37ebee13fd9'
          '410795ef9039e4c6c0484e706ecfd567'
          'eb879fee9603a05d5420d4ce8ed9e450'
          '02c810c2f47b7c4495fdacaf54189473'
+         'fae4162988de9525ba3f9341e17f9c52'
          '474d5c6883fcfffae4f199aceb3b1356'
          '36bdfa8d877cea20ca3870faf08e08d5'
          '59d0602bac7e06f11abba1894acc8bb0'
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
index 7d05be5..3ac9de0 100644
--- a/abs/core/LinHES-system/lh_system_backup_job
+++ b/abs/core/LinHES-system/lh_system_backup_job
@@ -33,8 +33,7 @@ function backup_status_check(){
 
 function backup(){
 
-    echo "#######################################"
-    echo "Starting  backup	"
+    echo "Starting Backup"
     mkdir -p $BACKUPDIR/$DATE
 
     #backup database
@@ -117,7 +116,6 @@ function backup(){
     echo
     echo "Created file:"
     echo "    $BACKUPDIR/backup.$DATE.tgz"
-    echo "########################################"
 }
 
 function update_backup_status(){
@@ -131,7 +129,7 @@ function update_backup_status(){
         COMPLETE_MSG="Last backup FAILED `date '+%D %-I:%M %p'`"
     fi
     echo "Updating menu with:"
-    echo "  $COMPLETE_MSG"
+    echo "    $COMPLETE_MSG"
     xmlfile="/usr/share/mythtv/themes/defaultmenu/mythbackup.xml"
 
     grep  -q "<description>" $xmlfile >/dev/null
@@ -198,10 +196,10 @@ function remote_backup(){
                 echo "    Copying system backups to $SECBACKUP"
                 rsync -au --delete $BACKUPDIR $SECBACKUP
             else
-                echo "*    $SECBACKUPDISK isn't mounted."
+                echo "    $SECBACKUPDISK isn't mounted."
             fi
         else
-            echo "*    Link $SECBACKUPLINK doesn't exist."
+            echo "    Link $SECBACKUPLINK doesn't exist."
         fi
     fi
 }
diff --git a/abs/core/LinHES-system/lh_system_host_update b/abs/core/LinHES-system/lh_system_host_update
index 56a22e5..ca6aeff 100644
--- a/abs/core/LinHES-system/lh_system_host_update
+++ b/abs/core/LinHES-system/lh_system_host_update
@@ -2,8 +2,8 @@
 # Process that call this script
 # func  update 
 # supplemental web
-echo "#####################################################"
-echo "Starting update"
+
+echo "Starting Update"
 MYTH_RUN_STATUS="1"
 . /etc/profile
 
@@ -17,7 +17,7 @@ fi
 
 case $Hostupdateplan in
 	"Myth_only")
-		echo "Updating myth packages"
+		echo "Updating only myth packages"
 		postfix=`cat $INSTALL_DIR/usr/local/share/mythtv/.releasetype`
 		for mythl in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo mythweb mythtv
 		do
@@ -52,6 +52,3 @@ case $Hostupdateplan in
         echo "Unknown  $Hostupdateplan, skipping updates"
         ;;
 esac
-
-
-echo "##################################################################################"
diff --git a/abs/core/LinHES-system/myth_mtc.cron b/abs/core/LinHES-system/myth_mtc.cron
new file mode 100755
index 0000000..4f63dec
--- /dev/null
+++ b/abs/core/LinHES-system/myth_mtc.cron
@@ -0,0 +1,23 @@
+#!/bin/bash
+MYTH_RUN_STATUS=1
+. /etc/profile
+
+date=`date +%Y-%m-%d`
+timestamp=`date +'%Y-%m-%d %H:%M'`
+logFile="/var/log/$date/myth_mtc.log"
+
+if [ ! -f $logFile ]; then
+    touch $logFile
+fi
+
+#check logfile for Finished and if not run myth_mtc.py
+if ! grep -q "Finished" $logFile
+then
+    MYTHCONFDIR=/usr/share/mythtv unbuffer myth_mtc.py >> $logFile 2>&1
+    if [ $? = 0 ]
+    then
+        echo "Finished $timestamp" >> $logFile
+    else
+        echo "Time Exceeded $timestamp" >> $logFile
+    fi
+fi
diff --git a/abs/core/LinHES-system/myth_mtc.py b/abs/core/LinHES-system/myth_mtc.py
index 2c1fd14..7847313 100755
--- a/abs/core/LinHES-system/myth_mtc.py
+++ b/abs/core/LinHES-system/myth_mtc.py
@@ -5,6 +5,7 @@ import re
 import socket
 import os
 import datetime,time
+import shlex
 
 try:
     from MythTV import MythBE
@@ -34,7 +35,7 @@ def optimize():
     for row in result:
         ctable=row[0]
         for op in ops:
-            print op,ctable
+            print "    %s %s" %(op,ctable)
             cmd= "%s  table %s" %(op,ctable)
             cursor.execute(cmd)
 
@@ -128,10 +129,18 @@ def mfd_check():
 
     return True
 
+def bail_if_another_is_running():
+    cmd = shlex.split("pgrep -u {} -f {}".format(os.getuid(), __file__))
+    pids = subprocess.check_output(cmd).strip().split('\n')
+    if len(pids) > 1:
+        pids.remove("{}".format(os.getpid()))
+        print "Exiting! Found {} is already running (pids): {}".format(
+            __file__, " ".join(pids))
+        raise SystemExit(1)
 
 
 def idle_check():
-    print "%s  Checking idle" %(get_timestamp())
+    print "\n%s Checking Idle" %(get_timestamp())
     if  (   upcoming_check() and schemalock_check() and job_check()  and in_use() and  mfd_check()  ):
         idle=True
         print "\n%s Myth is idle" %(get_timestamp())
@@ -142,35 +151,37 @@ def idle_check():
 
 def run_stuff():
     if idle_check():
-        print "\n%sRunning optimize" %(get_timestamp())
+        print "\n#######################################"
+        print "\n%s Running Optimize" %(get_timestamp())
         optimize()
 
-	print "\n%s Running backup" %(get_timestamp())
+        print "\n#######################################"
+        print "\n%s Running Backup" %(get_timestamp())
         os.system('/usr/LH/bin/lh_system_backup_job')
 
-	print "\n%s Running system update" %(get_timestamp())
-	os.system('/usr/LH/bin/lh_system_host_update')
+        print "\n#######################################"
+        print "\n%s Running System Update" %(get_timestamp())
+        os.system('/usr/LH/bin/lh_system_host_update')
+
+        print "\n#######################################"
         continue_loop=False
     else:
         continue_loop=True
     return continue_loop
 
 #---------------------------------
+bail_if_another_is_running()
 starttime=time.time()
 ctin=True
 while ctin:
     ctin=run_stuff()
-    print "\n"
     if  ctin:
-        print "%s Waiting 10 minutes before trying again" %(get_timestamp())
+        print "\n%s Waiting 10 minutes before trying again." %(get_timestamp())
         time.sleep(600)
         
     current_time=time.time()
-    if (current_time - starttime) > 10800 :
+    if (current_time - starttime) > 3000 :
         ctin = False
-        print "time exceeded (3 hours)"
+        print "\n%s Time Exceeded 50 minutes. Quitting.)" %(get_timestamp())
         exit(1)
 
-
-
-
diff --git a/abs/core/LinHES-system/myth_mtc.sh b/abs/core/LinHES-system/myth_mtc.sh
deleted file mode 100755
index 7899daa..0000000
--- a/abs/core/LinHES-system/myth_mtc.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-MYTH_RUN_STATUS=1
-. /etc/profile
-
-date=`date +%Y-%m-%d`
-logFile="/var/log/$date/myth_mtc.log"
-
-MYTHCONFDIR=/usr/share/mythtv myth_mtc.py > $logFile 2>&1
-if [ $? = 0 ]
-then
-    echo "Finished $date" >> $logFile
-else
-    echo "Time Exceede $date" >> $logFile
-fi
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index df8c84a..40dd3b3 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -92,7 +92,7 @@ def print_alerts():
             out_alert += out_line
                 
         print "System Alerts:"
-        print "---------------"
+        print "--------------"
         if len(out_alert) > 0:
             print out_alert 
             print "    Go to http://%s and click Health & Maintenance for more information." %gethostname()
@@ -239,7 +239,7 @@ class tuner_recording_status:
     def print_conflict_list(self):
         print ""
         print "Recording Conflicts:"
-        print "----------------------"
+        print "--------------------"
         if len(self.get_conflict_list()) > 0:
             for i in self.get_conflict_list():
                 print "    %s -  %-50s " %(i[0],i[1])
diff --git a/abs/core/LinHES-system/system.install b/abs/core/LinHES-system/system.install
index ddad9e3..880ea02 100644
--- a/abs/core/LinHES-system/system.install
+++ b/abs/core/LinHES-system/system.install
@@ -8,17 +8,11 @@ pre_install() {
 
 # arg 1:  the new package version
 post_install() {
-    MVDIR=/usr/LH/bin
-    #add myth_mtc to cron list
-    if [ ! -e /etc/cron.daily/myth_mtc ]
-    then
-        ln -s  $MVDIR/myth_mtc.sh  /etc/cron.daily/myth_mtc
+    #remove daily myth_mtc link
+    if [ -h /etc/cron.daily/myth_mtc ]; then
+        rm -f /etc/cron.daily/myth_mtc
     fi
 
-    # Add db entry for misc status in MythWeb
-    # not needed in R8 because it's in the DB, may be removed
-    #/usr/LH/bin/misc_status_config.py
-
     sv restart msg_daemon
 }
 
-- 
cgit v0.12


From 9624d2106fa1bbd153b4e9dc23df51ab82091e1e Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Dec 2013 16:19:14 -0600
Subject: xymon: add description for some modules. refs #945

---
 abs/core/xymon/PKGBUILD         | 11 ++++++++---
 abs/core/xymon/hobbit_notify.sh |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/abs/core/xymon/PKGBUILD b/abs/core/xymon/PKGBUILD
index e880b98..8163f32 100755
--- a/abs/core/xymon/PKGBUILD
+++ b/abs/core/xymon/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=xymon
 pkgname=(xymonserver xymonclient)
 pkgver=4.3.5
-pkgrel=54
+pkgrel=55
 pkgdesc="Hobbit is a system for monitoring servers and networks. "
 license="GPL"
 arch=('i686' 'x86_64')
@@ -74,7 +74,7 @@ package_xymonserver(){
 
       install -D  -m644 $startdir/src/logrotate-server.xymon $startdir/pkg/xymonserver/etc/logrotate.d/xymon-server
 
-# fix env for mythtb bindingds
+      # fix env for mythtb bindingds
       echo "MYTHCONFDIR=/usr/share/mythtv" >> $startdir/pkg/xymonserver/home/xymon/etc/xymonserver.cfg
 
 
@@ -95,6 +95,11 @@ package_xymonserver(){
       #make dir for login alerts
       mkdir $startdir/pkg/xymonserver/home/xymon/var/login_alerts
 
+      #add custom module descriptions
+      COLDOC=$pkgdir/home/xymon/etc/columndoc.csv
+      echo "myth_mtc;The <b>myth_mtc</b> column shows the status of the MythTV maintenance script.;" >> $COLDOC
+      echo "orphan;The <b>orphan</b> column shows the status of the find_orphans.py script.;" >> $COLDOC
+
       #fix permissions
       chmod 775 $startdir/pkg/xymonserver/data/srv/httpd/htdocs/
       chmod 775 $startdir/pkg/xymonserver/data/srv/httpd/htdocs/xymon/
@@ -142,7 +147,7 @@ md5sums=('31923ec126fe1c264fceb459d2175161'
          '0c808fa12672289f86b0651545381308'
          '0469d775db9fdd18ea95dd41937ada82'
          '0757294eec13771f8e63da23cf066796'
-         '6baa410da1dfb86435191f4805186ea7'
+         '270e13da6cbc9d49079d994edaa71e64'
          '4bc37b700146e4f4206a729c835903b0'
          '9af2ad60ac4c3cb653754618f603e311'
          'b8eb10070f2ad6a245d3da15091694ba'
diff --git a/abs/core/xymon/hobbit_notify.sh b/abs/core/xymon/hobbit_notify.sh
index 742b3db..26b789f 100644
--- a/abs/core/xymon/hobbit_notify.sh
+++ b/abs/core/xymon/hobbit_notify.sh
@@ -71,7 +71,7 @@ case x$BBSVCNAME in
 
  *)
     #catch all for everything else
-    msg_func_out "Condition $BBCOLORLEVEL\n$BBHOSTNAME  $BBSVCNAME\n Please check the system health webpage|alert"
+    msg_func_out "Condition $BBCOLORLEVEL $BBSVCNAME on $BBHOSTNAME\nSee the system health webpage.|alert"
     ;;
 esac
 
-- 
cgit v0.12


From e957696c35ffe53466633b329d3cc10ba7ca6841 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 14 Dec 2013 17:12:55 -0600
Subject: linhes-theme: theme the language screen for installs. refs #940.

change menu to vertical. kept menu-ui-horizontal.xml.patch in case
---
 abs/core/linhes-theme/PKGBUILD                     |   9 +-
 abs/core/linhes-theme/config-ui.xml.patch          | 200 +++++++++++++++++++++
 abs/core/linhes-theme/menu-ui-horizontal.xml.patch |  67 +++++++
 abs/core/linhes-theme/menu-ui-vert.xml.patch       | 122 +++++++++++++
 abs/core/linhes-theme/menu-ui.xml.patch            |  67 -------
 5 files changed, 394 insertions(+), 71 deletions(-)
 create mode 100644 abs/core/linhes-theme/config-ui.xml.patch
 create mode 100644 abs/core/linhes-theme/menu-ui-horizontal.xml.patch
 create mode 100644 abs/core/linhes-theme/menu-ui-vert.xml.patch
 delete mode 100644 abs/core/linhes-theme/menu-ui.xml.patch

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 3eda250..a97f0e6 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,14 +1,14 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=11
+pkgrel=12
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
 url="http://linhes.org/"
 
 patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
-         'menu-ui.xml.patch' 'recordings-ui.xml.patch' 'schedule-ui.xml.patch'
-         'video-ui.xml.patch')
+         'menu-ui-vert.xml.patch' 'recordings-ui.xml.patch' 'schedule-ui.xml.patch'
+         'video-ui.xml.patch' 'config-ui.xml.patch')
 
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git#branch=fixes/0.27"
@@ -54,10 +54,11 @@ md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          'e061490fc869e0e14d4e144c17c3ec56'
          'abf14a78424114b6d9ba1d9e58ab754d'
-         '83b03852c6f46bc791bfa6e8c894ca01'
+         '2475f2c38d029e20080d52a752a2638a'
          '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
          'e502da82e6d76b3f43dd7ddc20c1e2e7'
+         '78b64e567cd799df52045d9fc5a59cc0'
          '7d7bc458a8f4af408700609f3e1f412e'
          '909d7a8114436dcfc28a01d0d97ec11f'
          'cbe5f663ebb5d51abe811f81dafec303'
diff --git a/abs/core/linhes-theme/config-ui.xml.patch b/abs/core/linhes-theme/config-ui.xml.patch
new file mode 100644
index 0000000..36d6b67
--- /dev/null
+++ b/abs/core/linhes-theme/config-ui.xml.patch
@@ -0,0 +1,200 @@
+--- config-ui.xml.orig	2013-12-14 17:21:38.882668570 +0000
++++ config-ui.xml	2013-12-14 17:23:08.317851041 +0000
+@@ -347,6 +347,197 @@
+ 
+     </window>
+ 
++    <window name="languageselection">
++
++        <textarea name="title" from="base_heading">
++            <value>Language</value>
++        </textarea>
++
++        <textarea name="countrylabel">
++            <font>baselarge</font>
++            <area>40,20,580,40</area>
++            <value>Country</value>
++            <align>allcenter</align>
++        </textarea>
++
++        <shape name="countrybackground" from="base_backdrop">
++            <area>40,65,580,550</area>
++        </shape>
++
++        <shape name="country-top-backdrop-line" from="base_backdrop_line">
++            <area>41,66,578,548</area>
++        </shape>
++
++        <shape name="country-top-line" from="base_highlight_line">
++            <area>42,67,576,2</area>
++        </shape>
++
++        <shape name="country-bottom-line" from="base_highlight_line">
++            <area>42,613,576,2</area>
++        </shape>
++
++        <shape name="country-left-line" from="base_highlight_vertical_line">
++            <area>42,69,2,544</area>
++        </shape>
++
++        <shape name="country-right-line" from="base_highlight_vertical_line">
++            <area>616,69,2,544</area>
++        </shape>
++
++        <shape name="country-arrows-backdrop" from="base_arrows_backdrop">
++            <area>48,615,50,12</area>
++        </shape>
++
++        <buttonlist name="countries" from="base_list">
++            <area>50,78,560,530</area>
++            <scrollstyle>center</scrollstyle>
++            <statetype name="buttonitem">
++                <state name="active">
++                    <area>0,0,100%,55</area>
++                    <shape name="buttonbackground" from="base_select_bar_active">
++                        <area>0,0,100%,100%</area>
++                    </shape>
++                    <imagetype name="buttonimage">
++                        <area>5,7,60,40</area>
++                    </imagetype>
++                    <textarea name="buttontext" from="basetextarea">
++                        <area>70,0,90%,30</area>
++                        <font>basemediumgrey</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                    <textarea name="nativecountry" from="basetextarea">
++                        <area>70,30,90%,20</area>
++                        <font>basesmallgrey</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                </state>
++                <state name="inactive" from="active"/>
++                <state name="selectedactive" from="active">
++                    <shape name="buttonbackground" from="base_select_bar_selectedactive">
++                        <area>0,0,100%,100%</area>
++                    </shape>
++                    <textarea name="buttontext" from="basetextarea">
++                        <area>70,0,90%,30</area>
++                        <font>basemediumyellow</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                    <textarea name="nativecountry" from="basetextarea">
++                        <area>70,30,90%,20</area>
++                        <font>basesmall</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                </state>
++                <state name="selectedinactive" from="inactive">
++                    <shape name="buttonbackground" from="base_select_bar_selectedinactive">
++                        <area>0,0,100%,100%</area>
++                    </shape>
++                </state>
++            </statetype>
++            <statetype name="upscrollarrow">
++                <position>5,539</position>
++            </statetype>
++            <statetype name="downscrollarrow">
++                <position>25,539</position>
++            </statetype>
++            <helptext>Select the country where you reside.</helptext>
++        </buttonlist>
++
++        <textarea name="languagelabel" from="countrylabel">
++            <area>660,20,580,40</area>
++            <value>Language</value>
++        </textarea>
++
++        <shape name="languagebackground" from="base_backdrop">
++            <area>660,65,580,550</area>
++        </shape>
++
++        <shape name="lang-top-backdrop-line" from="base_backdrop_line">
++            <area>661,66,578,548</area>
++        </shape>
++
++        <shape name="lang-top-line" from="base_highlight_line">
++            <area>662,67,576,2</area>
++        </shape>
++
++        <shape name="lang-bottom-line" from="base_highlight_line">
++            <area>662,613,576,2</area>
++        </shape>
++
++        <shape name="lang-left-line" from="base_highlight_vertical_line">
++            <area>662,69,2,544</area>
++        </shape>
++
++        <shape name="lang-right-line" from="base_highlight_vertical_line">
++            <area>1236,69,2,544</area>
++        </shape>
++
++        <shape name="lang-arrows-backdrop" from="base_arrows_backdrop">
++            <area>668,615,50,12</area>
++        </shape>
++
++        <buttonlist name="languages" from="countries">
++            <area>670,78,560,530</area>
++            <statetype name="buttonitem">
++                <state name="active">
++                    <area>0,0,100%,55</area>
++                    <textarea name="buttontext" from="basetextarea">
++                        <area>10,0,90%,30</area>
++                        <font>basemediumgrey</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                    <textarea name="language" from="nativecountry">
++                        <position>10,30</position>
++                    </textarea>
++                </state>
++                <state name="inactive" from="active" />
++                <state name="selectedactive" from="active">
++                    <shape name="buttonbackground" from="base_select_bar_selectedactive">
++                        <area>0,0,100%,100%</area>
++                    </shape>
++                    <textarea name="buttontext" from="basetextarea">
++                        <area>10,0,90%,30</area>
++                        <font>basemediumyellow</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                    <textarea name="language" from="nativecountry">
++                        <area>10,30,90%,20</area>
++                        <font>basesmall</font>
++                        <cutdown>yes</cutdown>
++                        <align>left,vcenter</align>
++                    </textarea>
++                </state>
++                <state name="selectedinactive" from="inactive">
++                    <shape name="buttonbackground" from="base_select_bar_selectedinactive">
++                        <area>0,0,100%,100%</area>
++                    </shape>
++                </state>
++            </statetype>
++            <helptext>Select your language.</helptext>
++        </buttonlist>
++
++        <textarea name="helptext" from="basetextarea">
++            <area>200,630,880,60</area>
++            <align>center</align>
++        </textarea>
++
++        <button name="save" from="base_button">
++            <position>1090,643</position>
++            <value>Save</value>
++        </button>
++
++        <button name="cancel" from="base_button">
++            <position>40,643</position>
++            <value>Cancel</value>
++        </button>
++
++    </window>
++
+     <window name="grabbersettings">
+         <area>0,0,1280,720</area>
+ 
diff --git a/abs/core/linhes-theme/menu-ui-horizontal.xml.patch b/abs/core/linhes-theme/menu-ui-horizontal.xml.patch
new file mode 100644
index 0000000..c099db6
--- /dev/null
+++ b/abs/core/linhes-theme/menu-ui-horizontal.xml.patch
@@ -0,0 +1,67 @@
+--- menu-ui.xml.orig	2013-11-21 19:05:04.920817617 +0000
++++ menu-ui.xml	2013-11-21 20:03:45.474172898 +0000
+@@ -9,16 +9,16 @@
+         </textarea>
+ 
+         <shape name="menuscroll-background" from="base_backdrop">
+-            <area>0,525,1280,70</area>
++            <area>0,94,1280,70</area>
+             <type>box</type>
+         </shape>
+ 
+         <shape name="menuscroll-top-line" from="base_line">
+-            <area>0,526,1280,2</area>
++            <area>0,95,1280,2</area>
+         </shape>
+ 
+         <shape name="menuscroll-bottom-line" from="base_line">
+-            <area>0,592,1280,2</area>
++            <area>0,161,1280,2</area>
+         </shape>
+ 
+         <statetype name="titles">
+@@ -135,7 +135,7 @@
+         </statetype>
+ 
+         <buttonlist name="menu">
+-            <area>20,528,1240,64</area>
++            <area>20,98,1240,64</area>
+             <layout>horizontal</layout>
+             <spacing>20</spacing>
+             <scrollstyle>center</scrollstyle>
+@@ -157,6 +157,14 @@
+                 <state name="selectedactive"> 
+                     <area>0,0,232,64</area>
+                     <imagetype name="background" />
++
++                    <shape name="menu-left-line" from="base_highlight_vertical_line">
++                        <area>-10,-2,2,66</area>
++                    </shape>
++                    <shape name="menu-right-line" from="base_highlight_vertical_line">
++                        <area>240,-2,2,66</area>
++                    </shape>
++
+                     <textarea name="buttontext">
+                         <area>0,0,232,64</area>
+                         <font>basemediumlargerdarkyellow</font>
+@@ -168,6 +176,20 @@
+                         <cutdown>yes</cutdown>
+                         <case>upper</case>
+                     </textarea>
++
++                    <imagetype name="description_background">
++                        <area>-100,100,410,180</area>
++                        <filename>images/tux_thoughts.png</filename>
++                    </imagetype>
++                    
++                    <textarea name="description">
++                        <area>12,87,210,130</area>
++                        <align>allcenter</align>
++                        <font>basesmallyellow</font>
++                        <alpha>225</alpha>
++                        <multiline>yes</multiline>
++                    </textarea>
++
+                 </state>
+             </statetype>
+         </buttonlist>
diff --git a/abs/core/linhes-theme/menu-ui-vert.xml.patch b/abs/core/linhes-theme/menu-ui-vert.xml.patch
new file mode 100644
index 0000000..42a9b54
--- /dev/null
+++ b/abs/core/linhes-theme/menu-ui-vert.xml.patch
@@ -0,0 +1,122 @@
+--- menu-ui.xml.orig	2013-12-14 21:10:55.569721394 +0000
++++ menu-ui.xml	2013-12-14 23:04:33.830757181 +0000
+@@ -9,18 +9,31 @@
+         </textarea>
+ 
+         <shape name="menuscroll-background" from="base_backdrop">
+-            <area>0,525,1280,70</area>
++            <area>35,0,310,720</area>
+             <type>box</type>
+         </shape>
+ 
+-        <shape name="menuscroll-top-line" from="base_line">
+-            <area>0,526,1280,2</area>
++        <shape name="menuscroll-left-line" from="base_line">
++            <area>36,0,2,1280</area>
+         </shape>
+ 
+-        <shape name="menuscroll-bottom-line" from="base_line">
+-            <area>0,592,1280,2</area>
++        <shape name="menuscroll-right-line" from="base_line">
++            <area>342,0,2,1280</area>
+         </shape>
+ 
++        <imagetype name="description_background">
++            <area>425,200,410,180</area>
++            <filename>images/tux_thoughts.png</filename>
++        </imagetype>
++                    
++        <textarea name="description">
++            <area>527,187,220,130</area>
++            <align>allcenter</align>
++            <font>basesmallyellow</font>
++<!--            <alpha>225</alpha>-->
++            <multiline>yes</multiline>
++        </textarea>
++
+         <statetype name="titles">
+             <loadondemand>true</loadondemand>
+             <state name="TV">
+@@ -110,7 +123,7 @@
+                     <value>Manage Recordings</value>
+                 </textarea>
+             </state>
+-            <state name="LIBRARY">
++            <state name="MENU_MEDIA_LIBRARY">
+                 <textarea name="heading" from="base_heading">
+                     <value>Media Library</value>
+                 </textarea>
+@@ -135,18 +148,20 @@
+         </statetype>
+ 
+         <buttonlist name="menu">
+-            <area>20,528,1240,64</area>
+-            <layout>horizontal</layout>
+-            <spacing>20</spacing>
+-            <scrollstyle>center</scrollstyle>
+-            <wrapstyle>items</wrapstyle>	
+-            <buttonarea>0,0,1240,64</buttonarea>
++            <area>35,62,310,596</area>
++            <layout>vertical</layout>
++            <spacing>4</spacing>
++            <scrollstyle>free</scrollstyle>
++            <wrapstyle>selection</wrapstyle>
++            <arrange>Stack</arrange>
++            <align>vcenter</align>
++            <buttonarea>0,0,100%,100%</buttonarea>
+             <statetype name="buttonitem">
+                 <state name="active">
+-                    <area>0,0,232,64</area>
++                    <area>0,0,310,64</area>
+                     <imagetype name="background" />
+                     <textarea name="buttontext">
+-                        <area>0,0,232,64</area>
++                        <area>12,0,286,64</area>
+                         <font>basemediumlightgrey</font>
+                         <multiline>yes</multiline>
+                         <align>allcenter</align>
+@@ -155,10 +170,13 @@
+                     </textarea>
+                 </state>
+                 <state name="selectedactive"> 
+-                    <area>0,0,232,64</area>
+-                    <imagetype name="background" />
++                    <area>-10,0,330,64</area>
++                    <shape name="background" from="base_select_bar_selectedactive">
++                        <area>0,0,100%,100%</area>
++                    </shape>
++
+                     <textarea name="buttontext">
+-                        <area>0,0,232,64</area>
++                        <area>5,0,320,64</area>
+                         <font>basemediumlargerdarkyellow</font>
+                         <multiline>yes</multiline>
+                         <!-- cpu usage is very high
+@@ -170,6 +188,27 @@
+                     </textarea>
+                 </state>
+             </statetype>
++            <statetype name="upscrollarrow">
++                <position>147,0</position>
++                <showempty>yes</showempty>
++                <state type="full">
++                    <imagetype name="upon">
++                        <filename>images/lists_up_arrow.png</filename>
++                        <alpha>200</alpha>
++                    </imagetype>
++                </state>
++            </statetype>
++            <statetype name="downscrollarrow">
++                <position>147,588</position>
++                <showempty>yes</showempty>
++                <state type="full">
++                    <imagetype name="dnon">
++                        <filename>images/lists_down_arrow.png</filename>
++                        <alpha>200</alpha>
++                    </imagetype>
++                </state>
++            </statetype>
++
+         </buttonlist>
+ 
+     </window>
diff --git a/abs/core/linhes-theme/menu-ui.xml.patch b/abs/core/linhes-theme/menu-ui.xml.patch
deleted file mode 100644
index c099db6..0000000
--- a/abs/core/linhes-theme/menu-ui.xml.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- menu-ui.xml.orig	2013-11-21 19:05:04.920817617 +0000
-+++ menu-ui.xml	2013-11-21 20:03:45.474172898 +0000
-@@ -9,16 +9,16 @@
-         </textarea>
- 
-         <shape name="menuscroll-background" from="base_backdrop">
--            <area>0,525,1280,70</area>
-+            <area>0,94,1280,70</area>
-             <type>box</type>
-         </shape>
- 
-         <shape name="menuscroll-top-line" from="base_line">
--            <area>0,526,1280,2</area>
-+            <area>0,95,1280,2</area>
-         </shape>
- 
-         <shape name="menuscroll-bottom-line" from="base_line">
--            <area>0,592,1280,2</area>
-+            <area>0,161,1280,2</area>
-         </shape>
- 
-         <statetype name="titles">
-@@ -135,7 +135,7 @@
-         </statetype>
- 
-         <buttonlist name="menu">
--            <area>20,528,1240,64</area>
-+            <area>20,98,1240,64</area>
-             <layout>horizontal</layout>
-             <spacing>20</spacing>
-             <scrollstyle>center</scrollstyle>
-@@ -157,6 +157,14 @@
-                 <state name="selectedactive"> 
-                     <area>0,0,232,64</area>
-                     <imagetype name="background" />
-+
-+                    <shape name="menu-left-line" from="base_highlight_vertical_line">
-+                        <area>-10,-2,2,66</area>
-+                    </shape>
-+                    <shape name="menu-right-line" from="base_highlight_vertical_line">
-+                        <area>240,-2,2,66</area>
-+                    </shape>
-+
-                     <textarea name="buttontext">
-                         <area>0,0,232,64</area>
-                         <font>basemediumlargerdarkyellow</font>
-@@ -168,6 +176,20 @@
-                         <cutdown>yes</cutdown>
-                         <case>upper</case>
-                     </textarea>
-+
-+                    <imagetype name="description_background">
-+                        <area>-100,100,410,180</area>
-+                        <filename>images/tux_thoughts.png</filename>
-+                    </imagetype>
-+                    
-+                    <textarea name="description">
-+                        <area>12,87,210,130</area>
-+                        <align>allcenter</align>
-+                        <font>basesmallyellow</font>
-+                        <alpha>225</alpha>
-+                        <multiline>yes</multiline>
-+                    </textarea>
-+
-                 </state>
-             </statetype>
-         </buttonlist>
-- 
cgit v0.12


From 209ef96fe71b94bfd66b2ed9010e567db7056e1e Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Sun, 15 Dec 2013 09:36:03 -0600
Subject: runit-scripts:  udevil,  redirect stderr to stdout.  This takes care
 of the error messagess showing up in ps output

---
 abs/core/runit-scripts/PKGBUILD                         | 2 +-
 abs/core/runit-scripts/runitscripts/services/udevil/run | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 abs/core/runit-scripts/runitscripts/services/udevil/run

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index 7c4de92..9857b4a 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=8.1
-pkgrel=4
+pkgrel=5
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core/runit-scripts/runitscripts/services/udevil/run b/abs/core/runit-scripts/runitscripts/services/udevil/run
old mode 100644
new mode 100755
index 46f922c..35fc273
--- a/abs/core/runit-scripts/runitscripts/services/udevil/run
+++ b/abs/core/runit-scripts/runitscripts/services/udevil/run
@@ -1,5 +1,6 @@
 #!/bin/sh
 export TERM=linux
+2>&1
 . /etc/rc.conf
 . /etc/rc.d/functions
 stat_runit "starting udevil"
-- 
cgit v0.12


From a41aed8761da25b874dce3468a9cd1b127f77d57 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 15 Dec 2013 17:40:28 -0600
Subject: linhes-theme: change menu logo and though bubble position. refs #940.

update preview image.
---
 abs/core/linhes-theme/LHLogo.png             | Bin 0 -> 95713 bytes
 abs/core/linhes-theme/LHLogoAndText.png      | Bin 0 -> 112895 bytes
 abs/core/linhes-theme/PKGBUILD               |  14 +++++---
 abs/core/linhes-theme/menu-ui-vert.xml.patch |  48 +++++++++++++++++++--------
 abs/core/linhes-theme/preview.png            | Bin 339979 -> 736603 bytes
 5 files changed, 44 insertions(+), 18 deletions(-)
 create mode 100755 abs/core/linhes-theme/LHLogo.png
 create mode 100755 abs/core/linhes-theme/LHLogoAndText.png

diff --git a/abs/core/linhes-theme/LHLogo.png b/abs/core/linhes-theme/LHLogo.png
new file mode 100755
index 0000000..9ff4fd2
Binary files /dev/null and b/abs/core/linhes-theme/LHLogo.png differ
diff --git a/abs/core/linhes-theme/LHLogoAndText.png b/abs/core/linhes-theme/LHLogoAndText.png
new file mode 100755
index 0000000..39504e7
Binary files /dev/null and b/abs/core/linhes-theme/LHLogoAndText.png differ
diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index a97f0e6..cc584c8 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=12
+pkgrel=13
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -13,7 +13,8 @@ patches=('readme.txt.patch' 'osd.xml.patch' 'base.xml.patch'
 #The LinHES theme is based on TintedGlass by Harley Peters
 source=("git://github.com/MythTV-Themes/TintedGlass.git#branch=fixes/0.27"
         `echo ${patches[@]:0}` 'themeinfo.xml' 'install-ui.xml'
-        'background.png' 'preview.png' 'qt-background.png' 'tux_thoughts.png')
+        'background.png' 'preview.png' 'qt-background.png' 'tux_thoughts.png'
+        'LHLogo.png' 'LHLogoAndText.png')
 
 package() {
     THEMEROOT=usr/share/mythtv/themes
@@ -41,6 +42,7 @@ package() {
 
     #tux_thoughts.png is the thought bubble for the menu descriptions
     rsync -pL $srcdir/tux_thoughts.png $pkgdir/$THEMEROOT/LinHES/images/
+    rsync -pL $srcdir/LHLogo*.png $pkgdir/$THEMEROOT/LinHES/images/
 
     msg "Modifying yellows and blue to LinHES yellow and blue"
     #yellow
@@ -54,7 +56,7 @@ md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          'e061490fc869e0e14d4e144c17c3ec56'
          'abf14a78424114b6d9ba1d9e58ab754d'
-         '2475f2c38d029e20080d52a752a2638a'
+         'c876f3fc191ba564b760268c86c967f1'
          '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
          'e502da82e6d76b3f43dd7ddc20c1e2e7'
@@ -62,6 +64,8 @@ md5sums=('SKIP'
          '7d7bc458a8f4af408700609f3e1f412e'
          '909d7a8114436dcfc28a01d0d97ec11f'
          'cbe5f663ebb5d51abe811f81dafec303'
-         'fac3ab2c1aeb3ddb691f2cab8b2aa82e'
+         '4b1c27297bb5f8d9d7bbaf72b35130b5'
          '12d26a786fde397348653128a6d7676a'
-         '2bd09b8049aaf5ba21db5baf3a0ce077')
+         '2bd09b8049aaf5ba21db5baf3a0ce077'
+         'b51ef0cbf8ed2d3a8c1a8257a89aceff'
+         '09ad14842f828b7a8d24070ec8214fe5')
diff --git a/abs/core/linhes-theme/menu-ui-vert.xml.patch b/abs/core/linhes-theme/menu-ui-vert.xml.patch
index 42a9b54..c0d2d8a 100644
--- a/abs/core/linhes-theme/menu-ui-vert.xml.patch
+++ b/abs/core/linhes-theme/menu-ui-vert.xml.patch
@@ -1,6 +1,24 @@
 --- menu-ui.xml.orig	2013-12-14 21:10:55.569721394 +0000
-+++ menu-ui.xml	2013-12-14 23:04:33.830757181 +0000
-@@ -9,18 +9,31 @@
++++ menu-ui.xml	2013-12-15 23:21:56.873026251 +0000
+@@ -3,24 +3,53 @@
+ <mythuitheme>
+ 
+     <window name="mainmenu">
++        <area>0,0,1280,720</area>
++
++        <imagetype name="background">
++            <area>0,0,1280,720</area>
++            <filename>images/backgrounds/qt-background.png</filename>
++        </imagetype>
++
++        <group name="heading-backdrop" from="base_heading_group" />
++
++        <group name="clock-backdrop-group" from="base_clock_backdrop_group" />
++
++        <clock name="time" from="base_clock" />
+ 
+         <textarea name="heading" from="base_heading">
+             <value>Main Menu</value>
          </textarea>
  
          <shape name="menuscroll-background" from="base_backdrop">
@@ -21,23 +39,27 @@
 +            <area>342,0,2,1280</area>
          </shape>
  
-+        <imagetype name="description_background">
-+            <area>425,200,410,180</area>
-+            <filename>images/tux_thoughts.png</filename>
-+        </imagetype>
-+                    
 +        <textarea name="description">
-+            <area>527,187,220,130</area>
++            <area>705,158,250,130</area>
 +            <align>allcenter</align>
 +            <font>basesmallyellow</font>
-+<!--            <alpha>225</alpha>-->
 +            <multiline>yes</multiline>
 +        </textarea>
 +
++        <imagetype name="description_background">
++            <area>567,165,487,210</area>
++            <filename>images/tux_thoughts.png</filename>
++        </imagetype>
++
++        <imagetype name="LHlogo">
++            <area>492,348,638,207</area>
++            <filename>images/LHLogoAndText.png</filename> <!--851x277 3.072-->
++        </imagetype>
++
          <statetype name="titles">
              <loadondemand>true</loadondemand>
              <state name="TV">
-@@ -110,7 +123,7 @@
+@@ -110,7 +139,7 @@
                      <value>Manage Recordings</value>
                  </textarea>
              </state>
@@ -46,7 +68,7 @@
                  <textarea name="heading" from="base_heading">
                      <value>Media Library</value>
                  </textarea>
-@@ -135,18 +148,20 @@
+@@ -135,18 +164,20 @@
          </statetype>
  
          <buttonlist name="menu">
@@ -75,7 +97,7 @@
                          <font>basemediumlightgrey</font>
                          <multiline>yes</multiline>
                          <align>allcenter</align>
-@@ -155,10 +170,13 @@
+@@ -155,10 +186,13 @@
                      </textarea>
                  </state>
                  <state name="selectedactive"> 
@@ -92,7 +114,7 @@
                          <font>basemediumlargerdarkyellow</font>
                          <multiline>yes</multiline>
                          <!-- cpu usage is very high
-@@ -170,6 +188,27 @@
+@@ -170,6 +204,27 @@
                      </textarea>
                  </state>
              </statetype>
diff --git a/abs/core/linhes-theme/preview.png b/abs/core/linhes-theme/preview.png
index 8fa1288..506ab1d 100644
Binary files a/abs/core/linhes-theme/preview.png and b/abs/core/linhes-theme/preview.png differ
-- 
cgit v0.12


From 4aa9339bc64b5477b022a786670be5437815b90b Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 16 Dec 2013 17:45:45 -0600
Subject: mythtv & mythplugins: update to latest fixes. refs #933.

update mythburn.py aspect ratio patch for .27
---
 abs/core/mythtv/stable-0.27/git_src/git_hash       |   2 +-
 abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD   |   7 +-
 .../mythplugins/mythburn.py-aspectratio.patch      | 138 +++++++++++++++++++++
 abs/core/mythtv/stable-0.27/mythtv/PKGBUILD        |   2 +-
 4 files changed, 144 insertions(+), 5 deletions(-)
 create mode 100644 abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch

diff --git a/abs/core/mythtv/stable-0.27/git_src/git_hash b/abs/core/mythtv/stable-0.27/git_src/git_hash
index 53e3e8d..fd8badd 100644
--- a/abs/core/mythtv/stable-0.27/git_src/git_hash
+++ b/abs/core/mythtv/stable-0.27/git_src/git_hash
@@ -1 +1 @@
-f7852552a089a87d7dd53b5da59958205fbae6fd
+39171be37ab8d63f0f44e5dbd5a78ca6893ceafa
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
index 196f8be..8fe13bb 100644
--- a/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
          'mythweather'
          'mythzoneminder')
 pkgver=0.27
-pkgrel=6
+pkgrel=7
 arch=('i686' 'x86_64')
 url="http://www.mythtv.org"
 license=('GPL')
@@ -19,7 +19,7 @@ makedepends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' 'flac' 'libexif'
              'perl-json' 'perl-libwww' 'perl-soap-lite' 'perl-xml-sax'
              'perl-xml-simple' 'perl-xml-xpath' 'python-oauth' 'python-imaging'
              'python-pycurl' 'zlib')
-source=()
+source=('mythburn.py-aspectratio.patch')
 
 build() {
     if [ -e ${srcdir}/mythplugins ]
@@ -48,6 +48,7 @@ package_mytharchive() {
     depends=('cdrkit' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' "mythtv>=${pkgver}"
              'python-imaging')
     cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive"
+    patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py-aspectratio.patch || return 1
     make INSTALL_ROOT="${pkgdir}" install || return 1
 }
 
@@ -112,4 +113,4 @@ package_mythzoneminder() {
     make INSTALL_ROOT="${pkgdir}" install || return 1
 }
 
-md5sums=()
+md5sums=('e98c2a09bcb051fdde959fb4bb2e5ab2')
diff --git a/abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch b/abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch
new file mode 100644
index 0000000..377de95
--- /dev/null
+++ b/abs/core/mythtv/stable-0.27/mythplugins/mythburn.py-aspectratio.patch
@@ -0,0 +1,138 @@
+--- mythburn.py.orig	2013-12-16 22:41:31.532703825 +0000
++++ mythburn.py	2013-12-16 22:40:52.191109409 +0000
+@@ -98,6 +98,7 @@
+ from fcntl import ioctl
+ import CDROM
+ from shutil import copy
++from subprocess import Popen, PIPE
+ 
+ import MythTV
+ from MythTV import datetime
+@@ -440,7 +441,7 @@
+                 os.remove(os.path.join(root, name))
+ 
+ #############################################################
+-# Romoves all the objects from a directory
++# Removes all the objects from a directory
+ 
+ def deleteEverythingInFolder(folder):
+     for root, dirs, files in os.walk(folder, topdown=False):
+@@ -666,14 +667,14 @@
+ # Gets the aspect ratio of a video file from its stream info file
+ 
+ def getAspectRatioOfVideo(index):
+-    """Returns the aspect ratio of the video file (1.333, 1.778, etc)"""
++    """Returns the aspect ratio of the original video file (1.333, 1.778, etc)"""
+ 
+     #open the XML containing information about this file
+-    infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++    infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+ 
+     #error out if its the wrong XML
+     if infoDOM.documentElement.tagName != "file":
+-        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+     video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
+     if video.attributes["aspectratio"].value != 'N/A':
+         aspect_ratio = float(video.attributes["aspectratio"].value)
+@@ -1695,6 +1696,37 @@
+         fatalError("Failed while running mytharchivehelper to get stream information.\n"
+                    "Result: %d, Command was %s" % (result, command))
+ 
++    #open the XML containing information about this file
++    infoDOM = xml.dom.minidom.parse(xmlFilename)
++    
++    #error out if its the wrong XML
++    if infoDOM.documentElement.tagName != "file":
++        fatalError("This info file doesn't look right (%s)." % xmlFilename)
++    
++    file = infoDOM.getElementsByTagName("file")[0]
++    video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
++    
++    #use ffmpeg to get display aspect ratio (DAR) of video
++    cmd = "mythffmpeg -i " + quoteCmdArg(file.attributes["filename"].value) + " 2>&1"
++    aspect_ratio = Popen(cmd, shell=True, stdout=PIPE).stdout.read()
++    if "DAR" in aspect_ratio:
++        #clean DAR string
++        aspect_ratio = aspect_ratio.split("DAR ")[-1].split(",")[0]
++        aspect_ratio = ''.join([c for c in aspect_ratio if c in '1234567890:']).split(":")
++    else:
++        #calculate aspect from video size
++        aspect_ratio = getVideoSize(xmlFilename)
++
++    #convert to decimal+
++    aspect_ratio = float(aspect_ratio[0]) / float(aspect_ratio[1])
++
++    write("Video %s aspect ratio is: %s" % (filename, aspect_ratio))
++
++    #set aspect ratio
++    video.setAttribute("aspectratio",str(aspect_ratio))
++    
++    WriteXMLToFile (infoDOM,xmlFilename)
++
+     # print out the streaminfo.xml file to the log
+     infoDOM = xml.dom.minidom.parse(xmlFilename)
+     write(xmlFilename + ":-\n" + infoDOM.toprettyxml("    ", ""), False)
+@@ -2010,7 +2042,7 @@
+ #############################################################
+ # Re-encodes a file to mpeg2
+ 
+-def encodeVideoToMPEG2(source, destvideofile, video, audio1, audio2, aspectratio, profile):
++def encodeVideoToMPEG2(source, destvideofile, video, folder, audio1, audio2, aspectratio, profile):
+     """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use mythffmpeg"""
+ 
+     profileNode = findEncodingProfile(profile)
+@@ -2035,6 +2067,35 @@
+             value = quoteCmdArg(destvideofile)
+         if value == "%aspect":
+             value = aspectratio
++        if value == "720x480" or value == "720x576":
++            videores, fps, videoAR = getVideoParams(folder)
++            videoWidth = int(videores.split("x")[0])
++            videoHeight = int(videores.split("x")[1])
++            
++            #add padding to correct for aspects > than 1.9:1
++            if float(videoAR) >= 1.9:
++                #check which video type and set the correct height
++                if videomode == "ntsc":
++                    videoModeHeight = 480
++                else:
++                    videoModeHeight = 576
++ 
++                #calculate the video height based on the aspect ratio of the video
++                #multiply by 1.185 to compensate for dvds non-square pixels
++                calVideoHeight = int(round((720 / float(videoAR)) * 1.185))
++                if calVideoHeight % 2 == 1:
++                    calVideoHeight = calVideoHeight + 1
++                #write("calVideoHeight: %s" % calVideoHeight)
++                
++                #use original video height if the calculated video height is close
++                if (calVideoHeight + 20 < videoHeight) or (calVideoHeight - 20 > videoHeight):
++                     videoHeight = calVideoHeight
++
++                cropPixels = videoModeHeight - videoHeight
++
++                write("Crop Pixels Total: %s" % cropPixels)
++                name = "-vf"
++                value = "\"scale=720:%d, setsar=1:1, pad=720:%d:0:%d:black\"" % (videoModeHeight - cropPixels, videoModeHeight, cropPixels / 2)
+ 
+         # only re-encode the audio if it is not already in AC3 format
+         if audio1[AUDIO_CODEC] == "AC3":
+@@ -4608,7 +4669,7 @@
+ 
+             #do the re-encode 
+             encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+-                            audio1, audio2, aspectratio, profile)
++                            folder, audio1, audio2, aspectratio, profile)
+             mediafile = os.path.join(folder, 'newfile2.mpg')
+ 
+             #remove the old mediafile that was run through mythtranscode
+@@ -4762,7 +4823,7 @@
+ 
+             #do the re-encode 
+             encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+-                            audio1, audio2, aspectratio, profile)
++                            folder, audio1, audio2, aspectratio, profile)
+             mediafile = os.path.join(folder, 'newfile2.mpg')
+ 
+     #remove an intermediate file
diff --git a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
index 59aa538..9a7e954 100644
--- a/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.27/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythtv
 pkgver=0.27
-pkgrel=6
+pkgrel=7
 commit_hash=`cat ../git_src/git_hash`
 pkgdesc="A Homebrew PVR project $commit_hash"
 arch=('i686' 'x86_64')
-- 
cgit v0.12


From 6f703a89178086e13fff59be4513f1507e2362c1 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 17 Dec 2013 11:11:11 -0600
Subject: linhes-theme: background and logo tweaks. refs #940

---
 abs/core/linhes-theme/PKGBUILD               |  8 +++---
 abs/core/linhes-theme/base.xml.patch         | 43 +++++++++++++++++++---------
 abs/core/linhes-theme/install-ui.xml         | 15 ++++++++--
 abs/core/linhes-theme/menu-ui-vert.xml.patch | 23 ++++-----------
 4 files changed, 52 insertions(+), 37 deletions(-)

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index cc584c8..081a4c9 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=13
+pkgrel=14
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -55,14 +55,14 @@ package() {
 md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          'e061490fc869e0e14d4e144c17c3ec56'
-         'abf14a78424114b6d9ba1d9e58ab754d'
-         'c876f3fc191ba564b760268c86c967f1'
+         'e7af3675fc706a7cb4ea9d0c321219d5'
+         '2eb3feadbfbfcd945ff80e5f4b1ce0a4'
          '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
          'e502da82e6d76b3f43dd7ddc20c1e2e7'
          '78b64e567cd799df52045d9fc5a59cc0'
          '7d7bc458a8f4af408700609f3e1f412e'
-         '909d7a8114436dcfc28a01d0d97ec11f'
+         'a0201e0aa1608eeab27ee754e4d2c1de'
          'cbe5f663ebb5d51abe811f81dafec303'
          '4b1c27297bb5f8d9d7bbaf72b35130b5'
          '12d26a786fde397348653128a6d7676a'
diff --git a/abs/core/linhes-theme/base.xml.patch b/abs/core/linhes-theme/base.xml.patch
index 95bfa1e..2ff8487 100644
--- a/abs/core/linhes-theme/base.xml.patch
+++ b/abs/core/linhes-theme/base.xml.patch
@@ -1,5 +1,5 @@
 --- base.xml.orig	2013-11-22 18:52:58.956295819 +0000
-+++ base.xml	2013-12-04 18:36:51.715548849 +0000
++++ base.xml	2013-12-17 16:44:18.909675491 +0000
 @@ -424,26 +424,26 @@
  
      <!-- Base definition of a base popup backdrop -->
@@ -13,55 +13,64 @@
          <area>0,0,1280,720</area>
          <shape name="base_heading_backdrop" from="base_backdrop">
 -            <area>500,-7,280,32</area>
-+            <area>490,-7,300,32</area>
++            <area>485,-7,310,32</area>
          </shape>
          <shape name="base_heading_backdrop_line" from="base_backdrop_line">
 -            <area>500,-7,280,32</area>
-+            <area>490,-7,300,32</area>
++            <area>485,-7,310,32</area>
          </shape>
          <shape name="heading-left-line" from="base_highlight_vertical_line">
 -            <area>501,0,2,22</area>
-+            <area>491,0,2,22</area>
++            <area>486,0,2,22</area>
          </shape>
          <shape name="heading-right-line" from="base_highlight_vertical_line">
 -            <area>777,0,2,22</area>
-+            <area>787,0,2,22</area>
++            <area>792,0,2,22</area>
          </shape>
          <shape name="heading-bottom-line" from="base_highlight_line">
 -            <area>501,22,278,2</area>
-+            <area>491,22,298,2</area>
++            <area>486,22,308,2</area>
          </shape>
      </group>
  
+@@ -452,7 +452,7 @@
+         <area>0,0,1280,720</area>
+         <imagetype name="background">
+             <area>0,0,1280,720</area>
+-            <filename>images/backgrounds/background.png</filename>
++            <filename>images/backgrounds/qt-background.png</filename>
+         </imagetype>
+         <imagetype name="fanart">
+             <area>0,0,1280,720</area>
 @@ -463,25 +463,25 @@
      <!-- Base definition of a clock  group -->
      <group name="base_clock_backdrop_group">
          <shape name="base_clock_backdrop" from="base_backdrop">
 -            <area>500,695,280,32</area>
-+            <area>490,695,300,32</area>
++            <area>485,695,310,32</area>
          </shape>
          <shape name="base_clock_backdrop_line" from="base_backdrop_line">
 -            <area>500,695,280,32</area>
-+            <area>490,695,300,32</area>
++            <area>485,695,310,32</area>
          </shape>
          <shape name="base_clock_backdrop_top_line" from="base_highlight_line">
 -            <area>501,696,278,2</area>
-+            <area>491,696,298,2</area>
++            <area>486,696,308,2</area>
          </shape>
          <shape name="base_clock_backdrop_left_line" from="base_highlight_vertical_line">
 -            <area>501,698,2,22</area>
-+            <area>491,698,2,22</area>
++            <area>486,698,2,22</area>
          </shape>
          <shape name="clock_right_line" from="base_highlight_vertical_line">
 -            <area>777,698,2,22</area>
-+            <area>787,698,2,22</area>
++            <area>792,698,2,22</area>
          </shape>
      </group>
  
      <!-- Base denfinition of a clock -->
      <clock name="base_clock">
 -        <area>529,698,219,22</area>
-+        <area>499,698,282,22</area>
++        <area>494,698,292,22</area>
          <font>baseextrasmall</font>
          <template>%DATE%, %TIME%</template>
          <align>allcenter</align>
@@ -142,7 +151,15 @@
                      <line color="#454545" alpha="180" width="2" />
                      <cornerradius>90</cornerradius>
                  </shape>
-@@ -1235,15 +1236,13 @@
+@@ -1228,22 +1229,20 @@
+ 
+         <imagetype name="background">
+             <area>0,0,1280,720</area>
+-            <filename>images/backgrounds/background.png</filename>
++            <filename>images/backgrounds/qt-background.png</filename>
+         </imagetype>
+ 
+         <group name="heading-backdrop" from="base_heading_group" />
  
          <group name="clock-backdrop-group" from="base_clock_backdrop_group" />
  
diff --git a/abs/core/linhes-theme/install-ui.xml b/abs/core/linhes-theme/install-ui.xml
index a521256..1c95ef3 100644
--- a/abs/core/linhes-theme/install-ui.xml
+++ b/abs/core/linhes-theme/install-ui.xml
@@ -63,14 +63,23 @@
             <cutdown>yes</cutdown>
         </textarea>
 
+        <imagetype name="LHLogo">
+            <area>365,450,550,179</area>
+            <preserveaspect>true</preserveaspect>
+            <filename>images/LHLogoAndText.png</filename>
+        </imagetype>
+
         <imagetype name="logo">
-            <position>565,500</position>
+            <area>107,465,150,150</area>
             <preserveaspect>true</preserveaspect>
-            <!--<crop>x,y,w,h</crop>-->
-            <filepattern low="0" high="30">/usr/MythVantage/logos/logo-%1.png</filepattern>
+            <filepattern low="1" high="6">/usr/MythVantage/logos/logo-%1.png</filepattern>
             <delay>5000</delay>
         </imagetype>
 
+        <imagetype name="logo2" from="logo">
+            <area>1022,465,150,150</area>
+        </imagetype>
+
     </window>
 
 </mythuitheme>
diff --git a/abs/core/linhes-theme/menu-ui-vert.xml.patch b/abs/core/linhes-theme/menu-ui-vert.xml.patch
index c0d2d8a..852cc42 100644
--- a/abs/core/linhes-theme/menu-ui-vert.xml.patch
+++ b/abs/core/linhes-theme/menu-ui-vert.xml.patch
@@ -1,21 +1,10 @@
 --- menu-ui.xml.orig	2013-12-14 21:10:55.569721394 +0000
-+++ menu-ui.xml	2013-12-15 23:21:56.873026251 +0000
-@@ -3,24 +3,53 @@
++++ menu-ui.xml	2013-12-16 23:47:58.786338423 +0000
+@@ -3,24 +3,42 @@
  <mythuitheme>
  
      <window name="mainmenu">
 +        <area>0,0,1280,720</area>
-+
-+        <imagetype name="background">
-+            <area>0,0,1280,720</area>
-+            <filename>images/backgrounds/qt-background.png</filename>
-+        </imagetype>
-+
-+        <group name="heading-backdrop" from="base_heading_group" />
-+
-+        <group name="clock-backdrop-group" from="base_clock_backdrop_group" />
-+
-+        <clock name="time" from="base_clock" />
  
          <textarea name="heading" from="base_heading">
              <value>Main Menu</value>
@@ -59,7 +48,7 @@
          <statetype name="titles">
              <loadondemand>true</loadondemand>
              <state name="TV">
-@@ -110,7 +139,7 @@
+@@ -110,7 +128,7 @@
                      <value>Manage Recordings</value>
                  </textarea>
              </state>
@@ -68,7 +57,7 @@
                  <textarea name="heading" from="base_heading">
                      <value>Media Library</value>
                  </textarea>
-@@ -135,18 +164,20 @@
+@@ -135,18 +153,20 @@
          </statetype>
  
          <buttonlist name="menu">
@@ -97,7 +86,7 @@
                          <font>basemediumlightgrey</font>
                          <multiline>yes</multiline>
                          <align>allcenter</align>
-@@ -155,10 +186,13 @@
+@@ -155,10 +175,13 @@
                      </textarea>
                  </state>
                  <state name="selectedactive"> 
@@ -114,7 +103,7 @@
                          <font>basemediumlargerdarkyellow</font>
                          <multiline>yes</multiline>
                          <!-- cpu usage is very high
-@@ -170,6 +204,27 @@
+@@ -170,6 +193,27 @@
                      </textarea>
                  </state>
              </statetype>
-- 
cgit v0.12


From 6224511a56fdbefc4fd7aca450f618b44901610e Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 18 Dec 2013 12:54:58 -0600
Subject: linhes-theme: one more menu change to help text. refs #940

---
 abs/core/linhes-theme/PKGBUILD               |  4 ++--
 abs/core/linhes-theme/menu-ui-vert.xml.patch | 13 +++++++------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/abs/core/linhes-theme/PKGBUILD b/abs/core/linhes-theme/PKGBUILD
index 081a4c9..fb894fb 100644
--- a/abs/core/linhes-theme/PKGBUILD
+++ b/abs/core/linhes-theme/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-theme
 pkgver=8.1
-pkgrel=14
+pkgrel=15
 pkgdesc="Default LinHES MythTV theme"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -56,7 +56,7 @@ md5sums=('SKIP'
          '9c2fc68864cbedb6e449056972b457aa'
          'e061490fc869e0e14d4e144c17c3ec56'
          'e7af3675fc706a7cb4ea9d0c321219d5'
-         '2eb3feadbfbfcd945ff80e5f4b1ce0a4'
+         '9e4fcf840f14c6f17f30432e28edd885'
          '33609e27406f00bdc0243a5ef840c6f9'
          'aff82cf901edc4baa058013d93610cfc'
          'e502da82e6d76b3f43dd7ddc20c1e2e7'
diff --git a/abs/core/linhes-theme/menu-ui-vert.xml.patch b/abs/core/linhes-theme/menu-ui-vert.xml.patch
index 852cc42..fdff21e 100644
--- a/abs/core/linhes-theme/menu-ui-vert.xml.patch
+++ b/abs/core/linhes-theme/menu-ui-vert.xml.patch
@@ -1,6 +1,6 @@
 --- menu-ui.xml.orig	2013-12-14 21:10:55.569721394 +0000
-+++ menu-ui.xml	2013-12-16 23:47:58.786338423 +0000
-@@ -3,24 +3,42 @@
++++ menu-ui.xml	2013-12-18 01:03:39.690460829 +0000
+@@ -3,24 +3,43 @@
  <mythuitheme>
  
      <window name="mainmenu">
@@ -33,6 +33,7 @@
 +            <align>allcenter</align>
 +            <font>basesmallyellow</font>
 +            <multiline>yes</multiline>
++            <value>I have no idea</value>
 +        </textarea>
 +
 +        <imagetype name="description_background">
@@ -48,7 +49,7 @@
          <statetype name="titles">
              <loadondemand>true</loadondemand>
              <state name="TV">
-@@ -110,7 +128,7 @@
+@@ -110,7 +129,7 @@
                      <value>Manage Recordings</value>
                  </textarea>
              </state>
@@ -57,7 +58,7 @@
                  <textarea name="heading" from="base_heading">
                      <value>Media Library</value>
                  </textarea>
-@@ -135,18 +153,20 @@
+@@ -135,18 +154,20 @@
          </statetype>
  
          <buttonlist name="menu">
@@ -86,7 +87,7 @@
                          <font>basemediumlightgrey</font>
                          <multiline>yes</multiline>
                          <align>allcenter</align>
-@@ -155,10 +175,13 @@
+@@ -155,10 +176,13 @@
                      </textarea>
                  </state>
                  <state name="selectedactive"> 
@@ -103,7 +104,7 @@
                          <font>basemediumlargerdarkyellow</font>
                          <multiline>yes</multiline>
                          <!-- cpu usage is very high
-@@ -170,6 +193,27 @@
+@@ -170,6 +194,27 @@
                      </textarea>
                  </state>
              </statetype>
-- 
cgit v0.12


From c3388932093f26d2b7fc36e772817766129a4ab4 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 18 Dec 2013 14:42:12 -0600
Subject: mythexpress, remyth: update to latest git pull  2013-12-18

---
 abs/extra/mythexpress/PKGBUILD | 4 ++--
 abs/extra/remyth/PKGBUILD      | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/abs/extra/mythexpress/PKGBUILD b/abs/extra/mythexpress/PKGBUILD
index 37a9dfb..51e5c32 100755
--- a/abs/extra/mythexpress/PKGBUILD
+++ b/abs/extra/mythexpress/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=mythexpress
-pkgver=20121210
-pkgrel=2
+pkgver=20131218
+pkgrel=1
 pkgdesc="MythExpress is a browser-based interface to MythTV HTTP streaming capability"
 arch=('i686' 'x86_64')
 url="https://github.com/MythTV-Clients/MythExpress"
diff --git a/abs/extra/remyth/PKGBUILD b/abs/extra/remyth/PKGBUILD
index 7243a12..bc838fc 100755
--- a/abs/extra/remyth/PKGBUILD
+++ b/abs/extra/remyth/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=remyth
-pkgver=20121210
-pkgrel=3
+pkgver=20131218
+pkgrel=1
 pkgdesc="This project is meant to provide a nicer remote for your MythTV Frontends. "
 arch=('i686' 'x86_64')
 url="https://github.com/SchraderMJ11/ReMyth"
-- 
cgit v0.12


From 9f972b757f89868f1cf240ce536fe0a663587228 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 18 Dec 2013 18:26:35 -0600
Subject: LinHES-config: remove mythinstall as a dependency.  This gets rid of
 the circular tree which causes mythtv to be installed before LinHES-config.

---
 abs/core/LinHES-config/PKGBUILD | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 25dd960..75b93a2 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,12 +1,12 @@
 pkgname=LinHES-config
 pkgver=8.1
-pkgrel=7
+pkgrel=8
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
 	 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted'
 	 'python-pexpect' 'python-netifaces' 'xcursor-vanilla-dmz-aa'
-	 'python-iplib' 'mythinstall>=2-10' 'sudo' 'setserial' 'udevil' 'balance')
+	 'python-iplib' 'sudo' 'setserial' 'udevil' 'balance' )
 arch=('i686' 'x86_64')
 
 source=(mv_install.py 09_mythvantge_runit_grub
-- 
cgit v0.12


From feda35810dff24107c51d15cac5ad22c3ba64139 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 19 Dec 2013 13:26:26 -0600
Subject: supplemental-web: add local-website as a conflicts

---
 abs/core/supplemental-web/PKGBUILD | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/abs/core/supplemental-web/PKGBUILD b/abs/core/supplemental-web/PKGBUILD
index 0ac38a4..dd73d51 100644
--- a/abs/core/supplemental-web/PKGBUILD
+++ b/abs/core/supplemental-web/PKGBUILD
@@ -1,7 +1,7 @@
 pkgbase=supplemental-web
 pkgname=('supplemental-web' 'supplemental-web-slave')
 pkgver=8.0
-pkgrel=14
+pkgrel=15
 arch=('i686' 'x86_64')
 license=('GPL')
 backup=('data/srv/httpd/cgi/extra.cfg.txt')
@@ -9,9 +9,10 @@ source=(lighttpd-supplement.conf extra.cfg.txt wakeonlan.sh slaveserve.py supple
 
 package_supplemental-web() {
     pkgdesc="supplemental-web package for master backend"
-    depends=('wol' 'etherwake' 'lighttpd'  'php' 'fcgi' 'python2' 'xymonserver' 'certmaster' 'func' 'python_aosd' 'LinHES-system>=2-50' 'shellinabox')
+    depends=('wol' 'etherwake' 'lighttpd'  'php' 'fcgi' 'python2' 'xymonserver' 'certmaster' 'func' 'python_aosd' 'shellinabox')
     install=supplemental-web.install
     replaces='local-website'
+    conflicts='local-website'
 
     MVDIR=$pkgdir/usr/MythVantage
     install -m755 -D lighttpd-supplement.conf $pkgdir/etc/gen_light_conf.d/lighttpd-supplement.conf
@@ -31,7 +32,7 @@ package_supplemental-web() {
 package_supplemental-web-slave() {
     pkgdesc="supplemental-web package for slave backend"
     depends=('python2' 'func' 'python_aosd' 'LinHES-system>=2-50')
-    conflicts="supplemental-web"
+    conflicts=("supplemental-web" "local-website")
     mkdir -p $pkgdir/data/srv/httpd/
     cp -rp $startdir/cgi $pkgdir/data/srv/httpd/
     chown -R root:root $pkgdir/data/srv/httpd/
-- 
cgit v0.12


From 4d17d1625762e29a53f44f4a9ffb185b2bca189c Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 26 Dec 2013 10:11:48 -0600
Subject: gstreamer: initial inclusion.

dep of gst-plugins-base which is a dep of handbrake.
---
 abs/extra/gstreamer/PKGBUILD | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 abs/extra/gstreamer/PKGBUILD

diff --git a/abs/extra/gstreamer/PKGBUILD b/abs/extra/gstreamer/PKGBUILD
new file mode 100644
index 0000000..789950b
--- /dev/null
+++ b/abs/extra/gstreamer/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gstreamer
+pkgver=1.2.1
+pkgrel=1
+pkgdesc="GStreamer Multimedia Framework"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://gstreamer.freedesktop.org/"
+depends=('libxml2' 'glib2')
+optdepends=('sh: feedback script')
+makedepends=('intltool' 'pkgconfig' 'gtk-doc' 'gobject-introspection')
+source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.xz)
+sha256sums=('a4523d2471bca6cd0059a32e3b042f50faa4dadc6439852af8b43ca3f17d1fc9')
+
+build() {
+  cd "${srcdir}/gstreamer-${pkgver}"
+  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib \
+    --with-package-name="GStreamer (Arch Linux)" \
+    --with-package-origin="http://www.archlinux.org/" \
+    --enable-gtk-doc --disable-static
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=655517
+  sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+
+  make
+}
+
+check() {
+  cd "${srcdir}/gstreamer-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${srcdir}/gstreamer-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}
-- 
cgit v0.12


From 4c865cf35a4205d73c5e40936e5fdc29a0360e68 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 26 Dec 2013 13:34:27 -0600
Subject: gst-plugins-base: initial inclusion.

dep of handbrake.
---
 abs/extra/gst-plugins-base/PKGBUILD | 54 +++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 abs/extra/gst-plugins-base/PKGBUILD

diff --git a/abs/extra/gst-plugins-base/PKGBUILD b/abs/extra/gst-plugins-base/PKGBUILD
new file mode 100644
index 0000000..7fa8418
--- /dev/null
+++ b/abs/extra/gst-plugins-base/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gst-plugins-base
+pkgname=('gst-plugins-base-libs' 'gst-plugins-base')
+pkgver=1.2.1
+pkgrel=1
+pkgdesc="GStreamer Multimedia Framework Base Plugins"
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('pkgconfig' 'gstreamer' 'orc' 'libxv' 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango' 'gobject-introspection')
+options=(!emptydirs)
+url="http://gstreamer.freedesktop.org/"
+source=(${url}/src/$pkgbase/$pkgbase-${pkgver}.tar.xz)
+sha256sums=('de2444a5c150d4e4b680364d7c0414cd8b015d95b305ff65d65a17683379532f')
+
+build() {
+  cd $pkgbase-$pkgver
+
+  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+    --disable-static --enable-experimental \
+    --with-package-name="GStreamer Base Plugins (Arch Linux)" \
+    --with-package-origin="http://www.archlinux.org/"
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=655517
+  sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+
+  make
+
+  sed -e 's/^SUBDIRS_EXT =.*/SUBDIRS_EXT =/' -i Makefile
+}
+
+check() {
+  cd $pkgbase-$pkgver
+  # Testsuite fails on one test. Some refcount leak
+  make check
+}
+
+package_gst-plugins-base-libs() {
+  pkgdesc="GStreamer Multimedia Framework Base Plugin libraries"
+  depends=('gstreamer' 'orc' 'libxv')
+
+  cd $pkgbase-$pkgver
+  make DESTDIR="${pkgdir}" install
+}
+
+package_gst-plugins-base() {
+  depends=("gst-plugins-base-libs=$pkgver" 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango')
+
+  cd $pkgbase-$pkgver
+  make -C gst-libs DESTDIR="${pkgdir}" install
+  make -C ext DESTDIR="${pkgdir}" install
+  make -C gst-libs DESTDIR="${pkgdir}" uninstall
+}
-- 
cgit v0.12


From 816f6f419c662354f4224f8d82387fc27693b0fb Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 26 Dec 2013 13:53:13 -0600
Subject: handbrake: update to 0.9.9

---
 abs/extra/handbrake/PKGBUILD | 52 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 42 insertions(+), 10 deletions(-)

diff --git a/abs/extra/handbrake/PKGBUILD b/abs/extra/handbrake/PKGBUILD
index b70180a..e2b4833 100644
--- a/abs/extra/handbrake/PKGBUILD
+++ b/abs/extra/handbrake/PKGBUILD
@@ -1,34 +1,65 @@
-# $Id: PKGBUILD 74053 2012-07-18 17:33:26Z foutrelis $
+# $Id$
 # Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
 # Contributor: Giovanni Scafora <giovanni@archlinux.org>
 # Contributor: Sebastien Piccand <sebcactus gmail com>
 
 pkgname=('handbrake' 'handbrake-cli')
-pkgver=0.9.8
-pkgrel=1
+pkgver=0.9.9
+pkgrel=5
 arch=('i686' 'x86_64')
 url="http://handbrake.fr/"
 license=('GPL')
 makedepends=('intltool' 'python2' 'yasm' 'wget' 'bzip2' 'gcc-libs' 'libnotify'
-             'gstreamer0.10-base' 'gtk2' 'dbus-glib' 'fribidi')
+             'gst-plugins-base' 'gtk3' 'dbus-glib' 'fribidi' 'libass'
+             'fontconfig' 'freetype2' 'libxml2' 'libogg' 'libvorbis'
+             'libtheora' 'libsamplerate' 'libbluray' 'x264')
 source=(http://downloads.sourceforge.net/project/handbrake/$pkgver/HandBrake-$pkgver.tar.bz2)
-sha256sums=('dba75a9ff772e419c01d75532c1bf0d7253e73d7ead184eee755cd4c133dc798')
+sha256sums=('a71dd774104cda00cfb51a813550351d638253791f2f419d04a66f3158a835b3')
 
-build() {
+prepare() {
   cd "$srcdir/HandBrake-$pkgver"
 
   # Use Python 2
   sed -i 's/python /python2 /' gtk/src/Makefile.am
 
-  ./configure --prefix=/usr --force --disable-gtk-update-checks
+  # Use more system libs
+  # We had ffmpeg here as well but it broke PGS subtitle processing
+  # https://forum.handbrake.fr/viewtopic.php?f=13&t=27581
+  sed -i \
+    -e '/MODULES += contrib\/libbluray/d' \
+    -e '/MODULES += contrib\/x264/d' \
+    make/include/main.defs
+
+  # Fix configure.ac to work with automake 1.13
+  cd gtk
+  sed -i \
+    -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' \
+    -e '/AM_PROG_CC_STDC/d' \
+    -e 's/$pkg_gudev"/gmodule-2.0 $pkg_gudev"/' \
+    configure.ac
+
+  autoreconf -vi
+}
+
+build() {
+  cd "$srcdir/HandBrake-$pkgver"
+
+  ./configure \
+    --prefix=/usr \
+    --force \
+    --disable-gtk-update-checks
   cd build
   make
 }
 
 package_handbrake() {
   pkgdesc="Multithreaded video transcoder"
-  depends=('bzip2' 'gcc-libs' 'gstreamer0.10-base' 'libnotify' 'dbus-glib'
-           'fribidi' 'gtk2' 'desktop-file-utils' 'hicolor-icon-theme')
+  depends=('bzip2' 'gcc-libs' 'gst-plugins-base' 'libnotify' 'dbus-glib'
+           'fribidi' 'libass' 'gtk3' 'fontconfig' 'freetype2' 'libxml2'
+           'libogg' 'libvorbis' 'libtheora' 'libsamplerate' 'libbluray'
+           'x264' 'desktop-file-utils' 'hicolor-icon-theme')
+  optdepends=('gst-plugins-good: for video previews'
+              'gst-libav: for video previews')
   install=$pkgname.install
 
   cd "$srcdir/HandBrake-$pkgver/build"
@@ -39,7 +70,8 @@ package_handbrake() {
 
 package_handbrake-cli() {
   pkgdesc="Multithreaded video transcoder (CLI)"
-  depends=('bzip2' 'gcc-libs' 'zlib' 'fribidi')
+  depends=('bzip2' 'gcc-libs' 'zlib' 'fribidi' 'libass' 'libxml2' 'libtheora'
+           'libsamplerate' 'libbluray' 'x264')
 
   cd "$srcdir/HandBrake-$pkgver/build"
   install -D HandBrakeCLI "$pkgdir/usr/bin/HandBrakeCLI"
-- 
cgit v0.12