[Pkg-wmaker-commits] [wmtv] 09/48: Imported Debian patch 0.6.5-13

Doug Torrance dtorrance-guest at moszumanska.debian.org
Mon Feb 1 20:13:20 UTC 2016


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch master
in repository wmtv.

commit 846e33353c58a161be36de92af6dd21bd253f02d
Author: Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>
Date:   Wed Feb 20 02:21:14 2002 +0100

    Imported Debian patch 0.6.5-13
---
 Makefile             |  43 +++--
 conffiles            |   1 -
 debian/README.Debian |  22 +++
 debian/changelog     |  98 +++++++++--
 debian/control       |  13 +-
 debian/copyright     |   9 +-
 debian/rules         |  43 ++---
 debian/wmtv.1x       | 136 ++++++++++-----
 src/channels.h       | 457 ++++++++++++++++++++++++++++-----------------------
 src/wmtv.c           | 363 +++++++++++++++++++++++++---------------
 10 files changed, 738 insertions(+), 447 deletions(-)

diff --git a/Makefile b/Makefile
index 3669139..3497aa6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,26 +1,37 @@
 #
 #	Makefile for wmtv
 #
-INCDIR	=	-I/usr/X11R6/include
-LIBDIR	=	-L/usr/X11R6/lib
-LIBS	=	-lXpm -lXext -lX11 -lXxf86dga -lXxf86vm
-OBJS	=	src/wmtv.o \
-			src/wmgeneral/wmgeneral.o \
+DEBUG	= 
+
+CC	= gcc
+CPPFLAGS= -DGLOBALCONFFILE="\"$(ETCDIR)/wmtvrc\""
+CFLAGS	= $(DEBUG) -O2 -Wall 
+LDFLAGS = $(DEBUG) -L/usr/X11R6/lib
+LIBS	= -lXpm -lXext -lX11 -lXxf86dga -lXxf86vm
+OBJS	= src/wmtv.o src/wmgeneral/wmgeneral.o
+PROG	= wmtv
+
+INSTALL	= install
+INSTALL_FILE	= $(INSTALL) -p -o root -g root -m 644
+INSTALL_PROGRAM	= $(INSTALL) -p -o root -g root -m 755
+
+DESTDIR = 
+BINDIR  = /usr/X11R6/bin
+ETCDIR  = /etc
 
 .c.o:
-	cc -g -c -O2 -Wall -D$(shell echo `uname -s`) $< -o $*.o $(INCDIR)
+	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
 
-all: wmtv
+all: $(PROG)
 
-wmtv: $(OBJS)
-	cc -g -o wmtv $^ $(LIBDIR) $(LIBS)
+$(PROG): $(OBJS)
+	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
 
-install: all
-	install -s -m 4755 -o root wmtv $(DESTDIR)/usr/X11R6/bin/wmtv
-	install -m 0644 -o root -g root wmtvrc.sample $(DESTDIR)/etc/wmtvrc
+install: $(PROG)
+	$(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(BINDIR)/$(PROG)
+	$(INSTALL_FILE) wmtvrc.sample $(DESTDIR)$(ETCDIR)/wmtvrc
 
 clean:
-	for i in $(OBJS) ; do \
-		rm -f $$i; \
-	done
-	rm -f wmtv
+	rm -f $(OBJS) $(PROG)
+
+.PHONY: all install clean
diff --git a/conffiles b/conffiles
deleted file mode 100644
index d8826dc..0000000
--- a/conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/wmtvrc
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..6b77a1c
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,22 @@
+The upstream author of wmtv seams to have disappeared and not to take
+care of wmtv any more. The web page where wmtv used to be has even
+disappeared. So, wmtv is now fully maintained within Debian.
+
+After fixing a few bugs, features are now being added to wmtv.
+
+It is now possible to pass some parameters to the external application
+(declared by the -e or --exe option) through % codes:
+   * %% is replaced by a single raw %
+   * %n is replaced by the name of the current channel
+   * %# is replaced by the number of the current channel
+   * %f is replaced by the current frequency
+Other % codes my lead to unspecified behaviors.
+
+Hence, if you use both wmtv and xawtv, and if the channels are
+declared with the same names in your .wmtvrc and .xawtv, you may want
+to run
+  wmtv -e 'xawtv "%n"'
+Then, when you double-click in wmtv's window, xawtv is run on the
+same channel!
+
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>, Mon, 18 Feb 2001 1:26:32 +0100
diff --git a/debian/changelog b/debian/changelog
index 65a8187..ac0d9ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,25 +1,95 @@
-wmtv (0.6.5-3potato3) stable; urgency=high
+wmtv (0.6.5-13) unstable; urgency=medium
 
-  * Source rebuild to fix archive fuckup and to let the security update
-    propagate into stable/sparc
-  * From 0.6.5-2potato2: Fixed possible symlinks attacks and buffer overflows
-  * From 0.6.5-2potato1: Fixed local root vulnerability by dropping
-    privileges before executing an external viewer
+  * Added missing #include in wmtv.c.
+  * Automatically restarts the TV when the external application finishes.
+  * In fullscreen mode, the left and right arrow keys now behave as
+    specified in the README file and in the manpage. (Closes: #133301)
+  * Added the ability to pass some parameters to the external
+    application.
+  * Enhanced the manpage with descriptions of the new (or previously
+    undocumented) features.
 
- -- Martin Schulze <joey at infodrom.org>  Tue,  2 Jul 2002 00:29:00 +0200
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Wed, 20 Feb 2002 02:21:14 +0100
 
-wmtv (0.6.5-2potato2) stable; urgency=high
+wmtv (0.6.5-12) unstable; urgency=low
 
-  * Fixed possible symlinks attacks and buffer overflows.
+  * Catch SIGCHLD signals to remove zombies. (Closes: #129435)
 
- -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Fri,  7 Dec 2001 01:00:46 +0100
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Tue, 29 Jan 2002 01:06:24 +0100
 
-wmtv (0.6.5-2potato1) unstable; urgency=low
+wmtv (0.6.5-11) unstable; urgency=medium
 
-  * Fixed local root vulnerability by dropping privileges before
-    executing an external viewer (#118778).
+  * Corrected a bug introduced in version 0.6.5-9, causing the program to
+    segfault while reverting from fullscreen back to normal mode.
+    (Closes: #128409) 
 
- -- Remi Lefebvre <remi at debian.org>  Tue, 20 Nov 2001 02:28:51 +0100
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Wed,  9 Jan 2002 19:48:47 +0100
+
+wmtv (0.6.5-10) unstable; urgency=low
+
+  * Corrected capitalization in description. (Closes: #125501)
+  * Trying to change channel while the TV is off does nothing, and does
+    not segfault anymore.
+  * Cleaned Makefile.
+  * Corrected strange behavior when the mouse was moved out of a pressed
+    button.
+  * Upgraded policy version to 3.5.6.
+
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Sat,  5 Jan 2002 02:40:18 +0100
+
+wmtv (0.6.5-9) unstable; urgency=medium
+
+  * The program does not need any more to be setuid root.
+    (Closes: #120832)
+
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Thu, 29 Nov 2001 00:56:56 +0100
+
+wmtv (0.6.5-8) unstable; urgency=high
+
+  * New maintainer.
+  * Added support for french channels. (Closes: #119767)
+  * Can now start even if the user has no configuration file.
+    (Closes: #120024)
+  * Does not shorten the user's configuration file any more.
+    (Closes: #120035)
+  * Drop privileges to access files, and then regain privileges.
+    (Closes: #120825)
+  * A new user's configuration file is automatically created when needed.
+  * Cleaned up a few possible buffer overflows.
+
+ -- Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>  Sun, 25 Nov 2001 19:40:37 +0100
+
+wmtv (0.6.5-7) unstable; urgency=high
+
+  * Drop privileges before calling external program. Thanks to
+    Nicolas Boullis. (Closes: #118778)
+
+ -- Remi Lefebvre <remi at debian.org>  Mon, 12 Nov 2001 17:44:25 -0500
+
+wmtv (0.6.5-6) unstable; urgency=low
+
+  * Added build depend on xlibs-dev (Closes: #106438).
+
+ -- Remi Lefebvre <remi at debian.org>  Tue, 24 Jul 2001 18:40:11 -0400
+
+wmtv (0.6.5-5) unstable; urgency=low
+
+  * Patch to fix bytes per line calculation (Closes: #93439).
+  * Config file handling patch from Yann Vernier (Closes: #105325).
+
+ -- Remi Lefebvre <remi at debian.org>  Sat, 21 Jul 2001 09:28:54 -0400
+
+wmtv (0.6.5-4) unstable; urgency=low
+
+  * Replaced dh_suidregister call. (Closes: #84515)
+
+ -- Remi Lefebvre <remi at debian.org>  Sun,  4 Feb 2001 11:17:56 -0500
+
+wmtv (0.6.5-3) unstable; urgency=low
+
+  * Depend on libxpm4 rather than xpm4g (Closes: #67988).
+
+ -- Remi Lefebvre <remi at debian.org>  Sun, 30 Jul 2000 16:22:09 -0400
 
 wmtv (0.6.5-2) unstable; urgency=low
 
diff --git a/debian/control b/debian/control
index 83a4ef5..988f389 100644
--- a/debian/control
+++ b/debian/control
@@ -2,12 +2,13 @@ Source: wmtv
 Section: x11 
 Priority: extra 
 Maintainer: Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>
-Standards-Version: 3.0.0
+Build-Depends: debhelper (>=2.0.0), xlibs-dev
+Standards-Version: 3.5.6
 
 Package: wmtv
 Architecture: any
-Depends: ${shlibs:Depends}
-Description: Dockable video4linux tv player for windowmaker
- A miniature size dockable tv app. It currently supports channel presets,
- PAL/Secam/NTSC, fine tuning, scanning of TV stations use of external TV 
- application and more.
+Depends: ${shlibs:Depends}, v4l-conf
+Description: Dockable video4linux TV player for WindowMaker
+ A miniature size dockable TV appllication. It currently supports
+ channel presets, PAL/SECAM/NTSC, fine tuning, scanning of TV stations,
+ use of external TV application, and more.
diff --git a/debian/copyright b/debian/copyright
index 7f50033..e828c50 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,5 +6,10 @@ It was downloaded from http://www.student.uwa.edu.au/~wliang
 Upstream Author(s): Wee Liang <wliang at tartarus.uwa.edu.au>
 
 Copyright:
-GPLv2. You should find a copy of it in /usr/doc/copyright/GPL on 
-Debian GNU/Linux systems.
+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.
+
+You can find a copy of the GPLv2 in /usr/share/common-licenses/GPL
+on Debian GNU/Linux systems.
diff --git a/debian/rules b/debian/rules
index 3bbe5ff..0514279 100755
--- a/debian/rules
+++ b/debian/rules
@@ -6,69 +6,52 @@
 
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
-export DH_COMPAT=2
+
+# This is the debhelper compatability version to use.
+export DH_COMPAT=3
+
+DEBUG=
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+DEBUG=-g
+endif
 
 build: build-stamp
 build-stamp:
-	dh_testversion 2
 	dh_testdir
-
-	# Add here commands to compile the package.
-	$(MAKE) 
-
+	$(MAKE) DEBUG=$(DEBUG)
 	touch build-stamp
 
 clean:
 	dh_testdir
 	dh_testroot
-	rm -f build-stamp install-stamp
-
-	# Add here commands to clean up after the build process.
+	rm -f build-stamp
 	-$(MAKE) clean
-
 	dh_clean
 
-install: install-stamp
-install-stamp: build-stamp
+install: build
 	dh_testdir
 	dh_testroot
 	dh_clean -k
 	dh_installdirs
-
-	# Add here commands to install the package into debian/tmp.
 	$(MAKE) install DESTDIR=`pwd`/debian/wmtv
 
-	touch install-stamp
-
-# Build architecture-independent files here.
 binary-indep: build install
-# We have nothing to do by default.
+# We have nothing to do.
 
-# Build architecture-dependent files here.
 binary-arch: build install
-#	dh_testversion
 	dh_testdir
 	dh_testroot
 	dh_installdocs
-	dh_installcron
 	dh_installmanpages
 	dh_installchangelogs CHANGES
-	dh_link
 	dh_strip
 	dh_compress
-	dh_fixperms -Xwmtv
-	# You may want to make some executables suid here
-	dh_suidregister
-#	dh_makeshlibs
+	dh_fixperms
 	dh_installdeb
-#	dh_perl 
 	dh_shlibdeps
 	dh_gencontrol
 	dh_md5sums
 	dh_builddeb
 
-source diff:                                                                  
-	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
-
 binary: binary-indep binary-arch
 .PHONY: build clean binary-indep binary-arch binary
diff --git a/debian/wmtv.1x b/debian/wmtv.1x
index e58f452..cea590d 100644
--- a/debian/wmtv.1x
+++ b/debian/wmtv.1x
@@ -1,8 +1,8 @@
-.TH wmtv 1
+.TH WMTV 1
 .\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
 .\" other parms are allowed: see man(7), man(1)
 .SH "NAME"
-wmtv \- dockable video4linux tv player for window-maker.  
+wmtv \- dockable video4linux TV player for WindowMaker.  
 
 .SH "SYNOPSIS"
 .B wmtv
@@ -10,7 +10,7 @@ wmtv \- dockable video4linux tv player for window-maker.
 
 .SH "DESCRIPTION"
 .BR wmtv 
-is a dockable video4linux tv player. It supports channel presets, 
+is a dockable video4linux TV player. It supports channel presets, 
 PAL/Secam/NTSC, fine tuning, full screen display, ... This manual 
 page was written for the Debian GNU/Linux distribution because the 
 original program does not have a manual page. It is widely based on
@@ -18,9 +18,14 @@ the README provided with the program.
 
 .SH "OPTIONS"
 .TP
+.B \-d, \-\-display
+Specifies the X server to contact.
+
+.TP
 .B \-e, \-\-exe
-Uses an external tv player to be launched when double clicking on the
-tv screen.
+Uses an external TV player to be launched when double clicking on the
+TV screen. It is possible to pass some parameters to this external
+application with % codes.
 
 .SH "USAGE"
 This sections describes how to use the application in docked
@@ -40,7 +45,7 @@ The 3 modes are described below:
 .in +5
 .B "On mode"
 .br
-.B "---------"
+.B "-------"
 .br
 Clicking on the rightmost button <3> for the first time (after the
 start of WMTV) would turn TV on. During this mode, the left <1> and 
@@ -72,8 +77,8 @@ modes described above, would turn the TV off.
 Right clicking once on the TV Screen would mute/unmute the audio.
 
 Double clicking LEFT mouse button on the TV Screen would launch your
-favorite TV application when specified with --exe <filename> option in
-the command line. If the external application is not set, It'll
+favorite TV application when specified with the -e/--exe option in the
+command line. If the external application is not set, It'll
 automatically switch to the build in full screen mode. Double clicking
 the MIDDLE mouse button on the TV Screen would bring you into the
 built in full screen mode.
@@ -86,20 +91,42 @@ Single click on any mouse button will return to initial screen.
 .B ------------------
 .br
 .in +2
-Up      -  Switch preset channels up.
+Up     - Switch preset channels up.
 .br
-Down    -  Switch preset channels down.
+Down   - Switch preset channels down.
 .br
-Right   -  Volume up.
+Right  - Volume up. (If supported by the v4l device.)
 .br
-Left    -  Volume down.
+Left   - Volume down. (If supported.)
 .br
-Escape  -  Return to initial screen.
+Escape - Return to initial screen.
 .br
-m       -  mute/unmute audio.
+m      - mute/unmute audio.
 .br
 .in -2
 
+.SH "EXTERNAL APPLICATION"
+It is possible to pass some parameters to the external application
+through % codes:
+.br
+.in +2
+.B %%
+is replaced by a single raw %.
+.br
+.B %n
+is replaced by the name of the current channel.
+.br
+.B %#
+is replaced by the number of the current channel.
+.br
+.B %f
+is replaced by the current frequency.
+.br
+.in -2
+Other % codes my lead to unspecified behaviors.
+
+Example: wmtv -e 'xawtv "%n"'
+
 .SH "CONFIGURATION FILE"
 This section describes on how to configure WMTV's configuration file.
 Your configuration file is located in your home directory as ".wmtvrc". 
@@ -123,19 +150,19 @@ fullscreen = 640x480
 .sp
 [channel]
 .br
-2
+2       NAME
 .br
-7
+7       FOO
 .br
-9
+9       BAR
 .br
-10
+10      FOOBAR
 .br
 32 (50)
 .br
 SE11
 .br
-S21
+S21     LAST CHANNEL
 .br
 -------------------------*/
 .br
@@ -145,45 +172,71 @@ S21
 .br
 .B --------
 .br
-source = {Television|CompositeX|S-Video} (X is an integer)
+source = { Television | CompositeX | S-Video } (X is an integer)
 .br
 .sp
-freqnorm = {ntsc-bcast|ntsc-cable|ntsc-cable-hrc|ntsc-bcast-jp|ntsc-cable-jp|pal
--europe|pal-europe-east|pal-italy|pal-newzealand|pal-australia|pal-ireland}
+freqnorm = { ntsc-bcast | ntsc-cable | ntsc-cable-hrc | ntsc-bcast-jp
+| ntsc-cable-jp | pal-europe | pal-europe-east | pal-italy |
+pal-newzealand | pal-australia | pal-ireland | secam-france }
 
 maxpreset = integer (maximum channel presets)
 
-mode = {pal|ntsc|secam}
+mode = { pal | ntsc | secam }
 
-fullscreen = {widthxheight}
+fullscreen = widthxheight
 
 [channel]
-choose a total of <maxpreset> from the below channels.
-separate it with a new line as in the sample config file above.
+.br
+Choose a total of <maxpreset> from the below channels.
+.br
+Separate the channels with a new line as in the sample config file above.
 .br
 {
- E2|E3|E4|
- S01|S02|S03|
- R1|R2|R3|R4|R5|
- SE1|SE2|SE3|SE4|SE5|SE6|SE7|SE8|SE9|SE10|
- E5|E6|E7|E8|E9|E10|E11|E12|
- R6|R7|R8|R9|R10|R11|R12|
- SE11|SE12|SE13|SE14|SE15|SE16|SE17|SE18|SE19|SE20|
- S21|S22|S23|S24|S25|S26|S27|S28|S29|S30|S31|S32|S33|S34|S35|S36|S37|S38|S39|S40
-|S41
- T7|T8|T9|T10|T11|T12|T13|T14|
- 1 - 125
+.in +2
 .br
+E2 | E3 | E4 |
+.br
+S01 | S02 | S03 |
+.br
+R1 | R2 | R3 | R4 | R5 |
+.br
+SE1 | SE2 | SE3 | SE4 | SE5 | SE6 | SE7 | SE8 | SE9 | SE10 |
+.br
+E5 | E6 | E7 | E8 | E9 | E10 | E11 | E12 |
+.br
+R6 | R7 | R8 | R9 | R10 | R11 | R12 |
+.br
+SE11 | SE12 | SE13 | SE14 | SE15 | SE16 | SE17 | SE18 | SE19 | SE20 |
+.br
+S21 | S22 | S23 | S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32
+| S33 | S34 | S35 | S36 | S37 | S38 | S39 | S40 | S41 |
+.br
+T7 | T8 | T9 | T10 | T11 | T12 | T13 | T14 |
+.br
+K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K10 |
+.br
+KB | KC | KD | KE | KF | KG | KH | KI | KJ | KK | KL | KM | KN | KO |
+KP | KQ |
+.br
+H01 | H02 | H03 | H04 | H05 | H06 | H07 | H08 | H09 | H10 | H11 | H12
+| H13 | H14 | H15 | H16 | H17 | H18 | H19 |
+.br
+1 - 125
+.br
+.in -2
 }
 .br
-finetune parameters could be added spaced after the channel name above
-in a bracket.
+Finetune parameters could be added in brackets, spaced after the
+channel.
+.br
+A name for the channel can also be specified, tabbed after the
+finetune.
 .br
 .sp
 for example:
   32 (50)                 # channel 32 plus 50
   or
-  SE11 (-10)              # channel SE11 minus 10
+  SE11    LAST CHANNEL    # channel SE11 called "LAST CHANNEL"
 
 .SH "FILES"
 .TP
@@ -198,6 +251,7 @@ Users config file.
 .\".IR "The Rise and Fall of a Fooish Bar" ,
 .\"available via the Info system.
 .SH AUTHOR
-This manual page was written by Remi Lefebvre <remi at debian.org>,
+This manual page was first written by Remi Lefebvre <remi at debian.org>,
+and then modified by Nicolas Boullis <Boullis.Nicolas at libertysurf.fr>,
 for the Debian GNU/Linux system (but may be used by others).
 
diff --git a/src/channels.h b/src/channels.h
index 72af0fd..fb9ac19 100644
--- a/src/channels.h
+++ b/src/channels.h
@@ -93,229 +93,275 @@ struct gentab {
 
 struct freqlist {
   char name[4];
-  int freq[12];
+  int freq[13];
 };
 
 struct freqlist tvtuner[] = {
-/* CH	      US-TV	US-CATV	US-HRC	JP-TV	JP-CATV	EUROPE	EUR-E	ITALY	NZ	AU	UHF_GHI */
-{"E2",	{     0,	0,	0,	0,	0,	48250,	0,	0,	0,	0,	0}},
-{"E3",	{     0,	0,	0,	0,	0,	55250,	0,	0,	0,	0,	0}},
-{"E4",	{     0,	0,	0,	0,	0,	62250,	0,	0,	0,	0,	0}},
+/* CH	      US-TV	US-CATV	US-HRC	JP-TV	JP-CATV	EUROPE	EUR-E	ITALY	NZ	AU	UHF_GHI	FR */
+{"E2",	{     0,	0,	0,	0,	0,	48250,	0,	0,	0,	0,	0,	0}},
+{"E3",	{     0,	0,	0,	0,	0,	55250,	0,	0,	0,	0,	0,	0}},
+{"E4",	{     0,	0,	0,	0,	0,	62250,	0,	0,	0,	0,	0,	0}},
 
-{"S01",	{     0,	0,	0,	0,	0,	69250,	0,	0,	0,	0,	0}},
-{"S02",	{     0,	0,	0,	0,	0,	76250,	0,	0,	0,	0,	0}},
-{"S03",	{     0,	0,	0,	0,	0,	83250,	0,	0,	0,	0,	0}},
+{"S01",	{     0,	0,	0,	0,	0,	69250,	0,	0,	0,	0,	0,	0}},
+{"S02",	{     0,	0,	0,	0,	0,	76250,	0,	0,	0,	0,	0,	0}},
+{"S03",	{     0,	0,	0,	0,	0,	83250,	0,	0,	0,	0,	0,	0}},
 
-{"R1",	{     0,	0,	0,	0,	0,	0,	49750,	0,	0,	0,	0}},
-{"R2",	{     0,	0,	0,	0,	0,	0,	59250,	0,	0,	0,	0}},
-{"R3",	{     0,	0,	0,	0,	0,	0,	77250,	0,	0,	0,	0}},
-{"R4",	{     0,	0,	0,	0,	0,	0,	84250,	0,	0,	0,	0}},
-{"R5",	{     0,	0,	0,	0,	0,	0,	93250,	0,	0,	0,	0}},
+{"R1",	{     0,	0,	0,	0,	0,	0,	49750,	0,	0,	0,	0,	0}},
+{"R2",	{     0,	0,	0,	0,	0,	0,	59250,	0,	0,	0,	0,	0}},
+{"R3",	{     0,	0,	0,	0,	0,	0,	77250,	0,	0,	0,	0,	0}},
+{"R4",	{     0,	0,	0,	0,	0,	0,	84250,	0,	0,	0,	0,	0}},
+{"R5",	{     0,	0,	0,	0,	0,	0,	93250,	0,	0,	0,	0,	0}},
 
-{"SE1",	{     0,	0,	0,	0,	0,	105250,	105250,	0,	0,	0,	0}},
-{"SE2",	{     0,	0,	0,	0,	0,	112250,	112250,	0,	0,	0,	0}},
-{"SE3",	{     0,	0,	0,	0,	0,	119250,	119250,	0,	0,	0,	0}},
-{"SE4",	{     0,	0,	0,	0,	0,	126250,	126250,	0,	0,	0,	0}},
-{"SE5",	{     0,	0,	0,	0,	0,	133250,	133250,	0,	0,	0,	0}},
-{"SE6",	{     0,	0,	0,	0,	0,	140250,	140250,	0,	0,	0,	0}},
-{"SE7",	{     0,	0,	0,	0,	0,	147250,	147250,	0,	0,	0,	0}},
-{"SE8",	{     0,	0,	0,	0,	0,	154250,	154250,	0,	0,	0,	0}},
-{"SE9",	{     0,	0,	0,	0,	0,	161250,	161250,	0,	0,	0,	0}},
-{"SE10",{     0,	0,	0,	0,	0,	168250,	168250,	0,	0,	0,	0}},
+{"SE1",	{     0,	0,	0,	0,	0,	105250,	105250,	0,	0,	0,	0,	0}},
+{"SE2",	{     0,	0,	0,	0,	0,	112250,	112250,	0,	0,	0,	0,	0}},
+{"SE3",	{     0,	0,	0,	0,	0,	119250,	119250,	0,	0,	0,	0,	0}},
+{"SE4",	{     0,	0,	0,	0,	0,	126250,	126250,	0,	0,	0,	0,	0}},
+{"SE5",	{     0,	0,	0,	0,	0,	133250,	133250,	0,	0,	0,	0,	0}},
+{"SE6",	{     0,	0,	0,	0,	0,	140250,	140250,	0,	0,	0,	0,	0}},
+{"SE7",	{     0,	0,	0,	0,	0,	147250,	147250,	0,	0,	0,	0,	0}},
+{"SE8",	{     0,	0,	0,	0,	0,	154250,	154250,	0,	0,	0,	0,	0}},
+{"SE9",	{     0,	0,	0,	0,	0,	161250,	161250,	0,	0,	0,	0,	0}},
+{"SE10",{     0,	0,	0,	0,	0,	168250,	168250,	0,	0,	0,	0,	0}},
 
-{"E5",	{     0,	0,	0,	0,	0,	175250,	0,	0,	0,	0,	0}},
-{"E6",	{     0,	0,	0,	0,	0,	182250,	0,	0,	0,	0,	0}},
-{"E7",	{     0,	0,	0,	0,	0,	189250,	0,	0,	0,	0,	0}},
-{"E8",	{     0,	0,	0,	0,	0,	196250,	0,	0,	0,	0,	0}},
-{"E9",	{     0,	0,	0,	0,	0,	203250,	0,	0,	0,	0,	0}},
-{"E10",	{     0,	0,	0,	0,	0,	210250,	0,	0,	0,	0,	0}},
-{"E11",	{     0,	0,	0,	0,	0,	217250,	0,	0,	0,	0,	0}},
-{"E12",	{     0,	0,	0,	0,	0,	224250,	0,	0,	0,	0,	0}},
+{"E5",	{     0,	0,	0,	0,	0,	175250,	0,	0,	0,	0,	0,	0}},
+{"E6",	{     0,	0,	0,	0,	0,	182250,	0,	0,	0,	0,	0,	0}},
+{"E7",	{     0,	0,	0,	0,	0,	189250,	0,	0,	0,	0,	0,	0}},
+{"E8",	{     0,	0,	0,	0,	0,	196250,	0,	0,	0,	0,	0,	0}},
+{"E9",	{     0,	0,	0,	0,	0,	203250,	0,	0,	0,	0,	0,	0}},
+{"E10",	{     0,	0,	0,	0,	0,	210250,	0,	0,	0,	0,	0,	0}},
+{"E11",	{     0,	0,	0,	0,	0,	217250,	0,	0,	0,	0,	0,	0}},
+{"E12",	{     0,	0,	0,	0,	0,	224250,	0,	0,	0,	0,	0,	0}},
 
-{"R6",	{     0,	0,	0,	0,	0,	0,	175250,	0,	0,	0,	0}},
-{"R7",	{     0,	0,	0,	0,	0,	0,	183250,	0,	0,	0,	0}},
-{"R8",	{     0,	0,	0,	0,	0,	0,	191250,	0,	0,	0,	0}},
-{"R9",	{     0,	0,	0,	0,	0,	0,	199250,	0,	0,	0,	0}},
-{"R10",	{     0,	0,	0,	0,	0,	0,	207250,	0,	0,	0,	0}},
-{"R11",	{     0,	0,	0,	0,	0,	0,	215250,	0,	0,	0,	0}},
-{"R12",	{     0,	0,	0,	0,	0,	0,	223250,	0,	0,	0,	0}},
+{"R6",	{     0,	0,	0,	0,	0,	0,	175250,	0,	0,	0,	0,	0}},
+{"R7",	{     0,	0,	0,	0,	0,	0,	183250,	0,	0,	0,	0,	0}},
+{"R8",	{     0,	0,	0,	0,	0,	0,	191250,	0,	0,	0,	0,	0}},
+{"R9",	{     0,	0,	0,	0,	0,	0,	199250,	0,	0,	0,	0,	0}},
+{"R10",	{     0,	0,	0,	0,	0,	0,	207250,	0,	0,	0,	0,	0}},
+{"R11",	{     0,	0,	0,	0,	0,	0,	215250,	0,	0,	0,	0,	0}},
+{"R12",	{     0,	0,	0,	0,	0,	0,	223250,	0,	0,	0,	0,	0}},
 
-{"SE11",{     0,	0,	0,	0,	0,	231250,	231250,	0,	0,	0,	0}},
-{"SE12",{     0,	0,	0,	0,	0,	238250,	238250,	0,	0,	0,	0}},
-{"SE13",{     0,	0,	0,	0,	0,	245250,	245250,	0,	0,	0,	0}},
-{"SE14",{     0,	0,	0,	0,	0,	252250,	252250,	0,	0,	0,	0}},
-{"SE15",{     0,	0,	0,	0,	0,	259250,	259250,	0,	0,	0,	0}},
-{"SE16",{     0,	0,	0,	0,	0,	266250,	266250,	0,	0,	0,	0}},
-{"SE17",{     0,	0,	0,	0,	0,	273250,	273250,	0,	0,	0,	0}},
-{"SE18",{     0,	0,	0,	0,	0,	280250,	280250,	0,	0,	0,	0}},
-{"SE19",{     0,	0,	0,	0,	0,	287250,	287250,	0,	0,	0,	0}},
-{"SE20",{     0,	0,	0,	0,	0,	294250,	294250,	0,	0,	0,	0}},
+{"SE11",{     0,	0,	0,	0,	0,	231250,	231250,	0,	0,	0,	0,	0}},
+{"SE12",{     0,	0,	0,	0,	0,	238250,	238250,	0,	0,	0,	0,	0}},
+{"SE13",{     0,	0,	0,	0,	0,	245250,	245250,	0,	0,	0,	0,	0}},
+{"SE14",{     0,	0,	0,	0,	0,	252250,	252250,	0,	0,	0,	0,	0}},
+{"SE15",{     0,	0,	0,	0,	0,	259250,	259250,	0,	0,	0,	0,	0}},
+{"SE16",{     0,	0,	0,	0,	0,	266250,	266250,	0,	0,	0,	0,	0}},
+{"SE17",{     0,	0,	0,	0,	0,	273250,	273250,	0,	0,	0,	0,	0}},
+{"SE18",{     0,	0,	0,	0,	0,	280250,	280250,	0,	0,	0,	0,	0}},
+{"SE19",{     0,	0,	0,	0,	0,	287250,	287250,	0,	0,	0,	0,	0}},
+{"SE20",{     0,	0,	0,	0,	0,	294250,	294250,	0,	0,	0,	0,	0}},
 
-{"S21",	{     0,	0,	0,	0,	0,	303250,	303250,	0,	0,	0,	0}},
-{"S22",	{     0,	0,	0,	0,	0,	311250,	311250,	0,	0,	0,	0}},
-{"S23",	{     0,	0,	0,	0,	0,	319250,	319250,	0,	0,	0,	0}},
-{"S24",	{     0,	0,	0,	0,	0,	327250,	327250,	0,	0,	0,	0}},
-{"S25",	{     0,	0,	0,	0,	0,	335250,	335250,	0,	0,	0,	0}},
-{"S26",	{     0,	0,	0,	0,	0,	343250,	343250,	0,	0,	0,	0}},
-{"S27",	{     0,	0,	0,	0,	0,	351250,	351250,	0,	0,	0,	0}},
-{"S28",	{     0,	0,	0,	0,	0,	359250,	359250,	0,	0,	0,	0}},
-{"S29",	{     0,	0,	0,	0,	0,	367250,	367250,	0,	0,	0,	0}},
-{"S30",	{     0,	0,	0,	0,	0,	375250,	375250,	0,	0,	0,	0}},
-{"S31",	{     0,	0,	0,	0,	0,	383250,	383250,	0,	0,	0,	0}},
-{"S32",	{     0,	0,	0,	0,	0,	391250,	391250,	0,	0,	0,	0}},
-{"S33",	{     0,	0,	0,	0,	0,	399250,	399250,	0,	0,	0,	0}},
-{"S34",	{     0,	0,	0,	0,	0,	407250,	407250,	0,	0,	0,	0}},
-{"S35",	{     0,	0,	0,	0,	0,	415250,	415250,	0,	0,	0,	0}},
-{"S36",	{     0,	0,	0,	0,	0,	423250,	423250,	0,	0,	0,	0}},
-{"S37",	{     0,	0,	0,	0,	0,	431250,	431250,	0,	0,	0,	0}},
-{"S38",	{     0,	0,	0,	0,	0,	439250,	439250,	0,	0,	0,	0}},
-{"S39",	{     0,	0,	0,	0,	0,	447250,	447250,	0,	0,	0,	0}},
-{"S40",	{     0,	0,	0,	0,	0,	455250,	455250,	0,	0,	0,	0}},
-{"S41",	{     0,	0,	0,	0,	0,	463250,	463250,	0,	0,	0,	0}},
+{"S21",	{     0,	0,	0,	0,	0,	303250,	303250,	0,	0,	0,	0,	0}},
+{"S22",	{     0,	0,	0,	0,	0,	311250,	311250,	0,	0,	0,	0,	0}},
+{"S23",	{     0,	0,	0,	0,	0,	319250,	319250,	0,	0,	0,	0,	0}},
+{"S24",	{     0,	0,	0,	0,	0,	327250,	327250,	0,	0,	0,	0,	0}},
+{"S25",	{     0,	0,	0,	0,	0,	335250,	335250,	0,	0,	0,	0,	0}},
+{"S26",	{     0,	0,	0,	0,	0,	343250,	343250,	0,	0,	0,	0,	0}},
+{"S27",	{     0,	0,	0,	0,	0,	351250,	351250,	0,	0,	0,	0,	0}},
+{"S28",	{     0,	0,	0,	0,	0,	359250,	359250,	0,	0,	0,	0,	0}},
+{"S29",	{     0,	0,	0,	0,	0,	367250,	367250,	0,	0,	0,	0,	0}},
+{"S30",	{     0,	0,	0,	0,	0,	375250,	375250,	0,	0,	0,	0,	0}},
+{"S31",	{     0,	0,	0,	0,	0,	383250,	383250,	0,	0,	0,	0,	0}},
+{"S32",	{     0,	0,	0,	0,	0,	391250,	391250,	0,	0,	0,	0,	0}},
+{"S33",	{     0,	0,	0,	0,	0,	399250,	399250,	0,	0,	0,	0,	0}},
+{"S34",	{     0,	0,	0,	0,	0,	407250,	407250,	0,	0,	0,	0,	0}},
+{"S35",	{     0,	0,	0,	0,	0,	415250,	415250,	0,	0,	0,	0,	0}},
+{"S36",	{     0,	0,	0,	0,	0,	423250,	423250,	0,	0,	0,	0,	0}},
+{"S37",	{     0,	0,	0,	0,	0,	431250,	431250,	0,	0,	0,	0,	0}},
+{"S38",	{     0,	0,	0,	0,	0,	439250,	439250,	0,	0,	0,	0,	0}},
+{"S39",	{     0,	0,	0,	0,	0,	447250,	447250,	0,	0,	0,	0,	0}},
+{"S40",	{     0,	0,	0,	0,	0,	455250,	455250,	0,	0,	0,	0,	0}},
+{"S41",	{     0,	0,	0,	0,	0,	463250,	463250,	0,	0,	0,	0,	0}},
 
-{"0",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	46250,	45750}},
-{"1",	{     0,	73250,	72000,	91250,	0,	0,	0,	0,	45250,	57250,	53750}},
-{"2",	{ 55250,	55250,	54000,	97250,	0,	0,	0,	53750,	55250,	64250,	61750}},
-{"3",	{ 61250,	61250,	60000,	103250,	0,	0,	0,	62250,	62250,	86250,	175250}},
-{"4",	{ 67250,	67250,	66000,	171250,	0,	0,	0,	82250,	175250,	95250,	183250}},
-{"5",	{ 77250,	77250,	78000,	177250,	0,	0,	0,	175250,	182250,	102250,	191250}},
-{"5A",	{     0,	0,	138250,	0,	0,	0,	0,	0,	138250,	0}},
-{"6",	{ 83250,	83250,	84000,	183250,	0,	0,	0,	183750,	189250,	175250,	199250}},
-{"7",	{175250,	175250,	174000,	189250,	0,	0,	0,	192250,	196250,	182250,	207250}},
-{"8",	{181250,	181250,	180000,	193250,	0,	0,	0,	201250,	203250,	189250,	215250}},
-{"9",	{187250,	187250,	186000,	199250,	0,	0,	0,	210250,	210250,	196250,	0}},
-{"10",	{193250,	193250,	192000,	205250,	0,	0,	0,	210250,	217250,	209250,	0}},
-{"11",	{199250,	199250,	198000,	211250,	0,	0,	0,	217250,	0,	216250,	0}},
-{"12",	{205250,	205250,	204000,	217250,	0,	0,	0,	224250,	0,	0,	0}},
+{"0",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	46250,	45750,	0}},
+{"1",	{     0,	73250,	72000,	91250,	0,	0,	0,	0,	45250,	57250,	53750,	0}},
+{"2",	{ 55250,	55250,	54000,	97250,	0,	0,	0,	53750,	55250,	64250,	61750,	0}},
+{"3",	{ 61250,	61250,	60000,	103250,	0,	0,	0,	62250,	62250,	86250,	175250,	0}},
+{"4",	{ 67250,	67250,	66000,	171250,	0,	0,	0,	82250,	175250,	95250,	183250,	0}},
+{"5",	{ 77250,	77250,	78000,	177250,	0,	0,	0,	175250,	182250,	102250,	191250,	0}},
+{"5A",	{     0,	0,	138250,	0,	0,	0,	0,	0,	138250,	0,	0,	0}},
+{"6",	{ 83250,	83250,	84000,	183250,	0,	0,	0,	183750,	189250,	175250,	199250,	0}},
+{"7",	{175250,	175250,	174000,	189250,	0,	0,	0,	192250,	196250,	182250,	207250,	0}},
+{"8",	{181250,	181250,	180000,	193250,	0,	0,	0,	201250,	203250,	189250,	215250,	0}},
+{"9",	{187250,	187250,	186000,	199250,	0,	0,	0,	210250,	210250,	196250,	0,	0}},
+{"10",	{193250,	193250,	192000,	205250,	0,	0,	0,	210250,	217250,	209250,	0,	0}},
+{"11",	{199250,	199250,	198000,	211250,	0,	0,	0,	217250,	0,	216250,	0,	0}},
+{"12",	{205250,	205250,	204000,	217250,	0,	0,	0,	224250,	0,	0,	0,	0}},
 
-{"13",	{211250,	211250,	210000,	0,	109250,	0,	0,	0,	0,	0,	0}},
-{"14",	{471250,	121250,	120000,	0,	115250,	0,	0,	0,	0,	0,	0}},
-{"15",	{477250,	127250,	126000,	0,	121250,	0,	0,	0,	0,	0,	0}},
-{"16",	{483250,	133250,	132000,	0,	127250,	0,	0,	0,	0,	0,	0}},
-{"17",	{489250,	139250,	138000,	0,	133250,	0,	0,	0,	0,	0,	0}},
-{"18",	{495250,	145250,	144000,	0,	139250,	0,	0,	0,	0,	0,	0}},
-{"19",	{501250,	151250,	150000,	0,	145250,	0,	0,	0,	0,	0,	0}},
-{"20",	{507250,	157250,	156000,	0,	151250,	0,	0,	0,	0,	0,	0}},
+{"13",	{211250,	211250,	210000,	0,	109250,	0,	0,	0,	0,	0,	0,	0}},
+{"14",	{471250,	121250,	120000,	0,	115250,	0,	0,	0,	0,	0,	0,	0}},
+{"15",	{477250,	127250,	126000,	0,	121250,	0,	0,	0,	0,	0,	0,	0}},
+{"16",	{483250,	133250,	132000,	0,	127250,	0,	0,	0,	0,	0,	0,	0}},
+{"17",	{489250,	139250,	138000,	0,	133250,	0,	0,	0,	0,	0,	0,	0}},
+{"18",	{495250,	145250,	144000,	0,	139250,	0,	0,	0,	0,	0,	0,	0}},
+{"19",	{501250,	151250,	150000,	0,	145250,	0,	0,	0,	0,	0,	0,	0}},
+{"20",	{507250,	157250,	156000,	0,	151250,	0,	0,	0,	0,	0,	0,	0}},
  
-{"21",	{513250,	163250,	162000,	0,	157250,	471250,	471250,	0,	0,	0,	471250}},
-{"22",	{519250,	169250,	168000,	0,	165250,	479250,	479250,	0,	0,	0,	479250}},
-{"23",	{525250,	217250,	216000,	0,	223250,	487250,	487250,	0,	0,	0,	487250}},
-{"24",	{531250,	223250,	222000,	0,	231250,	495250,	495250,	0,	0,	0,	495250}},
-{"25",	{537250,	229250,	228000,	0,	237250,	503250,	503250,	0,	0,	0,	503250}},
-{"26",	{543250,	235250,	234000,	0,	243250,	511250,	511250,	0,	0,	0,	511250}},
-{"27",	{549250,	241250,	240000,	0,	249250,	519250,	519250,	0,	0,	0,	519250}},
-{"28",	{555250,	247250,	246000,	0,	253250,	527250,	527250,	0,	0,	527250,	527250}},
-{"29",	{561250,	253250,	252000,	0,	259250,	535250,	535250,	0,	0,	534250,	535250}},
-{"30",	{567250,	259250,	258000,	0,	265250,	543250,	543250,	0,	0,	541250,	543250}},
-{"31",	{573250,	265250,	264000,	0,	271250,	551250,	551250,	0,	0,	548250,	551250}},
-{"32",	{579250,	271250,	270000,	0,	277250,	559250,	559250,	0,	0,	555250,	559250}},
-{"33",	{585250,	277250,	276000,	0,	283250,	567250,	567250,	0,	0,	562250,	567250}},
-{"34",	{591250,	283250,	282000,	0,	289250,	575250,	575250,	0,	0,	569250,	575250}},
-{"35",	{597250,	289250,	288000,	0,	295250,	583250,	583250,	0,	0,	576250,	583250}},
-{"36",	{603250,	295250,	294000,	0,	301250,	591250,	591250,	0,	0,	0,	591250}},
-{"37",	{609250,	301250,	300000,	0,	307250,	599250,	599250,	0,	0,	0,	599250}},
-{"38",	{615250,	307250,	306000,	0,	313250,	607250,	607250,	0,	0,	0,	607250}},
-{"39",	{621250,	313250,	312000,	0,	319250,	615250,	615250,	0,	0,	604250,	615250}},
-{"40",	{627250,	319250,	318000,	0,	325250,	623250,	623250,	0,	0,	611250,	623250}},
-{"41",	{633250,	325250,	324000,	0,	331250,	631250,	631250,	0,	0,	618250,	631250}},
-{"42",	{639250,	331250,	330000,	0,	337250,	639250,	639250,	0,	0,	625250,	639250}},
-{"43",	{645250,	337250,	336000,	0,	343250,	647250,	647250,	0,	0,	632250,	647250}},
-{"44",	{651250,	343250,	342000,	0,	349250,	655250,	655250,	0,	0,	639250,	655250}},
-{"45",	{657250,	349250,	348000,	663250,	355250,	663250,	663250,	0,	0,	646250,	663250}},
-{"46",	{663250,	355250,	354000,	669250,	361250,	671250,	671250,	0,	0,	653250,	671250}},
-{"47",	{669250,	361250,	360000,	675250,	367250,	679250,	679250,	0,	0,	660250,	679250}},
-{"48",	{675250,	367250,	366000,	681250,	373250,	687250,	687250,	0,	0,	667250,	687250}},
-{"49",	{681250,	373250,	372000,	687250,	379250,	695250,	695250,	0,	0,	674250,	695250}},
-{"50",	{687250,	379250,	378000,	693250,	385250,	703250,	703250,	0,	0,	681250,	703250}},
-{"51",	{693250,	385250,	384000,	699250,	391250,	711250,	711250,	0,	0,	688250,	711250}},
-{"52",	{699250,	391250,	390000,	705250,	397250,	719250,	719250,	0,	0,	695250,	719250}},
-{"53",	{705250,	397250,	396000,	711250,	403250,	727250,	727250,	0,	0,	702250,	727250}},
-{"54",	{711250,	403250,	402000,	717250,	409250,	735250,	735250,	0,	0,	709250,	735250}},
-{"55",	{717250,	409250,	408000,	723250,	415250,	743250,	743250,	0,	0,	716250,	743250}},
-{"56",	{723250,	415250,	414000,	729250,	421250,	751250,	751250,	0,	0,	723250,	751250}},
-{"57",	{729250,	421250,	420000,	735250,	427250,	759250,	759250,	0,	0,	730250,	759250}},
-{"58",	{735250,	427250,	426000,	741250,	433250,	767250,	767250,	0,	0,	737250,	767250}},
-{"59",	{741250,	433250,	432000,	747250,	439250,	775250,	775250,	0,	0,	744250,	775250}},
-{"60",	{747250,	439250,	438000,	753250,	445250,	783250,	783250,	0,	0,	751250,	783250}},
-{"61",	{753250,	445250,	444000,	759250,	451250,	791250,	791250,	0,	0,	758250,	791250}},
-{"62",	{759250,	451250,	450000,	765250,	457250,	799250,	799250,	0,	0,	765250,	799250}},
-{"63",	{765250,	457250,	456000,	0,	463250,	807250,	807250,	0,	0,	772250,	807250}},
-{"64",	{771250,	463250,	462000,	0,	0,	815250,	815250,	0,	0,	779250,	815250}},
-{"65",	{777250,	469250,	468000,	0,	0,	823250,	823250,	0,	0,	786250,	823250}},
-{"66",	{783250,	475250,	474000,	0,	0,	831250,	831250,	0,	0,	793250,	831250}},
-{"67",	{789250,	481250,	480000,	0,	0,	839250,	839250,	0,	0,	800250,	839250}},
-{"68",	{795250,	487250,	486000,	0,	0,	847250,	847250,	0,	0,	807250,	847250}},
-{"69",	{801250,	493250,	492000,	0,	0,	855250,	855250,	0,	0,	814250,	855250}},
+{"21",	{513250,	163250,	162000,	0,	157250,	471250,	471250,	0,	0,	0,	471250,	471250}},
+{"22",	{519250,	169250,	168000,	0,	165250,	479250,	479250,	0,	0,	0,	479250,	479250}},
+{"23",	{525250,	217250,	216000,	0,	223250,	487250,	487250,	0,	0,	0,	487250,	487250}},
+{"24",	{531250,	223250,	222000,	0,	231250,	495250,	495250,	0,	0,	0,	495250,	495250}},
+{"25",	{537250,	229250,	228000,	0,	237250,	503250,	503250,	0,	0,	0,	503250,	503250}},
+{"26",	{543250,	235250,	234000,	0,	243250,	511250,	511250,	0,	0,	0,	511250,	511250}},
+{"27",	{549250,	241250,	240000,	0,	249250,	519250,	519250,	0,	0,	0,	519250,	519250}},
+{"28",	{555250,	247250,	246000,	0,	253250,	527250,	527250,	0,	0,	527250,	527250,	527250}},
+{"29",	{561250,	253250,	252000,	0,	259250,	535250,	535250,	0,	0,	534250,	535250,	535250}},
+{"30",	{567250,	259250,	258000,	0,	265250,	543250,	543250,	0,	0,	541250,	543250,	543250}},
+{"31",	{573250,	265250,	264000,	0,	271250,	551250,	551250,	0,	0,	548250,	551250,	551250}},
+{"32",	{579250,	271250,	270000,	0,	277250,	559250,	559250,	0,	0,	555250,	559250,	559250}},
+{"33",	{585250,	277250,	276000,	0,	283250,	567250,	567250,	0,	0,	562250,	567250,	567250}},
+{"34",	{591250,	283250,	282000,	0,	289250,	575250,	575250,	0,	0,	569250,	575250,	575250}},
+{"35",	{597250,	289250,	288000,	0,	295250,	583250,	583250,	0,	0,	576250,	583250,	583250}},
+{"36",	{603250,	295250,	294000,	0,	301250,	591250,	591250,	0,	0,	0,	591250,	591250}},
+{"37",	{609250,	301250,	300000,	0,	307250,	599250,	599250,	0,	0,	0,	599250,	599250}},
+{"38",	{615250,	307250,	306000,	0,	313250,	607250,	607250,	0,	0,	0,	607250,	607250}},
+{"39",	{621250,	313250,	312000,	0,	319250,	615250,	615250,	0,	0,	604250,	615250,	615250}},
+{"40",	{627250,	319250,	318000,	0,	325250,	623250,	623250,	0,	0,	611250,	623250,	623250}},
+{"41",	{633250,	325250,	324000,	0,	331250,	631250,	631250,	0,	0,	618250,	631250,	631250}},
+{"42",	{639250,	331250,	330000,	0,	337250,	639250,	639250,	0,	0,	625250,	639250,	639250}},
+{"43",	{645250,	337250,	336000,	0,	343250,	647250,	647250,	0,	0,	632250,	647250,	647250}},
+{"44",	{651250,	343250,	342000,	0,	349250,	655250,	655250,	0,	0,	639250,	655250,	655250}},
+{"45",	{657250,	349250,	348000,	663250,	355250,	663250,	663250,	0,	0,	646250,	663250,	663250}},
+{"46",	{663250,	355250,	354000,	669250,	361250,	671250,	671250,	0,	0,	653250,	671250,	671250}},
+{"47",	{669250,	361250,	360000,	675250,	367250,	679250,	679250,	0,	0,	660250,	679250,	679250}},
+{"48",	{675250,	367250,	366000,	681250,	373250,	687250,	687250,	0,	0,	667250,	687250,	687250}},
+{"49",	{681250,	373250,	372000,	687250,	379250,	695250,	695250,	0,	0,	674250,	695250,	695250}},
+{"50",	{687250,	379250,	378000,	693250,	385250,	703250,	703250,	0,	0,	681250,	703250,	703250}},
+{"51",	{693250,	385250,	384000,	699250,	391250,	711250,	711250,	0,	0,	688250,	711250,	711250}},
+{"52",	{699250,	391250,	390000,	705250,	397250,	719250,	719250,	0,	0,	695250,	719250,	719250}},
+{"53",	{705250,	397250,	396000,	711250,	403250,	727250,	727250,	0,	0,	702250,	727250,	727250}},
+{"54",	{711250,	403250,	402000,	717250,	409250,	735250,	735250,	0,	0,	709250,	735250,	735250}},
+{"55",	{717250,	409250,	408000,	723250,	415250,	743250,	743250,	0,	0,	716250,	743250,	743250}},
+{"56",	{723250,	415250,	414000,	729250,	421250,	751250,	751250,	0,	0,	723250,	751250,	751250}},
+{"57",	{729250,	421250,	420000,	735250,	427250,	759250,	759250,	0,	0,	730250,	759250,	759250}},
+{"58",	{735250,	427250,	426000,	741250,	433250,	767250,	767250,	0,	0,	737250,	767250,	767250}},
+{"59",	{741250,	433250,	432000,	747250,	439250,	775250,	775250,	0,	0,	744250,	775250,	775250}},
+{"60",	{747250,	439250,	438000,	753250,	445250,	783250,	783250,	0,	0,	751250,	783250,	783250}},
+{"61",	{753250,	445250,	444000,	759250,	451250,	791250,	791250,	0,	0,	758250,	791250,	791250}},
+{"62",	{759250,	451250,	450000,	765250,	457250,	799250,	799250,	0,	0,	765250,	799250,	799250}},
+{"63",	{765250,	457250,	456000,	0,	463250,	807250,	807250,	0,	0,	772250,	807250,	807250}},
+{"64",	{771250,	463250,	462000,	0,	0,	815250,	815250,	0,	0,	779250,	815250,	815250}},
+{"65",	{777250,	469250,	468000,	0,	0,	823250,	823250,	0,	0,	786250,	823250,	823250}},
+{"66",	{783250,	475250,	474000,	0,	0,	831250,	831250,	0,	0,	793250,	831250,	831250}},
+{"67",	{789250,	481250,	480000,	0,	0,	839250,	839250,	0,	0,	800250,	839250,	839250}},
+{"68",	{795250,	487250,	486000,	0,	0,	847250,	847250,	0,	0,	807250,	847250,	847250}},
+{"69",	{801250,	493250,	492000,	0,	0,	855250,	855250,	0,	0,	814250,	855250,	855250}},
  
-{"70",	{807250,	499250,	498000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"71",	{813250,	505250,	504000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"72",	{819250,	511250,	510000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"73",	{825250,	517250,	516000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"74",	{831250,	523250,	522000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"75",	{837250,	529250,	528000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"76",	{843250,	535250,	534000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"77",	{849250,	541250,	540000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"78",	{855250,	547250,	546000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"79",	{861250,	553250,	552000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"80",	{867250,	559250,	558000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"81",	{873250,	565250,	564000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"82",	{879250,	571250,	570000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"83",	{885250,	577250,	576000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"84",	{     0,	583250,	582000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"85",	{     0,	589250,	588000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"86",	{     0,	595250,	594000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"87",	{     0,	601250,	600000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"88",	{     0,	607250,	606000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"89",	{     0,	613250,	612000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"90",	{     0,	619250,	618000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"91",	{     0,	625250,	624000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"92",	{     0,	631250,	630000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"93",	{     0,	637250,	636000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"94",	{     0,	643250,	642000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"95",	{     0,	91250,	900000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"96",	{     0,	97250,	960000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"97",	{     0,	103250,	102000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"98",	{     0,	109250,	108000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"99",	{     0,	115250,	114000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"100",	{     0,	649250,	648000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"101",	{     0,	655250,	654000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"102",	{     0,	661250,	660000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"103",	{     0,	667250,	666000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"104",	{     0,	673250,	672000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"105",	{     0,	679250,	678000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"106",	{     0,	685250,	684000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"107",	{     0,	691250,	690000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"108",	{     0,	697250,	696000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"109",	{     0,	703250,	702000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"110",	{     0,	709250,	708000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"111",	{     0,	715250,	714000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"112",	{     0,	721250,	720000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"113",	{     0,	727250,	726000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"114",	{     0,	733250,	732000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"115",	{     0,	739250,	738000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"116",	{     0,	745250,	744000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"117",	{     0,	751250,	750000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"118",	{     0,	757250,	756000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"119",	{     0,	763250,	762000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"120",	{     0,	769250,	768000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"121",	{     0,	775250,	774000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"122",	{     0,	781250,	780000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"123",	{     0,	787250,	786000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"124",	{     0,	793250,	792000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"125",	{     0,	799250,	798000,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"70",	{807250,	499250,	498000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"71",	{813250,	505250,	504000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"72",	{819250,	511250,	510000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"73",	{825250,	517250,	516000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"74",	{831250,	523250,	522000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"75",	{837250,	529250,	528000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"76",	{843250,	535250,	534000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"77",	{849250,	541250,	540000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"78",	{855250,	547250,	546000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"79",	{861250,	553250,	552000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"80",	{867250,	559250,	558000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"81",	{873250,	565250,	564000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"82",	{879250,	571250,	570000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"83",	{885250,	577250,	576000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"84",	{     0,	583250,	582000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"85",	{     0,	589250,	588000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"86",	{     0,	595250,	594000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"87",	{     0,	601250,	600000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"88",	{     0,	607250,	606000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"89",	{     0,	613250,	612000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"90",	{     0,	619250,	618000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"91",	{     0,	625250,	624000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"92",	{     0,	631250,	630000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"93",	{     0,	637250,	636000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"94",	{     0,	643250,	642000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"95",	{     0,	91250,	900000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"96",	{     0,	97250,	960000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"97",	{     0,	103250,	102000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"98",	{     0,	109250,	108000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"99",	{     0,	115250,	114000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"100",	{     0,	649250,	648000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"101",	{     0,	655250,	654000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"102",	{     0,	661250,	660000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"103",	{     0,	667250,	666000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"104",	{     0,	673250,	672000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"105",	{     0,	679250,	678000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"106",	{     0,	685250,	684000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"107",	{     0,	691250,	690000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"108",	{     0,	697250,	696000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"109",	{     0,	703250,	702000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"110",	{     0,	709250,	708000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"111",	{     0,	715250,	714000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"112",	{     0,	721250,	720000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"113",	{     0,	727250,	726000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"114",	{     0,	733250,	732000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"115",	{     0,	739250,	738000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"116",	{     0,	745250,	744000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"117",	{     0,	751250,	750000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"118",	{     0,	757250,	756000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"119",	{     0,	763250,	762000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"120",	{     0,	769250,	768000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"121",	{     0,	775250,	774000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"122",	{     0,	781250,	780000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"123",	{     0,	787250,	786000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"124",	{     0,	793250,	792000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"125",	{     0,	799250,	798000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
  
-{"T7",	{     0,	8250,	7000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T8",	{     0,	14250,	13000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T9",	{     0,	20250,	19000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T10",	{     0,	26250,	25000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T11",	{     0,	32250,	31000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T12",	{     0,	38250,	37000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T13",	{     0,	44250,	43000,	0,	0,	0,	0,	0,	0,	0,	0}},
-{"T14",	{     0,	50250,	49000,	0,	0,	0,	0,	0,	0,	0,	0}}
+{"T7",	{     0,	8250,	7000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T8",	{     0,	14250,	13000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T9",	{     0,	20250,	19000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T10",	{     0,	26250,	25000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T11",	{     0,	32250,	31000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T12",	{     0,	38250,	37000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T13",	{     0,	44250,	43000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+{"T14",	{     0,	50250,	49000,	0,	0,	0,	0,	0,	0,	0,	0,	0}},
+
+{"K01",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	47750}},
+{"K02",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	55750}},
+{"K03",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	60500}},
+{"K04",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	63750}},
+{"K05",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	176000}},
+{"K06",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	184000}},
+{"K07",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	192000}},
+{"K08",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	200000}},
+{"K09",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	208000}},
+{"K10",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	216000}},
+{"KB",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	116750}},
+{"KC",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	128750}},
+{"KD",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	140750}},
+{"KE",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	159750}},
+{"KF",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	164750}},
+{"KG",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	176750}},
+{"KH",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	188750}},
+{"KI",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	200750}},
+{"KJ",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	212750}},
+{"KK",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	224750}},
+{"KL",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	236750}},
+{"KM",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	248750}},
+{"KN",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	260750}},
+{"KO",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	272750}},
+{"KP",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	284750}},
+{"KQ",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	296750}},
+{"H01",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	303250}},
+{"H02",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	311250}},
+{"H03",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	319250}},
+{"H04",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	327250}},
+{"H05",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	335250}},
+{"H06",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	343250}},
+{"H07",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	351250}},
+{"H08",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	359250}},
+{"H09",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	367250}},
+{"H10",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	375250}},
+{"H11",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	383250}},
+{"H12",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	391250}},
+{"H13",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	399250}},
+{"H14",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	407250}},
+{"H15",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	415250}},
+{"H16",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	423250}},
+{"H17",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	431250}},
+{"H18",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	439250}},
+{"H19",	{     0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	0,	447250}}
 };
 
 int CHAN_ENTRIES = sizeof(tvtuner)/sizeof(struct freqlist);
-int CHAN_NAMES	 = 11;
+int CHAN_NAMES	 = 12;
 
 struct gentab chan_names[] = {
 		{ 0, "ntsc-bcast"	},
@@ -329,5 +375,6 @@ struct gentab chan_names[] = {
 		{ 8, "pal-newzealand"	},
 		{ 9, "pal-australia"	},
 		{ 10, "pal-ireland"	},
+		{ 11, "secam-france"	},
 		{ -1, NULL	}
 };
diff --git a/src/wmtv.c b/src/wmtv.c
index 40a88ee..00810bd 100644
--- a/src/wmtv.c
+++ b/src/wmtv.c
@@ -29,6 +29,7 @@
 #include <fcntl.h>
 #include <time.h>
 #include <errno.h>
+#include <signal.h>
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 #include <sys/types.h>
@@ -75,13 +76,16 @@
 #define SETUNE		2
 #define SETSPD		3
 
-#define MAXCHAN		100
+#define MAXCHAN		99
 #define OPTIONS		"hvd:g:e:b:"
 
 #define TELEVISION	0
 #define COMPOSITE   1
 #define SVIDEO		2
 
+#ifndef GLOBALCONFFILE
+#define GLOBALCONFFILE "/etc/wmtvrc"
+#endif
 
 /* Global Variables */
 int tfd;
@@ -111,11 +115,12 @@ int dcret;
 int tml;
 int fswidth = 0;
 int fsheight = 0;
+pid_t child_pid = -1;
+int restart = FALSE;
 
 unsigned long ccrfreq;
 unsigned long rfreq;
 unsigned long st;
-unsigned long offset;
 
 char *norm = NULL;
 char *source;
@@ -123,11 +128,14 @@ char *mode = NULL;
 char *fullscreen = NULL;
 int  freqnorm = -1;
 char *cname[MAXCHAN];
-char *wcname[MAXCHAN];
-int	 ftune[MAXCHAN];
+char *comment[MAXCHAN];
+long ftune[MAXCHAN];
 char *progname;
 char *dev = "/dev/video";
 
+char *sysConfFile = GLOBALCONFFILE;
+char *usrConfFile;
+
 int  wmtv_mask_width = 64;
 int  wmtv_mask_height = 64;
 char wmtv_mask_bits[64*64];
@@ -196,21 +204,89 @@ void GrabImage(void);
 
 void ParseRCFile(const char *, rckeys *);
 void ParseRCFile2(const char *);
-void WriteRCFile(const char *);
+void WriteRCFile(const char *, rckeys *);
 void InitConfig(void);
 void InitPalette(void);
 
 void Usage(void);
 void Version(void);
 
+void
+sigchld_handler(int i)
+{
+	pid_t pid;
+	pid = waitpid((pid_t)-1, NULL, WNOHANG);
+	while (pid>(pid_t)0) {
+		if (pid == child_pid) {
+			child_pid = -1;
+			restart = TRUE;
+		}
+		pid = waitpid((pid_t)-1, NULL, WNOHANG);
+	}
+}
+
+void
+init_signal()
+{
+	struct sigaction sa;
+
+	sa.sa_handler = &sigchld_handler;
+	sigemptyset(&sa.sa_mask);
+	sa.sa_flags = SA_RESTART;
+	sigaction(SIGCHLD, &sa, NULL);
+}
+
+char *
+expand_format(char *format, char *letters, char **expansions)
+{
+	char *string;
+	unsigned int string_pos = 0;
+	unsigned int size;
+	size = strlen(format)+1;
+	string = (char *)malloc(size*sizeof(char));
+	for (; *format != '\0'; format++) {
+		if (*format == '%') {
+			format++;
+			if (*format != '%') {
+				unsigned int i;
+				for (i = 0; letters[i] != '\0'; i++) {
+					if (letters[i] == *format)
+						break;
+				}
+				if (letters[i] != '\0') {
+					unsigned int expansion_size;
+					expansion_size = strlen(expansions[i]);
+					while (string_pos+expansion_size+1 > size) {
+						size *= 2;
+						string = realloc(string, size*sizeof(char));
+					}
+					memcpy(string+string_pos, expansions[i], expansion_size);
+					string_pos += expansion_size;
+					continue;
+				}
+				else {
+					format--;
+				}
+			}
+		}
+		while (string_pos+1+1 > size) {
+			size *= 2;
+			string = realloc(string, size*sizeof(char));
+		}
+		string[string_pos] = *format;
+		string_pos++;
+	}
+	string[string_pos] = '\0';
+	return string;
+}
 
 /* main function */
 int
 main(int argc, char *argv[])
 {
-	int i, c, opind;
-	// pid_t pid;
-	char cfile[128];
+	int c, opind;
+	int pressed_button = -1;
+	/* pid_t pid; */
 	static struct option long_options[] = {
 		{"display", 1, 0, 'd'},
 		{"geometry", 1, 0, 'g'},
@@ -221,12 +297,20 @@ main(int argc, char *argv[])
 		{0, 0, 0, 0}
 	};
 
-	seteuid(getuid()); /* Temporarily drop privileges */
-
 	progname = strdup(argv[0]);
 
-	strncpy(cfile, (char *)getenv("HOME"), sizeof(char)*(128-9));
-	strcat(cfile, "/.wmtvrc");
+	{
+		char *home = getenv("HOME");
+
+		if (home == NULL) {
+			fprintf(stderr, "wmtv: $HOME should be set.\n");
+			exit(1);
+		}
+
+		usrConfFile = (char *)malloc(sizeof(char)*(strlen(home)+8+1));
+		strcpy(usrConfFile, home);
+		strcat(usrConfFile, "/.wmtvrc");
+	}
 
 	while (1) {
 		opind = 0;
@@ -252,7 +336,7 @@ main(int argc, char *argv[])
 					break;
 				case 'e':
 					exe = strdup(optarg);
-					/*strcat(exe, " &");*/
+					/* strcat(exe, " &"); */
 					break;
 				case 'b':
 					fprintf(stderr, "wmtv: option not implemented yet\n");
@@ -280,9 +364,21 @@ main(int argc, char *argv[])
 	AddMouseRegion (SCANRB, 35, 48, 47, 59); 	/* Right Preset/Scan Button */
 	AddMouseRegion (FULLSB, 5, 5, 59, 44);		/* Toggle FullScreen */
 
+	init_signal();
+
 	/* wmtv main loop */
 	while (1) 
 	{
+		if (restart) {
+			TVOn();
+			if (ntfb_status == SETOFF) {
+				ntfb_status = SETON;
+				RedrawWindow();
+				XFlush(display);
+			}
+			restart = FALSE;
+			continue;
+		}
 		while (XPending(display))
 		{
 			XNextEvent(display, &Event);
@@ -305,8 +401,8 @@ main(int argc, char *argv[])
 						RetScreen();
 					}
 					else {
-					i = CheckMouseRegion (Event.xbutton.x, Event.xbutton.y);
-					switch (i) {
+					pressed_button = CheckMouseRegion (Event.xbutton.x, Event.xbutton.y);
+					switch (pressed_button) {
 						case NTFB:
 							ButtonDown(NTFB);	
 							t_lc = Event.xbutton.time;
@@ -328,7 +424,7 @@ main(int argc, char *argv[])
 										break;
 								}
 							}
-							else 
+							else if (ntfb_status == SETON)
 									ChanDown();
 							break;
 						case SCANRB: 
@@ -347,7 +443,7 @@ main(int argc, char *argv[])
 										break;
 								}
 							}
-							else 
+							else if (ntfb_status == SETON)
 									ChanUp();
 							break;
 						case FULLSB:
@@ -374,8 +470,7 @@ main(int argc, char *argv[])
 					}
 					break;
 				case ButtonRelease:
-					i = CheckMouseRegion (Event.xbutton.x, Event.xbutton.y);
-					switch (i) {
+					switch (pressed_button) {
 						case NTFB: 
 							ButtonUp(NTFB);
 								if (but_pressed) {
@@ -386,8 +481,10 @@ main(int argc, char *argv[])
 								}
 
 								if (ntfb_status == SETOFF) {
+									if (child_pid == -1) {
 										ntfb_status = SETON;
 										TVOn();
+									}
 								}
 								else if (ntfb_status == SETON) {
 										if (!btime) {
@@ -404,9 +501,9 @@ main(int argc, char *argv[])
 								}
 								else if (ntfb_status == SETUNE) {
 										if (!btime) {
-											offset = (rfreq - ccrfreq);
-											// fprintf(stderr, "wmtv: finetune offset = %ld\n", offset);
-											WriteRCFile(cfile); 
+											ftune[cchannel] = (rfreq - ccrfreq);
+											/* fprintf(stderr, "wmtv: finetune offset = %ld\n", ftune[cchannel]); */
+											WriteRCFile(usrConfFile, wmtv_keys);
 											ntfb_status = SETON;
 											DrawPresetChan(cchannel);
 										}
@@ -440,23 +537,43 @@ main(int argc, char *argv[])
 											{
 												if ((ntfb_status == SETON) || (ntfb_status == SETUNE)) {
 													if (exe) {
+														pid_t pid;
+														char *command;
+														char *letters = "#nf";
+														char *(expansions[3]);
 														ntfb_status = SETOFF;
 														TVOff();
+														expansions[0] = malloc(3*sizeof(char));
+														snprintf(expansions[0], 3, "%d", cchannel+1);
+														expansions[1] = comment[cchannel];
+														expansions[2] = malloc(15*sizeof(char));
+														snprintf(expansions[2], 15, "%ld", rfreq);
+														command = expand_format(exe, letters, expansions);
 														/* system(exe); */
-														if (fork() == (pid_t) 0) {
-                                                                                                                    char *argv[4];
-                                                                                                                    setuid(getuid()); /* Drop the privileges */
-                                                                                                                    argv[0] = "sh";
-                                                                                                                    argv[1] = "-c";
-                                                                                                                    argv[2] = exe;
-                                                                                                                    argv[3] = NULL;
-                                                                                                                    execv("/bin/sh", argv);
-                                                                                                                    exit(-1);
+														child_pid = fork();
+														if (child_pid == (pid_t) 0) {
+															char *argv[4];
+															argv[0] = "sh";
+															argv[1] = "-c";
+															argv[2] = command;
+															argv[3] = NULL;
+															execv("/bin/sh", argv);
+															exit(-1);
 														}
-														/*
+														free(expansions[0]);
+														free(expansions[2]);
+														free(command);
+														pid = waitpid(child_pid, NULL, WNOHANG);
+														if (pid != 0) {
+															child_pid = -1;
+															restart = TRUE;
+														}
+														/* printf("Returned pid:\n"); */
+
+#if 0
 														pid = fork();
 
-														// child
+														/* child */
 														if (pid == (pid_t) 0) {
 														execlp("xawtv", "xawtv", "&", (char *) 0);
 														}
@@ -465,11 +582,11 @@ main(int argc, char *argv[])
 															perror("fork");
 														}
 
-														// parent
+														/* parent */
 														else {
 															if (waitpid(pid, NULL, 0) < 0) {
 																perror("waitpid");
-														*/
+#endif
 													}
 													else {
 														DoFullScreen();
@@ -557,12 +674,10 @@ main(int argc, char *argv[])
 									ChanDown();
 									break;
 								case XK_Right:
-									if (isource == TELEVISION)
-									FineTuneUp();
+									VolumeUp();
 									break;
 								case XK_Left:
-									if (isource == TELEVISION)
-									FineTuneDown();
+									VolumeDown();
 									break;
 								case XK_m:
 									if (!mute) {
@@ -645,7 +760,6 @@ TVOn(void)
 	int rx, ry;
 	char *p;
 
-
 	XWindowAttributes winattr;
 
 	if (!XGetWindowAttributes (display, iconwin, &winattr)) {
@@ -659,6 +773,18 @@ TVOn(void)
 		fprintf(stderr, "wmtv: error translating coordinates\n");
 	}
 
+	/* This part was taken from xawtv's source code */
+	switch (system("v4l-conf -q")) {
+	case -1: /* can't run */
+		fprintf(stderr,"could'nt start v4l-conf\n");
+		break;
+	case 0: /* ok */
+		break;
+	default: /* non-zero return */
+		fprintf(stderr,"v4l-conf had some trouble, "
+				"trying to continue anyway\n");
+	}
+	/* End of "stolen" part */
 	InitConfig();
 	GetFrameBuffer();
 	InitPalette();
@@ -719,7 +845,7 @@ TVOn(void)
 
 		if (vaud.flags & VIDEO_AUDIO_MUTE) {
 			vaud.flags &= ~VIDEO_AUDIO_MUTE; 	/* Unmute */
-			vaud.volume = (0xFFFF/2)+1;
+			vaud.volume = 0xFFFF;
 		}
 
 	if (isource == TELEVISION) {
@@ -790,9 +916,11 @@ void
 VolumeUp(void)
 {
 	if(vchn.flags & VIDEO_VC_AUDIO) {
-		if (vaud.volume <= 0xFFFF) {
+		if ((vaud.flags & VIDEO_AUDIO_VOLUME) == 0)
+			fprintf(stderr, "Warning: v4l device does not support volume control.\n");
+		else if (vaud.volume <= 0xEEEE) {
 			vaud.audio = tvsource;
-			vaud.volume += (0xFFFF/10);
+			vaud.volume += 0x1111;
 			if (ioctl(tfd, VIDIOCSAUDIO, &vaud) < 0)
 				perror("ioctl VIDIOCSAUDIO");
 		}
@@ -805,9 +933,11 @@ void
 VolumeDown(void)
 {
 	if (vchn.flags & VIDEO_VC_AUDIO) {
-		if (vaud.volume > 0) {
+		if ((vaud.flags & VIDEO_AUDIO_VOLUME) == 0)
+			fprintf(stderr, "Warning: v4l device does not support volume control.\n");
+		else if (vaud.volume >= 0x1111) {
 			vaud.audio = tvsource;
-			vaud.volume -= (0xFFFF/10);
+			vaud.volume -= 0x1111;
 			if (ioctl(tfd, VIDIOCSAUDIO, &vaud) < 0)
 				perror("ioctl VIDIOCSAUDIO");
 		}
@@ -820,7 +950,7 @@ MuteAudio(void)
 {
 	if (vchn.flags & VIDEO_VC_AUDIO) {
 		vaud.audio = tvsource;
-		// vaud.volume = 0;
+		/* vaud.volume = 0; */
 		vaud.flags |= VIDEO_AUDIO_MUTE;
 		if (ioctl(tfd, VIDIOCSAUDIO, &vaud) < 0)
 				perror("ioctl VIDIOCSAUDIO");
@@ -835,7 +965,7 @@ UnMuteAudio(void)
 {
 	if ((vchn.flags & VIDEO_VC_AUDIO) && (vaud.flags & VIDEO_AUDIO_MUTE)) {
 		vaud.audio = tvsource;
-		// vaud.volume = (0xFFFF/2)+1;
+		/* vaud.volume = (0xFFFF/2)+1; */
 		vaud.flags &= ~VIDEO_AUDIO_MUTE;
 		if (ioctl(tfd, VIDIOCSAUDIO, &vaud) < 0)
 				perror("ioctl VIDIOCSAUDIO");
@@ -912,7 +1042,7 @@ void
 ChanUp(void)
 {
 	int i;
-	if (cchannel != maxpst)
+	if (cchannel < maxpst)
 	++cchannel;
 	for (i=0; i < CHAN_ENTRIES; i++) {
 		if (!strcmp(cname[cchannel], tvtuner[i].name)) {
@@ -959,7 +1089,7 @@ DrawPresetChan(int cchannel)
 	int k=6;
 
 	if (isource == TELEVISION) {
-		sprintf(temp, "%02d", cchannel);
+		sprintf(temp, "%02d", cchannel+1);
 
 		if (*p == '0') {
 			copyXPMArea(66, 79, 5, 7, k, 50);
@@ -992,7 +1122,7 @@ DrawPresetChan(int cchannel)
 void 
 ParseRCFile(const char *filename, rckeys *keys) 
 {
-	char	*p,*q;
+	char	*p;
 	char	temp[128];
 	char	*tokens = " =\t\n";
 	FILE	*fp;
@@ -1005,20 +1135,17 @@ ParseRCFile(const char *filename, rckeys *keys)
 	}
 	norcfile = 0;
 	while (fgets(temp, 128, fp)) {
-		key = 0;
-		q = strdup(temp);
-		if (*q != '\n') {
-		q = strtok(q, tokens);
-			while (key >= 0 && keys[key].label) {
-				if ((!strcmp(q, keys[key].label))) {
+		if (temp[0] != '\n') {
+			p = strtok(temp, tokens);
+			for (key=0; keys[key].label; key++) {
+				if ((!strcmp(p, keys[key].label))) {
 					p = strtok(NULL, tokens);
 					free(*keys[key].var);
 					*keys[key].var = strdup(p);
-					key = -1;
-				} else key++;
+					break;
+				}
 			} 
 		}
-		free(q);
 	} 
 	fclose(fp);
 }
@@ -1029,12 +1156,9 @@ void
 ParseRCFile2(const char *filename) 
 {
 	int  menu = FALSE;
-	char temp[128];
-	char tp[40];
-	char *tokens = " \t\n()";
-	char *q, *p;
+	char temp[128], name[128];
 	FILE *fp;
-	int i = 0;
+	int len, i = 0;
 
 	if ((fp = fopen(filename, "r")) == NULL) {
 		fprintf(stderr, "wmtv: %s\n", strerror(errno));
@@ -1043,79 +1167,56 @@ ParseRCFile2(const char *filename)
 	}
 	norcfile = 0;
 	while (fgets(temp, 128, fp)) {
-		q = strdup(temp);
-		if (*q != '\n') {
-			q = strtok(q, tokens);
+		if (*temp != '\n') {
 			if (menu) {
-				cname[i] = (char *)malloc(sizeof(q));
-				strncpy(cname[i], q, sizeof(q));
-				p = q;
-				p = strtok(NULL, tokens);
-				if (p != NULL) {
-					if (*p == '-') {
-						p++;
-						ftune[i] = -1*atoi(p);
-					}
-					else if (*p == '+') {
-						p++;
-						ftune[i] = atoi(p);
-					}
-					else {
-						ftune[i] = atoi(p);
+				ftune[i]=0;
+				if(sscanf(temp, " %s %n(%ld) %n", name, &len, &ftune[i], &len)>=1) {
+					char *pos;
+					cname[i]=strdup(name);
+					comment[i]=temp[len]?strdup(temp+len):"";
+					/* Remove the end-of-line symbol */
+					for (pos = comment[i]; *pos != '\0'; pos++) {
+						if (*pos == '\n') {
+							*pos = '\0';
+							break;
+						}
 					}
 				}
-				else {
-					ftune[i] = 0;
-				}
-				wcname[i] = (char *)malloc(strlen(cname[i])+41);
-				sprintf (wcname[i], "%s (%d) ", cname[i], ftune[i]);
-				i++;
-				tpst = i;
+				if(++i>=MAXCHAN)
+					break;
 			}
-			if ((q = strchr(q, '[')) != NULL) {
+			else if (strchr(temp, '[')) {
 				menu = TRUE;
 			}
 		}
 	}
+	tpst = i;
 	fclose(fp);
 }
 
 
 /* WriteRCFile function */
 void
-WriteRCFile(const char *filename)
+WriteRCFile(const char *filename, rckeys *keys)
 {
-	int i;
-	char temp[128];
-	char tp[10];
-	char *tokens = " \t\n()";
-	char *q;
+	long i;
 	FILE *fp;
+	int key;
 
-	if ((fp = fopen(filename, "r+")) == NULL) {
+	if ((fp = fopen(filename, "w")) == NULL) {
 		fprintf(stderr, "wmtv: %s\n", strerror(errno));
 		return;
 	}
 
+	for (key=0; keys[key].label; key++)
+		if (*keys[key].var)
+			fprintf(fp, "%s = %s\n", keys[key].label, *keys[key].var);
+
+	fprintf(fp, "\n[channel]\n");
+
+	for (i = 0; i <= maxpst; i++)
+		fprintf(fp, "%s (%ld)\t%s\n", cname[i], ftune[i], comment[i]);
 
-	while (fgets(temp, 128, fp)) {
-		q = strdup(temp);
-		if (*q != '\n') {
-			q = strtok(temp, tokens);
-			if ((q = strchr(q, '[')) != NULL) {
-				for (i = 0; i <= maxpst; i++) {
-					// fprintf(stderr, "offset is %ld\n", offset);
-					/*
-					sprintf(tp, " (%ld) ", offset);
-					strtok(wcname[cchannel], tokens);
-					strcat(wcname[cchannel], tp);
-					*/
-					fputs(wcname[i], fp);
-					fputs("\n", fp);
-				}
-			}
-		}
-	}
 	fclose(fp);
 }
 
@@ -1167,20 +1268,18 @@ void
 InitConfig(void)
 {
 	int i;
-	char temp[128];
 
-	strcpy(temp, "/etc/wmtvrc");
-	ParseRCFile(temp, wmtv_keys);
-	ParseRCFile2(temp);
-	
-	strncpy(temp, (char *)getenv("HOME"), (sizeof(char)*(128-9)));
-	strcat(temp, "/.wmtvrc");
-	ParseRCFile(temp, wmtv_keys);
-	ParseRCFile2(temp);
+	ParseRCFile(usrConfFile, wmtv_keys);
+	ParseRCFile2(usrConfFile);
 
 	if (norcfile) {
-		fprintf(stderr, "wmtv: error - config file not found\n");
-		exit(1);
+		ParseRCFile(sysConfFile, wmtv_keys);
+		ParseRCFile2(sysConfFile);
+
+		if (norcfile) {
+			fprintf(stderr, "wmtv: error - config file not found\n");
+			exit(1);
+		}
 	}
 
 	if (maxpreset != NULL)
@@ -1309,17 +1408,20 @@ InitConfig(void)
 void
 GetFrameBuffer(void)
 {
+#if 0
 	void *baseaddr = NULL;
 	int evbr, erbr, flr = 0;
 	int bankr, memr, depth;
 	int i, n;
 	int bytesperline, bitsperpixel;
 	XPixmapFormatValues *pf;
+#endif
 
 	if (!XGetWindowAttributes(display, DefaultRootWindow(display), &Winattr)) {
 		fprintf(stderr, "wmtv: error getting winattr of root\n");
 	}
 
+#if 0
 	depth = Winattr.depth;
 
 	if (XF86DGAQueryExtension(display, &evbr, &erbr)) {
@@ -1343,8 +1445,8 @@ GetFrameBuffer(void)
 			}
 	}
 
-	bitsperpixel = (depth+7) & 0xf8;				    /* Taken from */
-	bytesperline = Winattr.width * bitsperpixel / 8;    /* Gerd Knorr's xawtv */
+	bitsperpixel = (depth+7) & 0xf8;
+	bytesperline *= bitsperpixel/8;
 
 	vfb.base = baseaddr;
 	vfb.height = Winattr.height;
@@ -1355,13 +1457,10 @@ GetFrameBuffer(void)
 	if (Winattr.depth == 15)
 		vfb.depth = 15;
 
-	seteuid(0); /* Regain privileges */
-
 	if (ioctl(tfd, VIDIOCSFBUF, &vfb) < 0) {
 		perror("ioctl VIDIOCSFBUF");
 	}
-
-	seteuid(getuid()); /* Temporarily drop privileges */
+#endif
 }
 
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmtv.git



More information about the Pkg-wmaker-commits mailing list