summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2012-05-02 08:06:02 -0700
committerAaron Plattner <aplattner@nvidia.com>2012-05-02 08:06:02 -0700
commitc3e638087673f0f4b7a751685a97b7830a8d9a18 (patch)
treedfc366ef00d9df26f09931e959fbeb100931ccc4
parent6c04ca8c874a7407154520f8e78698b6e27206e7 (diff)
302.07302.07
-rw-r--r--Makefile203
-rw-r--r--dist-files.mk60
-rw-r--r--doc/Makefile115
-rw-r--r--doc/nvidia-settings.pngbin3485 -> 17255 bytes
-rw-r--r--doc/src.mk2
-rw-r--r--doc/version.mk1
-rw-r--r--samples/Makefile10
-rw-r--r--samples/nv-control-dpy.c154
-rw-r--r--samples/nv-control-dvc.c2
-rw-r--r--samples/nv-control-events.c574
-rw-r--r--samples/nv-control-gvi.c29
-rw-r--r--samples/nv-control-info.c19
-rw-r--r--samples/nv-control-targets.c2
-rw-r--r--samples/src.mk2
-rw-r--r--samples/version.mk1
-rw-r--r--src/Makefile174
-rw-r--r--src/command-line.c62
-rw-r--r--src/command-line.h2
-rw-r--r--src/common-utils/common-utils.c338
-rw-r--r--src/common-utils/common-utils.h78
-rw-r--r--src/common-utils/gen-manpage-opts-helper.c181
-rw-r--r--src/common-utils/gen-manpage-opts-helper.h24
-rw-r--r--src/common-utils/nvgetopt.c125
-rw-r--r--src/common-utils/nvgetopt.h24
-rw-r--r--src/common-utils/src.mk6
-rw-r--r--src/config-file.c4
-rw-r--r--src/gen-manpage-opts.c115
-rw-r--r--src/glxinfo.c1
-rw-r--r--src/gtk+-2.x/ctk3dvisionpro.c1
-rw-r--r--src/gtk+-2.x/ctkbanner.c3
-rw-r--r--src/gtk+-2.x/ctkbanner.h1
-rw-r--r--src/gtk+-2.x/ctkclocks.c1
-rw-r--r--src/gtk+-2.x/ctkcolorcontrols.c150
-rw-r--r--src/gtk+-2.x/ctkcolorcontrols.h6
-rw-r--r--src/gtk+-2.x/ctkcolorcorrection.c25
-rw-r--r--src/gtk+-2.x/ctkconfig.c1
-rw-r--r--src/gtk+-2.x/ctkcursorshadow.c1
-rw-r--r--src/gtk+-2.x/ctkcurve.c1
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig-utils.c597
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig-utils.h6
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig.c1200
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig.h33
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-crt.c100
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-crt.h6
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-dfp.c1433
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-dfp.h106
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-tv.c186
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-tv.h6
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice.c708
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice.h93
-rw-r--r--src/gtk+-2.x/ctkdisplaylayout.c268
-rw-r--r--src/gtk+-2.x/ctkdisplaylayout.h27
-rw-r--r--src/gtk+-2.x/ctkditheringcontrols.c247
-rw-r--r--src/gtk+-2.x/ctkditheringcontrols.h14
-rw-r--r--src/gtk+-2.x/ctkdropdownmenu.c1
-rw-r--r--src/gtk+-2.x/ctkecc.c1
-rw-r--r--src/gtk+-2.x/ctkedid.c42
-rw-r--r--src/gtk+-2.x/ctkedid.h10
-rw-r--r--src/gtk+-2.x/ctkevent.c45
-rw-r--r--src/gtk+-2.x/ctkframelock.c129
-rw-r--r--src/gtk+-2.x/ctkgauge.c1
-rw-r--r--src/gtk+-2.x/ctkglx.c1
-rw-r--r--src/gtk+-2.x/ctkgpu.c69
-rw-r--r--src/gtk+-2.x/ctkgvi.c5
-rw-r--r--src/gtk+-2.x/ctkgvo-banner.c1
-rw-r--r--src/gtk+-2.x/ctkgvo-csc.c1
-rw-r--r--src/gtk+-2.x/ctkgvo-sync.c1
-rw-r--r--src/gtk+-2.x/ctkgvo.c1457
-rw-r--r--src/gtk+-2.x/ctkgvo.h36
-rw-r--r--src/gtk+-2.x/ctkhelp.c3
-rw-r--r--src/gtk+-2.x/ctkimagesliders.c273
-rw-r--r--src/gtk+-2.x/ctkimagesliders.h9
-rw-r--r--src/gtk+-2.x/ctklicense.c1
-rw-r--r--src/gtk+-2.x/ctkmultisample.c52
-rw-r--r--src/gtk+-2.x/ctkopengl.c90
-rw-r--r--src/gtk+-2.x/ctkopengl.h1
-rw-r--r--src/gtk+-2.x/ctkpowermizer.c1
-rw-r--r--src/gtk+-2.x/ctkpowersavings.c1
-rw-r--r--src/gtk+-2.x/ctkrandr.c644
-rw-r--r--src/gtk+-2.x/ctkrandr.h92
-rw-r--r--src/gtk+-2.x/ctkscale.c1
-rw-r--r--src/gtk+-2.x/ctkscreen.c90
-rw-r--r--src/gtk+-2.x/ctkserver.c1
-rw-r--r--src/gtk+-2.x/ctkslimm.c4
-rw-r--r--src/gtk+-2.x/ctkthermal.c1
-rw-r--r--src/gtk+-2.x/ctkutils.c112
-rw-r--r--src/gtk+-2.x/ctkutils.h5
-rw-r--r--src/gtk+-2.x/ctkvcs.c3
-rw-r--r--src/gtk+-2.x/ctkwindow.c162
-rw-r--r--src/gtk+-2.x/ctkxvideo.c1
-rw-r--r--src/gtk+-2.x/src.mk99
-rw-r--r--src/image_data/rotate_left_off.pngbin373 -> 0 bytes
-rw-r--r--src/image_data/rotate_left_off_pixdata.h138
-rw-r--r--src/image_data/rotate_left_on.pngbin386 -> 0 bytes
-rw-r--r--src/image_data/rotate_left_on_pixdata.h135
-rw-r--r--src/image_data/rotate_right_off.pngbin522 -> 0 bytes
-rw-r--r--src/image_data/rotate_right_off_pixdata.h138
-rw-r--r--src/image_data/rotate_right_on.pngbin526 -> 0 bytes
-rw-r--r--src/image_data/rotate_right_on_pixdata.h135
-rw-r--r--src/image_data/rotation.pngbin12658 -> 0 bytes
-rw-r--r--src/image_data/rotation_orientation_horz.pngbin7318 -> 0 bytes
-rw-r--r--src/image_data/rotation_orientation_horz_pixdata.h2304
-rw-r--r--src/image_data/rotation_orientation_vert.pngbin6596 -> 0 bytes
-rw-r--r--src/image_data/rotation_orientation_vert_pixdata.h2425
-rw-r--r--src/image_data/rotation_pixdata.h1347
-rw-r--r--src/image_data/src.mk99
-rw-r--r--src/libXNVCtrl/Makefile1
-rw-r--r--src/libXNVCtrl/NVCtrl.h323
-rw-r--r--src/libXNVCtrl/nv_control.h5
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributes.c35
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributes.h23
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h14
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c391
-rw-r--r--src/libXNVCtrlAttributes/src.mk14
-rw-r--r--src/lscf.c3
-rw-r--r--src/msg.c3
-rw-r--r--src/msg.h43
-rw-r--r--src/option-table.h74
-rw-r--r--src/parse.c95
-rw-r--r--src/parse.h10
-rw-r--r--src/query-assign.c101
-rw-r--r--src/src.mk250
-rw-r--r--src/version.mk1
-rw-r--r--src/xpm_data/src.mk24
-rw-r--r--utils.mk30
-rw-r--r--version.mk2
126 files changed, 5130 insertions, 14007 deletions
diff --git a/Makefile b/Makefile
index a1f5235..826fba9 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
# and Linux systems.
#
-# Copyright (C) 2008 NVIDIA Corporation.
+# Copyright (C) 2008-2012 NVIDIA Corporation.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License,
@@ -17,201 +17,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses>.
#
+.PHONY: all clean clobber install
-##############################################################################
-# include common variables and functions
-##############################################################################
+all clean clobber install:
+ @$(MAKE) -C src $@
+ @$(MAKE) -C samples $@
+ @$(MAKE) -C doc $@
-include utils.mk
-
-
-##############################################################################
-# The calling Makefile may export any of the following variables; we
-# assign default values if they are not exported by the caller
-##############################################################################
-
-ifndef X_LDFLAGS
- ifeq ($(TARGET_OS)-$(TARGET_ARCH),Linux-x86_64)
- X_LDFLAGS = -L/usr/X11R6/lib64
- else
- X_LDFLAGS = -L/usr/X11R6/lib
- endif
-endif
-
-X_CFLAGS ?=
-
-GL_INCLUDE_PATH ?= /usr/include
-
-PKG_CONFIG ?= pkg-config
-
-ifndef GTK_CFLAGS
- GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk+-2.0)
-endif
-
-ifndef GTK_LDFLAGS
- GTK_LDFLAGS := $(shell $(PKG_CONFIG) --libs gtk+-2.0)
-endif
-
-
-##############################################################################
-# The XF86Config-parser, libXNVCtrl, and common-utils directories may
-# be in one of two places: either elsewhere in the driver source tree
-# when building nvidia-settings as part of the NVIDIA driver build (in
-# which case, XNVCTRL_DIR, XNVCTRL_ARCHIVE, XCONFIG_PARSER_DIR and
-# COMMON_UTILS_DIR should be defined by the calling makefile), or
-# directly in the source directory when building from the
-# nvidia-settings source tarball (in which case, the below conditional
-# assignments should be used)
-##############################################################################
-
-XNVCTRL_DIR ?= src/libXNVCtrl
-XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a
-XCONFIG_PARSER_DIR ?= src/XF86Config-parser
-COMMON_UTILS_DIR ?= src/common-utils
-
-##############################################################################
-# assign variables
-##############################################################################
-
-NVIDIA_SETTINGS = $(OUTPUTDIR)/nvidia-settings
-
-NVIDIA_SETTINGS_PROGRAM_NAME = "nvidia-settings"
-
-NVIDIA_SETTINGS_VERSION := $(NVIDIA_VERSION)
-
-CFLAGS += $(X_CFLAGS)
-
-ifeq ($(TARGET_OS),SunOS)
- LDFLAGS += -Wl,-rpath=/usr/X11R6/lib
-endif
-
-LDFLAGS += $(X_LDFLAGS)
-
-# Some older Linux distributions do not have the dynamic library
-# libXxf86vm.so, though some newer Linux distributions do not have the
-# static library libXxf86vm.a. Statically link against libXxf86vm
-# when building nvidia-settings within the NVIDIA driver build, but
-# dynamically link against libXxf86vm in the public builds.
-ifdef NV_LINK_LIBXXF86VM_STATICALLY
- LDFLAGS += -Wl,-Bstatic -lXxf86vm -Wl,-Bdynamic
-else
- LDFLAGS += -lXxf86vm
-endif
-
-LDFLAGS += -lX11 -lXext -lm
-LDFLAGS += $(GTK_LDFLAGS)
-LDFLAGS += $(LIBDL_LDFLAGS)
-
-MANPAGE_GZIP ?= 1
-
-MANPAGE_gzipped = $(OUTPUTDIR)/nvidia-settings.1.gz
-MANPAGE_not_gzipped = $(OUTPUTDIR)/nvidia-settings.1
-ifeq ($(MANPAGE_GZIP),1)
- MANPAGE = $(MANPAGE_gzipped)
-else
- MANPAGE = $(MANPAGE_not_gzipped)
-endif
-GEN_MANPAGE_OPTS = $(OUTPUTDIR)/gen-manpage-opts
-OPTIONS_1_INC = $(OUTPUTDIR)/options.1.inc
-
-# Include all the source lists; dist-files.mk will define SRC
-include dist-files.mk
-
-include $(XCONFIG_PARSER_DIR)/src.mk
-SRC += $(addprefix $(XCONFIG_PARSER_DIR)/,$(XCONFIG_PARSER_SRC))
-
-include $(COMMON_UTILS_DIR)/src.mk
-SRC += $(addprefix $(COMMON_UTILS_DIR)/,$(COMMON_UTILS_SRC))
-
-SRC += $(STAMP_C)
-
-OBJS = $(call BUILD_OBJECT_LIST,$(SRC))
-
-CFLAGS += -I src
-CFLAGS += -I src/image_data
-CFLAGS += -I $(XNVCTRL_DIR)
-CFLAGS += -I $(XCONFIG_PARSER_DIR)/..
-CFLAGS += -I src/libXNVCtrlAttributes
-CFLAGS += -I src/xpm_data
-CFLAGS += -I src/gtk+-2.x
-CFLAGS += -I $(COMMON_UTILS_DIR)
-CFLAGS += -I $(OUTPUTDIR)
-CFLAGS += -DPROGRAM_NAME=\"nvidia-setttings\"
-
-$(call BUILD_OBJECT_LIST,$(GTK_SRC)): CFLAGS += $(GTK_CFLAGS)
-
-
-##############################################################################
-# build rules
-##############################################################################
-
-.PNONY: all install NVIDIA_SETTINGS_install MANPAGE_install clean clobber
-
-all: $(NVIDIA_SETTINGS) $(MANPAGE)
-
-install: NVIDIA_SETTINGS_install MANPAGE_install
-
-NVIDIA_SETTINGS_install: $(NVIDIA_SETTINGS)
- $(MKDIR) $(bindir)
- $(INSTALL) $(INSTALL_BIN_ARGS) $< $(bindir)/$(notdir $<)
-
-MANPAGE_install: $(MANPAGE)
- $(MKDIR) $(mandir)
- $(INSTALL) $(INSTALL_BIN_ARGS) $< $(mandir)/$(notdir $<)
-
-$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_ARCHIVE)
- $(call quiet_cmd,LINK) -o $@ $(OBJS) $(XNVCTRL_ARCHIVE) \
- $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS)
- $(call quiet_cmd,STRIP_CMD) $@
-
-# define the rule to build each object file
-$(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,CC,$(src))))
-
-# define the rule to generate $(STAMP_C)
-$(eval $(call DEFINE_STAMP_C_RULE, $(OBJS),$(NVIDIA_SETTINGS_PROGRAM_NAME)))
-
-clean clobber:
- rm -rf $(NVIDIA_SETTINGS) $(MANPAGE) *~ $(STAMP_C) \
- $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d \
- $(GEN_MANPAGE_OPTS) $(OPTIONS_1_INC)
-
-
-##############################################################################
-# Documentation
-##############################################################################
-
-AUTO_TEXT = ".\\\" WARNING: THIS FILE IS AUTO-GENERATED! Edit $< instead."
-
-doc: $(MANPAGE)
-
-GEN_MANPAGE_OPTS_SRC = src/gen-manpage-opts.c
-
-BUILD_MANPAGE_OBJECT_LIST = \
- $(patsubst %.o,%.manpage.o,$(call BUILD_OBJECT_LIST,$(1)))
-
-GEN_MANPAGE_OPTS_OBJS = \
- $(call BUILD_MANPAGE_OBJECT_LIST,$(GEN_MANPAGE_OPTS_SRC))
-
-$(GEN_MANPAGE_OPTS): $(GEN_MANPAGE_OPTS_OBJS)
- $(call quiet_cmd,HOST_LINK) $(GEN_MANPAGE_OPTS_OBJS) -o $@ \
- $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_BIN_LDFLAGS)
-
-# define a rule to build each GEN_MANPAGE_OPTS object file
-$(foreach src,$(GEN_MANPAGE_OPTS_SRC),\
- $(eval $(call DEFINE_OBJECT_RULE_WITH_OBJECT_NAME,HOST_CC,$(src),\
- $(call BUILD_MANPAGE_OBJECT_LIST,$(src)))))
-
-$(OPTIONS_1_INC): $(GEN_MANPAGE_OPTS)
- @./$< > $@
-
-$(MANPAGE_not_gzipped): doc/nvidia-settings.1.m4 $(OPTIONS_1_INC)
- $(call quiet_cmd,M4) \
- -D__HEADER__=$(AUTO_TEXT) \
- -D__BUILD_OS__=$(TARGET_OS) \
- -D__VERSION__=$(NVIDIA_VERSION) \
- -D__DATE__="`$(DATE) +%F`" \
- -I $(OUTPUTDIR) \
- $< > $@
-
-$(MANPAGE_gzipped): $(MANPAGE_not_gzipped)
- $(GZIP_CMD) -9f < $< > $@
diff --git a/dist-files.mk b/dist-files.mk
deleted file mode 100644
index 80dcdb0..0000000
--- a/dist-files.mk
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
-# and Linux systems.
-#
-# Copyright (C) 2008 NVIDIA Corporation.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses>.
-#
-
-##############################################################################
-# define the list of files that should be distributed in the
-# nvidia-settings tarball; this is used by the NVIDIA driver build
-# when packaging the tarball, and by the nvidia-settings makefile when
-# building nvidia-settings.
-#
-# Defines SRC, EXTRA_DIST, and DIST_FILES
-##############################################################################
-
-SRC :=
-EXTRA_DIST := COPYING dist-files.mk
-
-include src/src.mk
-SRC += $(addprefix src/,$(SRC_SRC))
-EXTRA_DIST += $(addprefix src/,$(SRC_EXTRA_DIST))
-
-include src/image_data/src.mk
-SRC += $(addprefix src/image_data/,$(IMAGE_DATA_SRC))
-EXTRA_DIST += $(addprefix src/image_data/,$(IMAGE_DATA_EXTRA_DIST))
-
-include src/libXNVCtrlAttributes/src.mk
-SRC += $(addprefix src/libXNVCtrlAttributes/,$(LIB_XNVCTRL_ATTRIBUTES_SRC))
-EXTRA_DIST += $(addprefix src/libXNVCtrlAttributes/,$(LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST))
-
-include src/xpm_data/src.mk
-SRC += $(addprefix src/xpm_data/,$(LIB_XPM_DATA_SRC))
-EXTRA_DIST += $(addprefix src/xpm_data/,$(LIB_XPM_DATA_EXTRA_DIST))
-
-include src/gtk+-2.x/src.mk
-SRC += $(addprefix src/gtk+-2.x/,$(GTK_SRC))
-EXTRA_DIST += $(addprefix src/gtk+-2.x/,$(GTK_EXTRA_DIST))
-
-include doc/src.mk
-SRC += $(addprefix doc/,$(DOC_SRC))
-EXTRA_DIST += $(addprefix doc/,$(DOC_EXTRA_DIST))
-
-include samples/src.mk
-SRC += $(addprefix samples/,$(SAMPLES_SRC))
-EXTRA_DIST += $(addprefix samples/,$(SAMPLES_EXTRA_DIST))
-
-DIST_FILES := $(SRC) $(EXTRA_DIST)
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..40f1472
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,115 @@
+#
+# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+# and Linux systems.
+#
+# Copyright (C) 2008-2012 NVIDIA Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses>.
+#
+
+
+##############################################################################
+# include common variables and functions
+##############################################################################
+
+UTILS_MK_DIR ?= ..
+
+include $(UTILS_MK_DIR)/utils.mk
+
+
+##############################################################################
+# The common-utils directory may be in one of two places: either
+# elsewhere in the driver source tree when building nvidia-settings as
+# part of the NVIDIA driver build (in which case, COMMON_UTILS_DIR
+# should be defined by the calling makefile), or directly in the
+# source directory when building from the nvidia-settings source
+# tarball (in which case, the below conditional assignments should be
+# used)
+##############################################################################
+
+COMMON_UTILS_DIR ?= ../src/common-utils
+
+
+##############################################################################
+# assign variables
+##############################################################################
+
+MANPAGE_GZIP ?= 1
+
+MANPAGE_gzipped = $(OUTPUTDIR)/nvidia-settings.1.gz
+MANPAGE_not_gzipped = $(OUTPUTDIR)/nvidia-settings.1
+ifeq ($(MANPAGE_GZIP),1)
+ MANPAGE = $(MANPAGE_gzipped)
+else
+ MANPAGE = $(MANPAGE_not_gzipped)
+endif
+GEN_MANPAGE_OPTS = $(OUTPUTDIR)/gen-manpage-opts
+OPTIONS_1_INC = $(OUTPUTDIR)/options.1.inc
+
+CFLAGS += -I $(COMMON_UTILS_DIR)
+CFLAGS += -I ../src/libXNVCtrlAttributes
+
+
+##############################################################################
+# build rules
+##############################################################################
+
+.PNONY: all install MANPAGE_install clean clobber
+
+all: $(MANPAGE)
+
+install: MANPAGE_install
+
+MANPAGE_install: $(MANPAGE)
+ $(MKDIR) $(MANDIR)
+ $(INSTALL) $(INSTALL_BIN_ARGS) $< $(MANDIR)/$(notdir $<)
+
+clean clobber:
+ rm -rf $(MANPAGE) *~ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d \
+ $(GEN_MANPAGE_OPTS) $(OPTIONS_1_INC)
+
+
+##############################################################################
+# Documentation
+##############################################################################
+
+AUTO_TEXT = ".\\\" WARNING: THIS FILE IS AUTO-GENERATED! Edit $< instead."
+
+doc: $(MANPAGE)
+
+GEN_MANPAGE_OPTS_SRC = ../src/gen-manpage-opts.c
+GEN_MANPAGE_OPTS_SRC += $(COMMON_UTILS_DIR)/gen-manpage-opts-helper.c
+
+GEN_MANPAGE_OPTS_OBJS = $(call BUILD_OBJECT_LIST,$(GEN_MANPAGE_OPTS_SRC))
+
+$(foreach src, $(GEN_MANPAGE_OPTS_SRC), \
+ $(eval $(call DEFINE_OBJECT_RULE,HOST_CC,$(src))))
+
+$(GEN_MANPAGE_OPTS): $(GEN_MANPAGE_OPTS_OBJS)
+ $(call quiet_cmd,HOST_LINK) \
+ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_BIN_LDFLAGS) $^ -o $@
+
+$(OPTIONS_1_INC): $(GEN_MANPAGE_OPTS)
+ @./$< > $@
+
+$(MANPAGE_not_gzipped): nvidia-settings.1.m4 $(OPTIONS_1_INC) $(VERSION_MK)
+ $(call quiet_cmd,M4) \
+ -D__HEADER__=$(AUTO_TEXT) \
+ -D__BUILD_OS__=$(TARGET_OS) \
+ -D__VERSION__=$(NVIDIA_VERSION) \
+ -D__DATE__="`$(DATE) +%F`" \
+ -I $(OUTPUTDIR) \
+ $< > $@
+
+$(MANPAGE_gzipped): $(MANPAGE_not_gzipped)
+ $(GZIP_CMD) -9f < $< > $@
diff --git a/doc/nvidia-settings.png b/doc/nvidia-settings.png
index b506d99..82acce4 100644
--- a/doc/nvidia-settings.png
+++ b/doc/nvidia-settings.png
Binary files differ
diff --git a/doc/src.mk b/doc/src.mk
index 84db2ee..e1bf12b 100644
--- a/doc/src.mk
+++ b/doc/src.mk
@@ -10,3 +10,5 @@ DOC_EXTRA_DIST += nvidia-settings.1.m4
DOC_EXTRA_DIST += nvidia-settings.desktop
DOC_EXTRA_DIST += nvidia-settings.png
DOC_EXTRA_DIST += src.mk
+
+DOC_DIST_FILES := $(DOC_SRC) $(DOC_EXTRA_DIST) \ No newline at end of file
diff --git a/doc/version.mk b/doc/version.mk
new file mode 100644
index 0000000..c29a7ba
--- /dev/null
+++ b/doc/version.mk
@@ -0,0 +1 @@
+NVIDIA_VERSION = 302.07
diff --git a/samples/Makefile b/samples/Makefile
index 35be348..8fc8e4b 100644
--- a/samples/Makefile
+++ b/samples/Makefile
@@ -55,7 +55,7 @@ CFLAGS += -I $(LIBXNVCTRL_DIR)
LDFLAGS += $(X_LDFLAGS)
LDFLAGS += -L $(LIBXNVCTRL_DIR)
-LDFLAGS += -lXNVCtrl -lXext -lX11
+LIBS += -lXNVCtrl -lXext -lX11
##############################################################################
@@ -76,7 +76,7 @@ SAMPLE_SOURCES += nv-control-3dvisionpro.c
# build rules
##############################################################################
-.PHONY: all clean clobber
+.PHONY: all clean clobber install
# define the rule to build each object file
$(foreach src, $(SAMPLE_SOURCES), $(eval $(call DEFINE_OBJECT_RULE,CC,$(src))))
@@ -84,7 +84,7 @@ $(foreach src, $(SAMPLE_SOURCES), $(eval $(call DEFINE_OBJECT_RULE,CC,$(src))))
# define the rule to link each sample app from its corresponding object file
define link_sample_from_object
$$(OUTPUTDIR)/$(1:.c=): $$(call BUILD_OBJECT_LIST,$(1))
- $$(call quiet_cmd,LINK) $$(CFLAGS) -o $$@ $$< $$(LDFLAGS) $$(BIN_LDFLAGS)
+ $$(call quiet_cmd,LINK) $$(CFLAGS) $$(LDFLAGS) $$(BIN_LDFLAGS) -o $$@ $$< $$(LIBS)
all:: $$(OUTPUTDIR)/$(1:.c=)
SAMPLES += $$(OUTPUTDIR)/$(1:.c=)
endef
@@ -93,3 +93,7 @@ $(foreach sample,$(SAMPLE_SOURCES),$(eval $(call link_sample_from_object,$(sampl
clean clobber:
rm -rf *~ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d $(SAMPLES)
+
+install:
+ @# don't install samples, this is just to satisfy the top-level
+ @# recursion rule
diff --git a/samples/nv-control-dpy.c b/samples/nv-control-dpy.c
index 28fc7e3..b15c0ed 100644
--- a/samples/nv-control-dpy.c
+++ b/samples/nv-control-dpy.c
@@ -53,6 +53,28 @@ static char *find_modeline(char *modeString, char *pModeLines,
+static void print_display_name(Display *dpy, int target_id, int attr,
+ char *name)
+{
+ Bool ret;
+ char *str;
+
+ ret = XNVCTRLQueryTargetStringAttribute(dpy,
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ target_id, 0,
+ attr,
+ &str);
+ if (!ret) {
+ printf(" %18s : N/A\n", name);
+ return;
+ }
+
+ printf(" %18s : %s\n", name, str);
+ XFree(str);
+}
+
+
+
int main(int argc, char *argv[])
{
@@ -363,8 +385,48 @@ int main(int argc, char *argv[])
XFree(str);
}
-
-
+
+
+ /*
+ * query the MetaModes for the X screen, using
+ * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2.
+ */
+
+ else if (strcmp(argv[1], "--print-metamodes-version2") == 0) {
+
+ /* get list of metamodes */
+
+ ret = XNVCTRLQueryBinaryData(dpy, screen, 0, // n/a
+ NV_CTRL_BINARY_DATA_METAMODES_VERSION_2,
+ (void *) &str, &len);
+
+ if (!ret) {
+ fprintf(stderr, "Failed to query MetaModes.\n\n");
+ return 1;
+ }
+
+ /*
+ * the returned data is in the form:
+ *
+ * "MetaMode 1\0MetaMode 2\0MetaMode 3\0Last MetaMode\0\0"
+ *
+ * so walk from one "\0" to the next to print each MetaMode.
+ */
+
+ printf("MetaModes:\n");
+
+ start = str;
+ for (j = 0; j < len; j++) {
+ if (str[j] == '\0') {
+ printf(" %s\n", start);
+ start = &str[j+1];
+ }
+ }
+
+ XFree(str);
+ }
+
+
/*
* query the currently in use MetaMode. Note that an alternative
* way to accomplish this is to use XRandR to query the current
@@ -387,8 +449,32 @@ int main(int argc, char *argv[])
XFree(str);
}
-
-
+
+
+ /*
+ * query the currently in use MetaMode. Note that an alternative
+ * way to accomplish this is to use XRandR to query the current
+ * mode's refresh rate, and then match the refresh rate to the id
+ * reported in the returned NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 data.
+ */
+
+ else if (strcmp(argv[1], "--print-current-metamode-version2") == 0) {
+
+ ret = XNVCTRLQueryStringAttribute(dpy, screen, mask,
+ NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2,
+ &str);
+
+ if (!ret) {
+ fprintf(stderr, "Failed to query the current MetaMode.\n\n");
+ return 1;
+ }
+
+ printf("current metamode: \"%s\"\n\n", str);
+
+ XFree(str);
+ }
+
+
/*
* add the given MetaMode to X screen's list of MetaModes, using
* NV_CTRL_STRING_OPERATION_ADD_METAMODE; example MetaMode string:
@@ -1163,7 +1249,54 @@ int main(int argc, char *argv[])
printf("The id of the new MetaMode is %d; use xrandr to "
"switch to it.\n\n", id);
}
-
+
+
+ /* Display all names each display device goes by
+ */
+ else if (strcmp(argv[1], "--print-display-names") == 0) {
+ unsigned int *pData;
+ int len, i;
+
+ printf("Display Device Information:\n");
+
+ ret = XNVCTRLQueryTargetBinaryData(dpy,
+ NV_CTRL_TARGET_TYPE_GPU,
+ 0,
+ 0,
+ NV_CTRL_BINARY_DATA_DISPLAY_TARGETS,
+ (unsigned char **) &pData,
+ &len);
+ if (!ret) {
+ fprintf(stderr, "Failed to query number of display devices.\n\n");
+ return 1;
+ }
+
+ printf(" number of display devices: %d\n", pData[0]);
+
+ for (i = 1; i <= pData[0]; i++) {
+
+ printf("\n Display Device: %d\n", pData[i]);
+
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME,
+ "Type Basename");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID,
+ "Type ID");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_DP_GUID,
+ "DP GUID");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH,
+ "EDID HASH");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX,
+ "Target Index");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_RANDR,
+ "RANDR");
+ }
+ }
/*
* print help information
@@ -1204,6 +1337,9 @@ int main(int argc, char *argv[])
printf(" --print-metamodes: print the current MetaModes for the "
"X screen\n\n");
+ printf(" --print-metamodes-version2: print the current MetaModes for "
+ "the X screen with extended information\n\n");
+
printf(" --add-metamode [metamode]: add the specified "
"MetaMode to the X screen's list of MetaModes.\n\n");
@@ -1212,7 +1348,10 @@ int main(int argc, char *argv[])
printf(" --print-current-metamode: print the current MetaMode.\n\n");
-
+ printf(" --print-current-metamode-version2: print the current "
+ "MetaMode with extended information.\n\n");
+
+
printf(" Misc options:\n\n");
printf(" --get-valid-freq-ranges: query the valid frequency "
@@ -1246,6 +1385,9 @@ int main(int argc, char *argv[])
printf(" --dynamic-twinview: demonstrates the process of "
"dynamically transitioning into TwinView.\n\n");
+
+ printf(" --print-display-names: print all the names associated with "
+ "each display device on the server\n\n");
}
return 0;
diff --git a/samples/nv-control-dvc.c b/samples/nv-control-dvc.c
index dde9c0e..e8243bc 100644
--- a/samples/nv-control-dvc.c
+++ b/samples/nv-control-dvc.c
@@ -52,7 +52,7 @@
* to the display device mask.
*/
-char *display_device_name(int mask)
+static char *display_device_name(int mask)
{
switch (mask) {
case (1 << 0): return "CRT-0"; break;
diff --git a/samples/nv-control-events.c b/samples/nv-control-events.c
index 4b9e402..3364203 100644
--- a/samples/nv-control-events.c
+++ b/samples/nv-control-events.c
@@ -30,6 +30,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+#include <unistd.h>
#include <X11/Xlib.h>
@@ -37,30 +38,117 @@
#include "NVCtrl.h"
#include "NVCtrlLib.h"
+#define EVENT_TYPE_START TARGET_ATTRIBUTE_CHANGED_EVENT
+#define EVENT_TYPE_END TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT
+
+
static const char *attr2str(int n);
static const char *target2str(int n);
+static const char *targetTypeAndId2Str(int targetType, int targetId);
+
+struct target_info {
+ int type;
+ int count;
+};
+
+static void print_usage(char **argv)
+{
+ printf("Usage:\n");
+ printf("%s [-d <dpy>] [-a] [-c] [-b] [-s]\n", argv[0]);
+ printf("\n");
+ printf("-d <dpy>: X server display to connect to\n");
+ printf("-a: Listen for attribute availability events\n");
+ printf("-c: Listen for attribute changed events\n");
+ printf("-b: Listen for binary attribute changed events\n");
+ printf("-s: Listen for string attribute changed events\n");
+ printf("\n");
+ printf("By default (i.e., if none of -a, -c, -b, or -s are requested),\n"
+ "all event types are enabled.\n");
+}
-int main(void)
+int main(int argc, char **argv)
{
Display *dpy;
Bool ret;
int event_base, error_base;
- int num_screens, num_gpus, num_framelocks, num_vcs, i;
- int num_gvis, num_coolers, num_thermal_sensors;
- int num_3d_vision_pro_transceivers;
- int sources;
- XEvent event;
- XNVCtrlAttributeChangedEvent *nvevent;
- XNVCtrlAttributeChangedEventTarget *nveventtarget;
+ int i, j, k;
+ int sources = 0;
+ struct target_info info[] = {
+ { .type = NV_CTRL_TARGET_TYPE_X_SCREEN },
+ { .type = NV_CTRL_TARGET_TYPE_GPU },
+ { .type = NV_CTRL_TARGET_TYPE_FRAMELOCK },
+ { .type = NV_CTRL_TARGET_TYPE_VCSC },
+ { .type = NV_CTRL_TARGET_TYPE_GVI },
+ { .type = NV_CTRL_TARGET_TYPE_COOLER },
+ { .type = NV_CTRL_TARGET_TYPE_THERMAL_SENSOR },
+ { .type = NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER },
+ };
+ static const int num_target_types = sizeof(info) / sizeof(*info);
+
+ int c;
+ char *dpy_name = NULL;
+ Bool anythingEnabled;
+
+#define EVENT_TYPE_ENTRY(_x) [_x] = { False, #_x }
+
+ struct {
+ Bool enabled;
+ char *description;
+ } eventTypes[] = {
+ EVENT_TYPE_ENTRY(TARGET_ATTRIBUTE_CHANGED_EVENT),
+ EVENT_TYPE_ENTRY(TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT),
+ EVENT_TYPE_ENTRY(TARGET_STRING_ATTRIBUTE_CHANGED_EVENT),
+ EVENT_TYPE_ENTRY(TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT),
+ };
+
+ while ((c = getopt(argc, argv, "d:acbsh")) >= 0) {
+ switch (c) {
+ case 'd':
+ dpy_name = optarg;
+ break;
+ case 'a':
+ eventTypes[TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT].enabled = True;
+ break;
+ case 'c':
+ eventTypes[TARGET_ATTRIBUTE_CHANGED_EVENT].enabled = True;
+ break;
+ case 'b':
+ eventTypes[TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT].enabled = True;
+ break;
+ case 's':
+ eventTypes[TARGET_STRING_ATTRIBUTE_CHANGED_EVENT].enabled = True;
+ break;
+ case '?':
+ fprintf(stderr, "%s: Unknown argument '%c'\n", argv[0], optopt);
+ /* fallthrough */
+ case 'h':
+ print_usage(argv);
+ return 1;
+ }
+ }
+
+ anythingEnabled = False;
+ for (i = EVENT_TYPE_START; i <= EVENT_TYPE_END; i++) {
+ if (eventTypes[i].enabled) {
+ anythingEnabled = True;
+ break;
+ }
+ }
+
+ if (!anythingEnabled) {
+ for (i = EVENT_TYPE_START; i <= EVENT_TYPE_END; i++) {
+ eventTypes[i].enabled = True;
+ }
+ }
/*
* Open a display connection, and make sure the NV-CONTROL X
* extension is present on the screen we want to use.
*/
-
- dpy = XOpenDisplay(NULL);
+
+ dpy = XOpenDisplay(dpy_name);
if (!dpy) {
- fprintf(stderr, "Cannot open display '%s'.\n", XDisplayName(NULL));
+ fprintf(stderr, "Cannot open display '%s'.\n", XDisplayName(dpy_name));
return 1;
}
@@ -71,305 +159,97 @@ int main(void)
ret = XNVCTRLQueryExtension(dpy, &event_base, &error_base);
if (ret != True) {
fprintf(stderr, "The NV-CONTROL X extension does not exist on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of X Screens */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN,
- &num_screens);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of X Screens on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of GPUs */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_GPU,
- &num_gpus);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of GPUs on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of Frame Lock (G-Sync) devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_FRAMELOCK,
- &num_framelocks);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of G-Sync devices on "
- "'%s'.\n",
- XDisplayName(NULL));
+ XDisplayName(dpy_name));
return 1;
}
- /* Query number of VCS (Visual Computing System) devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_VCSC,
- &num_vcs);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Visual Computing "
- "System devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
+ /* Query target counts */
+ for (i = 0; i < num_target_types; i++) {
- /* Query number of GVI (Graphics Video Input) devices */
+ struct target_info *tinfo = &info[i];
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_GVI,
- &num_gvis);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Graphics Video "
- "Input devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of Cooler devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_COOLER,
- &num_coolers);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Cooler devices "
- "on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of Thermal Sensor devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_THERMAL_SENSOR,
- &num_thermal_sensors);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Thermal Sensor "
- "devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of 3d Vision Pro Transceivers */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER,
- &num_3d_vision_pro_transceivers);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of 3D Vision Pro "
- "Transceiver devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /*
- * register to receive NV-CONTROL events: whenever any NV-CONTROL
- * attribute is changed by an NV-CONTROL client, any other client
- * can receive notification of the change.
- */
-
- sources = 0;
-
- /*
- * - Register to receive ATTRIBUTE_CHANGE_EVENT events. These events
- * are specific to attributes set on X Screens.
- */
-
- printf("Registering to receive ATTRIBUTE_CHANGED_EVENT events...\n");
- fflush(stdout);
-
- for (i = 0; i < num_screens; i++ ) {
-
- /* Only register to receive events if this screen is controlled by
- * the NVIDIA driver.
- */
- if (!XNVCTRLIsNvScreen(dpy, i)) {
- printf("- The NV-CONTROL X not available on X screen "
- "%d of '%s'.\n", i, XDisplayName(NULL));
- continue;
- }
-
- ret = XNVCtrlSelectNotify(dpy, i, ATTRIBUTE_CHANGED_EVENT, True);
+ ret = XNVCTRLQueryTargetCount(dpy, tinfo->type, &tinfo->count);
if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL events on '%s'."
- "\n", XDisplayName(NULL));
- continue;
+ fprintf(stderr, "Failed to query %s target count on '%s'.\n",
+ target2str(tinfo->type), XDisplayName(dpy_name));
+ return 1;
}
-
- printf("+ Listening to ATTRIBUTE_CHANGE_EVENTs on X screen %d.\n", i);
- sources++;
}
- printf("\n");
- /*
- * - Register to receive TARGET_ATTRIBUTE_CHANGED_EVENT events. These
- * events are specific to attributes set on various devices and
- * structures controlled by the NVIDIA driver. Some possible targets
- * include X Screens, GPUs, and Frame Lock boards.
- */
-
- printf("Registering to receive TARGET_ATTRIBUTE_CHANGED_EVENT "
- "events...\n");
+ printf("Registering to receive events...\n");
fflush(stdout);
- /* Register to receive on all X Screen targets */
-
- for (i = 0; i < num_screens; i++ ) {
-
- /* Only register to receive events if this screen is controlled by
- * the NVIDIA driver.
- */
- if (!XNVCTRLIsNvScreen(dpy, i)) {
- printf("- The NV-CONTROL X not available on X screen "
- "%d of '%s'.\n", i, XDisplayName(NULL));
- continue;
- }
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for X screen %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on X screen "
- "%d.\n", i);
- sources++;
- }
+ /* Register to receive events on all targets */
- /* Register to receive on all GPU targets */
+ for (i = 0; i < num_target_types; i++) {
+ struct target_info *tinfo = &info[i];
- for (i = 0; i < num_gpus; i++ ) {
+ for (j = 0; j < tinfo->count; j++) {
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_GPU,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for GPU %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on GPU "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all Frame Lock (G-Sync) targets */
-
- for (i = 0; i < num_framelocks; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_FRAMELOCK,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for Frame Lock %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on Frame Lock "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all VCS targets */
-
- for (i = 0; i < num_vcs; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_VCSC,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for VCS %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on VCS "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all GVI targets */
-
- for (i = 0; i < num_gvis; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_GVI,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for GVI %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on GVI "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all Cooler targets */
-
- for (i = 0; i < num_coolers; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_COOLER,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for Cooler %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on Cooler "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all Thermal Sensor targets */
-
- for (i = 0; i < num_thermal_sensors; i++ ) {
+ for (k = EVENT_TYPE_START; k <= EVENT_TYPE_END; k++) {
+ if (!eventTypes[k].enabled) {
+ continue;
+ }
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_THERMAL_SENSOR,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for Thermal Sensor %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on Thermal "
- "Sensor %d.\n", i);
- sources++;
- }
+ if ((k == TARGET_ATTRIBUTE_CHANGED_EVENT) &&
+ (tinfo->type == NV_CTRL_TARGET_TYPE_X_SCREEN)) {
+
+ /*
+ * Only register to receive events if this screen is
+ * controlled by the NVIDIA driver.
+ */
+ if (!XNVCTRLIsNvScreen(dpy, j)) {
+ printf("- The NV-CONTROL X not available on X screen "
+ "%d of '%s'.\n", i, XDisplayName(dpy_name));
+ continue;
+ }
+
+ /*
+ * - Register to receive ATTRIBUTE_CHANGE_EVENT events.
+ * These events are specific to attributes set on X
+ * Screens.
+ */
+
+
+ ret = XNVCtrlSelectNotify(dpy, j, ATTRIBUTE_CHANGED_EVENT,
+ True);
+ if (ret != True) {
+ printf("- Unable to register to receive NV-CONTROL"
+ "events on '%s'.\n", XDisplayName(dpy_name));
+ continue;
+ }
+
+ printf("+ Listening on X screen %d for "
+ "ATTRIBUTE_CHANGED_EVENTs.\n", j);
+ sources++;
+ }
- /* Register to receive on all 3D Vision Pro Transceiver targets */
+ /*
+ * - Register to receive TARGET_ATTRIBUTE_CHANGED_EVENT events.
+ * These events are specific to attributes set on various
+ * devices and structures controlled by the NVIDIA driver.
+ * Some possible targets include X Screens, GPUs, and Frame
+ * Lock boards.
+ */
+
+ ret = XNVCtrlSelectTargetNotify(dpy,
+ tinfo->type, /* target type */
+ j, /* target ID */
+ k, /* eventType */
+ True);
+ if (ret != True) {
+ printf("- Unable to register on %s %d for %ss.\n",
+ target2str(tinfo->type), j,
+ eventTypes[k].description);
+ continue;
+ }
- for (i = 0; i < num_3d_vision_pro_transceivers; i++ ) {
+ printf("+ Listening on %s %d for %ss.\n",
+ target2str(tinfo->type), j, eventTypes[k].description);
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for 3D Vision Pro Transceiver %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
+ sources++;
+ }
}
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on 3d Vision "
- "Pro Transceiver %d.\n", i);
- sources++;
}
/*
@@ -386,31 +266,25 @@ int main(void)
*/
while (True) {
- char target_str[256];
+ XEvent event;
+ const char *target_str;
/* block for the next event */
XNextEvent(dpy, &event);
- /* if this is not one of our events, then bail out of this iteration */
-
- if ((event.type != (event_base + ATTRIBUTE_CHANGED_EVENT)) &&
- (event.type != (event_base + TARGET_ATTRIBUTE_CHANGED_EVENT)))
- continue;
-
/* Handle ATTRIBUTE_CHANGED_EVENTS */
if (event.type == (event_base + ATTRIBUTE_CHANGED_EVENT)) {
/* cast the X event as an XNVCtrlAttributeChangedEvent */
-
- nvevent = (XNVCtrlAttributeChangedEvent *) &event;
-
- /* print out the event information */
- snprintf(target_str, 256, "%s-%-3d",
- target2str(NV_CTRL_TARGET_TYPE_X_SCREEN),
- nvevent->screen);
+ XNVCtrlAttributeChangedEvent *nvevent =
+ (XNVCtrlAttributeChangedEvent *) &event;
+
+ target_str = targetTypeAndId2Str(NV_CTRL_TARGET_TYPE_X_SCREEN,
+ nvevent->screen);
- printf("ATTRIBUTE_CHANGED_EVENTS: Target: %15s "
+ /* print out the event information */
+ printf("ATTRIBUTE_CHANGED_EVENTS: Target: %15s "
"Display Mask: 0x%08x "
"Attribute: (%3d) %-32s Value: %d (0x%08x)\n",
target_str,
@@ -424,16 +298,16 @@ int main(void)
/* Handle TARGET_ATTRIBUTE_CHANGED_EVENTS */
} else if (event.type ==
(event_base + TARGET_ATTRIBUTE_CHANGED_EVENT)) {
+
/* cast the X event as an XNVCtrlAttributeChangedEventTarget */
-
- nveventtarget = (XNVCtrlAttributeChangedEventTarget *) &event;
-
- /* print out the event information */
- snprintf(target_str, 256, "%s-%-3d",
- target2str(nveventtarget->target_type),
- nveventtarget->target_id);
+ XNVCtrlAttributeChangedEventTarget *nveventtarget =
+ (XNVCtrlAttributeChangedEventTarget *) &event;
- printf("TARGET_ATTRIBUTE_CHANGED_EVENTS: Target: %15s "
+ target_str = targetTypeAndId2Str(nveventtarget->target_type,
+ nveventtarget->target_id);
+
+ /* print out the event information */
+ printf("TARGET_ATTRIBUTE_CHANGED_EVENT: Target: %15s "
"Display Mask: 0x%08x "
"Attribute: (%3d) %-32s Value: %d (0x%08x)\n",
target_str,
@@ -443,6 +317,66 @@ int main(void)
nveventtarget->value,
nveventtarget->value
);
+
+ /* Handle TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENTS */
+ } else if (event.type ==
+ (event_base + TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT)) {
+
+ /* cast the X event as an XNVCtrlAttributeChangedEventTargetAvailability */
+ XNVCtrlAttributeChangedEventTargetAvailability *nveventavail =
+ (XNVCtrlAttributeChangedEventTargetAvailability *) &event;
+
+ target_str = targetTypeAndId2Str(nveventavail->target_type,
+ nveventavail->target_id);
+
+ /* print out the event information */
+ printf("TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT: Target: %15s "
+ "Display Mask: 0x%08x "
+ "Attribute: (%3d) %-32s Available: %s\n",
+ target_str,
+ nveventavail->display_mask,
+ nveventavail->attribute,
+ attr2str(nveventavail->attribute),
+ nveventavail->availability ? "Yes" : "No"
+ );
+ } else if (event.type ==
+ (event_base + TARGET_STRING_ATTRIBUTE_CHANGED_EVENT)) {
+
+ XNVCtrlStringAttributeChangedEventTarget *nveventstring =
+ (XNVCtrlStringAttributeChangedEventTarget*) &event;
+
+ target_str = targetTypeAndId2Str(nveventstring->target_type,
+ nveventstring->target_id);
+
+ /* print out the event information */
+ printf("TARGET_STRING_ATTRIBUTE_CHANGED_EVENT: Target: %15s "
+ "Display Mask: 0x%08x "
+ "Attribute: %3d\n",
+ target_str,
+ nveventstring->display_mask,
+ nveventstring->attribute
+ );
+
+ } else if (event.type ==
+ (event_base + TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT)) {
+
+ XNVCtrlBinaryAttributeChangedEventTarget *nveventbinary =
+ (XNVCtrlBinaryAttributeChangedEventTarget *) &event;
+
+ target_str = targetTypeAndId2Str(nveventbinary->target_type,
+ nveventbinary->target_id);
+
+ /* print out the event information */
+ printf("TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT: Target: %15s "
+ "Display Mask: 0x%08x "
+ "Attribute: %3d\n",
+ target_str,
+ nveventbinary->display_mask,
+ nveventbinary->attribute
+ );
+
+ } else {
+ printf("ERROR: unrecognized event type %d\n", event.type);
}
}
@@ -481,6 +415,15 @@ static const char *target2str(int n)
}
}
+static const char *targetTypeAndId2Str(int targetType, int targetId)
+{
+ static char tmp[256];
+
+ snprintf(tmp, sizeof(tmp), "%s-%-3d", target2str(targetType), targetId);
+
+ return tmp;
+}
+
// Used to convert the NV-CONTROL #defines to human readable text.
#define MAKE_ENTRY(ATTRIBUTE) { ATTRIBUTE, #ATTRIBUTE, NULL }
@@ -590,7 +533,6 @@ static AttrEntry attr_table[] = {
MAKE_ENTRY(NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT),
MAKE_ENTRY(NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT),
MAKE_ENTRY(NV_CTRL_GVO_DATA_FORMAT),
- MAKE_ENTRY(NV_CTRL_GVO_DISPLAY_X_SCREEN),
MAKE_ENTRY(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED),
MAKE_ENTRY(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE),
MAKE_ENTRY(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED),
@@ -603,8 +545,6 @@ static AttrEntry attr_table[] = {
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH),
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT),
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_X),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_Y),
MAKE_ENTRY(NV_CTRL_GPU_OVERCLOCKING_STATE),
MAKE_ENTRY(NV_CTRL_GPU_2D_CLOCK_FREQS),
MAKE_ENTRY(NV_CTRL_GPU_3D_CLOCK_FREQS),
diff --git a/samples/nv-control-gvi.c b/samples/nv-control-gvi.c
index 6e0a4de..c5a0d91 100644
--- a/samples/nv-control-gvi.c
+++ b/samples/nv-control-gvi.c
@@ -46,24 +46,10 @@ case (FMT): \
/*
- * Decode SDI input value returned.
- */
-char *SyncTypeName(int value)
-{
- switch (value) {
- ADD_NVCTRL_CASE(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD);
- ADD_NVCTRL_CASE(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD);
- ADD_NVCTRL_CASE(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE);
- default:
- return "Invalid Value";
- }
-}
-
-/*
* Decode provided signal format.
*/
-char *VideoFormatName(int value)
+static char *VideoFormatName(int value)
{
switch(value) {
ADD_NVCTRL_CASE(NV_CTRL_GVIO_VIDEO_FORMAT_NONE);
@@ -136,7 +122,7 @@ char *VideoFormatName(int value)
}
}
-const char *SamplingName(int value)
+static const char *SamplingName(int value)
{
switch (value) {
default:
@@ -150,7 +136,7 @@ const char *SamplingName(int value)
}
}
-const char *BPCName(int value)
+static const char *BPCName(int value)
{
switch (value) {
ADD_NVCTRL_CASE(NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN);
@@ -349,9 +335,10 @@ static void do_query(Display *dpy, int use_gvi)
printf(" - Jack %d\n", jack);
for (channel = 0; channel < max_channels_per_jack; channel++) {
+ unsigned int link_definition = ((channel & 0xFFFF)<<16);
+
printf(" - Channel %d\n", channel);
- unsigned int link_definition = ((channel & 0xFFFF)<<16);
link_definition |= (jack & 0xFFFF);
ret = XNVCTRLQueryTargetAttribute(dpy,
@@ -571,13 +558,13 @@ static void do_query(Display *dpy, int use_gvi)
-unsigned int firstbit (unsigned int mask)
+static unsigned int firstbit (unsigned int mask)
{
return mask ^ ((mask - 1) & mask);
}
// List the configuration space of the GVI device.
-void do_listconfig(Display *dpy, int gvi)
+static void do_listconfig(Display *dpy, int gvi)
{
NVCTRLAttributeValidValuesRec values;
@@ -770,7 +757,7 @@ void do_listconfig(Display *dpy, int gvi)
-void do_configure(Display *dpy, int use_gvi, char *pIn)
+static void do_configure(Display *dpy, int use_gvi, char *pIn)
{
Bool ret;
char *pOut = NULL;
diff --git a/samples/nv-control-info.c b/samples/nv-control-info.c
index c86e736..777a3a7 100644
--- a/samples/nv-control-info.c
+++ b/samples/nv-control-info.c
@@ -142,7 +142,6 @@ static AttrEntry attr_int_table[] = {
MAKE_ENTRY(NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT),
MAKE_ENTRY(NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT),
MAKE_ENTRY(NV_CTRL_GVO_DATA_FORMAT),
- MAKE_ENTRY(NV_CTRL_GVO_DISPLAY_X_SCREEN),
MAKE_ENTRY(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED),
MAKE_ENTRY(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE),
MAKE_ENTRY(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED),
@@ -155,8 +154,6 @@ static AttrEntry attr_int_table[] = {
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH),
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT),
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_X),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_Y),
MAKE_ENTRY(NV_CTRL_GPU_OVERCLOCKING_STATE),
MAKE_ENTRY(NV_CTRL_GPU_2D_CLOCK_FREQS),
MAKE_ENTRY(NV_CTRL_GPU_3D_CLOCK_FREQS),
@@ -372,13 +369,20 @@ static AttrEntry attr_str_table[] = {
MAKE_ENTRY(NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A),
MAKE_ENTRY(NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS),
MAKE_ENTRY(NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME),
+ MAKE_ENTRY(NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_DP_GUID),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_RANDR),
{ -1, NULL, NULL }
};
static AttrEntry attr_bin_table[] = {
MAKE_ENTRY(NV_CTRL_BINARY_DATA_EDID),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_MODELINES),
- MAKE_ENTRY(NV_CTRL_BINARY_DATA_METAMODES),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_METAMODES_VERSION_1),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK),
@@ -390,6 +394,9 @@ static AttrEntry attr_bin_table[] = {
MAKE_ENTRY(NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_DISPLAY_TARGETS),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_METAMODES_VERSION_2),
{ -1, NULL, NULL }
};
@@ -404,7 +411,7 @@ static AttrEntry attr_strop_table[] = {
};
-void print_perms(NVCTRLAttributePermissionsRec *perms)
+static void print_perms(NVCTRLAttributePermissionsRec *perms)
{
printf("%c", (perms->permissions & ATTRIBUTE_TYPE_READ) ? 'R' : '_');
printf("%c", (perms->permissions & ATTRIBUTE_TYPE_WRITE) ? 'W' : '_');
@@ -426,7 +433,7 @@ void print_perms(NVCTRLAttributePermissionsRec *perms)
case (FMT): \
return #FMT;
-const char *GetAttrTypeName(value)
+static const char *GetAttrTypeName(int value)
{
switch (value) {
ADD_NVCTRL_CASE(ATTRIBUTE_TYPE_UNKNOWN);
diff --git a/samples/nv-control-targets.c b/samples/nv-control-targets.c
index 0f402db..f9236cc 100644
--- a/samples/nv-control-targets.c
+++ b/samples/nv-control-targets.c
@@ -46,7 +46,7 @@
* to the display device mask.
*/
-char *display_device_name(int mask)
+static char *display_device_name(int mask)
{
switch (mask) {
case (1 << 0): return "CRT-0"; break;
diff --git a/samples/src.mk b/samples/src.mk
index 8ae3d84..8bc8558 100644
--- a/samples/src.mk
+++ b/samples/src.mk
@@ -15,3 +15,5 @@ SAMPLES_EXTRA_DIST += nv-control-targets.c
SAMPLES_EXTRA_DIST += nv-control-framelock.c
SAMPLES_EXTRA_DIST += nv-control-screen.h
SAMPLES_EXTRA_DIST += src.mk
+
+SAMPLES_DIST_FILES := $(SAMPLES_SRC) $(SAMPLES_EXTRA_DIST) \ No newline at end of file
diff --git a/samples/version.mk b/samples/version.mk
new file mode 100644
index 0000000..c29a7ba
--- /dev/null
+++ b/samples/version.mk
@@ -0,0 +1 @@
+NVIDIA_VERSION = 302.07
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..c7e79b3
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,174 @@
+#
+# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+# and Linux systems.
+#
+# Copyright (C) 2008-2012 NVIDIA Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses>.
+#
+
+
+##############################################################################
+# include common variables and functions
+##############################################################################
+
+UTILS_MK_DIR ?= ..
+
+include $(UTILS_MK_DIR)/utils.mk
+
+
+##############################################################################
+# The calling Makefile may export any of the following variables; we
+# assign default values if they are not exported by the caller
+##############################################################################
+
+ifndef X_LDFLAGS
+ ifeq ($(TARGET_OS)-$(TARGET_ARCH),Linux-x86_64)
+ X_LDFLAGS = -L/usr/X11R6/lib64
+ else
+ X_LDFLAGS = -L/usr/X11R6/lib
+ endif
+endif
+
+X_CFLAGS ?=
+
+GL_INCLUDE_PATH ?= /usr/include
+
+PKG_CONFIG ?= pkg-config
+
+ifndef GTK_CFLAGS
+ GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk+-2.0)
+endif
+
+ifndef GTK_LDFLAGS
+ GTK_LDFLAGS := $(shell $(PKG_CONFIG) --libs gtk+-2.0)
+endif
+
+
+##############################################################################
+# The XF86Config-parser, libXNVCtrl, and common-utils directories may
+# be in one of two places: either elsewhere in the driver source tree
+# when building nvidia-settings as part of the NVIDIA driver build (in
+# which case, XNVCTRL_DIR, XNVCTRL_ARCHIVE, XCONFIG_PARSER_DIR and
+# COMMON_UTILS_DIR should be defined by the calling makefile), or
+# directly in the source directory when building from the
+# nvidia-settings source tarball (in which case, the below conditional
+# assignments should be used)
+##############################################################################
+
+XNVCTRL_DIR ?= libXNVCtrl
+XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a
+XCONFIG_PARSER_DIR ?= XF86Config-parser
+COMMON_UTILS_DIR ?= common-utils
+
+##############################################################################
+# assign variables
+##############################################################################
+
+NVIDIA_SETTINGS = $(OUTPUTDIR)/nvidia-settings
+
+NVIDIA_SETTINGS_PROGRAM_NAME = "nvidia-settings"
+
+NVIDIA_SETTINGS_VERSION := $(NVIDIA_VERSION)
+
+CFLAGS += $(X_CFLAGS)
+
+ifeq ($(TARGET_OS),SunOS)
+ LDFLAGS += -Wl,-rpath=/usr/X11R6/lib
+endif
+
+LDFLAGS += $(X_LDFLAGS)
+
+# Some older Linux distributions do not have the dynamic library
+# libXxf86vm.so, though some newer Linux distributions do not have the
+# static library libXxf86vm.a. Statically link against libXxf86vm
+# when building nvidia-settings within the NVIDIA driver build, but
+# dynamically link against libXxf86vm in the public builds.
+ifdef NV_LINK_LIBXXF86VM_STATICALLY
+ LIBS += -Wl,-Bstatic -lXxf86vm -Wl,-Bdynamic
+else
+ LIBS += -lXxf86vm
+endif
+
+# Preferably, we would use pkg-config's "--libs-only-l" and
+# "--libs-only-L" options to get separate GTK_LDFLAGS and GTK_LIBS,
+# appending them to LDFLAGS and LIBS, respectively. However, the
+# pkg-config(1) man page cautions:
+#
+# [...] Note that the union of "--libs-only-l" and
+# "--libs-only-L" may be smaller than "--libs", due to flags such
+# as -rdynamic.
+#
+# So append all of GTK_LDFLAGS to LIBS, so that LIBS can go after
+# $(OBJECTS) on the link commandline, causing libraries for linking to
+# be named after the objects that depend on those libraries (needed
+# for "--as-needed" linker behavior).
+LIBS += -lX11 -lXext -lm $(LIBDL_LIBS) $(GTK_LDFLAGS)
+
+# Include all the source lists; dist-files.mk will define NVIDIA_SETTINGS_SRC
+include src.mk
+SRC += $(NVIDIA_SETTINGS_SRC)
+
+include $(XCONFIG_PARSER_DIR)/src.mk
+SRC += $(addprefix $(XCONFIG_PARSER_DIR)/,$(XCONFIG_PARSER_SRC))
+
+include $(COMMON_UTILS_DIR)/src.mk
+SRC += $(addprefix $(COMMON_UTILS_DIR)/,$(COMMON_UTILS_SRC))
+
+SRC += $(STAMP_C)
+
+OBJS = $(call BUILD_OBJECT_LIST,$(SRC))
+
+CFLAGS += -I .
+CFLAGS += -I image_data
+CFLAGS += -I $(XNVCTRL_DIR)
+CFLAGS += -I $(XCONFIG_PARSER_DIR)/..
+CFLAGS += -I libXNVCtrlAttributes
+CFLAGS += -I xpm_data
+CFLAGS += -I gtk+-2.x
+CFLAGS += -I $(COMMON_UTILS_DIR)
+CFLAGS += -I $(OUTPUTDIR)
+CFLAGS += -DPROGRAM_NAME=\"nvidia-setttings\"
+
+$(call BUILD_OBJECT_LIST,$(GTK_SRC)): CFLAGS += $(GTK_CFLAGS)
+
+
+##############################################################################
+# build rules
+##############################################################################
+
+.PNONY: all install NVIDIA_SETTINGS_install clean clobber
+
+all: $(NVIDIA_SETTINGS)
+
+install: NVIDIA_SETTINGS_install
+
+NVIDIA_SETTINGS_install: $(NVIDIA_SETTINGS)
+ $(MKDIR) $(BINDIR)
+ $(INSTALL) $(INSTALL_BIN_ARGS) $< $(BINDIR)/$(notdir $<)
+
+$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_ARCHIVE)
+ $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) -o $@ $(OBJS) \
+ $(XNVCTRL_ARCHIVE) $(LIBS)
+ $(call quiet_cmd,STRIP_CMD) $@
+
+# define the rule to build each object file
+$(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,CC,$(src))))
+
+# define the rule to generate $(STAMP_C)
+$(eval $(call DEFINE_STAMP_C_RULE, $(OBJS),$(NVIDIA_SETTINGS_PROGRAM_NAME)))
+
+clean clobber:
+ rm -rf $(NVIDIA_SETTINGS) *~ $(STAMP_C) \
+ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d
+
diff --git a/src/command-line.c b/src/command-line.c
index f728157..605b57b 100644
--- a/src/command-line.c
+++ b/src/command-line.c
@@ -146,6 +146,12 @@ static void print_attribute_help(char *attr)
} /* print_attribute_help() */
+static void print_help_helper(const char *name, const char *description)
+{
+ nv_msg(TAB, name);
+ nv_msg_preserve_whitespace(BIGTAB, description);
+ nv_msg(NULL, "");
+}
/*
* print_help() - loop through the __options[] table, and print the
@@ -154,66 +160,14 @@ static void print_attribute_help(char *attr)
void print_help(void)
{
- int i, j, len;
- char *msg, *tmp, scratch[64];
- const NVGetoptOption *o;
-
print_version();
nv_msg(NULL, "");
nv_msg(NULL, "nvidia-settings [options]");
nv_msg(NULL, "");
-
- for (i = 0; __options[i].name; i++) {
- o = &__options[i];
- if (isalpha(o->val)) {
- sprintf(scratch, "%c", o->val);
- msg = nvstrcat("-", scratch, ", --", o->name, NULL);
- } else {
- msg = nvstrcat("--", o->name, NULL);
- }
- if (o->flags & NVGETOPT_HAS_ARGUMENT) {
- len = strlen(o->name);
- for (j = 0; j < len; j++) scratch[j] = toupper(o->name[j]);
- scratch[len] = '\0';
- tmp = nvstrcat(msg, "=[", scratch, "]", NULL);
- free(msg);
- msg = tmp;
- }
- nv_msg(TAB, msg);
- free(msg);
- if (o->description) {
- char *buf = NULL, *pbuf = NULL, *s = NULL;
-
- buf = calloc(1, 1 + strlen(o->description));
- if (!buf) {
- /* XXX There should be better message than this */
- nv_error_msg("Not enough memory\n");
- return;
- }
- pbuf = buf;
-
- for (s = o->description; s && *s; s++) {
- switch (*s) {
- case '<':
- case '>':
- case '^':
- break;
- default:
- *pbuf = *s;
- pbuf++;
- break;
- }
- }
- *pbuf = '\0';
- nv_msg_preserve_whitespace(BIGTAB, buf);
- free(buf);
- }
-
- nv_msg(NULL, "");
- }
-} /* print_help() */
+ nvgetopt_print_help(__options, 0, print_help_helper);
+}
/*
diff --git a/src/command-line.h b/src/command-line.h
index 52335a5..700ed2a 100644
--- a/src/command-line.h
+++ b/src/command-line.h
@@ -20,8 +20,6 @@
#ifndef __COMMAND_LINE_H__
#define __COMMAND_LINE_H__
-#include <NvCtrlAttributes.h>
-
#define DEFAULT_RC_FILE "~/.nvidia-settings-rc"
#define CONFIG_FILE_OPTION 1
diff --git a/src/common-utils/common-utils.c b/src/common-utils/common-utils.c
index 701bb07..98b92fe 100644
--- a/src/common-utils/common-utils.c
+++ b/src/common-utils/common-utils.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 NVIDIA Corporation
+ * Copyright (C) 2010-2012 NVIDIA Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -150,6 +150,35 @@ char *nvstrdup(const char *s)
/*
+ * nvstrndup() - implementation of strndup() that checks return values; if
+ * an error occurs, an error is printed to stderr and exit is called
+ * -- this function will only return on success.
+ */
+
+char *nvstrndup(const char *s, size_t n)
+{
+ char *m;
+
+ if (!s) return NULL;
+
+ m = malloc(n + 1);
+
+ if (!m) {
+ fprintf(stderr, "%s: memory allocation failure during malloc (%s)! \n",
+ PROGRAM_NAME, strerror(errno));
+ exit(1);
+ }
+
+ strncpy (m, s, n);
+ m[n] = '\0';
+
+ return m;
+
+} /* nvstrndup() */
+
+
+
+/*
* nvstrtolower() - convert the given string to lowercase.
*/
@@ -250,3 +279,310 @@ char *tilde_expansion(const char *str)
return ret;
} /* tilde_expansion() */
+
+
+/****************************************************************************/
+/* TextRows helper functions */
+/****************************************************************************/
+
+/*
+ * nv_format_text_rows() - this function breaks the given string str
+ * into some number of rows, where each row is not longer than the
+ * specified width.
+ *
+ * If prefix is non-NULL, the first line is prepended with the prefix,
+ * and subsequent lines are indented to line up with the prefix.
+ *
+ * If word_boundary is TRUE, then attempt to only break lines on
+ * boundaries between words.
+ */
+
+TextRows *nv_format_text_rows(const char *prefix,
+ const char *str,
+ int width, int word_boundary)
+{
+ int len, prefix_len, z, w, i;
+ char *line, *buf, *local_prefix, *a, *b, *c;
+ TextRows *t;
+
+ /* initialize the TextRows structure */
+
+ t = (TextRows *) malloc(sizeof(TextRows));
+
+ if (!t) return NULL;
+
+ t->t = NULL;
+ t->n = 0;
+ t->m = 0;
+
+ if (!str) return t;
+
+ buf = strdup(str);
+
+ if (!buf) return t;
+
+ z = strlen(buf); /* length of entire string */
+ a = buf; /* pointer to the start of the string */
+
+ /* initialize the prefix fields */
+
+ if (prefix) {
+ prefix_len = strlen(prefix);
+ local_prefix = strdup(prefix);
+ } else {
+ prefix_len = 0;
+ local_prefix = NULL;
+ }
+
+ /* adjust the max width for any prefix */
+
+ w = width - prefix_len;
+
+ do {
+ /*
+ * if the string will fit on one line, point b to the end of the
+ * string
+ */
+
+ if (z < w) b = a + z;
+
+ /*
+ * if the string won't fit on one line, move b to where the
+ * end of the line should be, and then move b back until we
+ * find a space; if we don't find a space before we back b all
+ * the way up to a, just assign b to where the line should end.
+ */
+
+ else {
+ b = a + w;
+
+ if (word_boundary) {
+ while ((b >= a) && (!isspace(*b))) b--;
+ if (b <= a) b = a + w;
+ }
+ }
+
+ /* look for any newline inbetween a and b, and move b to it */
+
+ for (c = a; c < b; c++) if (*c == '\n') { b = c; break; }
+
+ /*
+ * copy the string that starts at a and ends at b, prepending
+ * with a prefix, if present
+ */
+
+ len = b-a;
+ len += prefix_len;
+ line = (char *) malloc(len+1);
+ if (local_prefix) strncpy(line, local_prefix, prefix_len);
+ strncpy(line + prefix_len, a, len - prefix_len);
+ line[len] = '\0';
+
+ /* append the new line to the array of text rows */
+
+ t->t = (char **) realloc(t->t, sizeof(char *) * (t->n + 1));
+ t->t[t->n] = line;
+ t->n++;
+
+ if (t->m < len) t->m = len;
+
+ /*
+ * adjust the length of the string and move the pointer to the
+ * beginning of the new line
+ */
+
+ z -= (b - a + 1);
+ a = b + 1;
+
+ /* move to the first non whitespace character (excluding newlines) */
+
+ if (word_boundary && isspace(*b)) {
+ while ((z) && (isspace(*a)) && (*a != '\n')) a++, z--;
+ } else {
+ if (!isspace(*b)) z++, a--;
+ }
+
+ if (local_prefix) {
+ for (i = 0; i < prefix_len; i++) local_prefix[i] = ' ';
+ }
+
+ } while (z > 0);
+
+ if (local_prefix) free(local_prefix);
+ free(buf);
+
+ return t;
+}
+
+
+/*
+ * nv_text_rows_append() - append the given msg to the existing TextRows
+ */
+
+void nv_text_rows_append(TextRows *t, const char *msg)
+{
+ int len;
+
+ t->t = realloc(t->t, sizeof(char *) * (t->n + 1));
+
+ if (msg) {
+ t->t[t->n] = strdup(msg);
+ len = strlen(msg);
+ if (t->m < len) t->m = len;
+ } else {
+ t->t[t->n] = NULL;
+ }
+
+ t->n++;
+}
+
+/*
+ * nv_concat_text_rows() - concatenate two text rows, storing the
+ * result in t0
+ */
+
+#define NV_MAX(x,y) ((x) > (y) ? (x) : (y))
+
+void nv_concat_text_rows(TextRows *t0, TextRows *t1)
+{
+ int n, i;
+
+ n = t0->n + t1->n;
+
+ t0->t = realloc(t0->t, sizeof(char *) * n);
+
+ for (i = 0; i < t1->n; i++) {
+ t0->t[i + t0->n] = strdup(t1->t[i]);
+ }
+
+ t0->m = NV_MAX(t0->m, t1->m);
+ t0->n = n;
+
+} /* nv_concat_text_rows() */
+
+
+/*
+ * nv_free_text_rows() - free the TextRows data structure allocated by
+ * nv_format_text_rows()
+ */
+
+void nv_free_text_rows(TextRows *t)
+{
+ int i;
+
+ if (!t) return;
+ for (i = 0; i < t->n; i++) free(t->t[i]);
+ if (t->t) free(t->t);
+ free(t);
+
+} /* nv_free_text_rows() */
+
+
+/****************************************************************************/
+/* printing helper functions */
+/****************************************************************************/
+
+#define DEFAULT_WIDTH 75
+
+static unsigned short __terminal_width = 0;
+
+/*
+ * reset_current_terminal_width() - if new_val is zero, then use the
+ * TIOCGWINSZ ioctl to get the current width of the terminal, and
+ * assign it the value to __terminal_width. If the ioctl fails, use a
+ * hardcoded constant. If new_val is non-zero, then use new_val.
+ */
+
+void reset_current_terminal_width(unsigned short new_val)
+{
+ struct winsize ws;
+
+ if (new_val) {
+ __terminal_width = new_val;
+ return;
+ }
+
+ if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == -1 || ws.ws_col == 0) {
+ __terminal_width = DEFAULT_WIDTH;
+ } else {
+ __terminal_width = ws.ws_col - 1;
+ }
+}
+
+/*
+ * Call silence_fmt(1) to turn fmtout(), fmtoutp() and format() into noops.
+ */
+static int __silent = 0;
+
+void silence_fmt(int val)
+{
+ __silent = val;
+}
+
+
+static void vformat(FILE *stream, const int wb,
+ const char *prefix, const char *buf)
+{
+ int i;
+ TextRows *t;
+
+ if (!__terminal_width) reset_current_terminal_width(0);
+
+ t = nv_format_text_rows(prefix, buf, __terminal_width, wb);
+
+ for (i = 0; i < t->n; i++) fprintf(stream, "%s\n", t->t[i]);
+
+ nv_free_text_rows(t);
+}
+
+
+#define NV_VFORMAT(stream, wb, prefix, fmt) \
+do { \
+ char *buf; \
+ NV_VSNPRINTF(buf, fmt); \
+ vformat(stream, wb, prefix, buf); \
+ free (buf); \
+} while(0)
+
+
+void fmtout(const char *fmt, ...)
+{
+ if (__silent > 0) {
+ return;
+ }
+ NV_VFORMAT(stdout, TRUE, NULL, fmt);
+}
+
+
+void fmtoutp(const char *prefix, const char *fmt, ...)
+{
+ if (__silent > 0) {
+ return;
+ }
+ NV_VFORMAT(stdout, TRUE, prefix, fmt);
+}
+
+
+void fmterr(const char *fmt, ...)
+{
+ vformat(stderr, 0, NULL, "");
+ NV_VFORMAT(stderr, TRUE, "ERROR: ", fmt);
+ vformat(stderr, 0, NULL, "");
+}
+
+
+void fmtwarn(const char *fmt, ...)
+{
+ vformat(stderr, 0, NULL, "");
+ NV_VFORMAT(stderr, TRUE, "WARNING: ", fmt);
+ vformat(stderr, 0, NULL, "");
+}
+
+
+void fmt(FILE *stream, const char *prefix, const char *fmt, ...)
+{
+ if (__silent > 0) {
+ return;
+ }
+ NV_VFORMAT(stream, TRUE, prefix, fmt);
+}
diff --git a/src/common-utils/common-utils.h b/src/common-utils/common-utils.h
index 04d5f3b..e0d9314 100644
--- a/src/common-utils/common-utils.h
+++ b/src/common-utils/common-utils.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 NVIDIA Corporation
+ * Copyright (C) 2010-2012 NVIDIA Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -17,6 +17,9 @@
#ifndef __COMMON_UTILS_H__
#define __COMMON_UTILS_H__
+#include <stdio.h>
+#include <stdarg.h>
+
#if !defined(TRUE)
#define TRUE 1
#endif
@@ -25,13 +28,86 @@
#define FALSE 0
#endif
+#define ARRAY_LEN(_arr) (sizeof(_arr) / sizeof(_arr[0]))
+
+#define TAB " "
+#define BIGTAB " "
+
+typedef struct {
+ char **t; /* the text rows */
+ int n; /* number of rows */
+ int m; /* maximum row length */
+} TextRows;
+
void *nvalloc(size_t size);
char *nvstrcat(const char *str, ...);
void *nvrealloc(void *ptr, size_t size);
char *nvstrdup(const char *s);
+char *nvstrndup(const char *s, size_t n);
char *nvstrtolower(char *s);
void nvfree(void *s);
char *tilde_expansion(const char *str);
+TextRows *nv_format_text_rows(const char *prefix,
+ const char *str,
+ int width, int word_boundary);
+void nv_text_rows_append(TextRows *t, const char *msg);
+void nv_concat_text_rows(TextRows *t0, TextRows *t1);
+void nv_free_text_rows(TextRows *t);
+
+void reset_current_terminal_width(unsigned short new_val);
+
+void silence_fmt(int val);
+void fmtout(const char *fmt, ...);
+void fmtoutp(const char *prefix, const char *fmt, ...);
+void fmterr(const char *fmt, ...);
+void fmtwarn(const char *fmt, ...);
+void fmt(FILE *stream, const char *prefix, const char *fmt, ...);
+
+/*
+ * NV_VSNPRINTF(): macro that assigns buf using vsnprintf(). This is
+ * correct for differing semantics of the vsnprintf() return value:
+ *
+ * -1 when the buffer is not long enough (glibc < 2.1)
+ *
+ * or
+ *
+ * the length the string would have been if the buffer had been large
+ * enough (glibc >= 2.1)
+ *
+ * This macro allocates memory for buf; the caller should free it when
+ * done.
+ */
+
+#define NV_FMT_BUF_LEN 256
+
+#define NV_VSNPRINTF(buf, fmt) \
+do { \
+ if (!fmt) { \
+ (buf) = NULL; \
+ } else { \
+ va_list ap; \
+ int len, current_len = NV_FMT_BUF_LEN; \
+ \
+ (buf) = malloc(current_len); \
+ \
+ while (1) { \
+ va_start(ap, fmt); \
+ len = vsnprintf((buf), current_len, (fmt), ap); \
+ va_end(ap); \
+ \
+ if ((len > -1) && (len < current_len)) { \
+ break; \
+ } else if (len > -1) { \
+ current_len = len + 1; \
+ } else { \
+ current_len += NV_FMT_BUF_LEN; \
+ } \
+ free(buf); \
+ (buf) = malloc(current_len); \
+ } \
+ } \
+} while (0)
+
#endif /* __COMMON_UTILS_H__ */
diff --git a/src/common-utils/gen-manpage-opts-helper.c b/src/common-utils/gen-manpage-opts-helper.c
new file mode 100644
index 0000000..d2abb1c
--- /dev/null
+++ b/src/common-utils/gen-manpage-opts-helper.c
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "nvgetopt.h"
+#include "gen-manpage-opts-helper.h"
+
+static void print_option(const NVGetoptOption *o)
+{
+ char scratch[64], *s;
+ int j, len;
+
+ int italics, bold, omitWhiteSpace;
+
+ /* if we are going to need the argument, process it now */
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ if (o->arg_name) {
+ strcpy(scratch, o->arg_name);
+ } else {
+ len = strlen(o->name);
+ for (j = 0; j < len; j++) scratch[j] = toupper(o->name[j]);
+ scratch[len] = '\0';
+ }
+ }
+
+ printf(".TP\n.BI \"");
+ /* Print the name of the option */
+ /* XXX We should backslashify the '-' characters in o->name. */
+
+ if (isalpha(o->val)) {
+ /* '\-c' */
+ printf("\\-%c", o->val);
+
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ /* ' " "ARG" "' */
+ printf(" \" \"%s\" \"", scratch);
+ }
+ /* ', ' */
+ printf(", ");
+ }
+
+ /* '\-\-name' */
+ printf("\\-\\-%s", o->name);
+
+ /* '=" "ARG' */
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ printf("=\" \"%s", scratch);
+
+ /* '" "' */
+ if ((o->flags & NVGETOPT_IS_BOOLEAN) ||
+ (o->flags & NVGETOPT_ALLOW_DISABLE)) {
+ printf("\" \"");
+ }
+ }
+
+ /* ', \-\-no\-name' */
+ if (((o->flags & NVGETOPT_IS_BOOLEAN) &&
+ !(o->flags & NVGETOPT_HAS_ARGUMENT)) ||
+ (o->flags & NVGETOPT_ALLOW_DISABLE)) {
+ printf(", \\-\\-no\\-%s", o->name);
+ }
+
+ printf("\"\n");
+
+ /* Print the option description */
+ /* XXX Each sentence should be on its own line! */
+
+ /*
+ * Print the option description: write each character one at a
+ * time (ugh) so that we can special-case a few characters:
+ *
+ * '&' : toggles italics on and off
+ * '^' : toggles bold on and off
+ * '-' : is backslashified: "\-"
+ *
+ * Whitespace is omited when italics or bold is on
+ */
+
+ italics = 0;
+ bold = 0;
+ omitWhiteSpace = 0;
+
+ for (s = o->description; s && *s; s++) {
+
+ switch (*s) {
+ case '&':
+ if (italics) {
+ printf("\n");
+ } else {
+ printf("\n.I ");
+ }
+ omitWhiteSpace = italics;
+ italics = !italics;
+ break;
+ case '^':
+ if (bold) {
+ printf("\n");
+ } else {
+ printf("\n.B ");
+ }
+ omitWhiteSpace = bold;
+ bold = !bold;
+ break;
+ case '-':
+ printf("\\-");
+ omitWhiteSpace = 0;
+ break;
+ case ' ':
+ if (!omitWhiteSpace) {
+ printf(" ");
+ }
+ break;
+ default:
+ printf("%c", *s);
+ omitWhiteSpace = 0;
+ break;
+ }
+ }
+
+ printf("\n");
+}
+
+void gen_manpage_opts_helper(const NVGetoptOption *options)
+{
+ int i;
+ int has_advanced_options = 0;
+
+ /* Print the "simple" options; i.e. the ones you get with --help. */
+ printf(".SH OPTIONS\n");
+ for (i = 0; options[i].name; i++) {
+ const NVGetoptOption *o = &options[i];
+
+ if (!o->description) {
+ continue;
+ }
+
+ if (!(o->flags & NVGETOPT_HELP_ALWAYS)) {
+ has_advanced_options = 1;
+ continue;
+ }
+
+ print_option(o);
+ }
+
+ if (has_advanced_options) {
+ /*
+ * If any exist, print the advanced options; i.e., the ones
+ * you get with --advanced-help
+ */
+ printf(".SH \"ADVANCED OPTIONS\"\n");
+ for (i = 0; options[i].name; i++) {
+ const NVGetoptOption *o = &options[i];
+
+ if (!o->description) {
+ continue;
+ }
+
+ if (o->flags & NVGETOPT_HELP_ALWAYS) {
+ continue;
+ }
+
+ print_option(o);
+ }
+ }
+}
diff --git a/src/common-utils/gen-manpage-opts-helper.h b/src/common-utils/gen-manpage-opts-helper.h
new file mode 100644
index 0000000..b09852e
--- /dev/null
+++ b/src/common-utils/gen-manpage-opts-helper.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#if !defined(__GEN_MANPAGE_OPTS_HELPER_H__)
+#define __GEN_MANPAGE_OPTS_HELPER_H__
+
+#include "nvgetopt.h"
+
+void gen_manpage_opts_helper(const NVGetoptOption *options);
+
+#endif /* __GEN_MANPAGE_OPTS_HELPER_H__ */
diff --git a/src/common-utils/nvgetopt.c b/src/common-utils/nvgetopt.c
index a89dcac..f04cef3 100644
--- a/src/common-utils/nvgetopt.c
+++ b/src/common-utils/nvgetopt.c
@@ -21,8 +21,10 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <ctype.h>
#include "nvgetopt.h"
+#include "common-utils.h"
int nvgetopt(int argc,
@@ -309,3 +311,126 @@ int nvgetopt(int argc,
return ret;
} /* nvgetopt() */
+
+
+/*
+ * cook_description() - the description string may contain text within
+ * special characters which are interpreted by the manpage generator.
+ * We want to omit those characters here.
+ */
+
+static char *cook_description(const char *description)
+{
+ const char *src;
+ char *s, *dst;
+
+ if (!description) {
+ return NULL;
+ }
+
+ s = strdup(description);
+
+ if (!s) {
+ return NULL;
+ }
+
+ for (src = description, dst = s; *src; src++) {
+ if ((*src == '&') || (*src == '^')) {
+ continue;
+ }
+ *dst = *src;
+ dst++;
+ }
+
+ *dst = '\0';
+
+ return s;
+}
+
+
+void nvgetopt_print_help(const NVGetoptOption *options,
+ unsigned int include_mask,
+ nvgetopt_print_help_callback_ptr callback)
+{
+ const NVGetoptOption *o;
+ int i;
+
+ for (i = 0; options[i].name; i++) {
+
+ char *msg = NULL, *arg = NULL, *description = NULL;
+
+ o = &options[i];
+
+ /* Skip options with no help text */
+ if (!o->description) {
+ continue;
+ }
+
+ /* skip options who don't have all the bits of include_mask */
+ if ((o->flags & include_mask) != include_mask) {
+ continue;
+ }
+
+ /* if we are going to need the argument, process it now */
+ arg = NULL;
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ if (o->arg_name) {
+ arg = strdup(o->arg_name);
+ } else {
+ char *tmp;
+ arg = strdup(o->name);
+ for (tmp = arg; tmp && *tmp; tmp++) {
+ *tmp = toupper(*tmp);
+ }
+ }
+ }
+
+ msg = NULL;
+
+ /*
+ * create the long version of the option, possibly with an
+ * argument; e.g., "--foo" or "--foo=BAR"
+ */
+ if (arg) {
+ msg = nvstrcat("--", o->name, "=", arg, NULL);
+ } else {
+ msg = nvstrcat("--", o->name, NULL);
+ }
+
+ /*
+ * prepend the single character version of the option,
+ * possibly with an argument; e.g., "-f" or "-f BAR"
+ */
+ if (isalpha(o->val)) {
+ char scratch[16];
+ char *tmp;
+ snprintf(scratch, sizeof(scratch), "%c", o->val);
+ if (arg) {
+ tmp = nvstrcat("-", scratch, " ", arg, ", ", msg, NULL);
+ } else {
+ tmp = nvstrcat("-", scratch, ", ", msg, NULL);
+ }
+ free(msg);
+ msg = tmp;
+ }
+
+ /* append the boolean version of the option; e.g., "--no-foo" */
+ if (((o->flags & NVGETOPT_IS_BOOLEAN) &&
+ !(o->flags & NVGETOPT_HAS_ARGUMENT)) ||
+ (o->flags & NVGETOPT_ALLOW_DISABLE)) {
+ char *tmp = nvstrcat(msg, ", --no-", o->name, NULL);
+ free(msg);
+ msg = tmp;
+ }
+
+ /* process the description text */
+ description = cook_description(o->description);
+
+ /* give the strings to the caller to format and print */
+ callback(msg, description);
+
+ free(msg);
+ free(arg);
+ free(description);
+ }
+}
diff --git a/src/common-utils/nvgetopt.h b/src/common-utils/nvgetopt.h
index 127f40b..5847546 100644
--- a/src/common-utils/nvgetopt.h
+++ b/src/common-utils/nvgetopt.h
@@ -155,5 +155,29 @@ int nvgetopt(int argc,
double *doubleval,
int *disable_val);
+/*
+ * nvgetopt_print_help() - print a help message for each option in the
+ * provided NVGetoptOption array. This is useful for a utility's
+ * "--help" output.
+ *
+ * Options will only be printed if they have every bit set that
+ * include_mask includes.
+ *
+ * For each option, the provided callback function wil be called with
+ * two strings: a name string that lists the option's name, and a
+ * description string for the option. The callback function is
+ * responsible for actually printing these strings. Examples:
+ *
+ * name = "-v, --version";
+ * description = "Print usage information for the common commandline "
+ * "options and exit.";
+ */
+
+typedef void nvgetopt_print_help_callback_ptr(const char *name,
+ const char *description);
+
+void nvgetopt_print_help(const NVGetoptOption *options,
+ unsigned int include_mask,
+ nvgetopt_print_help_callback_ptr callback);
#endif /* __NVGETOPT_H__ */
diff --git a/src/common-utils/src.mk b/src/common-utils/src.mk
index 14e4131..12ba143 100644
--- a/src/common-utils/src.mk
+++ b/src/common-utils/src.mk
@@ -7,3 +7,9 @@ COMMON_UTILS_EXTRA_DIST += nvgetopt.h
COMMON_UTILS_EXTRA_DIST += common-utils.h
COMMON_UTILS_EXTRA_DIST += src.mk
+# gen-manpage-opts-helper.c is listed in EXTRA_DIST, rather than SRC,
+# because it is not compiled into the utilities themselves, but used
+# when building the utility's gen-manpage-opts
+COMMON_UTILS_EXTRA_DIST += gen-manpage-opts-helper.c
+COMMON_UTILS_EXTRA_DIST += gen-manpage-opts-helper.h
+
diff --git a/src/config-file.c b/src/config-file.c
index 99c7059..5ea5c29 100644
--- a/src/config-file.c
+++ b/src/config-file.c
@@ -434,14 +434,14 @@ int nv_write_config_file(const char *filename, CtrlHandles *h,
(p->display_device_mask);
fprintf(stream, "%s%s%c%s[%s]=%d\n", p->display, target_str,
- DISPLAY_NAME_SEPARATOR, tmp, tmp_d_str, p->val);
+ DISPLAY_NAME_SEPARATOR, tmp, tmp_d_str, p->val.i);
free(tmp_d_str);
} else {
fprintf(stream, "%s%s%c%s=%d\n", p->display, target_str,
- DISPLAY_NAME_SEPARATOR, tmp, p->val);
+ DISPLAY_NAME_SEPARATOR, tmp, p->val.i);
}
p = p->next;
diff --git a/src/gen-manpage-opts.c b/src/gen-manpage-opts.c
index 7f960ab..2d1f948 100644
--- a/src/gen-manpage-opts.c
+++ b/src/gen-manpage-opts.c
@@ -24,119 +24,10 @@
#include "nvgetopt.h"
#include "option-table.h"
+#include "gen-manpage-opts-helper.h"
-#define NV_FMT_BUF_LEN 512
-
-/*
- * Prints the option help in a form that is suitable to include in the manpage.
- */
-
-static void print_option(const NVGetoptOption *o)
-{
- int omitWhiteSpace;
-
- /* if we are going to need the argument, process it now */
-
- printf(".TP\n.BI \"");
- /* Print the name of the option */
- /* XXX We should backslashify the '-' characters in o->name. */
-
- if (isalpha(o->val)) {
- /* '\-c \-\-name' */
- printf("\\-%c, \\-\\-%s", o->val, o->name);
- } else {
- printf("\\-\\-%s", o->name);
- }
-
- /* '=" "ARG' */
- if (o->flags & NVGETOPT_HAS_ARGUMENT) {
- int len, j;
- char tbuf[32];
- len = strlen(o->name);
- for (j = 0; j < len; j++)
- tbuf[j] = toupper(o->name[j]);
- tbuf[len] = '\0';
- printf("=\" \"%s", tbuf);
- }
-
- printf("\"\n");
-
- /* Print the option description */
- /* XXX Each sentence should be on its own line! */
-
- /*
- * Print the option description: write each character one at a
- * time (ugh) so that we can special-case a few characters:
- *
- * "^" --> "\n.I "
- * "<" --> "\n.B "
- * ">" --> "\n"
- *
- * '^' is used to mark the text as underlined till it is turned off with '>'.
- * '<' is used to mark the text as bold till it is turned off with '>'.
- *
- * XXX Each sentence should be on its own line!
- */
-
- if (o->description) {
- char *buf = NULL, *s = NULL, *pbuf = NULL;
-
- buf = calloc(1, NV_FMT_BUF_LEN + strlen(o->description));
- if (!buf) {
- /* XXX There should be better message than this */
- printf("Not enough memory\n");
- return;
- }
- pbuf = buf;
-
- omitWhiteSpace = 0;
- for (s = o->description; s && *s; s++) {
- switch (*s) {
- case '<':
- sprintf(pbuf, "\n.B ");
- pbuf = pbuf + 4;
- omitWhiteSpace = 0;
- break;
- case '^':
- sprintf(pbuf, "\n.I ");
- pbuf = pbuf + 4;
- omitWhiteSpace = 0;
- break;
- case '>':
- *pbuf = '\n';
- pbuf++;
- omitWhiteSpace = 1;
- break;
- case ' ':
- if (!omitWhiteSpace) {
- *pbuf = *s;
- pbuf++;
- }
- break;
- default:
- *pbuf = *s;
- pbuf++;
- omitWhiteSpace = 0;
- break;
- }
- }
- printf("%s", buf);
- free(buf);
- }
-
- printf("\n");
-}
-
-int main(int argc, char* argv[])
+int main(void)
{
- int i;
- const NVGetoptOption *o;
-
- printf(".SH OPTIONS\n");
- for (i = 0; __options[i].name; i++) {
- o = &__options[i];
- print_option(o);
- }
-
+ gen_manpage_opts_helper(__options);
return 0;
}
diff --git a/src/glxinfo.c b/src/glxinfo.c
index a5b98c5..dfeffaf 100644
--- a/src/glxinfo.c
+++ b/src/glxinfo.c
@@ -25,6 +25,7 @@
#include "NvCtrlAttributes.h"
#include "query-assign.h" /* CtrlHandles */
#include "msg.h"
+#include "glxinfo.h"
#include <GL/glx.h> /* GLX #defines */
diff --git a/src/gtk+-2.x/ctk3dvisionpro.c b/src/gtk+-2.x/ctk3dvisionpro.c
index 2882099..383a9e5 100644
--- a/src/gtk+-2.x/ctk3dvisionpro.c
+++ b/src/gtk+-2.x/ctk3dvisionpro.c
@@ -197,6 +197,7 @@ GType ctk_3d_vision_pro_get_type(void)
sizeof (Ctk3DVisionPro),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_3d_vision_pro_type = g_type_register_static(GTK_TYPE_VBOX,
diff --git a/src/gtk+-2.x/ctkbanner.c b/src/gtk+-2.x/ctkbanner.c
index d37f43a..1ee026a 100644
--- a/src/gtk+-2.x/ctkbanner.c
+++ b/src/gtk+-2.x/ctkbanner.c
@@ -49,7 +49,6 @@
#include "opengl_pixdata.h"
#include "penguin_pixdata.h"
#include "gvi_pixdata.h"
-#include "rotation_pixdata.h"
#include "sdi_pixdata.h"
#include "sdi_shared_sync_bnc_pixdata.h"
#include "slimm_pixdata.h"
@@ -105,6 +104,7 @@ GType ctk_banner_get_type(
sizeof (CtkBanner),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_banner_type = g_type_register_static(GTK_TYPE_DRAWING_AREA,
@@ -365,7 +365,6 @@ static gboolean select_artwork(BannerArtworkType artwork,
{ BANNER_ARTWORK_HELP, FALSE, 16, &help_pixdata },
{ BANNER_ARTWORK_OPENGL, FALSE, 16, &opengl_pixdata },
{ BANNER_ARTWORK_PENGUIN, TRUE, 16, &penguin_pixdata },
- { BANNER_ARTWORK_ROTATION, FALSE, 16, &rotation_pixdata },
{ BANNER_ARTWORK_SDI, FALSE, 16, &sdi_pixdata },
{ BANNER_ARTWORK_SDI_SHARED_SYNC_BNC, FALSE, 16, &sdi_shared_sync_bnc_pixdata },
{ BANNER_ARTWORK_SLIMM, FALSE, 16, &slimm_pixdata },
diff --git a/src/gtk+-2.x/ctkbanner.h b/src/gtk+-2.x/ctkbanner.h
index 863ef43..256d4b0 100644
--- a/src/gtk+-2.x/ctkbanner.h
+++ b/src/gtk+-2.x/ctkbanner.h
@@ -60,7 +60,6 @@ typedef enum {
BANNER_ARTWORK_HELP,
BANNER_ARTWORK_OPENGL,
BANNER_ARTWORK_PENGUIN,
- BANNER_ARTWORK_ROTATION,
BANNER_ARTWORK_SDI,
BANNER_ARTWORK_SDI_SHARED_SYNC_BNC,
BANNER_ARTWORK_SLIMM,
diff --git a/src/gtk+-2.x/ctkclocks.c b/src/gtk+-2.x/ctkclocks.c
index 876aece..76f5ad6 100644
--- a/src/gtk+-2.x/ctkclocks.c
+++ b/src/gtk+-2.x/ctkclocks.c
@@ -165,6 +165,7 @@ GType ctk_clocks_get_type(void)
sizeof(CtkClocks),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_object_type = g_type_register_static
diff --git a/src/gtk+-2.x/ctkcolorcontrols.c b/src/gtk+-2.x/ctkcolorcontrols.c
index b5d7fad..cb1f22d 100644
--- a/src/gtk+-2.x/ctkcolorcontrols.c
+++ b/src/gtk+-2.x/ctkcolorcontrols.c
@@ -43,6 +43,8 @@ static gint map_nvctrl_value_to_table(CtkColorControls *ctk_color_controls,
static
gboolean update_color_space_menu_info(CtkColorControls *ctk_color_controls);
+static void setup_reset_button(CtkColorControls *ctk_color_controls);
+
static void color_space_menu_changed(GtkOptionMenu *color_space_menu,
gpointer user_data);
static void color_range_menu_changed(GtkOptionMenu *color_range_menu,
@@ -90,6 +92,7 @@ GType ctk_color_controls_get_type(void)
sizeof (CtkColorControls),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_color_controls_type =
@@ -105,7 +108,6 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
CtkConfig *ctk_config,
CtkEvent *ctk_event,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name)
{
GObject *object;
@@ -117,12 +119,12 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
gint i;
/* check if color configuration is supported */
- ret1 = NvCtrlGetValidDisplayAttributeValues(handle, display_device_mask,
- NV_CTRL_COLOR_SPACE,
- &valid1);
- ret2 = NvCtrlGetValidDisplayAttributeValues(handle, display_device_mask,
- NV_CTRL_COLOR_RANGE,
- &valid2);
+ ret1 = NvCtrlGetValidAttributeValues(handle,
+ NV_CTRL_COLOR_SPACE,
+ &valid1);
+ ret2 = NvCtrlGetValidAttributeValues(handle,
+ NV_CTRL_COLOR_RANGE,
+ &valid2);
if ((ret1 != NvCtrlSuccess) || (ret2 != NvCtrlSuccess)) {
return NULL;
@@ -138,7 +140,6 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
ctk_color_controls->handle = handle;
ctk_color_controls->ctk_config = ctk_config;
ctk_color_controls->reset_button = reset_button;
- ctk_color_controls->display_device_mask = display_device_mask;
ctk_color_controls->name = strdup(name);
/* build a table holding available color space */
@@ -150,7 +151,7 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, FRAME_PADDING);
- ctk_color_controls->color_controls_main = hbox;
+ ctk_color_controls->color_controls_box = hbox;
frame = gtk_frame_new("Color Controls");
gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
@@ -210,7 +211,6 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
hbox = gtk_hbox_new(FALSE, 0);
- ctk_color_controls->color_space_box = hbox;
gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 0, 1,
GTK_FILL, GTK_FILL | GTK_EXPAND, 5, 0);
gtk_box_pack_start(GTK_BOX(hbox),
@@ -270,6 +270,50 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
} /* ctk_color_controls_new() */
+
+/*
+ * setup_reset_button() - enables the reset button if any of the current
+ * settings are not the default.
+ */
+static void setup_reset_button(CtkColorControls *ctk_color_controls)
+{
+ gint history;
+ gint val;
+
+ if (!GTK_WIDGET_SENSITIVE(ctk_color_controls->color_controls_box)) {
+ /* Nothing is available, don't bother enabling the reset button yet. */
+ return;
+ }
+
+ /* The color space menu is always available */
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_color_controls->color_space_menu));
+ val = ctk_color_controls->color_space_table[history];
+ if (val != NV_CTRL_COLOR_SPACE_RGB) {
+ goto enable;
+ }
+
+ /* Color range is dependent on the color space */
+ if (GTK_WIDGET_SENSITIVE(ctk_color_controls->color_range_menu)) {
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_color_controls->color_range_menu));
+ val = ctk_color_controls->color_range_table[history];
+ if (val != NV_CTRL_COLOR_RANGE_FULL) {
+ goto enable;
+ }
+ }
+
+ /* Don't disable reset button here, since other settings that are not
+ * managed by the ctk_image_slider here may need it enabled
+ */
+ return;
+
+ enable:
+ gtk_widget_set_sensitive(ctk_color_controls->reset_button, TRUE);
+}
+
+
+
/*
* ctk_color_controls_setup() - Setup routine for color attributes. Used
* in DFP setup stage as well as for updating the GUI when there is change in
@@ -283,10 +327,12 @@ void ctk_color_controls_setup(CtkColorControls *ctk_color_controls)
/* color space */
if (!update_color_space_menu_info(ctk_color_controls)) {
- gtk_widget_set_sensitive(ctk_color_controls->color_controls_main,
- FALSE);
- gtk_widget_hide_all(ctk_color_controls->color_controls_main);
+ gtk_widget_set_sensitive(ctk_color_controls->color_controls_box, FALSE);
+ gtk_widget_hide_all(ctk_color_controls->color_controls_box);
}
+
+ setup_reset_button(ctk_color_controls);
+
} /* ctk_color_controls_setup() */
@@ -296,11 +342,9 @@ static gboolean update_color_space_menu_info(CtkColorControls *ctk_color_control
/* color space */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_SPACE,
- &color_space)) {
- free(ctk_color_controls->color_space_table);
+ NvCtrlGetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_SPACE,
+ &color_space)) {
return FALSE;
}
@@ -322,9 +366,14 @@ static gboolean update_color_space_menu_info(CtkColorControls *ctk_color_control
(gpointer) ctk_color_controls);
/* dynamically regenerate color range dropdown */
- setup_color_range_dropdown(ctk_color_controls);
+ if (!setup_color_range_dropdown(ctk_color_controls)) {
+ gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, FALSE);
+ } else {
+ gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, TRUE);
+ }
+
+ return TRUE;
- return True;
} /* update_color_space_menu_info() */
static
@@ -370,10 +419,9 @@ static void color_range_menu_changed(GtkOptionMenu *color_range_menu,
history = gtk_option_menu_get_history(color_range_menu);
color_range = ctk_color_controls->color_range_table[history];
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE,
- color_range);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ color_range);
g_signal_handlers_block_by_func
(G_OBJECT(ctk_color_controls->color_range_menu),
@@ -406,10 +454,9 @@ static void color_space_menu_changed(GtkOptionMenu *color_space_menu,
color_space = ctk_color_controls->color_space_table[history];
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_SPACE,
- color_space);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_SPACE,
+ color_space);
color_space = map_nvctrl_value_to_table(ctk_color_controls,
color_space);
@@ -444,15 +491,13 @@ void ctk_color_controls_reset(CtkColorControls *ctk_color_controls)
return;
}
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_SPACE,
- NV_CTRL_COLOR_SPACE_RGB);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_SPACE,
+ NV_CTRL_COLOR_SPACE_RGB);
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE,
- NV_CTRL_COLOR_RANGE_FULL);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ NV_CTRL_COLOR_RANGE_FULL);
ctk_color_controls_setup(ctk_color_controls);
} /* ctk_color_controls_reset() */
@@ -487,14 +532,8 @@ static void color_control_update_received(GtkObject *object, gpointer arg1,
CtkColorControls *ctk_object = CTK_COLOR_CONTROLS(user_data);
CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
-
ctk_color_controls_setup(ctk_object);
-
+
/* update status bar message */
switch (event_struct->attribute) {
case NV_CTRL_COLOR_RANGE:
@@ -557,10 +596,9 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
GtkWidget *menu, *menu_item;
NVCTRLAttributeValidValuesRec valid;
- ret = NvCtrlGetValidDisplayAttributeValues(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE,
- &valid);
+ ret = NvCtrlGetValidAttributeValues(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ &valid);
if (valid.type != ATTRIBUTE_TYPE_INT_BITS) {
return FALSE;
@@ -609,9 +647,9 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
/* color range */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE, &val)) {
+ NvCtrlGetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ &val)) {
val = NV_CTRL_COLOR_RANGE_FULL;
}
@@ -628,18 +666,16 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
(GTK_OPTION_MENU(ctk_color_controls->color_range_menu),
val);
- /* If dropdown only has one item, disable it */
- if (ctk_color_controls->color_range_table_size > 1) {
- gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, True);
- } else {
- gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, False);
- }
-
g_signal_handlers_unblock_by_func
(G_OBJECT(ctk_color_controls->color_range_menu),
G_CALLBACK(color_range_menu_changed),
(gpointer) ctk_color_controls);
+ /* If dropdown only has one item, disable it */
+ if (ctk_color_controls->color_range_table_size <= 1) {
+ return FALSE;
+ }
+
return TRUE;
} /* setup_color_range_dropdown() */
diff --git a/src/gtk+-2.x/ctkcolorcontrols.h b/src/gtk+-2.x/ctkcolorcontrols.h
index 13b7dad..cdfd233 100644
--- a/src/gtk+-2.x/ctkcolorcontrols.h
+++ b/src/gtk+-2.x/ctkcolorcontrols.h
@@ -55,14 +55,11 @@ struct _CtkColorControls
NvCtrlAttributeHandle *handle;
CtkConfig *ctk_config;
GtkWidget *reset_button;
- GtkWidget *color_controls_main;
- GtkWidget *color_space_box;
+ GtkWidget *color_controls_box;
GtkWidget *color_range_menu;
GtkWidget *color_space_menu;
- GtkWidget *color_current_config;
- gint display_device_mask;
gint *color_space_table;
gint color_space_table_size;
gint *color_range_table;
@@ -81,7 +78,6 @@ GType ctk_color_controls_get_type (void) G_GNUC_CONST;
GtkWidget* ctk_color_controls_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
GtkWidget *,
- unsigned int display_device_mask,
char *);
void ctk_color_controls_reset (CtkColorControls*);
diff --git a/src/gtk+-2.x/ctkcolorcorrection.c b/src/gtk+-2.x/ctkcolorcorrection.c
index 9b0adeb..a283ddf 100644
--- a/src/gtk+-2.x/ctkcolorcorrection.c
+++ b/src/gtk+-2.x/ctkcolorcorrection.c
@@ -143,6 +143,7 @@ GType ctk_color_correction_get_type(
sizeof (CtkColorCorrection),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_color_correction_type =
@@ -903,42 +904,42 @@ static void apply_parsed_attribute_list(
switch (p->attr & (ALL_VALUES | ALL_CHANNELS)) {
case (CONTRAST_VALUE | RED_CHANNEL):
set_color_state(ctk_color_correction, CONTRAST,
- RED_CHANNEL, p->fval, TRUE); break;
+ RED_CHANNEL, p->val.f, TRUE); break;
case (CONTRAST_VALUE | GREEN_CHANNEL):
set_color_state(ctk_color_correction, CONTRAST,
- GREEN_CHANNEL, p->fval, TRUE); break;
+ GREEN_CHANNEL, p->val.f, TRUE); break;
case (CONTRAST_VALUE | BLUE_CHANNEL):
set_color_state(ctk_color_correction, CONTRAST,
- BLUE_CHANNEL, p->fval, TRUE); break;
+ BLUE_CHANNEL, p->val.f, TRUE); break;
case (CONTRAST_VALUE | ALL_CHANNELS):
set_color_state(ctk_color_correction, CONTRAST,
- ALL_CHANNELS, p->fval, TRUE); break;
+ ALL_CHANNELS, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | RED_CHANNEL):
set_color_state(ctk_color_correction, BRIGHTNESS,
- RED_CHANNEL, p->fval, TRUE); break;
+ RED_CHANNEL, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | GREEN_CHANNEL):
set_color_state(ctk_color_correction, BRIGHTNESS,
- GREEN_CHANNEL, p->fval, TRUE); break;
+ GREEN_CHANNEL, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | BLUE_CHANNEL):
set_color_state(ctk_color_correction, BRIGHTNESS,
- BLUE_CHANNEL, p->fval, TRUE); break;
+ BLUE_CHANNEL, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | ALL_CHANNELS):
set_color_state(ctk_color_correction, BRIGHTNESS,
- ALL_CHANNELS, p->fval, TRUE); break;
+ ALL_CHANNELS, p->val.f, TRUE); break;
case (GAMMA_VALUE | RED_CHANNEL):
set_color_state(ctk_color_correction, GAMMA,
- RED_CHANNEL, p->fval, TRUE); break;
+ RED_CHANNEL, p->val.f, TRUE); break;
case (GAMMA_VALUE | GREEN_CHANNEL):
set_color_state(ctk_color_correction, GAMMA,
- GREEN_CHANNEL, p->fval, TRUE); break;
+ GREEN_CHANNEL, p->val.f, TRUE); break;
case (GAMMA_VALUE | BLUE_CHANNEL):
set_color_state(ctk_color_correction, GAMMA,
- BLUE_CHANNEL, p->fval, TRUE); break;
+ BLUE_CHANNEL, p->val.f, TRUE); break;
case (GAMMA_VALUE | ALL_CHANNELS):
set_color_state(ctk_color_correction, GAMMA,
- ALL_CHANNELS, p->fval, TRUE); break;
+ ALL_CHANNELS, p->val.f, TRUE); break;
default:
goto next_attribute;
diff --git a/src/gtk+-2.x/ctkconfig.c b/src/gtk+-2.x/ctkconfig.c
index 5375af4..caadc1f 100644
--- a/src/gtk+-2.x/ctkconfig.c
+++ b/src/gtk+-2.x/ctkconfig.c
@@ -102,6 +102,7 @@ GType ctk_config_get_type(
sizeof (CtkConfig),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_config_type = g_type_register_static
diff --git a/src/gtk+-2.x/ctkcursorshadow.c b/src/gtk+-2.x/ctkcursorshadow.c
index 7b23dcf..92ea1fa 100644
--- a/src/gtk+-2.x/ctkcursorshadow.c
+++ b/src/gtk+-2.x/ctkcursorshadow.c
@@ -176,6 +176,7 @@ GType ctk_cursor_shadow_get_type(void)
sizeof(CtkCursorShadow),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_cursor_shadow_type = g_type_register_static
diff --git a/src/gtk+-2.x/ctkcurve.c b/src/gtk+-2.x/ctkcurve.c
index 001aae1..709373f 100644
--- a/src/gtk+-2.x/ctkcurve.c
+++ b/src/gtk+-2.x/ctkcurve.c
@@ -68,6 +68,7 @@ GType ctk_curve_get_type(
sizeof (CtkCurve),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_curve_type = g_type_register_static (GTK_TYPE_DRAWING_AREA,
diff --git a/src/gtk+-2.x/ctkdisplayconfig-utils.c b/src/gtk+-2.x/ctkdisplayconfig-utils.c
index 526c120..eed0604 100644
--- a/src/gtk+-2.x/ctkdisplayconfig-utils.c
+++ b/src/gtk+-2.x/ctkdisplayconfig-utils.c
@@ -41,7 +41,7 @@
static void xconfig_update_buffer(GtkWidget *widget, gpointer user_data);
-
+static gchar *display_pick_config_name(nvDisplayPtr display, int be_generic);
@@ -432,6 +432,36 @@ static nvModeLinePtr modeline_parse(nvDisplayPtr display,
/*****************************************************************************/
+/** apply_mode_attribute_token() *************************************
+ *
+ * Modifies the nvMode structure (pointed to by data) with
+ * information from the token-value pair given. Currently accepts
+ * stereo (mode) data.
+ *
+ * Unknown token and/or values are silently ignored.
+ *
+ **/
+static void apply_mode_attribute_token(char *token, char *value, void *data)
+{
+ nvModePtr mode = (nvModePtr)data;
+
+ if (!mode || !token || !strlen(token)) {
+ return;
+ }
+
+ /* stereo */
+ if (!strcasecmp("stereo", token)) {
+ if (!strcasecmp("PassiveLeft", value)) {
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_LEFT;
+ } else if (!strcasecmp("PassiveRight", value)) {
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_RIGHT;
+ }
+ }
+
+} /* apply_mode_attribute_token() */
+
+
+
/** mode_parse() *****************************************************
*
* Converts a mode string (dpy specific part of a metamode) to a
@@ -439,9 +469,10 @@ static nvModeLinePtr modeline_parse(nvDisplayPtr display,
*
* Mode strings have the following format:
*
- * "mode_name +X+Y @WxH"
+ * "mode_name +X+Y @WxH {token=value, ...}"
*
**/
+
nvModePtr mode_parse(nvDisplayPtr display, const char *mode_str)
{
nvModePtr mode;
@@ -484,7 +515,7 @@ nvModePtr mode_parse(nvDisplayPtr display, const char *mode_str)
if (strcmp(mode_str, "NULL")) {
nv_warning_msg("Mode name '%s' does not match any modelines for "
"display device '%s' in modeline '%s'.",
- mode_name, display->name, mode_str);
+ mode_name, display->logName, mode_str);
}
mode->dim[W] = display->modelines->data.hdisplay;
mode->dim[H] = display->modelines->data.vdisplay;
@@ -518,8 +549,29 @@ nvModePtr mode_parse(nvDisplayPtr display, const char *mode_str)
&(mode->dim[X]), &(mode->dim[Y]));
}
+ /* Read extra params */
+ else if (*str == '{') {
+ const char *end;
+ char *tmp;
+ str++;
+
+ end = strchr(str, '}');
+ if (!end) goto fail;
+
+ /* Dupe the string so we can parse it properly */
+ tmp = nvstrndup(str, (size_t)(end-str));
+ if (!tmp) goto fail;
+
+ parse_token_value_pairs(tmp, apply_mode_attribute_token, mode);
+ free(tmp);
+ if (end && (*end == '}')) {
+ str = ++end;
+ }
+ }
+
/* Mode parse error - Ack! */
else {
+ nv_error_msg("Unknown mode token: %s", str);
str = NULL;
}
@@ -567,46 +619,31 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
{
gchar *mode_str;
gchar *tmp;
-
+ gchar *flags_str;
+ nvDisplayPtr display = mode->display;
+ nvScreenPtr screen;
+ nvGpuPtr gpu;
/* Make sure the mode has everything it needs to be displayed */
- if (!mode || !mode->display || !mode->display->gpu || !mode->metamode) {
+ if (!mode || !mode->metamode || !display) {
return NULL;
}
-
/* Don't display dummy modes */
if (be_generic && mode->dummy && !mode->modeline) {
return NULL;
}
+ screen = display->screen;
+ gpu = display->gpu;
+ if (!screen || !gpu) {
+ return NULL;
+ }
- /* Only one display, be very generic (no 'CRT:' in metamode) */
- if (be_generic && mode->display->gpu->num_displays == 1) {
- mode_str = g_strdup("");
-
- /* If there's more than one CRT/DFP/TV, we can't be generic. */
- } else {
- int generic = be_generic;
-
- if ((mode->display->device_mask & 0x000000FF) &&
- (mode->display->device_mask !=
- (mode->display->gpu->connected_displays & 0x000000FF))) {
- generic = 0;
- }
- if ((mode->display->device_mask & 0x0000FF00) &&
- (mode->display->device_mask !=
- (mode->display->gpu->connected_displays & 0x0000FF00))) {
- generic = 0;
- }
- if ((mode->display->device_mask & 0x00FF0000) &&
- (mode->display->device_mask !=
- (mode->display->gpu->connected_displays & 0x00FF0000))) {
- generic = 0;
- }
-
- /* Get the display type */
- tmp = display_get_type_str(mode->display->device_mask, generic);
+ /* Pick a suitable display name qualifier */
+ mode_str = display_pick_config_name(display, be_generic);
+ if (mode_str[0] != '\0') {
+ tmp = mode_str;
mode_str = g_strconcat(tmp, ": ", NULL);
g_free(tmp);
}
@@ -663,6 +700,42 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
mode_str = tmp;
+ /* Mode Flags */
+ flags_str = NULL;
+
+ /* Passive Stereo Eye */
+ if (screen->stereo_supported && screen->stereo == 4) {
+ const char *eye;
+
+ switch (mode->passive_stereo_eye) {
+ case PASSIVE_STEREO_EYE_LEFT:
+ eye = "PassiveLeft";
+ break;
+ case PASSIVE_STEREO_EYE_RIGHT:
+ eye = "PassiveRight";
+ break;
+ case 0:
+ default:
+ eye = NULL;
+ break;
+ }
+
+ if (eye) {
+ tmp = g_strdup_printf("%s, stereo=%s", (flags_str ? flags_str : ""), eye);
+ g_free(flags_str);
+ flags_str = tmp;
+ }
+ }
+
+ if (flags_str) {
+ tmp = g_strdup_printf("%s {%s}",
+ mode_str,
+ flags_str+2 // Skip the first comma and whitespace
+ );
+ g_free(mode_str);
+ mode_str = tmp;
+ }
+
return mode_str;
} /* mode_get_str() */
@@ -675,56 +748,67 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
/*****************************************************************************/
-/** display_get_type_str() *******************************************
+/** display_names_match() ********************************************
*
- * Returns the type name of a display (CRT, CRT-1, DFP ..)
- *
- * If 'generic' is set to 1, then a generic version of the name is
- * returned.
+ * Determines if two (display) names are the same. Returns FALSE if
+ * either name is NULL.
*
**/
-gchar *display_get_type_str(unsigned int device_mask, int be_generic)
+
+static Bool display_names_match(const char *name1, const char *name2)
{
- unsigned int bit = 0;
- int num;
- gchar *name = NULL;
- gchar *type_name;
+ if (!name1 || !name2) {
+ return FALSE;
+ }
+ return (strcasecmp(name1, name2) == 0) ? TRUE : FALSE;
+}
- /* Get the generic type name of the display */
- if (device_mask & 0x000000FF) {
- name = g_strdup("CRT");
- bit = (device_mask & 0x000000FF);
- } else if (device_mask & 0x0000FF00) {
- name = g_strdup("TV");
- bit = (device_mask & 0x0000FF00) >> 8;
- } else if (device_mask & 0x00FF0000) {
- name = g_strdup("DFP");
- bit = (device_mask & 0x00FF0000) >> 16;
- }
+/** display_pick_config_name() ***************************************
+ *
+ * Returns one of the display's names to be used for writing
+ * configuration.
+ *
+ * If 'generic' is TRUE, then the most generic name possible is
+ * returned. This depends on the current existence of other display
+ * devices, and the name returned here will not collide with the name
+ * of other display devices.
+ *
+ **/
+static gchar *display_pick_config_name(nvDisplayPtr display, int be_generic)
+{
+ nvDisplayPtr other;
- if (be_generic || !name) {
- return name;
+ /* Be specific */
+ if (!be_generic) {
+ goto return_specific;
}
- /* Add the specific display number to the name */
- num = 0;
- while (bit) {
- num++;
- bit >>= 1;
- }
- if (num) {
- num--;
+ /* Only one display, so no need for a qualifier */
+ if (display->gpu->num_displays == 1) {
+ return g_strdup("");
}
- type_name = g_strdup_printf("%s-%d", name, num);
- g_free(name);
+ /* Find the best generic name possible. If any display connected to the
+ * GPU has the same typeBaseName, then return the typeIdName instead
+ */
+ for (other = display->gpu->displays; other; other = other->next_on_gpu) {
+ if (other == display) continue;
+ if (strcmp(other->typeBaseName, display->typeBaseName) == 0) {
+ goto return_specific;
+ }
+ }
- return type_name;
+ /* No other display device on the GPU shares the same type basename,
+ * so we can use it
+ */
+ return g_strdup(display->typeBaseName);
-} /* display_get_type_str() */
+ return_specific:
+ return g_strdup(display->typeIdName);
+}
@@ -896,9 +980,9 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
*/
broken_doublescan_modelines = 1;
- ret = NvCtrlGetAttribute(display->gpu->handle,
+ ret = NvCtrlGetAttribute(display->handle,
NV_CTRL_ATTR_NV_MAJOR_VERSION, &major);
- ret1 = NvCtrlGetAttribute(display->gpu->handle,
+ ret1 = NvCtrlGetAttribute(display->handle,
NV_CTRL_ATTR_NV_MINOR_VERSION, &minor);
if ((ret == NvCtrlSuccess) && (ret1 == NvCtrlSuccess) &&
@@ -912,17 +996,14 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
/* Get the validated modelines for the display */
- ret = NvCtrlGetBinaryAttribute(display->gpu->handle,
- display->device_mask,
+ ret = NvCtrlGetBinaryAttribute(display->handle, 0,
NV_CTRL_BINARY_DATA_MODELINES,
(unsigned char **)&modeline_strs, &len);
if (ret != NvCtrlSuccess) {
*err_str = g_strdup_printf("Failed to query modelines of display "
- "device 0x%08x '%s'\nconnected to "
- "GPU-%d '%s'.",
- display->device_mask, display->name,
- NvCtrlGetTargetId(display->gpu->handle),
- display->gpu->name);
+ "device %d '%s'.",
+ NvCtrlGetTargetId(display->handle),
+ display->logName);
nv_error_msg(*err_str);
goto fail;
}
@@ -936,12 +1017,9 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
if (!modeline) {
*err_str = g_strdup_printf("Failed to parse the following "
"modeline of display device\n"
- "0x%08x '%s' connected to GPU-%d "
- "'%s':\n\n%s",
- display->device_mask,
- display->name,
- NvCtrlGetTargetId(display->gpu->handle),
- display->gpu->name,
+ "%d '%s' :\n\n%s",
+ NvCtrlGetTargetId(display->handle),
+ display->logName,
str);
nv_error_msg(*err_str);
goto fail;
@@ -1030,7 +1108,13 @@ static void display_free(nvDisplayPtr display)
if (display) {
display_remove_modes(display);
display_remove_modelines(display);
- XFree(display->name);
+ XFree(display->logName);
+ XFree(display->typeBaseName);
+ XFree(display->typeIdName);
+ XFree(display->dpGuidName);
+ XFree(display->edidHashName);
+ XFree(display->targetIdName);
+ XFree(display->randrName);
free(display);
}
@@ -1040,15 +1124,62 @@ static void display_free(nvDisplayPtr display)
/*****************************************************************************/
-/** METAMODE FUNCTIONS *******************************************************/
+/** SCREEN FUNCTIONS *********************************************************/
/*****************************************************************************/
+/** screen_find_named_display() **************************************
+ *
+ * Finds a display named 'display_name' in the list of displays on the
+ * given screen, or NULL if no display matched 'display_name'.
+ *
+ **/
+static nvDisplayPtr screen_find_named_display(nvScreenPtr screen,
+ char *display_name)
+{
+ nvDisplayPtr display;
+ nvDisplayPtr possible_display = NULL;
+
+ if (!display_name) {
+ return NULL;
+ }
+
+ /* Look for exact matches */
+ for (display = screen->displays;
+ display;
+ display = display->next_in_screen) {
+
+ /* Look for an exact match */
+ if (display_names_match(display->typeIdName, display_name)) {
+ return display;
+ }
+ if (display_names_match(display->dpGuidName, display_name)) {
+ return display;
+ }
+ if (display_names_match(display->targetIdName, display_name)) {
+ return display;
+ }
+ if (display_names_match(display->randrName, display_name)) {
+ return display;
+ }
+
+ /* Allow matching to generic names, but only return these
+ * if no other name matched
+ */
+ if (!possible_display) {
+ if (display_names_match(display->typeBaseName, display_name)) {
+ possible_display = display;
+ }
+ if (display_names_match(display->edidHashName, display_name)) {
+ possible_display = display;
+ }
+ }
+ }
+
+ return possible_display;
+}
-/*****************************************************************************/
-/** SCREEN FUNCTIONS *********************************************************/
-/*****************************************************************************/
/** renumber_xscreens() **********************************************
@@ -1114,7 +1245,6 @@ void screen_link_display(nvScreenPtr screen, nvDisplayPtr display)
}
}
}
- screen->displays_mask |= display->device_mask;
screen->num_displays++;
} /* screen_link_display() */
@@ -1147,7 +1277,6 @@ void screen_unlink_display(nvDisplayPtr display)
cur = cur->next_in_screen;
}
}
- screen->displays_mask &= ~(display->device_mask);
screen->num_displays--;
display->screen = NULL;
@@ -1347,30 +1476,30 @@ static Bool screen_add_metamode(nvScreenPtr screen, const char *metamode_str,
mode_str_itr = strtok(NULL, ",")) {
nvModePtr mode;
- unsigned int device_mask;
nvDisplayPtr display;
+ unsigned int display_id;
const char *orig_mode_str = parse_skip_whitespace(mode_str_itr);
const char *mode_str;
- /* Parse the display device bitmask from the name */
- mode_str = parse_read_display_name(mode_str_itr, &device_mask);
+ /* Parse the display device (NV-CONTROL target) id from the name */
+ mode_str = parse_read_display_id(mode_str_itr, &display_id);
if (!mode_str) {
nv_warning_msg("Failed to read a display device name on screen %d "
- "(on GPU-%d)\nwhile parsing metamode:\n\n'%s'",
+ "while parsing metamode:\n\n'%s'",
screen->scrnum,
- NvCtrlGetTargetId(screen->gpu->handle),
+
orig_mode_str);
continue;
}
- /* Match device bitmask to an existing display */
- display = gpu_get_display(screen->gpu, device_mask);
+ /* Match device id to an existing display */
+ display = layout_get_display(screen->layout, display_id);
if (!display) {
- nv_warning_msg("Failed to find display device 0x%08x on screen %d "
- "(on GPU-%d)\nwhile parsing metamode:\n\n'%s'",
- device_mask,
+ nv_warning_msg("Failed to find display device %d on screen %d "
+ "while parsing metamode:\n\n'%s'",
+ display_id,
screen->scrnum,
- NvCtrlGetTargetId(screen->gpu->handle),
+
orig_mode_str);
continue;
}
@@ -1378,10 +1507,10 @@ static Bool screen_add_metamode(nvScreenPtr screen, const char *metamode_str,
/* Parse the mode */
mode = mode_parse(display, mode_str);
if (!mode) {
- nv_warning_msg("Failed to parse mode '%s'\non screen %d (on GPU-%d)"
- "\nfrom metamode:\n\n'%s'",
- mode_str, screen->scrnum,
- NvCtrlGetTargetId(screen->gpu->handle),
+ nv_warning_msg("Failed to parse mode '%s'\non screen %d\n"
+ "from metamode:\n\n'%s'",
+ mode_str,
+ screen->scrnum,
orig_mode_str);
continue;
}
@@ -1512,7 +1641,7 @@ static Bool screen_check_metamodes(nvScreenPtr screen)
* match the top left of the first non-dummy mode
*
**/
-void screen_assign_dummy_metamode_positions(nvScreenPtr screen)
+static void screen_assign_dummy_metamode_positions(nvScreenPtr screen)
{
nvDisplayPtr display;
nvModePtr ok_mode;
@@ -1565,7 +1694,7 @@ static Bool screen_add_metamodes(nvScreenPtr screen, gchar **err_str)
/* Get the list of metamodes for the screen */
ret = NvCtrlGetBinaryAttribute(screen->handle, 0,
- NV_CTRL_BINARY_DATA_METAMODES,
+ NV_CTRL_BINARY_DATA_METAMODES_VERSION_2,
(unsigned char **)&metamode_strs,
&len);
if (ret != NvCtrlSuccess) {
@@ -1580,7 +1709,7 @@ static Bool screen_add_metamodes(nvScreenPtr screen, gchar **err_str)
/* Get the current metamode for the screen */
ret = NvCtrlGetStringAttribute(screen->handle,
- NV_CTRL_STRING_CURRENT_METAMODE,
+ NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2,
&cur_metamode_str);
if (ret != NvCtrlSuccess) {
*err_str = g_strdup_printf("Failed to query current metamode of\n"
@@ -1700,26 +1829,6 @@ static void screen_free(nvScreenPtr screen)
/*****************************************************************************/
-/** gpu_get_display() ************************************************
- *
- * Returns the display with the matching device_mask or NULL if not
- * found.
- *
- **/
-nvDisplayPtr gpu_get_display(nvGpuPtr gpu, unsigned int device_mask)
-{
- nvDisplayPtr display;
-
- for (display = gpu->displays; display; display = display->next_on_gpu) {
- if (display->device_mask == device_mask) return display;
- }
-
- return NULL;
-
-} /* gpu_get_display() */
-
-
-
/** gpu_remove_and_free_display() ************************************
*
* Removes a display from the GPU and frees it.
@@ -1756,7 +1865,6 @@ void gpu_remove_and_free_display(nvDisplayPtr display)
}
}
}
- gpu->connected_displays &= ~(display->device_mask);
gpu->num_displays--;
display_free(display);
@@ -1777,7 +1885,6 @@ static void gpu_remove_displays(nvGpuPtr gpu)
while (gpu->displays) {
gpu_remove_and_free_display(gpu->displays);
}
- gpu->connected_displays = 0;
} /* gpu_remove_displays() */
@@ -1808,7 +1915,6 @@ static void gpu_add_display(nvGpuPtr gpu, nvDisplayPtr display)
}
}
}
- gpu->connected_displays |= display->device_mask;
gpu->num_displays++;
} /* gpu_add_display() */
@@ -1857,17 +1963,74 @@ static Bool gpu_query_gvo_mode_info(nvGpuPtr gpu, int mode_id, int table_idx)
}
+
+/** display_add_name_from_server() ***********************************
+ *
+ * Queries and adds the NV-CONTROL name to the display device.
+ *
+ **/
+
+static const struct DisplayNameInfoRec {
+ int attr;
+ Bool canBeNull;
+ const char *nameDescription;
+ size_t offset;
+} DisplayNamesTable[] = {
+ { NV_CTRL_STRING_DISPLAY_DEVICE_NAME, FALSE, "Log Name",
+ offsetof(nvDisplay, logName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME, FALSE, "Type Base Name",
+ offsetof(nvDisplay, typeBaseName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID, FALSE, "Type ID",
+ offsetof(nvDisplay, typeIdName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_DP_GUID, TRUE, "DP GUID Name",
+ offsetof(nvDisplay, dpGuidName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH, TRUE, "EDID Hash Name",
+ offsetof(nvDisplay, edidHashName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX, FALSE, "Target Index Name",
+ offsetof(nvDisplay, targetIdName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_RANDR, FALSE, "RandR Name",
+ offsetof(nvDisplay, randrName) },
+};
+
+static Bool display_add_name_from_server(nvDisplayPtr display,
+ const struct DisplayNameInfoRec *displayNameInfo,
+ gchar **err_str)
+{
+ ReturnStatus ret;
+ char *str;
+
+ ret = NvCtrlGetStringAttribute(display->handle,
+ displayNameInfo->attr,
+ &str);
+ if (ret == NvCtrlSuccess) {
+ *((char **)(((char *)display) + displayNameInfo->offset)) = str;
+
+ } else if (!displayNameInfo->canBeNull) {
+ *err_str = g_strdup_printf("Failed to query name '%s' of display "
+ "device DPY-%d.",
+ displayNameInfo->nameDescription,
+ NvCtrlGetTargetId(display->handle));
+ nv_error_msg(*err_str);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+
/** gpu_add_display_from_server() ************************************
*
- * Adds the display with the device mask given to the GPU structure.
+ * Adds the display with the device id given to the GPU structure.
*
**/
nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
- unsigned int device_mask,
+ unsigned int display_id,
gchar **err_str)
{
ReturnStatus ret;
nvDisplayPtr display;
+ int i;
/* Create the display structure */
@@ -1875,34 +2038,40 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
if (!display) goto fail;
- /* Init the display structure */
- display->device_mask = device_mask;
+ /* Make an NV-CONTROL handle to talk to the display */
+ display->handle =
+ NvCtrlAttributeInit(NvCtrlGetDisplayPtr(gpu->handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM);
+ if (!display->handle) {
+ *err_str = g_strdup_printf("Failed to create NV-CONTROL handle for\n"
+ "display %d (on GPU-%d).",
+ display_id,
+ NvCtrlGetTargetId(gpu->handle));
+ nv_error_msg(*err_str);
+ goto fail;
+ }
/* Query the display information */
- ret = NvCtrlGetStringDisplayAttribute(gpu->handle,
- device_mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &(display->name));
- if (ret != NvCtrlSuccess) {
- *err_str = g_strdup_printf("Failed to query name of display device\n"
- "0x%08x connected to GPU-%d '%s'.",
- device_mask, NvCtrlGetTargetId(gpu->handle),
- gpu->name);
- nv_error_msg(*err_str);
- goto fail;
+ for (i = 0; i < ARRAY_LEN(DisplayNamesTable); i++) {
+ if (!display_add_name_from_server(display,
+ DisplayNamesTable + i, err_str)) {
+ goto fail;
+ }
}
/* Query if this display is an SDI display */
- ret = NvCtrlGetDisplayAttribute(gpu->handle, device_mask,
- NV_CTRL_IS_GVO_DISPLAY,
- &(display->is_sdi));
+ ret = NvCtrlGetAttribute(display->handle,
+ NV_CTRL_IS_GVO_DISPLAY,
+ &(display->is_sdi));
if (ret != NvCtrlSuccess) {
nv_warning_msg("Failed to query if display device\n"
- "0x%08x connected to GPU-%d '%s' is an\n"
+ "%d connected to GPU-%d '%s' is an\n"
"SDI device.",
- device_mask, NvCtrlGetTargetId(gpu->handle),
+ display_id, NvCtrlGetTargetId(gpu->handle),
gpu->name);
display->is_sdi = FALSE;
}
@@ -1995,9 +2164,9 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
/* Query the modelines for the display device */
if (!display_add_modelines_from_server(display, err_str)) {
- nv_warning_msg("Failed to add modelines to display device 0x%08x "
+ nv_warning_msg("Failed to add modelines to display device %d "
"'%s'\nconnected to GPU-%d '%s'.",
- device_mask, display->name,
+ display_id, display->logName,
NvCtrlGetTargetId(gpu->handle), gpu->name);
goto fail;
}
@@ -2023,38 +2192,44 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
static Bool gpu_add_displays_from_server(nvGpuPtr gpu, gchar **err_str)
{
ReturnStatus ret;
- unsigned int mask;
+ int *pData;
+ int len;
+ int i;
/* Clean up the GPU list */
gpu_remove_displays(gpu);
-
- /* Get the list of connected displays */
- ret = NvCtrlGetAttribute(gpu->handle, NV_CTRL_CONNECTED_DISPLAYS,
- (int *)&(gpu->connected_displays));
+ /* Get list of displays connected to this GPU */
+ ret = NvCtrlGetBinaryAttribute(gpu->handle, 0,
+ NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU,
+ (unsigned char **)(&pData), &len);
if (ret != NvCtrlSuccess) {
- *err_str = g_strdup_printf("Failed to query connected display "
- "devices on GPU-%d '%s'.",
- NvCtrlGetTargetId(gpu), gpu->name);
+ *err_str = g_strdup_printf("Failed to query list of displays \n"
+ "connected to GPU-%d '%s'.",
+ NvCtrlGetTargetId(gpu->handle), gpu->name);
nv_error_msg(*err_str);
goto fail;
}
-
/* Add each connected display */
- for (mask = 1; mask; mask <<= 1) {
+ for (i = 0; i < pData[0]; i++) {
+ if (!gpu_add_display_from_server(gpu, pData[i+1], err_str)) {
+ nv_warning_msg("Failed to add display device %d to GPU-%d "
+
+
+
- if (!(mask & (gpu->connected_displays))) continue;
- if (!gpu_add_display_from_server(gpu, mask, err_str)) {
- nv_warning_msg("Failed to add display device 0x%08x to GPU-%d "
"'%s'.",
- mask, NvCtrlGetTargetId(gpu->handle), gpu->name);
+ pData[i+1], NvCtrlGetTargetId(gpu->handle),
+ gpu->name);
+ XFree(pData);
goto fail;
}
}
+ XFree(pData);
return TRUE;
fail:
@@ -2508,8 +2683,8 @@ static Bool layout_add_screen_from_server(nvLayoutPtr layout,
NvCtrlAttributeInit(display,
NV_CTRL_TARGET_TYPE_X_SCREEN,
screen_id,
- NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM |
- NV_CTRL_ATTRIBUTES_XRANDR_SUBSYSTEM);
+ NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM);
+
if (!screen->handle) {
*err_str = g_strdup_printf("Failed to create NV-CONTROL handle for\n"
"screen %d.",
@@ -2519,6 +2694,15 @@ static Bool layout_add_screen_from_server(nvLayoutPtr layout,
}
+ /* Query the current stereo mode */
+ ret = NvCtrlGetAttribute(screen->handle, NV_CTRL_STEREO, &val);
+ if (ret == NvCtrlSuccess) {
+ screen->stereo_supported = TRUE;
+ screen->stereo = val;
+ } else {
+ screen->stereo_supported = FALSE;
+ }
+
/* See if the screen supports dynamic twinview */
ret = NvCtrlGetAttribute(screen->handle, NV_CTRL_DYNAMIC_TWINVIEW, &val);
if (ret != NvCtrlSuccess) {
@@ -2595,20 +2779,27 @@ static Bool layout_add_screen_from_server(nvLayoutPtr layout,
/* Query & parse the screen's primary display */
screen->primaryDisplay = NULL;
- ret = NvCtrlGetStringDisplayAttribute
- (screen->handle,
- 0,
- NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER,
- &primary_str);
-
- if (ret == NvCtrlSuccess) {
- unsigned int device_mask;
-
- /* Parse the device mask */
- parse_read_display_name(primary_str, &device_mask);
+ ret = NvCtrlGetStringAttribute(screen->handle,
+ NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER,
+ &primary_str);
+
+ if (ret == NvCtrlSuccess && primary_str) {
+ char *str;
+
+ /* The TwinView Xinerana Info Order string may be a comma-separated
+ * list of display device names, though we could add full support
+ * for ordering these, just keep track of a single display here.
+ */
+ str = strchr(primary_str, ',');
+ if (!str) {
+ str = nvstrdup(primary_str);
+ } else {
+ str = nvstrndup(primary_str, str-primary_str);
+ }
+ XFree(primary_str);
- /* Find the matching primary display */
- screen->primaryDisplay = gpu_get_display(screen->gpu, device_mask);
+ screen->primaryDisplay = screen_find_named_display(screen, str);
+ nvfree(str);
}
}
@@ -2724,7 +2915,7 @@ nvLayoutPtr layout_load_from_server(NvCtrlAttributeHandle *handle,
{
nvLayoutPtr layout = NULL;
ReturnStatus ret;
-
+ int tmp;
/* Allocate the layout structure */
layout = (nvLayoutPtr)calloc(1, sizeof(nvLayout));
@@ -2744,6 +2935,19 @@ nvLayoutPtr layout_load_from_server(NvCtrlAttributeHandle *handle,
goto fail;
}
+ /* does the driver know about NV_CTRL_CURRENT_METAMODE_ID? */
+ ret = NvCtrlGetAttribute(handle, NV_CTRL_CURRENT_METAMODE_ID, &tmp);
+ if (ret != NvCtrlSuccess) {
+ char *displayName = NvCtrlGetDisplayName(handle);
+ *err_str = g_strdup_printf("The NVIDIA X driver on %s is not new\n"
+ "enough to support the nvidia-settings "
+ "Display Configuration page.",
+ displayName ? displayName : "this X server");
+ free(displayName);
+ nv_warning_msg(*err_str);
+ goto fail;
+ }
+
if (!layout_add_gpus_from_server(layout, err_str)) {
nv_warning_msg("Failed to add GPU(s) to layout for display "
"configuration page.");
@@ -2807,6 +3011,35 @@ nvScreenPtr layout_get_a_screen(nvLayoutPtr layout, nvGpuPtr preferred_gpu)
+/** layout_get_display() *********************************************
+ *
+ * Returns the display with the matching display id or NULL if not
+ * found.
+ *
+ **/
+nvDisplayPtr layout_get_display(const nvLayoutPtr layout,
+ const unsigned int display_id)
+{
+ nvGpuPtr gpu;
+ nvDisplayPtr display;
+
+ for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
+ for (display = gpu->displays;
+ display;
+ display = display->next_on_gpu) {
+
+ if (NvCtrlGetTargetId(display->handle) == display_id) {
+ return display;
+ }
+ }
+ }
+
+ return NULL;
+
+} /* layout_get_display() */
+
+
+
/*****************************************************************************/
/** XCONFIG FUNCTIONS ********************************************************/
diff --git a/src/gtk+-2.x/ctkdisplayconfig-utils.h b/src/gtk+-2.x/ctkdisplayconfig-utils.h
index a9cc38c..d2b663a 100644
--- a/src/gtk+-2.x/ctkdisplayconfig-utils.h
+++ b/src/gtk+-2.x/ctkdisplayconfig-utils.h
@@ -59,7 +59,6 @@ void modeline_free(nvModeLinePtr m);
/* Display functions */
-gchar * display_get_type_str(unsigned int device_mask, int be_generic);
int display_find_closest_mode_matching_modeline(nvDisplayPtr display,
nvModeLinePtr modeline);
Bool display_has_modeline(nvDisplayPtr display, nvModeLinePtr modeline);
@@ -82,10 +81,9 @@ gchar * screen_get_metamode_str(nvScreenPtr screen, int metamode_idx,
/* GPU functions */
-nvDisplayPtr gpu_get_display(nvGpuPtr gpu, unsigned int device_mask);
void gpu_remove_and_free_display(nvDisplayPtr display);
nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
- unsigned int device_mask,
+ unsigned int display_id,
gchar **err_str);
Bool gpu_add_screenless_modes_to_displays(nvGpuPtr gpu);
@@ -98,6 +96,8 @@ void layout_add_screen(nvLayoutPtr layout, nvScreenPtr screen);
nvLayoutPtr layout_load_from_server(NvCtrlAttributeHandle *handle,
gchar **err_str);
nvScreenPtr layout_get_a_screen(nvLayoutPtr layout, nvGpuPtr preferred_gpu);
+nvDisplayPtr layout_get_display(const nvLayoutPtr layout,
+ const unsigned int display_id);
void layout_remove_and_free_screen(nvScreenPtr screen);
diff --git a/src/gtk+-2.x/ctkdisplayconfig.c b/src/gtk+-2.x/ctkdisplayconfig.c
index 96fd5ff..26ca46e 100644
--- a/src/gtk+-2.x/ctkdisplayconfig.c
+++ b/src/gtk+-2.x/ctkdisplayconfig.c
@@ -48,12 +48,19 @@ void layout_modified_callback(nvLayoutPtr layout, void *data);
static void setup_layout_frame(CtkDisplayConfig *ctk_object);
+static void setup_selected_item_dropdown(CtkDisplayConfig *ctk_object);
+
+static void selected_item_changed(GtkWidget *widget, gpointer user_data);
+
+static void update_selected_page(CtkDisplayConfig *ctk_object);
+
static void setup_display_page(CtkDisplayConfig *ctk_object);
static void display_config_changed(GtkWidget *widget, gpointer user_data);
static void display_resolution_changed(GtkWidget *widget, gpointer user_data);
static void display_refresh_changed(GtkWidget *widget, gpointer user_data);
-static void display_modelname_changed(GtkWidget *widget, gpointer user_data);
+
+static void display_stereo_changed(GtkWidget *widget, gpointer user_data);
static void display_position_type_changed(GtkWidget *widget, gpointer user_data);
static void display_position_offset_activate(GtkWidget *widget, gpointer user_data);
@@ -71,6 +78,8 @@ static gboolean screen_virtual_size_focus_out(GtkWidget *widget, GdkEvent *event
static void screen_depth_changed(GtkWidget *widget, gpointer user_data);
+static void screen_stereo_changed(GtkWidget *widget, gpointer user_data);
+
static void screen_position_type_changed(GtkWidget *widget, gpointer user_data);
static void screen_position_offset_activate(GtkWidget *widget, gpointer user_data);
static void screen_position_relative_changed(GtkWidget *widget, gpointer user_data);
@@ -157,12 +166,12 @@ static const char * __layout_xinerama_button_help =
"this option will require restarting your X server. Note that when Xinerama "
"is enabled, resolution changes will also require restarting your X server.";
+static const char * __selected_item_help =
+"The Selection drop-down allows you to pick which X screen or display device "
+"to configure.";
/* Display tooltips */
-static const char * __dpy_model_help =
-"The Display drop-down allows you to select a desired display device.";
-
static const char * __dpy_configuration_mnu_help =
"The Configure drop-down allows you to select the desired configuration "
"for the currently selected display device.";
@@ -176,6 +185,11 @@ static const char * __dpy_refresh_mnu_help =
"for the currently selected display device. Note that the selected "
"resolution may restrict the available refresh rates.";
+static const char * __dpy_stereo_help =
+"The Display Passive Stereo Eye drop-down allows you to select a desired "
+"stereo eye the display should output when Passive Stereo (Mode 4) is "
+"selected enabled.";
+
static const char * __dpy_position_type_help =
"The Position Type drop-down allows you to set how the selected display "
"device is placed within the X screen. This is only available when "
@@ -213,6 +227,10 @@ static const char * __screen_depth_help =
"The Depth drop-down allows setting of the color quality for the selected "
"screen; changing this option will require restarting your X server.";
+static const char * __screen_stereo_help =
+"The Stereo Mode drop-down allows setting of the stereo mode for the selected "
+"screen; changing this option will require restarting your X server.";
+
static const char * __screen_position_type_help =
"The Position Type drop-down appears when two or more display devices are active. "
"This allows you to set how the selected screen "
@@ -386,11 +404,6 @@ static void register_layout_events(CtkDisplayConfig *ctk_object)
(gpointer) ctk_object);
g_signal_connect(G_OBJECT(screen->ctk_event),
- CTK_EVENT_NAME(NV_CTRL_ASSOCIATED_DISPLAY_DEVICES),
- G_CALLBACK(display_config_attribute_changed),
- (gpointer) ctk_object);
-
- g_signal_connect(G_OBJECT(screen->ctk_event),
CTK_EVENT_NAME(NV_CTRL_STRING_MOVE_METAMODE),
G_CALLBACK(display_config_attribute_changed),
(gpointer) ctk_object);
@@ -497,33 +510,12 @@ static void consolidate_xinerama(CtkDisplayConfig *ctk_object,
/** update_btn_apply() **************************************************
*
- * Updates the apply button's sensitvity (if possible)
+ * Updates the apply button's sensitivity
*
**/
-void update_btn_apply(CtkDisplayConfig *ctk_object, Bool sensitive)
+static void update_btn_apply(CtkDisplayConfig *ctk_object, Bool sensitive)
{
- Bool xrandr_available = FALSE;
- nvLayoutPtr layout = ctk_object->layout;
- nvScreenPtr screen;
-
-
- if (sensitive) {
- /* If none of the screens support XRandR, we can't apply */
- for (screen = layout->screens;
- screen;
- screen = screen->next_in_layout) {
- if (NvCtrlGetXrandrEventBase(screen->handle) >= 0) {
- xrandr_available = TRUE;
- break;
- }
- }
-
- if (!xrandr_available && !ctk_object->primary_display_changed) {
- sensitive = FALSE;
- }
- }
-
gtk_widget_set_sensitive(ctk_object->btn_apply, sensitive);
} /* update_btn_apply() */
@@ -697,7 +689,7 @@ static int generate_xconf_metamode_str(CtkDisplayConfig *ctk_object,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE,
- msg);
+ "%s", msg);
gtk_dialog_add_buttons(GTK_DIALOG(dlg),
"Truncate MetaModes",
@@ -874,6 +866,7 @@ GType ctk_display_config_get_type(void)
sizeof(CtkDisplayConfig),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_display_config_type = g_type_register_static
@@ -892,7 +885,7 @@ GType ctk_display_config_get_type(void)
*
**/
-GtkWidget * create_validation_dialog(CtkDisplayConfig *ctk_object)
+static GtkWidget * create_validation_dialog(CtkDisplayConfig *ctk_object)
{
GtkWidget *dialog;
GtkWidget *image;
@@ -989,7 +982,7 @@ GtkWidget * create_validation_dialog(CtkDisplayConfig *ctk_object)
*
**/
-GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
+static GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
{
GtkWidget *dialog;
GtkWidget *image;
@@ -1013,7 +1006,7 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
GTK_DIALOG_DESTROY_WITH_PARENT,
NULL);
ctk_object->dlg_validation_apply = dialog;
-
+
/* Main horizontal box */
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
@@ -1024,11 +1017,11 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
GTK_ICON_SIZE_DIALOG);
gtk_misc_set_alignment(GTK_MISC(image), 0.0f, 0.0f);
gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 5);
-
+
/* Main vertical box */
vbox = gtk_vbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
-
+
/* Pack the main message */
str = g_strdup_printf("The current settings cannot be completely applied\n"
"due to one or more of the following reasons:\n"
@@ -1047,7 +1040,7 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
g_free(str);
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.0f);
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-
+
/* Action Buttons */
gtk_dialog_add_button(GTK_DIALOG(dialog), "Apply What Is Possible",
GTK_RESPONSE_ACCEPT);
@@ -1129,6 +1122,24 @@ static void screen_size_changed(GdkScreen *screen,
+/** update_gui() *****************************************************
+ *
+ * Sync state of all widgets to reflect current configuration
+ *
+ **/
+
+static void update_gui(CtkDisplayConfig *ctk_object)
+{
+ setup_display_page(ctk_object);
+ setup_screen_page(ctk_object);
+ setup_selected_item_dropdown(ctk_object);
+ update_selected_page(ctk_object);
+ setup_layout_frame(ctk_object);
+
+} /* update_gui() */
+
+
+
/** ctk_display_config_new() *****************************************
*
* Display Configuration widget creation.
@@ -1143,14 +1154,17 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
GtkWidget *banner;
GtkWidget *frame;
- GtkWidget *notebook;
GtkWidget *hbox;
GtkWidget *vbox;
GdkScreen *screen;
GtkWidget *label;
GtkWidget *eventbox;
+ GtkWidget *hseparator;
GtkRequisition req;
+ GSList *labels = NULL;
+ GSList *slitem;
+ gint max_width;
GtkWidget *menu;
GtkWidget *menu_item;
@@ -1286,12 +1300,12 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
(gpointer) ctk_object);
- /* Display model name */
- ctk_object->mnu_display_model = gtk_option_menu_new();
- ctk_config_set_tooltip(ctk_config, ctk_object->mnu_display_model,
- __dpy_model_help);
- g_signal_connect(G_OBJECT(ctk_object->mnu_display_model), "changed",
- G_CALLBACK(display_modelname_changed),
+ /* Selected display/X screen dropdown */
+ ctk_object->mnu_selected_item = gtk_option_menu_new();
+ ctk_config_set_tooltip(ctk_config, ctk_object->mnu_selected_item,
+ __selected_item_help);
+ g_signal_connect(G_OBJECT(ctk_object->mnu_selected_item), "changed",
+ G_CALLBACK(selected_item_changed),
(gpointer) ctk_object);
/* Display configuration (Disabled, TwinView, Separate X screen) */
@@ -1352,6 +1366,23 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
ctk_object->txt_display_modename = gtk_label_new("");
gtk_label_set_selectable(GTK_LABEL(ctk_object->txt_display_modename), TRUE);
+ /* Display passive stereo eye dropdown */
+ ctk_object->mnu_display_stereo = gtk_option_menu_new();
+ menu = gtk_menu_new();
+ menu_item = gtk_menu_item_new_with_label("None");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Left");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Right");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_option_menu_set_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_display_stereo), menu);
+ ctk_config_set_tooltip(ctk_config, ctk_object->mnu_display_stereo,
+ __dpy_stereo_help);
+ g_signal_connect(G_OBJECT(ctk_object->mnu_display_stereo),
+ "changed", G_CALLBACK(display_stereo_changed),
+ (gpointer) ctk_object);
+
/* Display Position Type (Absolute/Relative Menu) */
ctk_object->mnu_display_position_type = gtk_option_menu_new();
menu = gtk_menu_new();
@@ -1404,11 +1435,6 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
G_CALLBACK(display_panning_focus_out),
(gpointer) ctk_object);
- /* X screen number */
- ctk_object->txt_screen_num = gtk_label_new("");
- gtk_label_set_selectable(GTK_LABEL(ctk_object->txt_screen_num), TRUE);
- gtk_misc_set_alignment(GTK_MISC(ctk_object->txt_screen_num), 0.0f, 0.5f);
-
/* X screen virtual size */
ctk_object->txt_screen_virtual_size = gtk_entry_new();
ctk_config_set_tooltip(ctk_config, ctk_object->txt_screen_virtual_size,
@@ -1429,6 +1455,41 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
G_CALLBACK(screen_depth_changed),
(gpointer) ctk_object);
+ /* Screen Stereo Mode */
+ ctk_object->mnu_screen_stereo = gtk_option_menu_new();
+ menu = gtk_menu_new();
+ menu_item = gtk_menu_item_new_with_label("Disabled");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("DCC Glasses");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("BlueLine Glasses");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Onboard (DIN)");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Passive Eye Per Display");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Vertical Interlaced");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Color Interleaved");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Horizontal Interlaced");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Checkerboard 3D DLP");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Inverse Checkerboard 3D DLP");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("NVIDIA 3D Vision");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("NVIDIA 3D Vision Pro");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_option_menu_set_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_screen_stereo), menu);
+ ctk_config_set_tooltip(ctk_config, ctk_object->mnu_screen_stereo,
+ __screen_stereo_help);
+ g_signal_connect(G_OBJECT(ctk_object->mnu_screen_stereo),
+ "changed", G_CALLBACK(screen_stereo_changed),
+ (gpointer) ctk_object);
+
/* Screen Position Type (Absolute/Relative Menu) */
ctk_object->mnu_screen_position_type = gtk_option_menu_new();
menu = gtk_menu_new();
@@ -1599,14 +1660,6 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
G_CALLBACK(save_clicked),
(gpointer) ctk_object);
-
-
- /****
- *
- * Pack the widgets
- *
- ***/
-
{ /* Layout section */
frame = gtk_frame_new("Layout"); /* main panel */
@@ -1624,52 +1677,42 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
gtk_box_pack_start(GTK_BOX(vbox), ctk_object->chk_xinerama_enabled,
FALSE, FALSE, 0);
}
-
- /* Panel for the notebook sections */
- notebook = gtk_notebook_new();
- ctk_object->notebook = notebook;
- gtk_box_pack_start(GTK_BOX(ctk_object), notebook, FALSE, FALSE, 0);
+
+ /* Selection */
+ label = gtk_label_new("Selection:");
+ labels = g_slist_append(labels, label);
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_selected_item,
+ TRUE, TRUE, 0);
+
{ /* Display page */
- /* Generate the major vbox for the display section */
vbox = gtk_vbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(ctk_object), vbox, FALSE, FALSE, 0);
ctk_object->display_page = vbox;
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
/* Display Configuration */
- hbox = gtk_hbox_new(FALSE, 5);
- /* Pack widget into major vbox later.
- * Create it here so we can get its size */
label = gtk_label_new("Configuration:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_size_request(label, &req);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_config,
- TRUE, TRUE, 0);
- ctk_object->box_display_config = hbox;
+ labels = g_slist_append(labels, label);
- /* Display model name */
hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
- label = gtk_label_new("Model:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_model,
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_config,
TRUE, TRUE, 0);
-
- /* Pack the display configuration line */
- gtk_box_pack_start(GTK_BOX(vbox), ctk_object->box_display_config,
- FALSE, TRUE, 0);
+ ctk_object->box_display_config = hbox;
/* Display resolution and refresh dropdowns */
+ label = gtk_label_new("Resolution:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
- label = gtk_label_new("Resolution:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_resolution,
TRUE, TRUE, 0);
@@ -1678,23 +1721,40 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
ctk_object->box_display_resolution = hbox;
/* Modeline modename info */
+ label = gtk_label_new("Mode Name:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("Mode Name:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->txt_display_modename,
FALSE, FALSE, 0);
ctk_object->box_display_modename = hbox;
- /* Display positioning */
- label = gtk_label_new("Position:");
+ /*
+ * XXX Disabled until we have support for identifying and handling
+ * Stereo vs Composite incompatibility.
+ */
+ #if 0
+ /* Display passive stereo eye dropdown */
+ label = gtk_label_new("Stereo Eye:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_stereo,
+ TRUE, TRUE, 0);
+ ctk_object->box_display_stereo = hbox;
+ #else
+ ctk_object->box_display_stereo = NULL;
+ #endif
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ /* Display positioning */
+ label = gtk_label_new("Position:");
+ labels = g_slist_append(labels, label);
+ hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox),
@@ -1710,11 +1770,9 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
/* Display panning text entry */
label = gtk_label_new("Panning:");
- hbox = gtk_hbox_new(FALSE, 5);
-
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ labels = g_slist_append(labels, label);
+ hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->txt_display_panning,
@@ -1732,9 +1790,6 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
g_signal_connect(G_OBJECT(ctk_object->chk_primary_display), "toggled",
G_CALLBACK(screen_primary_display_toggled),
(gpointer) ctk_object);
-
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->chk_primary_display,
TRUE, TRUE, 0);
@@ -1745,53 +1800,60 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
gtk_widget_show_all(ctk_object->display_page);
} /* Display sub-section */
-
- { /* X screen page */
- /* Generate the major vbox for the display section */
+ { /* X screen page */
vbox = gtk_vbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(ctk_object), vbox, FALSE, FALSE, 0);
ctk_object->screen_page = vbox;
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
-
- /* X screen number */
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
- label = gtk_label_new("Screen Number:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_size_request(label, &req);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_object->txt_screen_num,
- TRUE, TRUE, 0);
/* X screen virtual size */
+ label = gtk_label_new("Virtual Size:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("Virtual Size:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->txt_screen_virtual_size,
TRUE, TRUE, 0);
ctk_object->box_screen_virtual_size = hbox;
/* X screen depth dropdown */
+ label = gtk_label_new("Color Depth:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("Color Depth:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_screen_depth,
TRUE, TRUE, 0);
ctk_object->box_screen_depth = hbox;
- /* X screen positioning */
+ /*
+ * XXX Disabled until we have support for identifying and handling
+ * Stereo vs Composite incompatibility.
+ */
+ #if 0
+ /* X screen stereo dropdown */
+ label = gtk_label_new("Stereo Mode:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_screen_stereo,
+ TRUE, TRUE, 0);
+ ctk_object->box_screen_stereo = hbox;
+ #else
+ ctk_object->box_screen_stereo = NULL;
+ #endif
+
+ /* X screen positioning */
label = gtk_label_new("Position:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ labels = g_slist_append(labels, label);
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox),
ctk_object->mnu_screen_position_type,
@@ -1805,11 +1867,11 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
ctk_object->box_screen_position = hbox;
/* X screen metamode drop down & buttons */
+ label = gtk_label_new("MetaMode:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("MetaMode:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->btn_screen_metamode,
TRUE, TRUE, 0);
@@ -1826,11 +1888,34 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
gtk_widget_show_all(ctk_object->screen_page);
} /* X screen sub-section */
-
-
+
+
+ /* Align all the configuration labels */
+ max_width = 0;
+ for (slitem = labels; slitem; slitem = slitem->next) {
+ label = slitem->data;
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
+ gtk_widget_size_request(label, &req);
+ if (req.width > max_width) {
+ max_width = req.width;
+ }
+ }
+ for (slitem = labels; slitem; slitem = slitem->next) {
+ label = slitem->data;
+ gtk_widget_set_size_request(label, max_width, -1);
+ }
+ g_slist_free(labels);
+
+
{ /* Buttons */
hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_end(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
+
+ gtk_box_pack_end(GTK_BOX(hbox), ctk_object->btn_save,
+ FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_end(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
gtk_box_pack_end(GTK_BOX(hbox), ctk_object->btn_reset,
FALSE, FALSE, 0);
@@ -1841,11 +1926,8 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
gtk_box_pack_end(GTK_BOX(hbox), ctk_object->btn_apply,
FALSE, FALSE, 0);
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
-
- gtk_box_pack_end(GTK_BOX(hbox), ctk_object->btn_save,
- FALSE, FALSE, 0);
+ hseparator = gtk_hseparator_new();
+ gtk_box_pack_end(GTK_BOX(ctk_object), hseparator, FALSE, TRUE, 5);
}
@@ -1884,11 +1966,7 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
/* Show the GUI */
gtk_widget_show_all(GTK_WIDGET(ctk_object));
-
- /* Setup the GUI */
- setup_layout_frame(ctk_object);
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
/* Register to receive updates when layout changed */
ctk_display_layout_register_callbacks(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout),
@@ -1939,7 +2017,8 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
ctk_help_heading(b, &i, "Enable Xinerama");
ctk_help_para(b, &i, "%s This setting is only available when multiple "
"X screens are present.", __layout_xinerama_button_help);
-
+ ctk_help_heading(b, &i, "Selection");
+ ctk_help_para(b, &i, __selected_item_help);
ctk_help_para(b, &i, "");
ctk_help_heading(b, &i, "Display Section");
@@ -1947,8 +2026,6 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
"settings for the currently selected display device.");
ctk_help_heading(b, &i, "Model");
ctk_help_para(b, &i, "The Model name is the name of the display device.");
- ctk_help_heading(b, &i, "Select Display");
- ctk_help_para(b, &i, __dpy_model_help);
ctk_help_heading(b, &i, "Resolution");
ctk_help_para(b, &i, __dpy_resolution_mnu_help);
ctk_help_heading(b, &i, "Refresh");
@@ -2001,9 +2078,8 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
ctk_help_para(b, &i, "");
ctk_help_heading(b, &i, "Buttons");
ctk_help_heading(b, &i, "Apply");
- ctk_help_para(b, &i, "%s Note that XRandR must be available to apply "
- "settings. Also note that even when XRandR is available, "
- "not all settings can be applied to an active X server; "
+ ctk_help_para(b, &i, "%s Note that not all settings can be applied to an "
+ "active X server; "
"these require restarting the X server after saving the "
"desired settings to the X configuration file. Examples "
"of such settings include changing the position of any X "
@@ -2075,6 +2151,194 @@ static void setup_layout_frame(CtkDisplayConfig *ctk_object)
+/** update_selected_page() ***********************************************
+ *
+ * Makes sure the correct page (Display or X Screen) is selected based on
+ * the currently selected items.
+ *
+ **/
+
+static void update_selected_page(CtkDisplayConfig *ctk_object)
+{
+ nvDisplayPtr display = ctk_display_layout_get_selected_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+
+ gtk_widget_hide(ctk_object->display_page);
+ gtk_widget_hide(ctk_object->screen_page);
+ if (display) {
+ gtk_widget_show(ctk_object->display_page);
+ } else if (screen) {
+ gtk_widget_show(ctk_object->screen_page);
+ }
+
+} /* update_selected_page() */
+
+
+
+/** generate_selected_item_dropdown() ************************************
+ *
+ * Drop down menu for selecting current display/X screen.
+ *
+ **/
+
+static GtkWidget* generate_selected_item_dropdown(CtkDisplayConfig *ctk_object,
+ nvDisplayPtr cur_display,
+ nvScreenPtr cur_screen,
+ int *cur_idx)
+{
+ GtkWidget *menu;
+ GtkWidget *menu_item;
+ nvLayoutPtr layout = ctk_object->layout;
+ nvGpuPtr gpu;
+ nvDisplayPtr display;
+ nvScreenPtr screen;
+ int idx;
+ char *str;
+ char *tmp;
+ gboolean show_gpu_info;
+
+ /* (Re)allocate the lookup table */
+
+ if (ctk_object->selected_item_table) {
+ free(ctk_object->selected_item_table);
+ }
+
+ ctk_object->selected_item_table_len = layout->num_screens;
+ for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
+ ctk_object->selected_item_table_len += gpu->num_displays;
+ }
+
+ ctk_object->selected_item_table =
+ calloc(ctk_object->selected_item_table_len,
+ sizeof(SelectableItem));
+
+ if (!ctk_object->selected_item_table) {
+ ctk_object->selected_item_table_len = 0;
+ gtk_option_menu_remove_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_selected_item));
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, False);
+ return NULL;
+ }
+
+ /* Create the dropdown menu and fill the lookup table */
+
+ menu = gtk_menu_new();
+ idx = 0;
+ show_gpu_info = ((layout->num_gpus > 1) || ctk_object->advanced_mode) ? True : False;
+
+ /* Add X screens */
+ for (screen = layout->screens; screen; screen = screen->next_in_layout) {
+ if (!cur_display && (cur_screen == screen)) {
+ *cur_idx = idx;
+ }
+
+ str = g_strdup_printf("X screen %d", screen->scrnum);
+ if (show_gpu_info) {
+ tmp = str;
+ str = g_strdup_printf("%s (on GPU-%d)", tmp,
+ NvCtrlGetTargetId(screen->gpu->handle));
+ g_free(tmp);
+ }
+
+ menu_item = gtk_menu_item_new_with_label(str);
+ g_free(str);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_widget_show(menu_item);
+
+ ctk_object->selected_item_table[idx].type = SELECTABLE_ITEM_SCREEN;
+ ctk_object->selected_item_table[idx].u.screen = screen;
+ idx++;
+ }
+
+ /* Add displays */
+ for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
+ for (display = gpu->displays;
+ display;
+ display = display->next_on_gpu) {
+ if (cur_display == display) {
+ *cur_idx = idx;
+ }
+ str = g_strdup_printf("%s (%s", display->logName,
+ display->typeIdName);
+ if (show_gpu_info) {
+ tmp = str;
+ str = g_strdup_printf("%s on GPU-%d", tmp,
+ NvCtrlGetTargetId(gpu->handle));
+ g_free(tmp);
+ }
+ tmp = str;
+ str = g_strdup_printf("%s)", tmp);
+ g_free(tmp);
+
+ menu_item = gtk_menu_item_new_with_label(str);
+ g_free(str);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_widget_show(menu_item);
+
+ ctk_object->selected_item_table[idx].type = SELECTABLE_ITEM_DISPLAY;
+ ctk_object->selected_item_table[idx].u.display = display;
+ idx++;
+ }
+ }
+
+ return menu;
+
+} /* generate_selected_item_dropdown() */
+
+
+
+/** setup_selected_item_dropdown() ******************************
+ *
+ * Setup display modelname dropdown menu.
+ *
+ **/
+
+static void setup_selected_item_dropdown(CtkDisplayConfig *ctk_object)
+{
+ GtkWidget *menu;
+ nvDisplayPtr display = ctk_display_layout_get_selected_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ int cur_idx = 0;
+
+
+ if (!display && !screen) {
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, False);
+ gtk_widget_hide(ctk_object->mnu_selected_item);
+ return;
+ }
+
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, True);
+
+ menu = generate_selected_item_dropdown(ctk_object, display, screen,
+ &cur_idx);
+ if (!menu) {
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, False);
+ return;
+ }
+
+ /* Setup the menu and select the current model */
+ g_signal_handlers_block_by_func
+ (G_OBJECT(ctk_object->mnu_selected_item),
+ G_CALLBACK(selected_item_changed), (gpointer) ctk_object);
+
+ gtk_option_menu_set_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_selected_item), menu);
+
+ gtk_option_menu_set_history
+ (GTK_OPTION_MENU(ctk_object->mnu_selected_item), cur_idx);
+
+ g_signal_handlers_unblock_by_func
+ (G_OBJECT(ctk_object->mnu_selected_item),
+ G_CALLBACK(selected_item_changed), (gpointer) ctk_object);
+
+} /* setup_selected_item_dropdown() */
+
+
+
/** setup_display_modename() *****************************************
*
* Updates the modeline modename of the selected display
@@ -2588,120 +2852,62 @@ static void setup_display_resolution_dropdown(CtkDisplayConfig *ctk_object)
-/** generate_display_modelname_dropdown() ********************************
+/** setup_display_stereo_dropdown() **********************************
*
- * Generate display modelname dropdown menu.
+ * Configures the screen stereo mode dropdown to reflect the
+ * stereo mode for the currently selected screen.
*
**/
-static GtkWidget* generate_display_modelname_dropdown(CtkDisplayConfig *ctk_object,
- int *cur_idx)
+static void setup_display_stereo_dropdown(CtkDisplayConfig *ctk_object)
{
- GtkWidget *menu;
- GtkWidget *menu_item;
- nvLayoutPtr layout = ctk_object->layout;
- nvGpuPtr gpu;
- nvDisplayPtr display;
- int display_count = 0;
- nvDisplayPtr d = ctk_display_layout_get_selected_display
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
-
- /* Create the display modelname lookup table for the dropdown */
- if (ctk_object->display_model_table) {
- free(ctk_object->display_model_table);
- }
- ctk_object->display_model_table_len = 0;
- for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
- display_count += gpu->num_displays;
- }
-
- ctk_object->display_model_table =
- calloc(display_count, sizeof(nvDisplayPtr));
-
- if (!ctk_object->display_model_table) {
- gtk_option_menu_remove_menu
- (GTK_OPTION_MENU(ctk_object->mnu_display_model));
- gtk_widget_set_sensitive(ctk_object->mnu_display_model, False);
- return NULL;
- }
-
- /* Generate the popup menu */
- menu = gtk_menu_new();
- for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
- for (display = gpu->displays;
- display;
- display = display->next_on_gpu) {
-
- gchar *str, *type;
- if (d == display) {
- *cur_idx = ctk_object->display_model_table_len;
- }
- /* Setup the menu item text */
- type = display_get_type_str(display->device_mask, 0);
- str = g_strdup_printf("%s (%s on GPU-%d)",
- display->name, type,
- NvCtrlGetTargetId(gpu->handle));
- menu_item = gtk_menu_item_new_with_label(str);
- g_free(str);
- g_free(type);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
- gtk_widget_show(menu_item);
- ctk_object->display_model_table
- [ctk_object->display_model_table_len++] = display;
- }
- }
-
- return menu;
-
-} /* generate_display_modelname_dropdown() */
-
-
-
-/** setup_display_modelname_dropdown() **************************
- *
- * Setup display modelname dropdown menu.
- *
- **/
-
-static void setup_display_modelname_dropdown(CtkDisplayConfig *ctk_object)
-{
- GtkWidget *menu;
- int cur_idx = 0; /* Currently selected display */
nvDisplayPtr display = ctk_display_layout_get_selected_display
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ nvModePtr mode;
+ int idx;
- /* If no display is selected or there is no screen, hide the frame */
- if (!display) {
- gtk_widget_set_sensitive(ctk_object->mnu_display_model, False);
- gtk_widget_hide(ctk_object->mnu_display_model);
+ if (!ctk_object->box_display_stereo) return;
+
+ if (!display || !display->cur_mode || !screen ||
+ !screen->stereo_supported || (screen->stereo != 4)) {
+ gtk_widget_hide(ctk_object->box_display_stereo);
return;
}
- /* Enable display widgets and setup widget information */
- gtk_widget_set_sensitive(ctk_object->mnu_display_model, True);
+ mode = display->cur_mode;
- menu = generate_display_modelname_dropdown(ctk_object, &cur_idx);
- /* If menu not generated return */
- if (!menu) {
- return;
- }
- /* Setup the menu and select the current model */
+ /* Set the selected passive stereo eye */
g_signal_handlers_block_by_func
- (G_OBJECT(ctk_object->mnu_display_model),
- G_CALLBACK(display_modelname_changed), (gpointer) ctk_object);
+ (G_OBJECT(ctk_object->mnu_display_stereo),
+ G_CALLBACK(display_stereo_changed), (gpointer) ctk_object);
- gtk_option_menu_set_menu
- (GTK_OPTION_MENU(ctk_object->mnu_display_model), menu);
+ switch (mode->passive_stereo_eye) {
+ default:
+ /* Oops */
+ case PASSIVE_STEREO_EYE_NONE:
+ idx = 0;
+ break;
+ case PASSIVE_STEREO_EYE_LEFT:
+ idx = 1;
+ break;
+ case PASSIVE_STEREO_EYE_RIGHT:
+ idx = 2;
+ break;
+ }
gtk_option_menu_set_history
- (GTK_OPTION_MENU(ctk_object->mnu_display_model), cur_idx);
+ (GTK_OPTION_MENU(ctk_object->mnu_display_stereo), idx);
g_signal_handlers_unblock_by_func
- (G_OBJECT(ctk_object->mnu_display_model),
- G_CALLBACK(display_modelname_changed), (gpointer) ctk_object);
+ (G_OBJECT(ctk_object->mnu_display_stereo),
+ G_CALLBACK(display_stereo_changed), (gpointer) ctk_object);
+
+ gtk_widget_show(ctk_object->box_display_stereo);
-} /* setup_display_modelname_dropdown() */
+} /* setup_display_stereo_dropdown() */
@@ -2801,7 +3007,7 @@ static void setup_display_position_relative(CtkDisplayConfig *ctk_object)
ctk_object->display_position_table[idx] = relative_to;
- menu_item = gtk_menu_item_new_with_label(relative_to->name);
+ menu_item = gtk_menu_item_new_with_label(relative_to->logName);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
gtk_widget_show(menu_item);
idx++;
@@ -3031,7 +3237,7 @@ static void setup_display_panning(CtkDisplayConfig *ctk_object)
/** setup_display_page() ********************************************
*
* Sets up the display frame to reflect the currently selected
- * display.
+ * display.
*
**/
@@ -3039,63 +3245,24 @@ static void setup_display_page(CtkDisplayConfig *ctk_object)
{
nvDisplayPtr display = ctk_display_layout_get_selected_display
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- gint page_num;
- GtkWidget *tab_label;
-
- page_num = gtk_notebook_page_num(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->display_page);
- /* If no display is selected, remove the display page */
if (!display) {
- gtk_widget_set_sensitive(ctk_object->display_page, False);
- if (page_num >= 0) {
- gtk_notebook_remove_page(GTK_NOTEBOOK(ctk_object->notebook),
- page_num);
- }
return;
}
/* Enable display widgets and setup widget information */
gtk_widget_set_sensitive(ctk_object->display_page, True);
-
-
- /* Setup the display modelname dropdown */
- setup_display_modelname_dropdown(ctk_object);
-
- /* Setup the seleted mode modename */
setup_display_config(ctk_object);
-
-
- /* Setup the seleted mode modename */
setup_display_modename(ctk_object);
-
-
- /* Setup display resolution menu */
setup_display_resolution_dropdown(ctk_object);
-
-
- /* Setup position */
+ setup_display_stereo_dropdown(ctk_object);
setup_display_position(ctk_object);
-
-
- /* Setup panning */
setup_display_panning(ctk_object);
-
-
- /* Setup first display */
setup_primary_display(ctk_object);
-
- /* Make sure the page has been added to the notebook */
- if (page_num < 0) {
- tab_label = gtk_label_new("Display");
- gtk_notebook_prepend_page(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->display_page, tab_label);
- }
-
} /* setup_display_page() */
@@ -3263,6 +3430,45 @@ static void setup_screen_depth_dropdown(CtkDisplayConfig *ctk_object)
+/** setup_screen_stereo_dropdown() ***********************************
+ *
+ * Configures the screen stereo mode dropdown to reflect the
+ * stereo mode for the currently selected screen.
+ *
+ **/
+
+static void setup_screen_stereo_dropdown(CtkDisplayConfig *ctk_object)
+{
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+
+ if (!ctk_object->box_screen_stereo) return;
+
+ /* Handle cases where the position type should be hidden */
+ if (!screen || !screen->stereo_supported) {
+ gtk_widget_hide(ctk_object->box_screen_stereo);
+ return;
+ }
+
+ /* Set the selected positioning type */
+ g_signal_handlers_block_by_func
+ (G_OBJECT(ctk_object->mnu_screen_stereo),
+ G_CALLBACK(screen_stereo_changed), (gpointer) ctk_object);
+
+ gtk_option_menu_set_history
+ (GTK_OPTION_MENU(ctk_object->mnu_screen_stereo),
+ screen->stereo);
+
+ g_signal_handlers_unblock_by_func
+ (G_OBJECT(ctk_object->mnu_screen_stereo),
+ G_CALLBACK(screen_stereo_changed), (gpointer) ctk_object);
+
+ gtk_widget_show(ctk_object->box_screen_stereo);
+
+} /* setup_screen_stereo_dropdown() */
+
+
+
/** setup_screen_position_type() *************************************
*
* Configures the screen position type dropdown to reflect the
@@ -3536,23 +3742,9 @@ static void setup_screen_page(CtkDisplayConfig *ctk_object)
{
nvScreenPtr screen = ctk_display_layout_get_selected_screen
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- gchar *tmp;
- gint page_num;
- GtkWidget *tab_label;
- GParamSpec* param_spec = NULL;
-
- page_num = gtk_notebook_page_num(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->screen_page);
-
- /* If there is no display or no screen selected, remove the screen page */
if (!screen) {
- gtk_widget_set_sensitive(ctk_object->screen_page, False);
- if (page_num >= 0) {
- gtk_notebook_remove_page(GTK_NOTEBOOK(ctk_object->notebook),
- page_num);
- }
return;
}
@@ -3560,51 +3752,12 @@ static void setup_screen_page(CtkDisplayConfig *ctk_object)
/* Enable display widgets and setup widget information */
gtk_widget_set_sensitive(ctk_object->screen_page, True);
-
- /* Setup the screen number */
- tmp = g_strdup_printf("%d", screen->scrnum);
-
- param_spec = g_object_class_find_property
- (G_OBJECT_GET_CLASS(gtk_widget_get_settings(ctk_object->txt_screen_num)),
- "gtk-label-select-on-focus");
-
- if (param_spec) {
- /*
- * When running against versions of gtk that have the
- * "gtk-label-select-on-focus" property, set the property to FALSE for
- * the screen label so that it isn't auto-selected when switching tabs
- */
- g_object_set(gtk_widget_get_settings(ctk_object->txt_screen_num),
- "gtk-label-select-on-focus", FALSE, NULL);
- }
-
- gtk_label_set_text(GTK_LABEL(ctk_object->txt_screen_num), tmp);
- g_free(tmp);
-
-
- /* Setup screen (virtual) size */
setup_screen_virtual_size(ctk_object);
-
-
- /* Setup depth menu */
setup_screen_depth_dropdown(ctk_object);
-
-
- /* Setup position */
+ setup_screen_stereo_dropdown(ctk_object);
setup_screen_position(ctk_object);
-
-
- /* Setup metamode menu */
setup_screen_metamode(ctk_object);
-
- /* Make sure the page has been added to the notebook */
- if (page_num < 0) {
- tab_label = gtk_label_new("X Screen");
- gtk_notebook_append_page(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->screen_page, tab_label);
- }
-
} /* setup_screen_page() */
@@ -3669,7 +3822,7 @@ static gint validation_fix_crowded_metamodes(CtkDisplayConfig *ctk_object,
nv_info_msg(TAB, "Setting display device '%s' as Off "
"for MetaMode %d on Screen %d. (There are "
"already %d active display devices for this "
- "MetaMode.", display->name, i, screen->scrnum,
+ "MetaMode.", display->logName, i, screen->scrnum,
screen->gpu->max_displays);
}
}
@@ -3708,7 +3861,7 @@ static gint validation_fix_crowded_metamodes(CtkDisplayConfig *ctk_object,
"%d on Screen %d. (Minimally, a Screen must have "
"one MetaMode with at least one active display "
"device.)",
- first_mode->display->name, i, screen->scrnum);
+ first_mode->display->logName, i, screen->scrnum);
}
}
}
@@ -4039,12 +4192,11 @@ static int validate_layout(CtkDisplayConfig *ctk_object, int validation_type)
case GTK_RESPONSE_APPLY:
/* User wants to auto fix the warnings */
result = validation_auto_fix(ctk_object);
-
+
/* Update the GUI to reflect any updates made by auto fix */
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
return result;
-
+
case GTK_RESPONSE_REJECT:
default:
/* User wants to heed the validation warnings */
@@ -4110,8 +4262,8 @@ static gboolean validate_apply(CtkDisplayConfig *ctk_object)
/** layout_selected_callback() ***************************************
*
- * Called every time the user selects a new display from the layout
- * image.
+ * Called every time the user selects a new display or screen from
+ * the layout image.
*
**/
@@ -4123,6 +4275,8 @@ void layout_selected_callback(nvLayoutPtr layout, void *data)
/* Reconfigure GUI to display information about the selected screen. */
setup_display_page(ctk_object);
setup_screen_page(ctk_object);
+ setup_selected_item_dropdown(ctk_object);
+ update_selected_page(ctk_object);
get_cur_screen_pos(ctk_object);
@@ -4170,14 +4324,47 @@ void layout_modified_callback(nvLayoutPtr layout, void *data)
/* Widget signal handlers ********************************************/
+/** selected_item_changed() *********************************
+ *
+ * Called when user selects a new display or X screen.
+ *
+ **/
+static void selected_item_changed(GtkWidget *widget, gpointer user_data)
+{
+ CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
+ gint idx;
+ SelectableItem *item;
+
+ idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
+ item = &(ctk_object->selected_item_table[idx]);
+
+ switch (item->type) {
+ case SELECTABLE_ITEM_SCREEN:
+ ctk_display_layout_select_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), item->u.screen);
+ break;
+ case SELECTABLE_ITEM_DISPLAY:
+ ctk_display_layout_select_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), item->u.display);
+ break;
+ }
+
+ setup_display_page(ctk_object);
+ setup_screen_page(ctk_object);
+ update_selected_page(ctk_object);
+
+} /* selected_item_changed() */
+
+
+
/** do_enable_display_for_xscreen() **********************************
*
* Adds the display device to a separate X screen in the layout.
*
**/
-void do_enable_display_for_xscreen(CtkDisplayConfig *ctk_object,
- nvDisplayPtr display)
+static void do_enable_display_for_xscreen(CtkDisplayConfig *ctk_object,
+ nvDisplayPtr display)
{
nvLayoutPtr layout = ctk_object->layout;
nvScreenPtr screen;
@@ -4378,9 +4565,6 @@ static void do_enable_display_for_twinview(CtkDisplayConfig *ctk_object,
nvScreenPtr screen;
nvMetaModePtr metamode;
nvModePtr mode;
- guint new_mask;
- char *msg;
- GtkWidget *dlg, *parent;
/* Make sure a screen exists */
@@ -4389,68 +4573,12 @@ static void do_enable_display_for_twinview(CtkDisplayConfig *ctk_object,
if (!screen) return;
- /* attempt to associate the display device with the screen */
- new_mask = screen->displays_mask | display->device_mask;
- if (screen->handle) {
- ReturnStatus ret;
-
- ret = NvCtrlSetDisplayAttributeWithReply
- (screen->handle, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- new_mask);
-
- if (ret != NvCtrlSuccess) {
-
- msg = g_strdup_printf("Failed to associate display device "
- "'%s' with X screen %d. TwinView cannot "
- "be enabled with this combination of "
- "display devices.",
- display->name, screen->scrnum);
-
- parent = ctk_get_parent_window(GTK_WIDGET(ctk_object));
-
- if (parent) {
- dlg = gtk_message_dialog_new
- (GTK_WINDOW(parent),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_OK,
- msg);
-
- gtk_dialog_run(GTK_DIALOG(dlg));
- gtk_widget_destroy(dlg);
-
- } else {
- nv_error_msg(msg);
- }
-
- g_free(msg);
-
- return;
-
- } else {
- g_signal_handlers_block_by_func
- (G_OBJECT(screen->ctk_event),
- G_CALLBACK(display_config_attribute_changed),
- (gpointer) ctk_object);
-
- /* Make sure other parts of nvidia-settings get updated */
- ctk_event_emit(screen->ctk_event, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES, new_mask);
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(screen->ctk_event),
- G_CALLBACK(display_config_attribute_changed),
- (gpointer) ctk_object);
- }
- }
-
/* Delete implicit metamodes on all X Screens driven by the GPU */
prepare_gpu_for_twinview(ctk_object, gpu, screen);
/* Fix up the display's metamode list */
display_remove_modes(display);
-
+
for (metamode = screen->metamodes; metamode; metamode = metamode->next) {
nvDisplayPtr other;
@@ -4839,24 +4967,23 @@ static gboolean do_query_remove_display(CtkDisplayConfig *ctk_object,
*
**/
-void do_disable_display(CtkDisplayConfig *ctk_object, nvDisplayPtr display)
+static void do_disable_display(CtkDisplayConfig *ctk_object,
+ nvDisplayPtr display)
{
nvGpuPtr gpu = display->gpu;
gchar *str;
- gchar *type = display_get_type_str(display->device_mask, 0);
/* Setup the remove display dialog */
if (ctk_object->advanced_mode) {
str = g_strdup_printf("Disable the display device %s (%s) "
"on GPU-%d (%s)?",
- display->name, type,
+ display->logName, display->typeIdName,
NvCtrlGetTargetId(gpu->handle), gpu->name);
} else {
str = g_strdup_printf("Disable the display device %s (%s)?",
- display->name, type);
+ display->logName, display->typeIdName);
}
- g_free(type);
gtk_label_set_text
(GTK_LABEL(ctk_object->txt_display_disable), str);
@@ -4920,7 +5047,7 @@ static void display_config_changed(GtkWidget *widget, gpointer user_data)
if (!display->modelines) {
char *tokens;
gchar *err_str = NULL;
- NvCtrlStringOperation(display->gpu->handle, display->device_mask,
+ NvCtrlStringOperation(display->handle, 0,
NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL,
"", &tokens);
update = TRUE;
@@ -4990,10 +5117,7 @@ static void display_config_changed(GtkWidget *widget, gpointer user_data)
/* Final update */
ctk_display_layout_update(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- /* Update GUI */
- setup_layout_frame(ctk_object);
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
user_changed_attributes(ctk_object);
}
@@ -5126,28 +5250,42 @@ static void display_resolution_changed(GtkWidget *widget, gpointer user_data)
-/** display_modelname_changed() *****************************
+/** display_stereo_changed() *****************************
*
- * Called when user selectes a new display from display modelname dropdown.
+ * Called when user selectes a new passive stereo eye
+ * configuration.
*
**/
-static void display_modelname_changed(GtkWidget *widget, gpointer user_data)
+static void display_stereo_changed(GtkWidget *widget, gpointer user_data)
{
CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
nvDisplayPtr display;
+ nvModePtr mode;
gint idx;
- /* Get the modeline and display to set */
- idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
- display = ctk_object->display_model_table[idx];
- ctk_display_layout_select_display
- (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), display);
+ /* Update the current mode on the selected display */
+ display = ctk_display_layout_get_selected_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- /* Reconfigure GUI to display information about the selected display. */
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ if (display && display->cur_mode) {
+ mode = display->cur_mode;
-} /* display_modelname_changed() */
+ idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
+ switch (idx) {
+ case 1:
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_LEFT;
+ break;
+ case 2:
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_RIGHT;
+ break;
+ default:
+ case 0:
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_NONE;
+ break;
+ }
+ }
+
+} /* display_stereo_changed() */
@@ -5466,6 +5604,36 @@ static void screen_depth_changed(GtkWidget *widget, gpointer user_data)
+/** screen_stereo_changed() ******************************************
+ *
+ * Called when user selects a new stereo mode for a screen.
+ *
+ **/
+
+static void screen_stereo_changed(GtkWidget *widget, gpointer user_data)
+{
+ CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
+ gint idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+
+ if (!screen) return;
+
+ screen->stereo = idx;
+
+ /* Can't apply screen stereo changes */
+ ctk_object->apply_possible = FALSE;
+
+ user_changed_attributes(ctk_object);
+
+
+ /* Changing this can modify how the display page looks */
+ setup_display_page(ctk_object);
+
+} /* screen_stereo_changed() */
+
+
+
/** screen_position_type_changed() ***********************************
*
* Called when user selects a new screen position method (relative/
@@ -5848,7 +6016,7 @@ static gboolean do_display_confirm_countdown(gpointer data)
/** switch_to_current_metamode() *************************************
*
- * Switches to the current screen metamode using XRandR
+ * Switches to the current screen metamode using NV_CTRL_CURRENT_METAMODE_ID
*
**/
@@ -5861,8 +6029,6 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
int new_width;
int new_height;
int new_rate;
- int old_width;
- int old_height;
int old_rate;
static SwitchModeCallbackInfo info;
GtkWidget *dlg;
@@ -5885,41 +6051,19 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
if (!parent) goto fail;
- /* XRandR must be available to do mode switching */
-
- if (NvCtrlGetXrandrEventBase(screen->handle) < 0) {
- dlg = gtk_message_dialog_new
- (GTK_WINDOW(parent),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_CLOSE,
- "The XRandR X extension was not found. This extension must "
- "be supported by the X server and enabled for display "
- "configuration settings to be dynamically applicable.");
-
- gtk_dialog_run(GTK_DIALOG(dlg));
- gtk_widget_destroy(dlg);
-
- nv_warning_msg("XRandR X extension not enabled, "
- "cannot apply settings!");
- goto fail;
- }
-
-
/* Get the current mode so we can fall back on that if the
* mode switch fails, or the user does not confirm.
*/
- ret = NvCtrlXrandrGetScreenMode(screen->handle, &old_width, &old_height,
- &old_rate);
+ ret = NvCtrlGetAttribute(screen->handle, NV_CTRL_CURRENT_METAMODE_ID,
+ (int *)&old_rate);
if (ret != NvCtrlSuccess) {
nv_warning_msg("Failed to get current (fallback) mode for "
"display device!");
goto fail;
}
- nv_info_msg(TAB, "Current mode: %dx%d (id: %d)",
- old_width, old_height, old_rate);
+ nv_info_msg(TAB, "Current mode (id: %d)", old_rate);
/* Switch to the new mode */
@@ -5927,8 +6071,9 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
nv_info_msg(TAB, "Switching to mode: %dx%d (id: %d)...",
new_width, new_height, new_rate);
- ret = NvCtrlXrandrSetScreenMode(screen->handle, new_width, new_height,
- new_rate);
+ ret = NvCtrlSetDisplayAttributeWithReply(screen->handle, 0,
+ NV_CTRL_CURRENT_METAMODE_ID,
+ new_rate);
if (ret != NvCtrlSuccess) {
nv_warning_msg("Failed to set MetaMode (%d) '%s' "
@@ -5949,7 +6094,7 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
- msg);
+ "%s", msg);
} else {
msg = g_strdup_printf("Failed to set MetaMode (%d) '%s' "
"(Mode %dx%d, id: %d) on X screen %d.",
@@ -5961,7 +6106,7 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_OK,
- msg);
+ "%s", msg);
}
result = gtk_dialog_run(GTK_DIALOG(dlg));
@@ -6025,11 +6170,11 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
case GTK_RESPONSE_REJECT:
default:
/* Fall back to previous settings */
- nv_info_msg(TAB, "Switching back to mode: %dx%d (id: %d)...",
- old_width, old_height, old_rate);
+ nv_info_msg(TAB, "Switching back to mode (id: %d)...", old_rate);
- NvCtrlXrandrSetScreenMode(screen->handle, old_width, old_height,
- old_rate);
+ ret = NvCtrlSetDisplayAttributeWithReply(screen->handle, 0,
+ NV_CTRL_CURRENT_METAMODE_ID,
+ old_rate);
/* Good luck! */
goto fail;
}
@@ -6389,36 +6534,13 @@ static void apply_clicked(GtkWidget *widget, gpointer user_data)
if (!update_screen_metamodes(ctk_object, screen)) {
clear_apply = FALSE;
- } else {
- ReturnStatus ret;
-
- ret = NvCtrlSetDisplayAttributeWithReply
- (screen->handle, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- screen->displays_mask);
-
- if (ret != NvCtrlSuccess) {
- nv_error_msg("Failed to set screen %d's association mask "
- "to: 0x%08x",
- screen->scrnum, screen->displays_mask);
- } else {
- /* Make sure other parts of nvidia-settings get updated */
- ctk_event_emit(screen->ctk_event, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- screen->displays_mask);
- }
}
if (screen->primaryDisplay && ctk_object->primary_display_changed) {
- gchar *primary_str =
- display_get_type_str(screen->primaryDisplay->device_mask,
- 0);
-
ret = NvCtrlSetStringAttribute(screen->handle,
NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER,
- primary_str, NULL);
- g_free(primary_str);
-
+ screen->primaryDisplay->typeIdName,
+ NULL);
if (ret != NvCtrlSuccess) {
nv_error_msg("Failed to set primary display"
"for screen %d (GPU:%s)", screen->scrnum,
@@ -6567,28 +6689,26 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
/* Copy the model name string, stripping any '"' characters */
- len = strlen(display->name);
+ len = strlen(display->logName);
monitor->modelname = malloc(len + 1);
for (i = 0, j = 0; i < len; i++, j++) {
- if (display->name[i] == '\"') {
+ if (display->logName[i] == '\"') {
if (++i >= len)
break;
}
- monitor->modelname[j] = display->name[i];
+ monitor->modelname[j] = display->logName[i];
}
monitor->modelname[j] = '\0';
/* Get the Horizontal Sync ranges from nv-control */
- ret = NvCtrlGetStringDisplayAttribute
- (display->gpu->handle,
- display->device_mask,
- NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES,
- &range_str);
+ ret = NvCtrlGetStringAttribute(display->handle,
+ NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES,
+ &range_str);
if (ret != NvCtrlSuccess) {
nv_error_msg("Unable to determine valid horizontal sync ranges "
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
}
@@ -6602,7 +6722,7 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
if (!parse_read_float_range(tmp, &min, &max)) {
nv_error_msg("Unable to determine valid horizontal sync ranges "
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
}
@@ -6617,15 +6737,13 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
/* Get the Horizontal Sync ranges from nv-control */
- ret = NvCtrlGetStringDisplayAttribute
- (display->gpu->handle,
- display->device_mask,
- NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES,
- &range_str);
+ ret = NvCtrlGetStringAttribute(display->handle,
+ NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES,
+ &range_str);
if (ret != NvCtrlSuccess) {
nv_error_msg("Unable to determine valid vertical refresh ranges "
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
}
@@ -6639,7 +6757,7 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
if (!parse_read_float_range(tmp, &min, &max)) {
nv_error_msg("Unable to determine valid vertical refresh ranges "
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
}
@@ -6838,7 +6956,7 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
/* Create the screen's only Monitor section from the first display */
if (!add_monitor_to_xconfig(display, config, screen->scrnum)) {
nv_error_msg("Failed to add display device '%s' to screen %d!",
- display->name, screen->scrnum);
+ display->logName, screen->scrnum);
goto fail;
}
@@ -6856,40 +6974,42 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
add_modelines_to_monitor(display->conf_monitor, other->modes);
}
- /* Set the TwinView option */
- xconfigAddNewOption(&conf_screen->options, "TwinView",
- ((screen->num_displays > 1) ? "1" : "0" ));
+ /* Set the Stereo option */
+ {
+ char buf[32];
+ snprintf(buf, 32, "%d", screen->stereo);
+ xconfigAddNewOption(&conf_screen->options, "Stereo", buf);
+ }
/* Set the TwinviewXineramaInfoOrder option */
if (screen->primaryDisplay) {
- gchar *primary_str =
- display_get_type_str(screen->primaryDisplay->device_mask, 0);
-
- xconfigAddNewOption(&conf_screen->options, "TwinViewXineramaInfoOrder",
- primary_str);
- g_free(primary_str);
+ xconfigAddNewOption(&conf_screen->options,
+ "TwinViewXineramaInfoOrder",
+ screen->primaryDisplay->typeIdName);
}
/* Create the "metamode" option string. */
ret = generate_xconf_metamode_str(ctk_object, screen, &metamode_strs);
if (ret != XCONFIG_GEN_OK) goto bail;
-
+
/* If no user specified metamodes were found, add
* whatever the currently selected metamode is
*/
if (!metamode_strs) {
metamode_strs = screen_get_metamode_str(screen,
- screen->cur_metamode_idx, 1);
+ screen->cur_metamode_idx,
+ 1);
}
-
+
if (metamode_strs) {
- xconfigAddNewOption(&conf_screen->options, "metamodes", metamode_strs);
+ xconfigAddNewOption(&conf_screen->options, "metamodes",
+ metamode_strs);
free(metamode_strs);
}
}
-
-
+
+
/* Setup the display section */
conf_screen->defaultdepth = screen->depth;
@@ -7318,7 +7438,7 @@ static void save_clicked(GtkWidget *widget, gpointer user_data)
static void advanced_clicked(GtkWidget *widget, gpointer user_data)
{
CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
-
+
/* Toggle advanced options for the display */
ctk_object->advanced_mode = !(ctk_object->advanced_mode);
@@ -7337,10 +7457,8 @@ static void advanced_clicked(GtkWidget *widget, gpointer user_data)
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), 0);
}
-
/* Update the GUI to show the right widgets */
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
} /* advanced_clicked() */
@@ -7388,8 +7506,8 @@ static void probe_clicked(GtkWidget *widget, gpointer user_data)
* button.
*
**/
-static gboolean layout_change_is_applyable(const nvLayout *old,
- const nvLayout *new)
+static gboolean layout_change_is_applyable(const nvLayoutPtr old,
+ const nvLayoutPtr new)
{
const nvGpu *gpu;
@@ -7399,7 +7517,6 @@ static gboolean layout_change_is_applyable(const nvLayout *old,
const nvDisplay *dpy;
for (dpy = gpu->displays; dpy; dpy = dpy->next_on_gpu) {
- const nvGpu *new_gpu;
/* See if the display was active in the old layout. */
if (!dpy->cur_mode || !dpy->cur_mode->modeline) {
@@ -7408,24 +7525,7 @@ static gboolean layout_change_is_applyable(const nvLayout *old,
/* This display device had an active mode in the old layout. See if
* it's still connected in the new layout. */
-
- /* First, find the matching GPU */
- for (new_gpu = new->gpus; new_gpu; new_gpu =
- new_gpu->next_in_layout) {
-
- if (strcmp(gpu->pci_bus_id, new_gpu->pci_bus_id) == 0) {
- break;
- }
- }
-
- if (!new_gpu) {
- /* We really should have found the new GPU! */
- return True;
- }
-
- /* Then, see if the given dpy is connected. If it's not, then the
- * Apply button should be enabled. */
- if (!(dpy->device_mask & new_gpu->connected_displays)) {
+ if (!layout_get_display(new, NvCtrlGetTargetId(dpy->handle))) {
return True;
}
}
@@ -7482,11 +7582,7 @@ static void reset_layout(CtkDisplayConfig *ctk_object)
/* Make sure X screens have some kind of position */
assign_screen_positions(ctk_object);
-
- /* Setup the GUI */
- setup_layout_frame(ctk_object);
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
/* Get new position */
get_cur_screen_pos(ctk_object);
diff --git a/src/gtk+-2.x/ctkdisplayconfig.h b/src/gtk+-2.x/ctkdisplayconfig.h
index a5a2a4e..7e415e8 100644
--- a/src/gtk+-2.x/ctkdisplayconfig.h
+++ b/src/gtk+-2.x/ctkdisplayconfig.h
@@ -49,6 +49,20 @@ G_BEGIN_DECLS
(G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_DISPLAY_CONFIG, \
CtkDisplayConfigClass))
+typedef enum {
+ SELECTABLE_ITEM_SCREEN,
+ SELECTABLE_ITEM_DISPLAY
+} SelectableItemType;
+
+
+typedef struct SelectableItemRec {
+ SelectableItemType type;
+ union {
+ nvDisplayPtr display;
+ nvScreenPtr screen;
+ } u;
+} SelectableItem;
+
typedef struct _CtkDisplayConfig
{
@@ -68,14 +82,15 @@ typedef struct _CtkDisplayConfig
GtkWidget *chk_primary_display;
gboolean primary_display_changed;
+ GtkWidget *mnu_selected_item;
+ SelectableItem *selected_item_table;
+ int selected_item_table_len;
+
GtkWidget *notebook; /* Tabbed notebook for display and X screen pages */
/* Display - Info */
GtkWidget *display_page;
- GtkWidget *mnu_display_model;
- nvDisplayPtr *display_model_table; /* Lookup table for display modelname */
- int display_model_table_len;
GtkWidget *txt_display_gpu;
GtkWidget *box_display_config;
@@ -83,7 +98,7 @@ typedef struct _CtkDisplayConfig
GtkWidget *mnu_display_config_disabled;
GtkWidget *mnu_display_config_xscreen;
GtkWidget *mnu_display_config_twinview;
-
+
/* Display - Settings */
GtkWidget *box_display_resolution;
GtkWidget *mnu_display_resolution;
@@ -97,6 +112,9 @@ typedef struct _CtkDisplayConfig
GtkWidget *box_display_modename;
GtkWidget *txt_display_modename;
+ GtkWidget *box_display_stereo;
+ GtkWidget *mnu_display_stereo;
+
GtkWidget *box_display_position;
GtkWidget *mnu_display_position_type; /* Absolute, Right of... */
GtkWidget *mnu_display_position_relative; /* List of available devices */
@@ -111,8 +129,6 @@ typedef struct _CtkDisplayConfig
/* X Screen - Info */
GtkWidget *screen_page;
- GtkWidget *txt_screen_num;
-
/* X Screen - Settings */
GtkWidget *box_screen_virtual_size;
GtkWidget *txt_screen_virtual_size;
@@ -120,6 +136,9 @@ typedef struct _CtkDisplayConfig
GtkWidget *box_screen_depth;
GtkWidget *mnu_screen_depth;
+ GtkWidget *box_screen_stereo;
+ GtkWidget *mnu_screen_stereo;
+
GtkWidget *box_screen_position;
GtkWidget *mnu_screen_position_type; /* Absolute, Right of... */
GtkWidget *mnu_screen_position_relative; /* List of available devices */
@@ -178,7 +197,7 @@ typedef struct _CtkDisplayConfig
gboolean advanced_mode;
GtkWidget *btn_reset;
-
+
int last_resolution_idx;
} CtkDisplayConfig;
diff --git a/src/gtk+-2.x/ctkdisplaydevice-crt.c b/src/gtk+-2.x/ctkdisplaydevice-crt.c
index ad55b39..aa15ee9 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-crt.c
+++ b/src/gtk+-2.x/ctkdisplaydevice-crt.c
@@ -65,6 +65,7 @@ GType ctk_display_device_crt_get_type(void)
sizeof (CtkDisplayDeviceCrt),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_display_device_crt_type = g_type_register_static (GTK_TYPE_VBOX,
@@ -105,7 +106,6 @@ static void ctk_display_device_crt_finalize(
GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
CtkConfig *ctk_config,
CtkEvent *ctk_event,
- unsigned int display_device_mask,
char *name)
{
GObject *object;
@@ -124,7 +124,6 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
ctk_display_device_crt->handle = handle;
ctk_display_device_crt->ctk_config = ctk_config;
ctk_display_device_crt->ctk_event = ctk_event;
- ctk_display_device_crt->display_device_mask = display_device_mask;
ctk_display_device_crt->name = g_strdup(name);
ctk_display_device_crt->txt_refresh_rate = gtk_label_new("");
gtk_box_set_spacing(GTK_BOX(object), 10);
@@ -160,7 +159,7 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
ctk_display_device_crt->image_sliders =
ctk_image_sliders_new(handle, ctk_config, ctk_event,
ctk_display_device_crt->reset_button,
- display_device_mask, name);
+ name);
if (ctk_display_device_crt->image_sliders) {
gtk_box_pack_start(GTK_BOX(object),
ctk_display_device_crt->image_sliders,
@@ -209,10 +208,17 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
}
/* pack the EDID button */
+ ctk_display_device_crt->edid =
+ ctk_edid_new(ctk_display_device_crt->handle,
+ ctk_display_device_crt->ctk_config,
+ ctk_display_device_crt->ctk_event,
+ ctk_display_device_crt->name);
+
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0);
- ctk_display_device_crt->edid_box = hbox;
-
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_display_device_crt->edid,
+ TRUE, TRUE, 0);
+
/* show the page */
gtk_widget_show_all(GTK_WIDGET(object));
@@ -220,8 +226,7 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
/* Update the GUI */
update_display_enabled_flag(ctk_display_device_crt->handle,
- &ctk_display_device_crt->display_enabled,
- ctk_display_device_crt->display_device_mask);
+ &ctk_display_device_crt->display_enabled);
ctk_display_device_crt_setup(ctk_display_device_crt);
@@ -262,10 +267,8 @@ GtkTextBuffer *ctk_display_device_crt_create_help(GtkTextTagTable *table,
add_image_sliders_help
(CTK_IMAGE_SLIDERS(ctk_display_device_crt->image_sliders), b, &i);
- if (ctk_display_device_crt->edid) {
- add_acquire_edid_help(b, &i);
- }
-
+ add_acquire_edid_help(b, &i);
+
td = gtk_tooltips_data_get(GTK_WIDGET(ctk_display_device_crt->reset_button));
ctk_help_reset_hardware_defaults (b, &i, td->tip_text);
@@ -284,12 +287,15 @@ static void reset_button_clicked(GtkButton *button, gpointer user_data)
{
CtkDisplayDeviceCrt *ctk_display_device_crt =
CTK_DISPLAY_DEVICE_CRT(user_data);
-
+
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
+
ctk_image_sliders_reset
(CTK_IMAGE_SLIDERS(ctk_display_device_crt->image_sliders));
- gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
-
ctk_config_statusbar_message(ctk_display_device_crt->ctk_config,
"Reset hardware defaults for %s.",
ctk_display_device_crt->name);
@@ -305,59 +311,35 @@ static void reset_button_clicked(GtkButton *button, gpointer user_data)
static void ctk_display_device_crt_setup(CtkDisplayDeviceCrt
*ctk_display_device_crt)
{
- /* Update CRT-specific settings */
- crt_info_setup(ctk_display_device_crt);
-
- /* Update the image sliders */
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
- ctk_image_sliders_setup
- (CTK_IMAGE_SLIDERS(ctk_display_device_crt->image_sliders));
+ /* Update info */
- /* update acquire EDID button */
-
- if (ctk_display_device_crt->edid) {
- GList *list;
-
- list = gtk_container_get_children
- (GTK_CONTAINER(ctk_display_device_crt->edid_box));
- if (list) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_display_device_crt->edid_box),
- (GtkWidget *)(list->data));
- g_list_free(list);
- }
- }
+ crt_info_setup(ctk_display_device_crt);
- ctk_display_device_crt->edid =
- ctk_edid_new(ctk_display_device_crt->handle,
- ctk_display_device_crt->ctk_config,
- ctk_display_device_crt->ctk_event,
- ctk_display_device_crt->reset_button,
- ctk_display_device_crt->display_device_mask,
- ctk_display_device_crt->name);
+ ctk_edid_setup(CTK_EDID(ctk_display_device_crt->edid));
- if (ctk_display_device_crt->edid) {
- gtk_box_pack_start(GTK_BOX(ctk_display_device_crt->edid_box),
- ctk_display_device_crt->edid, TRUE, TRUE, 0);
- }
+ /* Update controls */
+ ctk_image_sliders_setup
+ (CTK_IMAGE_SLIDERS(ctk_display_device_crt->image_sliders));
- /* update the reset button */
+} /* ctk_display_device_crt_setup() */
- gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
-} /* ctk_display_device_crt_setup() */
static void crt_info_setup(CtkDisplayDeviceCrt *ctk_display_device_crt)
{
ReturnStatus ret;
gint val;
-
+
/* Refresh Rate */
- ret = NvCtrlGetDisplayAttribute(ctk_display_device_crt->handle,
- ctk_display_device_crt->display_device_mask,
- NV_CTRL_REFRESH_RATE, &val);
+ ret = NvCtrlGetAttribute(ctk_display_device_crt->handle,
+ NV_CTRL_REFRESH_RATE, &val);
if (ret == NvCtrlSuccess) {
char str[32];
float fvalue = ((float)(val)) / 100.0f;
@@ -384,12 +366,7 @@ static void enabled_displays_received(GtkObject *object, gpointer arg1,
/* Requery display information only if display disabled */
update_display_enabled_flag(ctk_object->handle,
- &ctk_object->display_enabled,
- ctk_object->display_device_mask);
-
- if (ctk_object->display_enabled) {
- return;
- }
+ &ctk_object->display_enabled);
ctk_display_device_crt_setup(ctk_object);
@@ -405,11 +382,6 @@ static void info_update_received(GtkObject *object, gpointer arg1,
gpointer user_data)
{
CtkDisplayDeviceCrt *ctk_object = CTK_DISPLAY_DEVICE_CRT(user_data);
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
-
- /* if the event is not for this display device, return */
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
+
crt_info_setup(ctk_object);
}
diff --git a/src/gtk+-2.x/ctkdisplaydevice-crt.h b/src/gtk+-2.x/ctkdisplaydevice-crt.h
index 7c78d3c..e360343 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-crt.h
+++ b/src/gtk+-2.x/ctkdisplaydevice-crt.h
@@ -59,11 +59,9 @@ struct _CtkDisplayDeviceCrt
GtkWidget *image_sliders;
GtkWidget *reset_button;
GtkWidget *txt_refresh_rate;
-
- GtkWidget *edid_box;
+
GtkWidget *edid;
- unsigned int display_device_mask;
gboolean display_enabled;
char *name;
@@ -77,7 +75,7 @@ struct _CtkDisplayDeviceCrtClass
GType ctk_display_device_crt_get_type (void) G_GNUC_CONST;
GtkWidget* ctk_display_device_crt_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
- unsigned int, char *);
+ char *);
GtkTextBuffer *ctk_display_device_crt_create_help(GtkTextTagTable *,
CtkDisplayDeviceCrt *);
diff --git a/src/gtk+-2.x/ctkdisplaydevice-dfp.c b/src/gtk+-2.x/ctkdisplaydevice-dfp.c
deleted file mode 100644
index cd20c87..0000000
--- a/src/gtk+-2.x/ctkdisplaydevice-dfp.c
+++ /dev/null
@@ -1,1433 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#include <gtk/gtk.h>
-#include <NvCtrlAttributes.h>
-
-#include "ctkbanner.h"
-
-#include "ctkdisplaydevice-dfp.h"
-
-#include "ctkditheringcontrols.h"
-#include "ctkcolorcontrols.h"
-#include "ctkimagesliders.h"
-#include "ctkedid.h"
-#include "ctkconfig.h"
-#include "ctkhelp.h"
-#include "ctkutils.h"
-#include <stdio.h>
-
-static void ctk_display_device_dfp_class_init(CtkDisplayDeviceDfpClass *);
-static void ctk_display_device_dfp_finalize(GObject *);
-
-static GtkWidget *make_scaling_radio_button(CtkDisplayDeviceDfp
- *ctk_display_device_dfp,
- GtkWidget *vbox,
- GtkWidget *prev_radio,
- char *label,
- gint value);
-
-static void dfp_scaling_changed(GtkWidget *widget, gpointer user_data);
-
-static void reset_button_clicked(GtkButton *button, gpointer user_data);
-
-static void
-dfp_scaling_update_buttons(CtkDisplayDeviceDfp *ctk_display_device_dfp,
- gint value);
-
-
-static void dfp_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data);
-
-static void dfp_info_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp);
-
-static void dfp_scaling_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp);
-
-static void ctk_display_device_dfp_setup(CtkDisplayDeviceDfp
- *ctk_display_device_dfp);
-
-static void enabled_displays_received(GtkObject *object, gpointer arg1,
- gpointer user_data);
-
-static void info_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data);
-
-
-#define FRAME_PADDING 5
-
-#define __SCALING (1<<0)
-
-
-#define GET_SCALING_TARGET(V) ((V) >> 16)
-#define GET_SCALING_METHOD(V) ((V) & 0xFFFF)
-#define MAKE_SCALING_VALUE(T, M) (((T) << 16) | ((M) & 0xFFFF))
-
-
-static const char *__scaling_help =
-"A flat panel usually has a single 'native' resolution. If you are "
-"using a resolution that is smaller than the flat panel's native "
-"resolution, then Flat Panel Scaling can adjust how the image is "
-"displayed on the flat panel. This setting will only take effect when "
-"GPU scaling is active, which occurs when the frontend and backend "
-"resolutions of the current mode are different.";
-
-static const char *__info_help =
-"This section describes basic informations about the "
-"DVI connection to the digital flat panel.";
-
-static const char *__info_chip_location_help =
-"Report whether the flat panel is driven by the on-chip controller "
-"(internal), or a separate controller chip elsewhere on the graphics "
-"board (external).";
-
-static const char *__info_link_help =
-"Report whether the specified display device is driven by a single "
-"link or dual link DVI connection.";
-
-static const char *__info_signal_help =
-"Report whether the flat panel is driven by an LVDS, TMDS, or "
-"DisplayPort signal.";
-
-static const char * __native_res_help =
-"The Native Resolution is the width and height in pixels that the flat "
-"panel uses to display the image. All other resolutions must be scaled "
-"to this resolution by the GPU and/or the DFP's built-in scaler.";
-
-static const char * __best_fit_res_help =
-"The Best Fit Resolution is a resolution supported by the DFP that "
-"closely matches the frontend resolution. The Best Fit Resolution "
-"is used as the Backend Resolution when you want to let the DFP do "
-"the scaling from the Frontend Resolution to the Native Resolution.";
-
-static const char * __frontend_res_help =
-"The Frontend Resolution is the current resolution of the image in pixels.";
-
-static const char * __refresh_rate_help =
-"The refresh rate displays the rate at which the screen is currently "
-"refreshing the image.";
-
-static const char * __backend_res_help =
-"The Backend Resolution is the resolution that the GPU is driving to "
-"the DFP. If the Backend Resolution is different than the Frontend "
-"Resolution, then the GPU will scale the image from the Frontend "
-"Resolution to the Backend Resolution. If the Backend Resolution "
-"is different than the Native Resolution, then the DFP will scale "
-"the image from the Backend Resolution to the Native Resolution. "
-"Backend Resolution is either the Native Resolution or the Best "
-"Fit Resolution.";
-
-static const char * __force_gpu_scaling_help =
-"When set, the driver will make the GPU scale the "
-"frontend (current) mode to the flat panel's native "
-"resolution. If disabled, the GPU will only scale (if "
-"needed) to the best fitting resolution reported in the flat "
-"panel's EDID; the flat panel will then scale the image to "
-"its native resolution.";
-
-static const char *__gpu_scaling_help =
-"Reports whether the GPU and/or DFP are actively scaling the current "
-"resolution.";
-
-static const char *__gpu_scaling_stretched_help =
-"The image will be expanded to fit the entire flat panel.";
-
-static const char *__gpu_scaling_centered_help =
-"The image will only occupy the number of pixels "
-"needed and be centered on the flat panel. Setting this "
-"will disable image sharpening for the display device.";
-
-static const char *__gpu_scaling_ar_scaled_help =
-"The image will be scaled (retaining the original "
-"aspect ratio) to expand and fit as much of the entire "
-"flat panel as possible.";
-
-GType ctk_display_device_dfp_get_type(void)
-{
- static GType ctk_display_device_dfp_type = 0;
-
- if (!ctk_display_device_dfp_type) {
- static const GTypeInfo ctk_display_device_dfp_info = {
- sizeof (CtkDisplayDeviceDfpClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) ctk_display_device_dfp_class_init,
- NULL, /* class_finalize, */
- NULL, /* class_data */
- sizeof (CtkDisplayDeviceDfp),
- 0, /* n_preallocs */
- NULL, /* instance_init */
- };
-
- ctk_display_device_dfp_type = g_type_register_static (GTK_TYPE_VBOX,
- "CtkDisplayDeviceDfp", &ctk_display_device_dfp_info, 0);
- }
-
- return ctk_display_device_dfp_type;
-}
-
-static void ctk_display_device_dfp_class_init(
- CtkDisplayDeviceDfpClass *ctk_display_device_dfp_class
-)
-{
- GObjectClass *gobject_class = (GObjectClass *)ctk_display_device_dfp_class;
- gobject_class->finalize = ctk_display_device_dfp_finalize;
-}
-
-static void ctk_display_device_dfp_finalize(
- GObject *object
-)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp = CTK_DISPLAY_DEVICE_DFP(object);
- g_free(ctk_display_device_dfp->name);
- g_signal_handlers_disconnect_matched(ctk_display_device_dfp->ctk_event,
- G_SIGNAL_MATCH_DATA,
- 0,
- 0,
- NULL,
- NULL,
- (gpointer) ctk_display_device_dfp);
-}
-
-
-/*
- * ctk_display_device_dfp_new() - constructor for the DFP display
- * device page.
- */
-
-GtkWidget* ctk_display_device_dfp_new(NvCtrlAttributeHandle *handle,
- CtkConfig *ctk_config,
- CtkEvent *ctk_event,
- unsigned int display_device_mask,
- char *name)
-{
- GObject *object;
- CtkDisplayDeviceDfp *ctk_display_device_dfp;
- GtkWidget *banner;
- GtkWidget *frame;
- GtkWidget *hbox, *vbox, *tmpbox;
-
- GtkWidget *button;
- GtkWidget *radio0;
- GtkWidget *radio1;
- GtkWidget *radio2;
- GtkWidget *alignment;
- GtkWidget *notebook;
- GtkWidget *nbox;
- GtkWidget *align;
-
- GtkWidget *table;
- ReturnStatus ret1, ret2;
- gint val_target, val_method;
-
- object = g_object_new(CTK_TYPE_DISPLAY_DEVICE_DFP, NULL);
- if (!object) return NULL;
-
- ctk_display_device_dfp = CTK_DISPLAY_DEVICE_DFP(object);
- ctk_display_device_dfp->handle = handle;
- ctk_display_device_dfp->ctk_event = ctk_event;
- ctk_display_device_dfp->ctk_config = ctk_config;
- ctk_display_device_dfp->display_device_mask = display_device_mask;
- ctk_display_device_dfp->name = g_strdup(name);
-
- /* cache the default scaling target & method values */
- ret1 =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING_DEFAULT_TARGET,
- &val_target);
- ret2 =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING_DEFAULT_METHOD,
- &val_method);
-
- if (ret1 != NvCtrlSuccess || ret2 != NvCtrlSuccess ||
- val_target == NV_CTRL_GPU_SCALING_TARGET_INVALID ||
- val_method == NV_CTRL_GPU_SCALING_METHOD_INVALID) {
- val_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT;
- val_method = NV_CTRL_GPU_SCALING_METHOD_STRETCHED;
- }
-
- ctk_display_device_dfp->default_scaling_target = val_target;
- ctk_display_device_dfp->default_scaling_method = val_method;
-
- gtk_box_set_spacing(GTK_BOX(object), 10);
-
- /* banner */
-
- banner = ctk_banner_image_new(BANNER_ARTWORK_DFP);
- gtk_box_pack_start(GTK_BOX(object), banner, FALSE, FALSE, 0);
-
- /*
- * create the reset button (which we need while creating the
- * controls in this page so that we can set the button's
- * sensitivity), though we pack it at the bottom of the page
- */
-
- ctk_display_device_dfp->reset_button =
- gtk_button_new_with_label("Reset DFP Hardware Defaults");
-
- alignment = gtk_alignment_new(1, 1, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment),
- ctk_display_device_dfp->reset_button);
- gtk_box_pack_end(GTK_BOX(object), alignment, TRUE, TRUE, 0);
-
- g_signal_connect(G_OBJECT(ctk_display_device_dfp->reset_button),
- "clicked", G_CALLBACK(reset_button_clicked),
- (gpointer) ctk_display_device_dfp);
-
- ctk_config_set_tooltip(ctk_config, ctk_display_device_dfp->reset_button,
- ctk_help_create_reset_hardware_defaults_text("DFP", name));
-
- /* Create tabbed notebook for widget */
-
- notebook = gtk_notebook_new();
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
- align = gtk_alignment_new(0, 0, 1, 1);
- gtk_container_add(GTK_CONTAINER(align), notebook);
- gtk_box_pack_start(GTK_BOX(object), align, FALSE, FALSE, 0);
-
- /* Create first tab for dfp info */
-
- nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), nbox, gtk_label_new("Information"));
-
- /* create the hbox to store dfp info, scaling */
-
- hbox = gtk_hbox_new(FALSE, FRAME_PADDING);
- gtk_box_pack_start(GTK_BOX(nbox), hbox, FALSE, FALSE, FRAME_PADDING);
-
- /* DFP info */
-
- frame = gtk_frame_new("Flat Panel Information");
- gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
-
- /*
- * insert a vbox between the frame and the widgets, so that the
- * widgets don't expand to fill all of the space within the
- * frame
- */
-
- tmpbox = gtk_vbox_new(FALSE, 5);
- gtk_container_set_border_width(GTK_CONTAINER(tmpbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), tmpbox);
-
- /* Make the txt widgets that will get updated */
- ctk_display_device_dfp->txt_chip_location = gtk_label_new("");
- ctk_display_device_dfp->txt_link = gtk_label_new("");
- ctk_display_device_dfp->txt_signal = gtk_label_new("");
- ctk_display_device_dfp->txt_native_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_best_fit_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_frontend_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_backend_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_refresh_rate = gtk_label_new("");
-
- /* Add information widget lines */
- {
- typedef struct {
- GtkWidget *label;
- GtkWidget *txt;
- const gchar *tooltip;
- } TextLineInfo;
-
- TextLineInfo lines[] = {
- {
- gtk_label_new("Chip location:"),
- ctk_display_device_dfp->txt_chip_location,
- __info_chip_location_help
- },
- {
- gtk_label_new("Connection link:"),
- ctk_display_device_dfp->txt_link,
- __info_link_help
- },
- {
- gtk_label_new("Signal:"),
- ctk_display_device_dfp->txt_signal,
- __info_signal_help
- },
- {
- gtk_label_new("Native Resolution:"),
- ctk_display_device_dfp->txt_native_resolution,
- __native_res_help,
- },
- {
- gtk_label_new("Best Fit Resolution:"),
- ctk_display_device_dfp->txt_best_fit_resolution,
- __best_fit_res_help,
- },
- {
- gtk_label_new("Frontend Resolution:"),
- ctk_display_device_dfp->txt_frontend_resolution,
- __frontend_res_help,
- },
- {
- gtk_label_new("Backend Resolution:"),
- ctk_display_device_dfp->txt_backend_resolution,
- __backend_res_help,
- },
- {
- gtk_label_new("Refresh Rate:"),
- ctk_display_device_dfp->txt_refresh_rate,
- __refresh_rate_help,
- },
- { NULL, NULL, NULL }
- };
- int i;
-
- GtkRequisition req;
- int max_width;
-
- /* Compute max width of lables and setup text alignments */
- max_width = 0;
- for (i = 0; lines[i].label; i++) {
- gtk_misc_set_alignment(GTK_MISC(lines[i].label), 0.0f, 0.5f);
- gtk_misc_set_alignment(GTK_MISC(lines[i].txt), 0.0f, 0.5f);
-
- gtk_widget_size_request(lines[i].label, &req);
- if (max_width < req.width) {
- max_width = req.width;
- }
- }
-
- /* Pack labels */
- for (i = 0; lines[i].label; i++) {
- GtkWidget *tmphbox;
-
- /* Add separators */
- if (i == 3 || i == 5 || i == 7) {
- GtkWidget *separator = gtk_hseparator_new();
- gtk_box_pack_start(GTK_BOX(tmpbox), separator,
- FALSE, FALSE, 0);
- }
-
- /* Set the label's width */
- gtk_widget_set_size_request(lines[i].label, max_width, -1);
-
- /* add the widgets for this line */
- tmphbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].label,
- FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].txt,
- FALSE, TRUE, 5);
-
- /* Include tooltips */
- if (lines[i].tooltip) {
- ctk_config_set_tooltip(ctk_config,
- lines[i].label,
- lines[i].tooltip);
- ctk_config_set_tooltip(ctk_config,
- lines[i].txt,
- lines[i].tooltip);
- }
- gtk_box_pack_start(GTK_BOX(tmpbox), tmphbox, FALSE, FALSE, 0);
- }
- }
-
-
- /* Flat Panel Scaling */
-
- frame = gtk_frame_new("Flat Panel Scaling");
- gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
- ctk_display_device_dfp->scaling_frame = frame;
-
- vbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
-
- button = gtk_check_button_new_with_label("Force Full GPU Scaling");
- ctk_display_device_dfp->scaling_gpu_button = button;
- ctk_config_set_tooltip(ctk_config, button, __force_gpu_scaling_help);
-
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
-
- table = gtk_table_new(1, 2, FALSE);
- gtk_table_set_row_spacings(GTK_TABLE(table), 6);
- gtk_table_set_col_spacings(GTK_TABLE(table), 15);
-
- gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-
- ctk_display_device_dfp->txt_scaling =
- add_table_row_with_help_text(table, ctk_config, __gpu_scaling_help,
- 0, 0,
- 0, 0.5, "Scaling:",
- 0, 0.5, "");
-
- gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
-
- frame = gtk_frame_new("GPU Scaling Method");
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
- vbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
-
- g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
- radio0 = make_scaling_radio_button
- (ctk_display_device_dfp, vbox, NULL, "Stretched",
- NV_CTRL_GPU_SCALING_METHOD_STRETCHED);
- ctk_config_set_tooltip(ctk_config, radio0, __gpu_scaling_stretched_help);
-
- radio1 = make_scaling_radio_button
- (ctk_display_device_dfp, vbox, radio0, "Centered",
- NV_CTRL_GPU_SCALING_METHOD_CENTERED);
- ctk_config_set_tooltip(ctk_config, radio1, __gpu_scaling_centered_help);
-
- radio2 = make_scaling_radio_button
- (ctk_display_device_dfp, vbox, radio1, "Aspect Ratio Scaled",
- NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED);
- ctk_config_set_tooltip(ctk_config, radio2, __gpu_scaling_ar_scaled_help);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GPU_SCALING),
- G_CALLBACK(dfp_update_received),
- (gpointer) ctk_display_device_dfp);
-
- /* pack the EDID button */
-
- hbox = gtk_hbox_new(FALSE, 0);
- align = gtk_alignment_new(0, 1, 1, 1);
- gtk_container_add(GTK_CONTAINER(align), hbox);
- gtk_box_pack_end(GTK_BOX(nbox), align, FALSE, FALSE, 0);
- ctk_display_device_dfp->edid_box = hbox;
-
- /*
- * Create layout for second tab for dfp controls but don't
- * add the tab until we make sure its required
- */
-
- nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
-
- /* pack the color controls */
-
- ctk_display_device_dfp->color_controls =
- ctk_color_controls_new(handle, ctk_config, ctk_event,
- ctk_display_device_dfp->reset_button,
- display_device_mask, name);
-
- if (ctk_display_device_dfp->color_controls) {
- gtk_box_pack_start(GTK_BOX(nbox),
- ctk_display_device_dfp->color_controls,
- FALSE, FALSE, 0);
- }
-
- /* pack the dithering controls */
-
- ctk_display_device_dfp->dithering_controls =
- ctk_dithering_controls_new(handle, ctk_config, ctk_event,
- ctk_display_device_dfp->reset_button,
- display_device_mask, name);
-
- if (ctk_display_device_dfp->dithering_controls) {
- gtk_box_pack_start(GTK_BOX(nbox),
- ctk_display_device_dfp->dithering_controls,
- FALSE, FALSE, 0);
- }
-
- /* pack the image sliders */
-
- ctk_display_device_dfp->image_sliders =
- ctk_image_sliders_new(handle, ctk_config, ctk_event,
- ctk_display_device_dfp->reset_button,
- display_device_mask, name);
- if (ctk_display_device_dfp->image_sliders) {
- gtk_box_pack_start(GTK_BOX(nbox),
- ctk_display_device_dfp->image_sliders,
- FALSE, FALSE, 0);
- }
-
- /* If no controls are created, don't add a controls tab */
-
- if (ctk_display_device_dfp->color_controls ||
- ctk_display_device_dfp->dithering_controls ||
- ctk_display_device_dfp->image_sliders) {
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook),nbox,gtk_label_new("Controls"));
- }
-
- /* show the page */
-
- gtk_widget_show_all(GTK_WIDGET(object));
-
- /* Update the GUI */
-
- update_display_enabled_flag(ctk_display_device_dfp->handle,
- &ctk_display_device_dfp->display_enabled,
- ctk_display_device_dfp->display_device_mask);
-
- ctk_display_device_dfp_setup(ctk_display_device_dfp);
-
- /* handle enable/disable events on the display device */
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_ENABLED_DISPLAYS),
- G_CALLBACK(enabled_displays_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GPU_SCALING_ACTIVE),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_DFP_SCALING_ACTIVE),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_FRONTEND_RESOLUTION),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_BACKEND_RESOLUTION),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- return GTK_WIDGET(object);
-
-} /* ctk_display_device_dfp_new() */
-
-
-
-/*
- * make_scaling_radio_button() - create a radio button and plug it
- * into the scaling radio group.
- */
-
-static GtkWidget *make_scaling_radio_button(CtkDisplayDeviceDfp
- *ctk_display_device_dfp,
- GtkWidget *vbox,
- GtkWidget *prev_radio,
- char *label,
- gint value)
-{
- GtkWidget *radio;
-
- if (prev_radio) {
- radio = gtk_radio_button_new_with_label_from_widget
- (GTK_RADIO_BUTTON(prev_radio), label);
- } else {
- radio = gtk_radio_button_new_with_label(NULL, label);
- }
-
- gtk_box_pack_start(GTK_BOX(vbox), radio, FALSE, FALSE, 0);
-
- g_object_set_data(G_OBJECT(radio), "scaling_value",
- GINT_TO_POINTER(value));
-
- g_signal_connect(G_OBJECT(radio), "toggled",
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
- ctk_display_device_dfp->scaling_method_buttons[value -1] = radio;
-
- return radio;
-
-} /* make_scaling_radio_button() */
-
-
-
-/*
- * post_dfp_scaling_update() - helper function for
- * dfp_scaling_changed() and dfp_update_received(); this does whatever
- * work is necessary after scaling has been updated -- currently, this
- * just means posting a statusbar message.
- */
-
-static void
-post_dfp_scaling_update(CtkDisplayDeviceDfp *ctk_display_device_dfp,
- gint value)
-{
- int scaling_target = GET_SCALING_TARGET(value);
- int scaling_method = GET_SCALING_METHOD(value);
-
- static const char *scaling_target_string_table[] = {
- "Best Fit", /* NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT */
- "Native", /* NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE */
- };
-
- static const char *scaling_method_string_table[] = {
- "Stretched", /* NV_CTRL_GPU_SCALING_METHOD_STRETCHED */
- "Centered", /* NV_CTRL_GPU_SCALING_METHOD_CENTERED */
- "Aspect Ratio Scaled" /* NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED */
- };
-
- if ((scaling_target < NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT) ||
- (scaling_target > NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE)) return;
-
- if ((scaling_method < NV_CTRL_GPU_SCALING_METHOD_STRETCHED) ||
- (scaling_method > NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED)) return;
-
- ctk_config_statusbar_message(ctk_display_device_dfp->ctk_config,
- "Set Flat Panel Scaling for %s to %s %s.",
- ctk_display_device_dfp->name,
- scaling_method_string_table[scaling_method -1],
- scaling_target_string_table[scaling_target -1]);
-
-} /* post_dfp_scaling_update() */
-
-
-
-/*
- * dfp_scaling_changed() - callback function for changes to the
- * scaling target and method buttons.
- */
-
-static void dfp_scaling_changed(GtkWidget *widget, gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
- gboolean enabled;
- int scaling_target;
- int scaling_method;
- gint value;
- int i;
- GtkWidget *radio;
-
- /* Get the scaling target */
-
- enabled = gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON(ctk_display_device_dfp->scaling_gpu_button));
-
- if (enabled) {
- scaling_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE;
- } else {
- scaling_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT;
- }
-
- /* Get the scaling method */
-
- scaling_method = NV_CTRL_GPU_SCALING_METHOD_INVALID;
-
- for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) {
- radio = ctk_display_device_dfp->scaling_method_buttons[i];
-
- if (!radio) continue;
-
- enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio));
-
- if (enabled) {
- user_data = g_object_get_data(G_OBJECT(radio), "scaling_value");
- scaling_method = GPOINTER_TO_INT(user_data);
- break;
- }
- }
-
- if (scaling_method == NV_CTRL_GPU_SCALING_METHOD_INVALID) {
- return;
- }
-
- value = MAKE_SCALING_VALUE(scaling_target, scaling_method);
-
- NvCtrlSetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING, value);
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, TRUE);
-
- post_dfp_scaling_update(ctk_display_device_dfp, value);
-
-} /* dfp_scaling_changed() */
-
-
-
-/*
- * reset_button_clicked() - callback when the reset button is clicked
- */
-
-static void reset_button_clicked(GtkButton *button, gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
-
- gint value;
-
- ctk_image_sliders_reset
- (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders));
-
- /*
- * if scaling is active, send the default scaling value to the
- * server and update the radio button group
- */
-
- if (ctk_display_device_dfp->active_attributes & __SCALING) {
-
- value =
- MAKE_SCALING_VALUE(ctk_display_device_dfp->default_scaling_target,
- ctk_display_device_dfp->default_scaling_method);
-
-
- NvCtrlSetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING, value);
-
- dfp_scaling_setup(ctk_display_device_dfp);
- }
-
- /* Reset the color configuration */
- if (ctk_display_device_dfp->color_controls) {
- ctk_color_controls_reset
- (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls));
- }
-
- /* Reset the dithering configuration */
- if (ctk_display_device_dfp->dithering_controls) {
- ctk_dithering_controls_reset
- (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls));
- }
-
- /* Update the reset button */
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, FALSE);
-
- /* status bar message */
-
- ctk_config_statusbar_message(ctk_display_device_dfp->ctk_config,
- "Reset hardware defaults for %s.",
- ctk_display_device_dfp->name);
-
-} /* reset_button_clicked() */
-
-
-
-/*
- * dfp_scaling_update_buttons() - update the GUI state of the scaling button
- * group, making the specified scaling value active.
- */
-
-static void
-dfp_scaling_update_buttons(CtkDisplayDeviceDfp *ctk_display_device_dfp,
- gint value)
-{
- GtkWidget *b, *button = NULL;
- int scaling_target = GET_SCALING_TARGET(value);
- int scaling_method = GET_SCALING_METHOD(value);
- gboolean enabled;
- int i;
-
- if ((scaling_target < NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT) ||
- (scaling_target > NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE))
- return;
-
- if ((scaling_method < NV_CTRL_GPU_SCALING_METHOD_STRETCHED) ||
- (scaling_method > NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED))
- return;
-
- if (scaling_target == NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE) {
- enabled = TRUE;
- } else {
- enabled = FALSE;
- }
-
- button = ctk_display_device_dfp->scaling_method_buttons[scaling_method -1];
-
- if (!button) return;
-
- /* turn off signal handling for all the scaling buttons */
-
- for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) {
- b = ctk_display_device_dfp->scaling_method_buttons[i];
- if (!b) continue;
-
- g_signal_handlers_block_by_func
- (G_OBJECT(b), G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
- }
-
- g_signal_handlers_block_by_func
- (G_OBJECT(ctk_display_device_dfp->scaling_gpu_button),
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
- /* set the appropriate button active */
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
- gtk_toggle_button_set_active
- (GTK_TOGGLE_BUTTON(ctk_display_device_dfp->scaling_gpu_button),
- enabled);
-
- /* turn on signal handling for all the scaling buttons */
-
- for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) {
- b = ctk_display_device_dfp->scaling_method_buttons[i];
- if (!b) continue;
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(b), G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
- }
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(ctk_display_device_dfp->scaling_gpu_button),
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
-} /* dfp_scaling_update_buttons() */
-
-
-
-/*
- * dfp_update_received() - callback function for changed DFP
- * settings; this is called when we receive an event indicating that
- * another NV-CONTROL client changed any of the settings that we care
- * about.
- */
-
-static void dfp_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
-
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask &
- ctk_display_device_dfp->display_device_mask)) {
- return;
- }
-
- switch (event_struct->attribute) {
- case NV_CTRL_GPU_SCALING:
- dfp_scaling_update_buttons(ctk_display_device_dfp,
- event_struct->value);
- post_dfp_scaling_update(ctk_display_device_dfp, event_struct->value);
- break;
-
- default:
- break;
- }
-
-} /* dfp_update_received() */
-
-
-
-/*
- * ctk_display_device_dfp_create_help() - construct the DFP display
- * device help page
- */
-
-GtkTextBuffer *ctk_display_device_dfp_create_help(GtkTextTagTable *table,
- CtkDisplayDeviceDfp
- *ctk_display_device_dfp)
-{
- GtkTextIter i;
- GtkTextBuffer *b;
- GtkTooltipsData *td;
-
- b = gtk_text_buffer_new(table);
-
- gtk_text_buffer_get_iter_at_offset(b, &i, 0);
-
- ctk_help_title(b, &i, "%s Help", ctk_display_device_dfp->name);
-
- ctk_help_heading(b, &i, "Flat Panel Information");
- ctk_help_para(b, &i, __info_help);
-
- ctk_help_term(b, &i, "Chip Location");
- ctk_help_para(b, &i, __info_chip_location_help);
-
- ctk_help_term(b, &i, "Link");
- ctk_help_para(b, &i, __info_link_help);
-
- ctk_help_term(b, &i, "Signal");
- ctk_help_para(b, &i, __info_signal_help);
-
- ctk_help_term(b, &i, "Native Resolution");
- ctk_help_para(b, &i, __native_res_help);
-
- ctk_help_term(b, &i, "Best Fit Resolution");
- ctk_help_para(b, &i, __best_fit_res_help);
-
- ctk_help_term(b, &i, "Frontend Resolution");
- ctk_help_para(b, &i, __frontend_res_help);
-
- ctk_help_term(b, &i, "Backend Resolution");
- ctk_help_para(b, &i, __backend_res_help);
-
- ctk_help_term(b, &i, "Refresh Rate");
- ctk_help_para(b, &i, __refresh_rate_help);
-
- ctk_help_heading(b, &i, "Flat Panel Scaling");
- ctk_help_para(b, &i, __scaling_help);
-
- ctk_help_term(b, &i, "Force Full GPU Scaling");
- ctk_help_para(b, &i, __force_gpu_scaling_help);
-
- ctk_help_term(b, &i, "Scaling");
- ctk_help_para(b, &i, __gpu_scaling_help);
-
- ctk_help_term(b, &i, "Stretched");
- ctk_help_para(b, &i, __gpu_scaling_stretched_help);
-
- ctk_help_term(b, &i, "Centered");
- ctk_help_para(b, &i, __gpu_scaling_centered_help);
-
- ctk_help_term(b, &i, "Aspect Ratio Scaled");
- ctk_help_para(b, &i, __gpu_scaling_ar_scaled_help);
-
- if (ctk_display_device_dfp->edid) {
- add_acquire_edid_help(b, &i);
- }
-
- if (ctk_display_device_dfp->color_controls) {
- add_color_controls_help
- (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls), b, &i);
- }
-
- if (ctk_display_device_dfp->dithering_controls) {
- add_dithering_controls_help
- (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls), b, &i);
- }
-
- add_image_sliders_help
- (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders), b, &i);
-
- td = gtk_tooltips_data_get(GTK_WIDGET(ctk_display_device_dfp->reset_button));
- ctk_help_reset_hardware_defaults (b, &i, td->tip_text);
-
- ctk_help_finish(b);
-
- return b;
-
-} /* ctk_display_device_dfp_create_help() */
-
-
-static void update_link(CtkDisplayDeviceDfp *ctk_display_device_dfp)
-{
- ReturnStatus ret;
- gint val, signal_type = ctk_display_device_dfp->signal_type;
- const char *link = "Unknown";
- char tmp[32];
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_LINK, &val);
- if (ret == NvCtrlSuccess) {
- if (signal_type == NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT) {
- int lanes;
-
- lanes = val + 1;
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_DISPLAYPORT_LINK_RATE, &val);
- if (ret == NvCtrlSuccess && val == NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED) {
- link = "Disabled";
- } else {
- const char *bw = "unknown bandwidth";
-
- if (ret == NvCtrlSuccess) {
- switch (val) {
- case NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS:
- bw = "1.62 Gbps";
- break;
- case NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS:
- bw = "2.70 Gbps";
- break;
- }
- }
-
- snprintf(tmp, 32, "%d lane%s @ %s", lanes, lanes == 1 ? "" : "s",
- bw);
- link = tmp;
- }
- } else {
- // LVDS or TMDS
- switch(val) {
- case NV_CTRL_FLATPANEL_LINK_SINGLE:
- link = "Single";
- break;
- case NV_CTRL_FLATPANEL_LINK_DUAL:
- link = "Dual";
- break;
- }
- }
- }
-
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_link), link);
-}
-
-
-static void callback_link_changed(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
-
- update_link(ctk_display_device_dfp);
-}
-
-/*
- * dfp_info_setup() -
- *
- *
- */
-static void dfp_info_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp)
-{
- ReturnStatus ret;
- gint val, gpu_scaling, dfp_scaling;
- char *chip_location, *link, *signal;
- char *scaling;
- CtkEvent *ctk_event = ctk_display_device_dfp->ctk_event;
-
- chip_location = link = signal = "Unknown";
- scaling = "Unknown";
-
- /* Chip location */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_CHIP_LOCATION, &val);
- if (ret == NvCtrlSuccess) {
- switch (val) {
- case NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL:
- chip_location = "Internal";
- break;
- case NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL:
- chip_location = "External";
- break;
- }
- }
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_chip_location), chip_location);
-
- /* Signal */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_SIGNAL, &val);
- if (ret == NvCtrlSuccess) {
- switch (val) {
- case NV_CTRL_FLATPANEL_SIGNAL_LVDS:
- signal = "LVDS";
- break;
- case NV_CTRL_FLATPANEL_SIGNAL_TMDS:
- signal = "TMDS";
- break;
- case NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT:
- signal = "DisplayPort";
- break;
- }
- }
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_signal), signal);
- ctk_display_device_dfp->signal_type = val;
-
- /* Link */
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_FLATPANEL_LINK),
- G_CALLBACK(callback_link_changed),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_DISPLAYPORT_LINK_RATE),
- G_CALLBACK(callback_link_changed),
- (gpointer) ctk_display_device_dfp);
-
- update_link(ctk_display_device_dfp);
-
- /* Native Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_NATIVE_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_native_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_native_resolution),
- "Unknown");
- }
-
- /* Frontend Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FRONTEND_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_frontend_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_frontend_resolution),
- "Unknown");
- }
-
- /* Best Fit Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_best_fit_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_best_fit_resolution),
- "Unknown");
- }
-
- /* Backend Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_BACKEND_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_backend_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_backend_resolution),
- "Unknown");
- }
- /* Refresh Rate */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_REFRESH_RATE, &val);
- if (ret == NvCtrlSuccess) {
- char str[32];
- float fvalue = ((float)(val)) / 100.0f;
- snprintf(str, 32, "%.2f Hz", fvalue);
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_refresh_rate),
- str);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_refresh_rate),
- "Unknown");
-
- }
-
- /* GPU/DFP Scaling */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING_ACTIVE,
- &gpu_scaling);
- if (ret == NvCtrlSuccess) {
- ret = NvCtrlGetDisplayAttribute
- (ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_DFP_SCALING_ACTIVE, &dfp_scaling);
- }
- if (ret != NvCtrlSuccess) {
- scaling = "Unknown";
- } else {
- if (gpu_scaling && dfp_scaling) {
- scaling = "GPU & DFP";
- } else if (gpu_scaling) {
- scaling = "GPU";
- } else if (dfp_scaling) {
- scaling = "DFP";
- } else {
- scaling = "None";
- }
- }
-
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_scaling), scaling);
-
-} /* dfp_info_setup() */
-
-
-
-/*
- * dfp_scaling_setup() - Update GUI to reflect X server settings of
- * DFP Scaling.
- */
-static void dfp_scaling_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp)
-{
- ReturnStatus ret;
- int val;
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING, &val);
- if (ret != NvCtrlSuccess) {
- gtk_widget_set_sensitive(ctk_display_device_dfp->scaling_frame, FALSE);
- gtk_widget_hide(ctk_display_device_dfp->scaling_frame);
- ctk_display_device_dfp->active_attributes &= ~__SCALING;
- return;
- }
-
- gtk_widget_show(ctk_display_device_dfp->scaling_frame);
- ctk_display_device_dfp->active_attributes |= __SCALING;
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->scaling_frame, TRUE);
-
- dfp_scaling_update_buttons(ctk_display_device_dfp, val);
-
-} /* dfp_scaling_setup() */
-
-
-
-/*
- * Updates the display device page to reflect the current
- * configuration of the display device.
- */
-static void ctk_display_device_dfp_setup(CtkDisplayDeviceDfp
- *ctk_display_device_dfp)
-{
- /* Update DFP-specific settings */
-
- dfp_info_setup(ctk_display_device_dfp);
-
- dfp_scaling_setup(ctk_display_device_dfp);
-
-
- /* Update the image sliders */
-
- ctk_image_sliders_setup
- (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders));
-
-
- /* update acquire EDID button */
-
- if (ctk_display_device_dfp->edid) {
- GList *list;
-
- list = gtk_container_get_children
- (GTK_CONTAINER(ctk_display_device_dfp->edid_box));
- if (list) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_display_device_dfp->edid_box),
- (GtkWidget *)(list->data));
- g_list_free(list);
- }
- }
-
- ctk_display_device_dfp->edid =
- ctk_edid_new(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->ctk_config,
- ctk_display_device_dfp->ctk_event,
- ctk_display_device_dfp->reset_button,
- ctk_display_device_dfp->display_device_mask,
- ctk_display_device_dfp->name);
-
- if (ctk_display_device_dfp->edid) {
- gtk_box_pack_start(GTK_BOX(ctk_display_device_dfp->edid_box),
- ctk_display_device_dfp->edid, TRUE, TRUE, 0);
- }
-
- /* Update the color control setup */
-
- ctk_color_controls_setup
- (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls));
-
- /* Update the dithering setup */
-
- ctk_dithering_controls_setup
- (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls));
-
- /* update the reset button */
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, FALSE);
-
-} /* ctk_display_device_dfp_setup() */
-
-
-
-/*
- * When the list of enabled displays on the GPU changes,
- * this page should disable/enable access based on whether
- * or not the display device is enabled.
- */
-static void enabled_displays_received(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_object = CTK_DISPLAY_DEVICE_DFP(user_data);
-
- /* Requery display information only if display disabled */
-
- update_display_enabled_flag(ctk_object->handle,
- &ctk_object->display_enabled,
- ctk_object->display_device_mask);
-
- if (ctk_object->display_enabled) {
- return;
- }
-
- ctk_display_device_dfp_setup(ctk_object);
-
-} /* enabled_displays_received() */
-
-
-/*
- * When DFP/GPU scaling activation and/or resolution changes occur,
- * we should update the GUI to reflect the current state.
- */
-static void info_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_object = CTK_DISPLAY_DEVICE_DFP(user_data);
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
-
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
-
- dfp_info_setup(ctk_object);
-}
diff --git a/src/gtk+-2.x/ctkdisplaydevice-dfp.h b/src/gtk+-2.x/ctkdisplaydevice-dfp.h
deleted file mode 100644
index 7286a95..0000000
--- a/src/gtk+-2.x/ctkdisplaydevice-dfp.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#ifndef __CTK_DISPLAYDEVICE_DFP_H__
-#define __CTK_DISPLAYDEVICE_DFP_H__
-
-#include "ctkevent.h"
-#include "ctkconfig.h"
-
-G_BEGIN_DECLS
-
-#define CTK_TYPE_DISPLAY_DEVICE_DFP (ctk_display_device_dfp_get_type())
-
-#define CTK_DISPLAY_DEVICE_DFP(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_DISPLAY_DEVICE_DFP, \
- CtkDisplayDeviceDfp))
-
-#define CTK_DISPLAY_DEVICE_DFP_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_DISPLAY_DEVICE_DFP, \
- CtkDisplayDeviceDfpClass))
-
-#define CTK_IS_DISPLAY_DEVICE_DFP(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_DISPLAY_DEVICE_DFP))
-
-#define CTK_IS_DISPLAY_DEVICE_DFP_CLASS(class) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_DISPLAY_DEVICE_DFP))
-
-#define CTK_DISPLAY_DEVICE_DFP_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_DISPLAY_DEVICE_DFP, \
- CtkDisplayDeviceDfpClass))
-
-
-typedef struct _CtkDisplayDeviceDfp CtkDisplayDeviceDfp;
-typedef struct _CtkDisplayDeviceDfpClass CtkDisplayDeviceDfpClass;
-
-struct _CtkDisplayDeviceDfp
-{
- GtkVBox parent;
-
- NvCtrlAttributeHandle *handle;
- CtkConfig *ctk_config;
- CtkEvent *ctk_event;
- GtkWidget *image_sliders;
- GtkWidget *reset_button;
- GtkWidget *edid_box;
- GtkWidget *edid;
- GtkWidget *dithering_controls;
- GtkWidget *color_controls;
-
- GtkWidget *txt_chip_location;
- GtkWidget *txt_link;
- GtkWidget *txt_signal;
- GtkWidget *txt_native_resolution;
- GtkWidget *txt_frontend_resolution;
- GtkWidget *txt_best_fit_resolution;
- GtkWidget *txt_backend_resolution;
-
- GtkWidget *txt_refresh_rate;
- GtkWidget *txt_scaling;
-
- GtkWidget *scaling_frame;
- GtkWidget *scaling_gpu_button;
- GtkWidget *scaling_method_buttons[NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED];
-
- unsigned int display_device_mask;
- gboolean display_enabled;
- unsigned int active_attributes;
-
- char *name;
- gint default_scaling_target;
- gint default_scaling_method;
- gint signal_type;
-};
-
-struct _CtkDisplayDeviceDfpClass
-{
- GtkVBoxClass parent_class;
-};
-
-GType ctk_display_device_dfp_get_type (void) G_GNUC_CONST;
-GtkWidget* ctk_display_device_dfp_new (NvCtrlAttributeHandle *,
- CtkConfig *, CtkEvent *,
- unsigned int, char *);
-
-GtkTextBuffer *ctk_display_device_dfp_create_help(GtkTextTagTable *,
- CtkDisplayDeviceDfp *);
-
-G_END_DECLS
-
-#endif /* __CTK_DISPLAYDEVICE_DFP_H__ */
diff --git a/src/gtk+-2.x/ctkdisplaydevice-tv.c b/src/gtk+-2.x/ctkdisplaydevice-tv.c
index febfdfe..c7310dd 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-tv.c
+++ b/src/gtk+-2.x/ctkdisplaydevice-tv.c
@@ -73,7 +73,7 @@ static GtkWidget * add_scale(CtkDisplayDeviceTv *ctk_display_device_tv,
static void adjustment_value_changed(GtkAdjustment *adjustment,
gpointer user_data);
-static void reset_defaults(GtkButton *button, gpointer user_data);
+static void reset_button_clicked(GtkButton *button, gpointer user_data);
static void value_received(GtkObject *object, gpointer arg1,
gpointer user_data);
@@ -104,6 +104,7 @@ GType ctk_display_device_tv_get_type(void)
sizeof (CtkDisplayDeviceTv),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_display_device_tv_type = g_type_register_static (GTK_TYPE_VBOX,
@@ -145,7 +146,6 @@ static void ctk_display_device_tv_finalize(
GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
CtkConfig *ctk_config,
CtkEvent *ctk_event,
- unsigned int display_device_mask,
char *name)
{
GObject *object;
@@ -165,7 +165,6 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
ctk_display_device_tv->handle = handle;
ctk_display_device_tv->ctk_config = ctk_config;
ctk_display_device_tv->ctk_event = ctk_event;
- ctk_display_device_tv->display_device_mask = display_device_mask;
ctk_display_device_tv->name = g_strdup(name);
gtk_box_set_spacing(GTK_BOX(object), 10);
@@ -345,7 +344,7 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
ctk_display_device_tv->image_sliders =
ctk_image_sliders_new(handle, ctk_config, ctk_event,
ctk_display_device_tv->reset_button,
- display_device_mask, name);
+ name);
if (ctk_display_device_tv->image_sliders) {
gtk_box_pack_start(GTK_BOX(object),
ctk_display_device_tv->image_sliders,
@@ -355,7 +354,7 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
/* reset button */
g_signal_connect(G_OBJECT(ctk_display_device_tv->reset_button), "clicked",
- G_CALLBACK(reset_defaults),
+ G_CALLBACK(reset_button_clicked),
(gpointer) ctk_display_device_tv);
alignment = gtk_alignment_new(1, 1, 0, 0);
@@ -373,9 +372,16 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
/* EDID button box */
+ ctk_display_device_tv->edid =
+ ctk_edid_new(ctk_display_device_tv->handle,
+ ctk_display_device_tv->ctk_config,
+ ctk_display_device_tv->ctk_event,
+ ctk_display_device_tv->name);
+
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0);
- ctk_display_device_tv->edid_box = hbox;
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_display_device_tv->edid,
+ TRUE, TRUE, 0);
/* finally, display the widget */
@@ -384,8 +390,7 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
/* update the GUI */
update_display_enabled_flag(ctk_display_device_tv->handle,
- &ctk_display_device_tv->display_enabled,
- ctk_display_device_tv->display_device_mask);
+ &ctk_display_device_tv->display_enabled);
ctk_display_device_tv_setup(ctk_display_device_tv);
@@ -505,11 +510,10 @@ static void adjustment_value_changed(GtkAdjustment *adjustment,
user_data = g_object_get_data(G_OBJECT(adjustment), "attribute");
attribute = GPOINTER_TO_INT(user_data);
-
- NvCtrlSetDisplayAttribute(ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- attribute, (int) value);
-
+
+ NvCtrlSetAttribute(ctk_display_device_tv->handle,
+ attribute, (int) value);
+
post_adjustment_value_changed(adjustment, ctk_display_device_tv, value);
} /* adjustment_value_changed() */
@@ -537,10 +541,8 @@ static void reset_slider(CtkDisplayDeviceTv *ctk_display_device_tv,
if (!get_scale_active(CTK_SCALE(scale))) return;
attribute = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj), "attribute"));
-
- ret = NvCtrlGetDisplayAttribute(ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- attribute, &val);
+
+ ret = NvCtrlGetAttribute(ctk_display_device_tv->handle, attribute, &val);
if (ret != NvCtrlSuccess) return;
g_signal_handlers_block_matched(adj, G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
@@ -572,8 +574,6 @@ static void reset_sliders(CtkDisplayDeviceTv *ctk_display_device_tv)
reset_slider(ctk_display_device_tv, ctk_display_device_tv->contrast);
reset_slider(ctk_display_device_tv, ctk_display_device_tv->saturation);
- gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
-
ctk_config_statusbar_message(ctk_display_device_tv->ctk_config,
"Reset TV Hardware defaults for %s.",
ctk_display_device_tv->name);
@@ -582,17 +582,23 @@ static void reset_sliders(CtkDisplayDeviceTv *ctk_display_device_tv)
/*
- * reset_defaults() - called when the "reset defaults" button is
+ * reset_button_clicked() - called when the "reset defaults" button is
* pressed; tells the X server to reset its defaults, and then resets
* all the sliders.
*/
-static void reset_defaults(GtkButton *button, gpointer user_data)
+static void reset_button_clicked(GtkButton *button, gpointer user_data)
{
CtkDisplayDeviceTv *ctk_display_device_tv =
CTK_DISPLAY_DEVICE_TV(user_data);
gint active = 0;
+
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
+
/* Make sure something is active */
active =
@@ -604,19 +610,16 @@ static void reset_defaults(GtkButton *button, gpointer user_data)
get_scale_active(CTK_SCALE(ctk_display_device_tv->saturation)));
if (active) {
- NvCtrlSetDisplayAttribute(ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- NV_CTRL_TV_RESET_SETTINGS, 1);
- }
-
- if (ctk_display_device_tv->image_sliders) {
- ctk_image_sliders_reset
- (CTK_IMAGE_SLIDERS(ctk_display_device_tv->image_sliders));
+ NvCtrlSetAttribute(ctk_display_device_tv->handle,
+ NV_CTRL_TV_RESET_SETTINGS, 1);
}
+ ctk_image_sliders_reset
+ (CTK_IMAGE_SLIDERS(ctk_display_device_tv->image_sliders));
+
reset_sliders(ctk_display_device_tv);
-} /* reset_defaults() */
+} /* reset_button_clicked() */
@@ -660,6 +663,7 @@ static void value_received(GtkObject *object, gpointer arg1,
break;
case NV_CTRL_TV_RESET_SETTINGS:
reset_sliders(ctk_display_device_tv);
+ ctk_display_device_tv_setup(ctk_display_device_tv);
return;
default:
return;
@@ -733,10 +737,8 @@ GtkTextBuffer *ctk_display_device_tv_create_help(GtkTextTagTable *table,
add_image_sliders_help
(CTK_IMAGE_SLIDERS(ctk_display_device_tv->image_sliders), b, &i);
- if (ctk_display_device_tv->edid) {
- add_acquire_edid_help(b, &i);
- }
-
+ add_acquire_edid_help(b, &i);
+
td = gtk_tooltips_data_get(GTK_WIDGET(ctk_display_device_tv->reset_button));
ctk_help_reset_hardware_defaults (b, &i, td->tip_text);
@@ -757,17 +759,15 @@ static void setup_scale(CtkDisplayDeviceTv *ctk_display_device_tv,
ReturnStatus ret0, ret1;
NVCTRLAttributeValidValuesRec valid;
NvCtrlAttributeHandle *handle = ctk_display_device_tv->handle;
- unsigned int mask = ctk_display_device_tv->display_device_mask;
int val;
GtkAdjustment *adj = CTK_SCALE(scale)->gtk_adjustment;
/* Read settings from X server */
- ret0 = NvCtrlGetValidDisplayAttributeValues(handle, mask,
- attribute, &valid);
-
- ret1 = NvCtrlGetDisplayAttribute(handle, mask, attribute, &val);
-
+ ret0 = NvCtrlGetValidAttributeValues(handle, attribute, &valid);
+
+ ret1 = NvCtrlGetAttribute(handle, attribute, &val);
+
if ((ret0 == NvCtrlSuccess) && (ret1 == NvCtrlSuccess) &&
(valid.type == ATTRIBUTE_TYPE_RANGE)) {
@@ -809,80 +809,56 @@ static void setup_scale(CtkDisplayDeviceTv *ctk_display_device_tv,
static void ctk_display_device_tv_setup(CtkDisplayDeviceTv
*ctk_display_device_tv)
{
- /* Update Information Frame */
-
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
+
+
+ /* Update info */
+
tv_info_setup(ctk_display_device_tv);
- /* Update sliders */
-
+ /* update acquire EDID button */
+
+ ctk_edid_setup(CTK_EDID(ctk_display_device_tv->edid));
+
+
+ /* Update controls */
+
/* NV_CTRL_TV_OVERSCAN */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_OVERSCAN,
ctk_display_device_tv->overscan);
-
+
/* NV_CTRL_TV_FLICKER_FILTER */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_FLICKER_FILTER,
ctk_display_device_tv->flicker_filter);
-
+
/* NV_CTRL_TV_BRIGHTNESS */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_BRIGHTNESS,
ctk_display_device_tv->brightness);
-
+
/* NV_CTRL_TV_HUE */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_HUE,
ctk_display_device_tv->hue);
/* NV_CTRL_TV_CONTRAST */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_CONTRAST,
ctk_display_device_tv->contrast);
/* NV_CTRL_TV_SATURATION */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_SATURATION,
ctk_display_device_tv->saturation);
- /* Update the image sliders */
-
ctk_image_sliders_setup
(CTK_IMAGE_SLIDERS(ctk_display_device_tv->image_sliders));
-
- /* update acquire EDID button */
-
- if (ctk_display_device_tv->edid) {
- GList *list;
- list = gtk_container_get_children
- (GTK_CONTAINER(ctk_display_device_tv->edid_box));
- if (list) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_display_device_tv->edid_box),
- (GtkWidget *)(list->data));
- g_list_free(list);
- }
- }
-
- ctk_display_device_tv->edid =
- ctk_edid_new(ctk_display_device_tv->handle,
- ctk_display_device_tv->ctk_config,
- ctk_display_device_tv->ctk_event,
- ctk_display_device_tv->reset_button,
- ctk_display_device_tv->display_device_mask,
- ctk_display_device_tv->name);
-
- if (ctk_display_device_tv->edid) {
- gtk_box_pack_start(GTK_BOX(ctk_display_device_tv->edid_box),
- ctk_display_device_tv->edid, TRUE, TRUE, 0);
- }
-
-
- /* update the reset button */
-
- gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
-
} /* ctk_display_device_tv_setup() */
static void tv_info_setup(CtkDisplayDeviceTv *ctk_display_device_tv)
@@ -893,11 +869,9 @@ static void tv_info_setup(CtkDisplayDeviceTv *ctk_display_device_tv)
/* NV_CTRL_STRING_TV_ENCODER_NAME */
- ret = NvCtrlGetStringDisplayAttribute
- (ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- NV_CTRL_STRING_TV_ENCODER_NAME,
- &str);
+ ret = NvCtrlGetStringDisplayAttribute(ctk_display_device_tv->handle, 0,
+ NV_CTRL_STRING_TV_ENCODER_NAME,
+ &str);
if (ret == NvCtrlSuccess) {
gtk_label_set_text(GTK_LABEL(ctk_display_device_tv->txt_encoder_name),
str);
@@ -905,14 +879,12 @@ static void tv_info_setup(CtkDisplayDeviceTv *ctk_display_device_tv)
} else {
gtk_widget_hide(ctk_display_device_tv->info_frame);
}
-
+
/* NV_CTRL_REFRESH_RATE */
-
- ret = NvCtrlGetDisplayAttribute
- (ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- NV_CTRL_REFRESH_RATE,
- &val);
+
+ ret = NvCtrlGetAttribute(ctk_display_device_tv->handle,
+ NV_CTRL_REFRESH_RATE,
+ &val);
if (ret == NvCtrlSuccess) {
float fvalue = ((float)(val)) / 100.0f;
snprintf(str, 32, "%.2f Hz", fvalue);
@@ -938,12 +910,7 @@ static void enabled_displays_received(GtkObject *object, gpointer arg1,
/* Requery display information only if display disabled */
update_display_enabled_flag(ctk_object->handle,
- &ctk_object->display_enabled,
- ctk_object->display_device_mask);
-
- if (ctk_object->display_enabled) {
- return;
- }
+ &ctk_object->display_enabled);
ctk_display_device_tv_setup(ctk_object);
@@ -957,13 +924,6 @@ static void info_update_received(GtkObject *object, gpointer arg1,
gpointer user_data)
{
CtkDisplayDeviceTv *ctk_object = CTK_DISPLAY_DEVICE_TV(user_data);
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
-
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
tv_info_setup(ctk_object);
}
diff --git a/src/gtk+-2.x/ctkdisplaydevice-tv.h b/src/gtk+-2.x/ctkdisplaydevice-tv.h
index b37deaf..65742ee 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-tv.h
+++ b/src/gtk+-2.x/ctkdisplaydevice-tv.h
@@ -56,7 +56,6 @@ struct _CtkDisplayDeviceTv
CtkEvent *ctk_event;
NvCtrlAttributeHandle *handle;
- unsigned int display_device_mask;
gboolean display_enabled;
char *name;
@@ -65,7 +64,7 @@ struct _CtkDisplayDeviceTv
GtkWidget *overscan;
GtkWidget *flicker_filter;
-
+
GtkWidget *brightness;
GtkWidget *hue;
GtkWidget *contrast;
@@ -74,7 +73,6 @@ struct _CtkDisplayDeviceTv
GtkWidget *image_sliders;
- GtkWidget *edid_box;
GtkWidget *edid;
GtkWidget *reset_button;
};
@@ -87,7 +85,7 @@ struct _CtkDisplayDeviceTvClass
GType ctk_display_device_tv_get_type (void) G_GNUC_CONST;
GtkWidget* ctk_display_device_tv_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
- unsigned int, char *);
+ char *);
GtkTextBuffer *ctk_display_device_tv_create_help(GtkTextTagTable *,
CtkDisplayDeviceTv *);
diff --git a/src/gtk+-2.x/ctkdisplaydevice.c b/src/gtk+-2.x/ctkdisplaydevice.c
new file mode 100644
index 0000000..3421e75
--- /dev/null
+++ b/src/gtk+-2.x/ctkdisplaydevice.c
@@ -0,0 +1,708 @@
+/*
+ * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+ * and Linux systems.
+ *
+ * Copyright (C) 2004 NVIDIA Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses>.
+ */
+
+#include <gtk/gtk.h>
+#include <NvCtrlAttributes.h>
+
+#include "ctkbanner.h"
+
+#include "ctkdisplaydevice.h"
+
+#include "ctkditheringcontrols.h"
+#include "ctkcolorcontrols.h"
+#include "ctkimagesliders.h"
+#include "ctkedid.h"
+#include "ctkconfig.h"
+#include "ctkhelp.h"
+#include "ctkutils.h"
+#include <stdio.h>
+
+static void ctk_display_device_class_init(CtkDisplayDeviceClass *);
+static void ctk_display_device_finalize(GObject *);
+
+static void reset_button_clicked(GtkButton *button, gpointer user_data);
+
+static void update_device_info(CtkDisplayDevice *ctk_object);
+
+static void display_device_setup(CtkDisplayDevice *ctk_object);
+
+static void enabled_displays_received(GtkObject *object, gpointer arg1,
+ gpointer user_data);
+
+static void info_update_received(GtkObject *object, gpointer arg1,
+ gpointer user_data);
+
+
+#define FRAME_PADDING 5
+
+static const char *__info_help =
+"This section describes basic information about the connection to the display "
+"device.";
+
+static const char *__info_chip_location_help =
+"Report whether the display device is driven by the on-chip controller "
+"(internal), or a separate controller chip elsewhere on the graphics "
+"board (external).";
+
+static const char *__info_link_help =
+"For DVI connections, reports whether the specified display device is "
+"driven by a single link or dual link connection. For DisplayPort "
+"connections, reports the bandwidth of the connection.";
+
+static const char *__info_signal_help =
+"Report whether the flat panel is driven by an LVDS, TMDS, or DisplayPort "
+"signal.";
+
+static const char * __native_res_help =
+"The Native Resolution is the width and height in pixels that the display "
+"device uses to display the image. All other resolutions must be scaled "
+"to this resolution by the GPU and/or the device's built-in scaler.";
+
+static const char * __refresh_rate_help =
+"The refresh rate displays the rate at which the screen is currently "
+"refreshing the image.";
+
+GType ctk_display_device_get_type(void)
+{
+ static GType ctk_object_type = 0;
+
+ if (!ctk_object_type) {
+ static const GTypeInfo ctk_object_info = {
+ sizeof (CtkDisplayDeviceClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) ctk_display_device_class_init,
+ NULL, /* class_finalize, */
+ NULL, /* class_data */
+ sizeof (CtkDisplayDevice),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL /* value_table */
+ };
+
+ ctk_object_type = g_type_register_static(GTK_TYPE_VBOX,
+ "CtkDisplayDevice",
+ &ctk_object_info, 0);
+ }
+
+ return ctk_object_type;
+}
+
+static void ctk_display_device_class_init(
+ CtkDisplayDeviceClass *ctk_object_class
+)
+{
+ GObjectClass *gobject_class = (GObjectClass *)ctk_object_class;
+ gobject_class->finalize = ctk_display_device_finalize;
+}
+
+static void ctk_display_device_finalize(
+ GObject *object
+)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(object);
+ g_free(ctk_object->name);
+ g_signal_handlers_disconnect_matched(ctk_object->ctk_event,
+ G_SIGNAL_MATCH_DATA,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ (gpointer) ctk_object);
+}
+
+
+/*
+ * ctk_display_device_new() - constructor for the dissplay device page.
+ */
+
+GtkWidget* ctk_display_device_new(NvCtrlAttributeHandle *handle,
+ CtkConfig *ctk_config,
+ CtkEvent *ctk_event,
+ char *name,
+ char *typeBaseName)
+{
+ GObject *object;
+ CtkDisplayDevice *ctk_object;
+ GtkWidget *banner;
+ GtkWidget *frame;
+ GtkWidget *hbox, *tmpbox;
+
+ GtkWidget *alignment;
+ GtkWidget *notebook;
+ GtkWidget *nbox;
+ GtkWidget *align;
+
+ object = g_object_new(CTK_TYPE_DISPLAY_DEVICE, NULL);
+ if (!object) return NULL;
+
+ ctk_object = CTK_DISPLAY_DEVICE(object);
+ ctk_object->handle = handle;
+ ctk_object->ctk_event = ctk_event;
+ ctk_object->ctk_config = ctk_config;
+ ctk_object->name = g_strdup(name);
+
+ gtk_box_set_spacing(GTK_BOX(object), 10);
+
+ /* banner */
+
+ banner = ctk_banner_image_new(BANNER_ARTWORK_DFP);
+ gtk_box_pack_start(GTK_BOX(object), banner, FALSE, FALSE, 0);
+
+ /*
+ * create the reset button (which we need while creating the
+ * controls in this page so that we can set the button's
+ * sensitivity), though we pack it at the bottom of the page
+ */
+
+ ctk_object->reset_button =
+ gtk_button_new_with_label("Reset Hardware Defaults");
+
+ alignment = gtk_alignment_new(1, 1, 0, 0);
+ gtk_container_add(GTK_CONTAINER(alignment), ctk_object->reset_button);
+ gtk_box_pack_end(GTK_BOX(object), alignment, TRUE, TRUE, 0);
+
+ g_signal_connect(G_OBJECT(ctk_object->reset_button),
+ "clicked", G_CALLBACK(reset_button_clicked),
+ (gpointer) ctk_object);
+
+ ctk_config_set_tooltip(ctk_config, ctk_object->reset_button,
+ ctk_help_create_reset_hardware_defaults_text(typeBaseName,
+ name));
+
+ /* Create tabbed notebook for widget */
+
+ notebook = gtk_notebook_new();
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
+ align = gtk_alignment_new(0, 0, 1, 1);
+ gtk_container_add(GTK_CONTAINER(align), notebook);
+ gtk_box_pack_start(GTK_BOX(object), align, FALSE, FALSE, 0);
+
+ /* Create first tab for device info */
+
+ nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
+ gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), nbox,
+ gtk_label_new("Information"));
+
+ /* create the hbox to store device info */
+
+ hbox = gtk_hbox_new(FALSE, FRAME_PADDING);
+ gtk_box_pack_start(GTK_BOX(nbox), hbox, FALSE, FALSE, FRAME_PADDING);
+
+ /* Device info */
+
+ frame = gtk_frame_new("Device Information");
+ gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
+
+ /*
+ * insert a vbox between the frame and the widgets, so that the
+ * widgets don't expand to fill all of the space within the
+ * frame
+ */
+
+ tmpbox = gtk_vbox_new(FALSE, FRAME_PADDING);
+ gtk_container_set_border_width(GTK_CONTAINER(tmpbox), FRAME_PADDING);
+ gtk_container_add(GTK_CONTAINER(frame), tmpbox);
+
+ /* Make the txt widgets that will get updated */
+ ctk_object->txt_chip_location = gtk_label_new("");
+ ctk_object->txt_link = gtk_label_new("");
+ ctk_object->txt_signal = gtk_label_new("");
+ ctk_object->txt_native_resolution = gtk_label_new("");
+ ctk_object->txt_refresh_rate = gtk_label_new("");
+
+ /* Add information widget lines */
+ {
+ typedef struct {
+ GtkWidget *label;
+ GtkWidget *txt;
+ const gchar *tooltip;
+ } TextLineInfo;
+
+ TextLineInfo lines[] = {
+ {
+ gtk_label_new("Chip location:"),
+ ctk_object->txt_chip_location,
+ __info_chip_location_help
+ },
+ {
+ gtk_label_new("Connection link:"),
+ ctk_object->txt_link,
+ __info_link_help
+ },
+ {
+ gtk_label_new("Signal:"),
+ ctk_object->txt_signal,
+ __info_signal_help
+ },
+ {
+ gtk_label_new("Native Resolution:"),
+ ctk_object->txt_native_resolution,
+ __native_res_help,
+ },
+ {
+ gtk_label_new("Refresh Rate:"),
+ ctk_object->txt_refresh_rate,
+ __refresh_rate_help,
+ },
+ { NULL, NULL, NULL }
+ };
+ int i;
+
+ GtkRequisition req;
+ int max_width;
+
+ /* Compute max width of lables and setup text alignments */
+ max_width = 0;
+ for (i = 0; lines[i].label; i++) {
+ gtk_misc_set_alignment(GTK_MISC(lines[i].label), 0.0f, 0.5f);
+ gtk_misc_set_alignment(GTK_MISC(lines[i].txt), 0.0f, 0.5f);
+
+ gtk_widget_size_request(lines[i].label, &req);
+ if (max_width < req.width) {
+ max_width = req.width;
+ }
+ }
+
+ /* Pack labels */
+ for (i = 0; lines[i].label; i++) {
+ GtkWidget *tmphbox;
+
+ /* Add separators */
+ if (i == 3 || i == 5 || i == 7) {
+ GtkWidget *separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(tmpbox), separator,
+ FALSE, FALSE, 0);
+ }
+
+ /* Set the label's width */
+ gtk_widget_set_size_request(lines[i].label, max_width, -1);
+
+ /* add the widgets for this line */
+ tmphbox = gtk_hbox_new(FALSE, FRAME_PADDING);
+ gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].label,
+ FALSE, TRUE, FRAME_PADDING);
+ gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].txt,
+ FALSE, TRUE, FRAME_PADDING);
+
+ /* Include tooltips */
+ if (lines[i].tooltip) {
+ ctk_config_set_tooltip(ctk_config,
+ lines[i].label,
+ lines[i].tooltip);
+ ctk_config_set_tooltip(ctk_config,
+ lines[i].txt,
+ lines[i].tooltip);
+ }
+ gtk_box_pack_start(GTK_BOX(tmpbox), tmphbox, FALSE, FALSE, 0);
+ }
+ }
+
+ /* pack the EDID button */
+
+ ctk_object->edid = ctk_edid_new(ctk_object->handle,
+ ctk_object->ctk_config,
+ ctk_object->ctk_event,
+ ctk_object->name);
+
+ hbox = gtk_hbox_new(FALSE, 0);
+ align = gtk_alignment_new(0, 1, 1, 1);
+ gtk_container_add(GTK_CONTAINER(align), hbox);
+ gtk_box_pack_end(GTK_BOX(nbox), align, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->edid, TRUE, TRUE, 0);
+
+ /*
+ * Create layout for second tab for controls but don't add the tab until we
+ * make sure its required
+ */
+
+ nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
+ gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
+
+ /* pack the color controls */
+
+ ctk_object->color_controls =
+ ctk_color_controls_new(handle, ctk_config, ctk_event,
+ ctk_object->reset_button, name);
+
+ if (ctk_object->color_controls) {
+ gtk_box_pack_start(GTK_BOX(nbox), ctk_object->color_controls,
+ FALSE, FALSE, 0);
+ }
+
+ /* pack the dithering controls */
+
+ ctk_object->dithering_controls =
+ ctk_dithering_controls_new(handle, ctk_config, ctk_event,
+ ctk_object->reset_button, name);
+
+ if (ctk_object->dithering_controls) {
+ gtk_box_pack_start(GTK_BOX(nbox), ctk_object->dithering_controls,
+ FALSE, FALSE, 0);
+ }
+
+ /* pack the image sliders */
+
+ ctk_object->image_sliders =
+ ctk_image_sliders_new(handle, ctk_config, ctk_event,
+ ctk_object->reset_button, name);
+ if (ctk_object->image_sliders) {
+ gtk_box_pack_start(GTK_BOX(nbox), ctk_object->image_sliders,
+ FALSE, FALSE, 0);
+ }
+
+ /* If no controls are created, don't add a controls tab */
+
+ if (ctk_object->color_controls ||
+ ctk_object->dithering_controls ||
+ ctk_object->image_sliders) {
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), nbox,
+ gtk_label_new("Controls"));
+ }
+
+ /* show the page */
+
+ gtk_widget_show_all(GTK_WIDGET(object));
+
+ /* Update the GUI */
+
+ update_display_enabled_flag(ctk_object->handle,
+ &ctk_object->display_enabled);
+
+ display_device_setup(ctk_object);
+
+ /* handle enable/disable events on the display device */
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_ENABLED_DISPLAYS),
+ G_CALLBACK(enabled_displays_received),
+ (gpointer) ctk_object);
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE),
+ G_CALLBACK(info_update_received),
+ (gpointer) ctk_object);
+
+ return GTK_WIDGET(object);
+
+} /* ctk_display_device_new() */
+
+
+
+/*
+ * reset_button_clicked() - callback when the reset button is clicked
+ */
+
+static void reset_button_clicked(GtkButton *button, gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_object->reset_button, FALSE);
+
+ ctk_color_controls_reset(CTK_COLOR_CONTROLS(ctk_object->color_controls));
+
+ ctk_dithering_controls_reset
+ (CTK_DITHERING_CONTROLS(ctk_object->dithering_controls));
+
+ ctk_image_sliders_reset(CTK_IMAGE_SLIDERS(ctk_object->image_sliders));
+
+ ctk_config_statusbar_message(ctk_object->ctk_config,
+ "Reset hardware defaults for %s.",
+ ctk_object->name);
+
+} /* reset_button_clicked() */
+
+
+
+/*
+ * ctk_display_device_create_help() - construct the display device help page
+ */
+
+GtkTextBuffer *ctk_display_device_create_help(GtkTextTagTable *table,
+ CtkDisplayDevice *ctk_object)
+{
+ GtkTextIter i;
+ GtkTextBuffer *b;
+ GtkTooltipsData *td;
+
+ b = gtk_text_buffer_new(table);
+
+ gtk_text_buffer_get_iter_at_offset(b, &i, 0);
+
+ ctk_help_title(b, &i, "%s Help", ctk_object->name);
+
+ ctk_help_heading(b, &i, "Device Information");
+ ctk_help_para(b, &i, __info_help);
+
+ ctk_help_term(b, &i, "Chip Location");
+ ctk_help_para(b, &i, __info_chip_location_help);
+
+ ctk_help_term(b, &i, "Link");
+ ctk_help_para(b, &i, __info_link_help);
+
+ ctk_help_term(b, &i, "Signal");
+ ctk_help_para(b, &i, __info_signal_help);
+
+ ctk_help_term(b, &i, "Native Resolution");
+ ctk_help_para(b, &i, __native_res_help);
+
+ ctk_help_term(b, &i, "Refresh Rate");
+ ctk_help_para(b, &i, __refresh_rate_help);
+
+ add_acquire_edid_help(b, &i);
+
+ add_color_controls_help
+ (CTK_COLOR_CONTROLS(ctk_object->color_controls), b, &i);
+
+ add_dithering_controls_help
+ (CTK_DITHERING_CONTROLS(ctk_object->dithering_controls), b, &i);
+
+ add_image_sliders_help
+ (CTK_IMAGE_SLIDERS(ctk_object->image_sliders), b, &i);
+
+ td = gtk_tooltips_data_get(GTK_WIDGET(ctk_object->reset_button));
+ ctk_help_reset_hardware_defaults(b, &i, td->tip_text);
+
+ ctk_help_finish(b);
+
+ return b;
+
+} /* ctk_display_device_create_help() */
+
+
+static void update_link(CtkDisplayDevice *ctk_object)
+{
+ ReturnStatus ret;
+ gint val, signal_type = ctk_object->signal_type;
+ const char *link = "Unknown";
+ char tmp[32];
+
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_FLATPANEL_LINK, &val);
+ if (ret == NvCtrlSuccess) {
+ if (signal_type == NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT) {
+ int lanes;
+
+ lanes = val + 1;
+
+ ret = NvCtrlGetAttribute(ctk_object->handle,
+ NV_CTRL_DISPLAYPORT_LINK_RATE, &val);
+ if ((ret == NvCtrlSuccess) &&
+ (val == NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED)) {
+ link = "Disabled";
+ } else {
+ const char *bw = "unknown bandwidth";
+
+ if (ret == NvCtrlSuccess) {
+ switch (val) {
+ case NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS:
+ bw = "1.62 Gbps";
+ break;
+ case NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS:
+ bw = "2.70 Gbps";
+ break;
+ }
+ }
+
+ snprintf(tmp, 32, "%d lane%s @ %s", lanes, lanes == 1 ? "" : "s",
+ bw);
+ link = tmp;
+ }
+ } else {
+ // LVDS or TMDS
+ switch(val) {
+ case NV_CTRL_FLATPANEL_LINK_SINGLE:
+ link = "Single";
+ break;
+ case NV_CTRL_FLATPANEL_LINK_DUAL:
+ link = "Dual";
+ break;
+ }
+ }
+ }
+
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_link), link);
+}
+
+
+static void callback_link_changed(GtkObject *object, gpointer arg1,
+ gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ update_link(ctk_object);
+}
+
+/*
+ * update_device_info() - (Re)Queries the static display device information.
+ */
+static void update_device_info(CtkDisplayDevice *ctk_object)
+{
+ ReturnStatus ret;
+ gint val;
+ char *chip_location, *link, *signal;
+ CtkEvent *ctk_event = ctk_object->ctk_event;
+
+ chip_location = link = signal = "Unknown";
+
+ /* Chip location */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle,
+ NV_CTRL_FLATPANEL_CHIP_LOCATION, &val);
+ if (ret == NvCtrlSuccess) {
+ switch (val) {
+ case NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL:
+ chip_location = "Internal";
+ break;
+ case NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL:
+ chip_location = "External";
+ break;
+ }
+ }
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_chip_location), chip_location);
+
+ /* Signal */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_FLATPANEL_SIGNAL,
+ &val);
+ if (ret == NvCtrlSuccess) {
+ switch (val) {
+ case NV_CTRL_FLATPANEL_SIGNAL_LVDS:
+ signal = "LVDS";
+ break;
+ case NV_CTRL_FLATPANEL_SIGNAL_TMDS:
+ signal = "TMDS";
+ break;
+ case NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT:
+ signal = "DisplayPort";
+ break;
+ }
+ }
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_signal), signal);
+ ctk_object->signal_type = val;
+
+ /* Link */
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_FLATPANEL_LINK),
+ G_CALLBACK(callback_link_changed),
+ (gpointer) ctk_object);
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_DISPLAYPORT_LINK_RATE),
+ G_CALLBACK(callback_link_changed),
+ (gpointer) ctk_object);
+
+ update_link(ctk_object);
+
+ /* Native Resolution */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle,
+ NV_CTRL_FLATPANEL_NATIVE_RESOLUTION, &val);
+ if (ret == NvCtrlSuccess) {
+ gchar *resolution =
+ g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_native_resolution),
+ resolution);
+ g_free(resolution);
+ } else {
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_native_resolution),
+ "Unknown");
+ }
+
+ /* Refresh Rate */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_REFRESH_RATE, &val);
+ if (ret == NvCtrlSuccess) {
+ char str[32];
+ float fvalue = ((float)(val)) / 100.0f;
+ snprintf(str, 32, "%.2f Hz", fvalue);
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_refresh_rate), str);
+ } else {
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_refresh_rate), "Unknown");
+ }
+
+} /* update_device_info() */
+
+
+
+/*
+ * Updates the display device page to reflect the current
+ * configuration of the display device.
+ */
+static void display_device_setup(CtkDisplayDevice *ctk_object)
+{
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_object->reset_button, FALSE);
+
+
+ /* Update info */
+
+ update_device_info(ctk_object);
+
+ ctk_edid_setup(CTK_EDID(ctk_object->edid));
+
+ /* Update controls */
+
+ ctk_color_controls_setup(CTK_COLOR_CONTROLS(ctk_object->color_controls));
+
+ ctk_dithering_controls_setup
+ (CTK_DITHERING_CONTROLS(ctk_object->dithering_controls));
+
+ ctk_image_sliders_setup(CTK_IMAGE_SLIDERS(ctk_object->image_sliders));
+
+} /* display_device_setup() */
+
+
+
+/*
+ * When the list of enabled displays on the GPU changes,
+ * this page should disable/enable access based on whether
+ * or not the display device is enabled.
+ */
+static void enabled_displays_received(GtkObject *object, gpointer arg1,
+ gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ /* Requery display information only if display disabled */
+
+ update_display_enabled_flag(ctk_object->handle,
+ &ctk_object->display_enabled);
+
+ display_device_setup(ctk_object);
+
+} /* enabled_displays_received() */
+
+
+/*
+ * Update UI when display information changed.
+ */
+static void info_update_received(GtkObject *object, gpointer arg1,
+ gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ update_device_info(ctk_object);
+}
diff --git a/src/gtk+-2.x/ctkdisplaydevice.h b/src/gtk+-2.x/ctkdisplaydevice.h
new file mode 100644
index 0000000..ed69aa0
--- /dev/null
+++ b/src/gtk+-2.x/ctkdisplaydevice.h
@@ -0,0 +1,93 @@
+/*
+ * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+ * and Linux systems.
+ *
+ * Copyright (C) 2004 NVIDIA Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses>.
+ */
+
+#ifndef __CTK_DISPLAYDEVICE_H__
+#define __CTK_DISPLAYDEVICE_H__
+
+#include "ctkevent.h"
+#include "ctkconfig.h"
+
+G_BEGIN_DECLS
+
+#define CTK_TYPE_DISPLAY_DEVICE (ctk_display_device_get_type())
+
+#define CTK_DISPLAY_DEVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_DISPLAY_DEVICE, \
+ CtkDisplayDevice))
+
+#define CTK_DISPLAY_DEVICE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_DISPLAY_DEVICE, \
+ CtkDisplayDeviceClass))
+
+#define CTK_IS_DISPLAY_DEVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_DISPLAY_DEVICE))
+
+#define CTK_IS_DISPLAY_DEVICE_CLASS(class) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_DISPLAY_DEVICE))
+
+#define CTK_DISPLAY_DEVICE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_DISPLAY_DEVICE, \
+ CtkDisplayDeviceClass))
+
+
+typedef struct _CtkDisplayDevice CtkDisplayDevice;
+typedef struct _CtkDisplayDeviceClass CtkDisplayDeviceClass;
+
+struct _CtkDisplayDevice
+{
+ GtkVBox parent;
+
+ NvCtrlAttributeHandle *handle;
+ CtkConfig *ctk_config;
+ CtkEvent *ctk_event;
+ GtkWidget *image_sliders;
+ GtkWidget *reset_button;
+ GtkWidget *edid;
+ GtkWidget *dithering_controls;
+ GtkWidget *color_controls;
+
+ GtkWidget *txt_chip_location;
+ GtkWidget *txt_link;
+ GtkWidget *txt_signal;
+ GtkWidget *txt_native_resolution;
+ GtkWidget *txt_refresh_rate;
+
+ gboolean display_enabled;
+ unsigned int active_attributes;
+
+ char *name;
+ gint signal_type;
+};
+
+struct _CtkDisplayDeviceClass
+{
+ GtkVBoxClass parent_class;
+};
+
+GType ctk_display_device_get_type (void) G_GNUC_CONST;
+GtkWidget* ctk_display_device_new (NvCtrlAttributeHandle *,
+ CtkConfig *, CtkEvent *,
+ char *, char *);
+
+GtkTextBuffer *ctk_display_device_create_help(GtkTextTagTable *,
+ CtkDisplayDevice *);
+
+G_END_DECLS
+
+#endif /* __CTK_DISPLAYDEVICE_H__ */
diff --git a/src/gtk+-2.x/ctkdisplaylayout.c b/src/gtk+-2.x/ctkdisplaylayout.c
index f5318ec..83f0579 100644
--- a/src/gtk+-2.x/ctkdisplaylayout.c
+++ b/src/gtk+-2.x/ctkdisplaylayout.c
@@ -265,30 +265,6 @@ static void zorder_layout(CtkDisplayLayout *ctk_object)
-/** get_selected() ***************************************************
- *
- * Returns the currently selected display and/or screen. This
- * function is only useful for keeping track of when something new
- * has been selected.
- *
- **/
-
-static void * get_selected(CtkDisplayLayout *ctk_object)
-{
- if (ctk_object->selected_display) {
- return ctk_object->selected_display;
- }
-
- if (ctk_object->selected_screen) {
- return ctk_object->selected_screen;
- }
-
- return NULL;
-
-} /* get_selected() */
-
-
-
/** get_metamode() ***************************************************
*
* Returns a screen's metamode_idx'th metamode, clamping to the last
@@ -2225,10 +2201,10 @@ static int pan_selected(CtkDisplayLayout *ctk_object, int x, int y, int snap)
*
**/
-ZNode *get_screen_zorder_move_data(CtkDisplayLayout *ctk_object,
- nvScreenPtr screen,
- int move_to,
- int *screen_at)
+static ZNode *get_screen_zorder_move_data(CtkDisplayLayout *ctk_object,
+ nvScreenPtr screen,
+ int move_to,
+ int *screen_at)
{
ZNode *tmpzo;
int i;
@@ -2411,119 +2387,6 @@ static void select_default_item(CtkDisplayLayout *ctk_object)
-/** pushback_display() ***********************************************
- *
- * Moves the specified display to the end of the Z-order.
- *
- **/
-
-static void pushback_display(CtkDisplayLayout *ctk_object,
- nvDisplayPtr display)
-{
- int i;
- int move_to;
-
- for (i = 0; i < ctk_object->Zcount; i++) {
-
- /* Find the display */
- if (ctk_object->Zorder[i].type == ZNODE_TYPE_DISPLAY &&
- ctk_object->Zorder[i].u.display == display) {
-
- if (!display->screen) {
- /* Move display to the end of the list. */
- move_to = ctk_object->Zcount - 1;
- } else {
- /* Move display prior to its X screen */
- for (move_to = i+1;
- move_to < ctk_object->Zcount;
- move_to++) {
- if (ctk_object->Zorder[move_to].type ==
- ZNODE_TYPE_SCREEN &&
- ctk_object->Zorder[move_to].u.screen ==
- display->screen) {
- break;
- }
- }
- move_to--;
- }
-
- // Now move dispay from i to move_to
- if (i != move_to) {
- memmove(ctk_object->Zorder + i,
- ctk_object->Zorder + i + 1,
- (move_to - i)*sizeof(ZNode));
-
- /* Place the display at the top */
- ctk_object->Zorder[move_to].type = ZNODE_TYPE_DISPLAY;
- ctk_object->Zorder[move_to].u.display = display;
- }
-
- break;
- }
- }
-
-} /* pushback_display() */
-
-
-
-/** pushback_screen() ************************************************
- *
- * Moves the specified screen to the end of the Z-order.
- *
- **/
-
-static void pushback_screen(CtkDisplayLayout *ctk_object,
- nvScreenPtr screen)
-{
- int move_to = ctk_object->Zcount -1;
- int screen_at;
- ZNode *tmpzo;
-
- /* Get a copy of the zorder buffer for the screen */
- tmpzo = get_screen_zorder_move_data(ctk_object, screen, move_to,
- &screen_at);
- if (!tmpzo) return;
-
- /* Move other nodes up to make room at the bottom */
- memmove(ctk_object->Zorder + screen_at - screen->num_displays,
- ctk_object->Zorder + screen_at + 1,
- (move_to - screen_at)*sizeof(ZNode));
-
- /* Copy the screen and its displays to the bottom */
- memcpy(ctk_object->Zorder + move_to - screen->num_displays,
- tmpzo,
- (1 + screen->num_displays)*sizeof(ZNode));
-
- free(tmpzo);
-
-} /* pushback_screen() */
-
-
-
-/** pushback_selected() **********************************************
- *
- * Moves the specified display or screen to the end of the Z-order.
- *
- **/
-
-static void pushback_selected(CtkDisplayLayout *ctk_object)
-{
- /* Pushback the selected display if it has no screen or
- * is part of twinview to avoid selecting the screen of
- * single-display screens.
- */
- if (ctk_object->selected_display &&
- (!ctk_object->selected_screen ||
- ctk_object->selected_screen->num_displays > 1)) {
- pushback_display(ctk_object, ctk_object->selected_display);
- } else if (ctk_object->selected_screen) {
- pushback_screen(ctk_object, ctk_object->selected_screen);
- }
-
-} /* pushback_selected() */
-
-
-
/** get_display_tooltip() ********************************************
*
* Returns the text to use for displaying a tooltip from the given
@@ -2549,7 +2412,7 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
/* Display does not have a screen (not configured) */
if (!(display->screen)) {
tip = g_strdup_printf("%s : Disabled (GPU: %s)",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
/* Basic view */
@@ -2557,19 +2420,19 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
/* Display has no mode */
if (!display->cur_mode) {
- tip = g_strdup_printf("%s", display->name);
+ tip = g_strdup_printf("%s", display->logName);
/* Display does not have a current modeline (Off) */
} else if (!(display->cur_mode->modeline)) {
tip = g_strdup_printf("%s : Off",
- display->name);
+ display->logName);
/* Display has mode/modeline */
} else {
float ref = display->cur_mode->modeline->refresh_rate;
tip = g_strdup_printf("%s : %dx%d @ %.*f Hz",
- display->name,
+ display->logName,
display->cur_mode->modeline->data.hdisplay,
display->cur_mode->modeline->data.vdisplay,
(display->is_sdi ? 3 : 0),
@@ -2584,14 +2447,14 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
/* Display has no mode */
if (!display->cur_mode) {
tip = g_strdup_printf("%s\n(X Screen %d)\n(GPU: %s)",
- display->name,
+ display->logName,
display->screen->scrnum,
display->gpu->name);
/* Display does not have a current modeline (Off) */
} else if (!(display->cur_mode->modeline)) {
tip = g_strdup_printf("%s : Off\n(X Screen %d)\n(GPU: %s)",
- display->name,
+ display->logName,
display->screen->scrnum,
display->gpu->name);
@@ -2600,7 +2463,7 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
float ref = display->cur_mode->modeline->refresh_rate;
tip = g_strdup_printf("%s : %dx%d @ %.*f Hz\n(X Screen %d)\n"
"(GPU: %s)",
- display->name,
+ display->logName,
display->cur_mode->modeline->data.hdisplay,
display->cur_mode->modeline->data.vdisplay,
(display->is_sdi ? 3 : 0),
@@ -2739,8 +2602,7 @@ static char *get_tooltip_under_mouse(CtkDisplayLayout *ctk_object,
*
**/
-static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
- nvScreenPtr reselect_screen)
+static int click_layout(CtkDisplayLayout *ctk_object, int x, int y)
{
int i;
nvDisplayPtr cur_selected_display = ctk_object->selected_display;
@@ -2754,7 +2616,7 @@ static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
ctk_object->clicked_outside = 1;
ctk_object->selected_display = NULL;
ctk_object->selected_screen = NULL;
-
+
/* Look through the Z-order for the next element */
for (i = 0; i < ctk_object->Zcount; i++) {
@@ -2763,19 +2625,10 @@ static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
if (display->cur_mode &&
point_in_dim(display->cur_mode->pan, x, y)) {
- /* Re-select the screen instead of the display
- * (after a move)
- */
- if (display->screen &&
- (reselect_screen == display->screen)) {
- select_screen(ctk_object, display->screen);
- } else {
- select_display(ctk_object, display);
- }
+ select_display(ctk_object, display);
ctk_object->clicked_outside = 0;
break;
}
-
} else if (ctk_object->Zorder[i].type == ZNODE_TYPE_SCREEN) {
screen = ctk_object->Zorder[i].u.screen;
sdim = get_screen_dim(screen, 1);
@@ -2826,6 +2679,7 @@ GType ctk_display_layout_get_type(void)
sizeof(CtkDisplayLayout),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_display_layout_type = g_type_register_static
@@ -3188,7 +3042,7 @@ static void draw_display(CtkDisplayLayout *ctk_object,
draw_rect_strs(ctk_object,
mode->dim,
&(ctk_object->fg_color),
- display->name,
+ display->logName,
tmp_str);
g_free(tmp_str);
@@ -4042,6 +3896,25 @@ void ctk_display_layout_select_display(CtkDisplayLayout *ctk_object,
+/** ctk_display_layout_select_screen() ************************
+ *
+ * Makes the given screen the thing that is selected.
+ *
+ **/
+
+void ctk_display_layout_select_screen(CtkDisplayLayout *ctk_object,
+ nvScreenPtr screen)
+{
+ /* Select the new display */
+ ctk_object->selected_display = NULL;
+ select_screen(ctk_object, screen);
+
+ queue_layout_redraw(ctk_object);
+
+} /* ctk_display_layout_select_screen() */
+
+
+
/** ctk_display_layout_update_display_count() ************************
*
* Updates the number of displays shown in the layout by re-building
@@ -4477,15 +4350,12 @@ button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
gpointer data)
{
CtkDisplayLayout *ctk_object = CTK_DISPLAY_LAYOUT(data);
- void *last_selected; /* Last thing selected */
- void *new_selected;
/* Scale and offset x & y so they reside in the clickable area */
int x = (event->x -ctk_object->img_dim[X]) / ctk_object->scale;
int y = (event->y -ctk_object->img_dim[Y]) / ctk_object->scale;
GdkEvent *next_event;
- nvScreenPtr reselect_screen = NULL;
ctk_object->last_mouse_x = event->x;
@@ -4516,74 +4386,10 @@ button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
switch (event->button) {
- /* Select a display device */
+ /* Handle selection of displays/X screens */
case Button1:
ctk_object->button1 = 1;
- last_selected = get_selected(ctk_object);
-
- /* If the user had a screen selected
- * and is not cycling through overlapping
- * elements (screens/displays), try to
- * re-select the screen instead of the display.
- */
- if (!ctk_object->first_selected_display &&
- !ctk_object->first_selected_screen &&
- !ctk_object->selected_display &&
- ctk_object->selected_screen
- ) {
- reselect_screen = ctk_object->selected_screen;
- }
-
- /* If user clicked on the same spot twice, push last
- * selection back in the Z-order.
- */
- if (ctk_object->first_selected_display ||
- ctk_object->first_selected_screen) {
- pushback_selected(ctk_object);
- }
-
- /* Do the click */
- click_layout(ctk_object, x, y, reselect_screen);
-
- /* Keep track of what is first selected to properly handle
- * cycling through displays and screens when user keeps
- * clicks on same spot.
- */
- new_selected = get_selected(ctk_object);
-
- /* If the user clicks a second time on a display that has a
- * screen (or has cycled/clicked through all the displays
- * on that screen), select the screen instead of the first
- * display that was originally clicked.
- */
- if (ctk_object->first_selected_display &&
- ctk_object->first_selected_screen &&
- (ctk_object->first_selected_display ==
- ctk_object->selected_display)
- ) {
- ctk_object->first_selected_display = NULL;
- ctk_object->selected_display = NULL;
- new_selected = ctk_object->first_selected_screen;
- } else {
- /* Keep track of the first display the user
- * clicked on wrt the screen the display
- * belongs to. (ie, if the user clicked
- * and we cycled to the next display in a
- * TwinView screen, don't reset the first
- * selected display.
- */
- if (!ctk_object->first_selected_display ||
- (ctk_object->first_selected_screen!=
- ctk_object->selected_screen)) {
- ctk_object->first_selected_display =
- ctk_object->selected_display;
- }
- }
-
- /* Keep track of the selected screen */
- ctk_object->first_selected_screen =
- ctk_object->selected_screen;
-
+ click_layout(ctk_object, x, y);
/* Report back selection event */
if (ctk_object->selected_callback) {
diff --git a/src/gtk+-2.x/ctkdisplaylayout.h b/src/gtk+-2.x/ctkdisplaylayout.h
index dfc6dab..bf74a58 100644
--- a/src/gtk+-2.x/ctkdisplaylayout.h
+++ b/src/gtk+-2.x/ctkdisplaylayout.h
@@ -128,6 +128,12 @@ G_BEGIN_DECLS
/*** T Y P E D E F I N I T I O N S *****************************************/
+typedef enum {
+ PASSIVE_STEREO_EYE_NONE = 0,
+ PASSIVE_STEREO_EYE_LEFT,
+ PASSIVE_STEREO_EYE_RIGHT,
+} PassiveStereoEye;
+
typedef struct nvModeLineRec {
struct nvModeLineRec *next;
@@ -167,6 +173,8 @@ typedef struct nvModeRec {
int position_type; /* Relative, Absolute, etc. */
struct nvDisplayRec *relative_to; /* Display Relative/RightOf etc */
+ PassiveStereoEye passive_stereo_eye; /* Stereo mode 4 per-dpy setting */
+
} nvMode, *nvModePtr;
@@ -177,11 +185,19 @@ typedef struct nvDisplayRec {
struct nvDisplayRec *next_in_screen;
XConfigMonitorPtr conf_monitor;
+ NvCtrlAttributeHandle *handle; /* NV-CONTROL handle to device */
+
struct nvGpuRec *gpu; /* GPU the display belongs to */
struct nvScreenRec *screen; /* X screen the display is tied to */
- unsigned int device_mask; /* Bit mask to identify the display */
- char *name; /* Display name (from NV-CONTROL) */
+ char *logName; /* Display name (from NV-CONTROL) */
+ char *typeBaseName; /* e.g. "CRT", "DFP", "TV" */
+ char *typeIdName; /* e.g. "DFP-1", "TV-0" */
+ char *dpGuidName; /* e.g. "DP-GUID-11111111-1111-1111-1111-111111111111" */
+ char *edidHashName; /* e.g. "DPY-EDID-11111111-1111-1111-1111-111111111111" */
+ char *targetIdName; /* e.g. "DPY-3" */
+ char *randrName; /* e.g. "VGA-1", "DVI-I-2" */
+
Bool is_sdi; /* Is an SDI display */
nvModeLinePtr modelines; /* Modelines validated by X */
@@ -238,8 +254,8 @@ typedef struct nvScreenRec {
struct nvGpuRec *gpu; /* GPU driving this X screen */
int depth; /* Depth of the screen */
+ int stereo; /* Stereo mode enabled on this screen */
- unsigned int displays_mask; /* Display devices on this X screen */
nvDisplayPtr displays; /* List of displays using this screen */
int num_displays; /* # of displays using this screen */
@@ -259,6 +275,7 @@ typedef struct nvScreenRec {
Bool sli;
Bool dynamic_twinview; /* This screen supports dynamic twinview */
Bool no_scanout; /* This screen has no display devices */
+ Bool stereo_supported; /* Can stereo be configured on this screen */
} nvScreen, *nvScreenPtr;
@@ -289,8 +306,6 @@ typedef struct nvGpuRec {
char *name; /* Name of the GPU */
- unsigned int connected_displays; /* Bitmask of connected displays */
-
gchar *pci_bus_id;
GvoModeData *gvo_mode_data; /* Information about GVO modes available */
@@ -487,6 +502,8 @@ void ctk_display_layout_set_display_panning (CtkDisplayLayout *ctk_object,
int width, int height);
void ctk_display_layout_select_display (CtkDisplayLayout *ctk_object,
nvDisplayPtr display);
+void ctk_display_layout_select_screen (CtkDisplayLayout *ctk_object,
+ nvScreenPtr screen);
void ctk_display_layout_update_display_count (CtkDisplayLayout *,
nvDisplayPtr);
diff --git a/src/gtk+-2.x/ctkditheringcontrols.c b/src/gtk+-2.x/ctkditheringcontrols.c
index 1e98233..6898489 100644
--- a/src/gtk+-2.x/ctkditheringcontrols.c
+++ b/src/gtk+-2.x/ctkditheringcontrols.c
@@ -41,6 +41,8 @@ static gint map_nvctrl_value_to_table(CtkDitheringControls *ctk_dithering_contro
static Bool update_dithering_info(gpointer user_data);
+static void setup_reset_button(CtkDitheringControls *ctk_dithering_controls);
+
static void dithering_depth_menu_changed(GtkOptionMenu *dithering_depth_menu,
gpointer user_data);
static void dithering_mode_menu_changed(GtkOptionMenu *dithering_mode_menu,
@@ -63,6 +65,10 @@ static
void post_dithering_depth_update(CtkDitheringControls *ctk_dithering_controls,
gint dithering_depth);
+static gint map_dithering_config_menu_idx_to_nvctrl(gint idx);
+
+static gint map_dithering_depth_menu_idx_to_nvctrl(gint idx);
+
/* macros */
#define FRAME_PADDING 5
@@ -98,6 +104,7 @@ GType ctk_dithering_controls_get_type(void)
sizeof (CtkDitheringControls),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_dithering_controls_type =
@@ -113,7 +120,6 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
CtkConfig *ctk_config,
CtkEvent *ctk_event,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name)
{
GObject *object;
@@ -131,14 +137,13 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
ctk_dithering_controls->handle = handle;
ctk_dithering_controls->ctk_config = ctk_config;
ctk_dithering_controls->reset_button = reset_button;
- ctk_dithering_controls->display_device_mask = display_device_mask;
ctk_dithering_controls->name = strdup(name);
/* create main dithering box & frame */
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, FRAME_PADDING);
- ctk_dithering_controls->dithering_controls_main = hbox;
+ ctk_dithering_controls->dithering_controls_box = hbox;
frame = gtk_frame_new("Dithering Controls");
gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
@@ -205,7 +210,7 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
gtk_table_attach(GTK_TABLE(table), hbox, 3, 4, 0, 1,
GTK_FILL, GTK_FILL | GTK_EXPAND, 5, 0);
label = gtk_label_new(NULL);
- ctk_dithering_controls->dithering_current_config = label;
+ ctk_dithering_controls->dithering_config_txt = label;
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
@@ -255,7 +260,7 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
gtk_table_attach(GTK_TABLE(table), hbox, 3, 4, 2, 3,
GTK_FILL, GTK_FILL | GTK_EXPAND, 5, 0);
label = gtk_label_new(NULL);
- ctk_dithering_controls->dithering_current_mode = label;
+ ctk_dithering_controls->dithering_mode_txt = label;
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
@@ -322,7 +327,7 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
gtk_table_attach(GTK_TABLE(table), hbox, 3, 4, 4, 5,
GTK_FILL, GTK_FILL | GTK_EXPAND, 5, 0);
label = gtk_label_new(NULL);
- ctk_dithering_controls->dithering_current_depth = label;
+ ctk_dithering_controls->dithering_depth_txt = label;
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
@@ -361,6 +366,58 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
} /* ctk_dithering_controls_new() */
+
+/*
+ * setup_reset_button() - enables the reset button if any of the current
+ * settings are not the default.
+ */
+static void setup_reset_button(CtkDitheringControls *ctk_dithering_controls)
+{
+ gint history;
+ gint val;
+
+ if (!GTK_WIDGET_SENSITIVE(ctk_dithering_controls->dithering_controls_box)) {
+ /* Nothing is available, don't bother enabling the reset button yet. */
+ return;
+ }
+
+ /* The config menu is always available */
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_dithering_controls->dithering_config_menu));
+ val = map_dithering_config_menu_idx_to_nvctrl(history);
+ if (val != NV_CTRL_DITHERING_AUTO) {
+ goto enable;
+ }
+
+ if (GTK_WIDGET_SENSITIVE(ctk_dithering_controls->dithering_mode_box)) {
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_dithering_controls->dithering_mode_menu));
+ val = ctk_dithering_controls->dithering_mode_table[history];
+ if (val != NV_CTRL_DITHERING_MODE_AUTO) {
+ goto enable;
+ }
+ }
+
+ if (GTK_WIDGET_SENSITIVE(ctk_dithering_controls->dithering_depth_box)) {
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_dithering_controls->dithering_depth_menu));
+ val = map_dithering_depth_menu_idx_to_nvctrl(history);
+ if (val != NV_CTRL_DITHERING_DEPTH_AUTO) {
+ goto enable;
+ }
+ }
+
+ /* Don't disable reset button here, since other settings that are not
+ * managed by the ctk_image_slider here may need it enabled
+ */
+ return;
+
+ enable:
+ gtk_widget_set_sensitive(ctk_dithering_controls->reset_button, TRUE);
+}
+
+
+
/*
* ctk_dithering_controls_setup() - Setup routine for dithering attributes. Used
* in DFP setup stage as well as for updating the GUI when there is change in
@@ -377,9 +434,8 @@ void ctk_dithering_controls_setup(CtkDitheringControls *ctk_dithering_controls)
/* dithering */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING, &val)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING, &val)) {
val = NV_CTRL_DITHERING_AUTO;
}
@@ -438,10 +494,12 @@ void ctk_dithering_controls_setup(CtkDitheringControls *ctk_dithering_controls)
if (!update_dithering_info((gpointer)ctk_dithering_controls)) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
FALSE);
}
+ setup_reset_button(ctk_dithering_controls);
+
} /* ctk_dithering_controls_setup() */
@@ -453,21 +511,20 @@ static Bool update_dithering_info(gpointer user_data)
/* requested dithering */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING, &val)) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING, &val)) {
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
FALSE);
} else if (val == NV_CTRL_DITHERING_ENABLED ||
val == NV_CTRL_DITHERING_AUTO) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
TRUE);
gtk_widget_set_sensitive(ctk_dithering_controls->dithering_mode_box, TRUE);
gtk_widget_set_sensitive(ctk_dithering_controls->dithering_depth_box, TRUE);
gtk_widget_show(ctk_dithering_controls->dithering_mode_box);
gtk_widget_show(ctk_dithering_controls->dithering_depth_box);
} else if (val == NV_CTRL_DITHERING_DISABLED) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
TRUE);
gtk_widget_set_sensitive(ctk_dithering_controls->dithering_mode_box, FALSE);
gtk_widget_set_sensitive(ctk_dithering_controls->dithering_depth_box, FALSE);
@@ -475,26 +532,24 @@ static Bool update_dithering_info(gpointer user_data)
/* current dithering */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_CURRENT_DITHERING, &val)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_CURRENT_DITHERING, &val)) {
val = NV_CTRL_CURRENT_DITHERING_DISABLED;
}
if (val == NV_CTRL_CURRENT_DITHERING_ENABLED) {
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_config),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_config_txt),
"Enabled");
} else {
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_config),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_config_txt),
"Disabled");
}
/* dithering mode */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- &dithering_mode)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ &dithering_mode)) {
dithering_mode = NV_CTRL_DITHERING_MODE_AUTO;
}
@@ -517,39 +572,37 @@ static Bool update_dithering_info(gpointer user_data)
/* current dithering mode */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_CURRENT_DITHERING_MODE,
- &dithering_mode)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_CURRENT_DITHERING_MODE,
+ &dithering_mode)) {
dithering_mode = NV_CTRL_CURRENT_DITHERING_MODE_NONE;
}
switch (dithering_mode) {
case NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"Dynamic 2x2");
break;
case NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"Static 2x2");
break;
case NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"Temporal");
break;
default:
case NV_CTRL_CURRENT_DITHERING_MODE_NONE:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"None");
break;
}
/* dithering depth */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_DEPTH,
- &dithering_depth)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_DEPTH,
+ &dithering_depth)) {
dithering_depth = NV_CTRL_DITHERING_DEPTH_AUTO;
}
@@ -569,25 +622,24 @@ static Bool update_dithering_info(gpointer user_data)
/* current dithering depth */
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_CURRENT_DITHERING_DEPTH,
- &dithering_depth)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_CURRENT_DITHERING_DEPTH,
+ &dithering_depth)) {
dithering_depth = NV_CTRL_CURRENT_DITHERING_DEPTH_NONE;
}
switch (dithering_depth) {
case NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_depth),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_depth_txt),
"6 bpc");
break;
case NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_depth),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_depth_txt),
"8 bpc");
break;
default:
case NV_CTRL_CURRENT_DITHERING_DEPTH_NONE:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_depth),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_depth_txt),
"None");
break;
}
@@ -671,23 +723,11 @@ static void dithering_config_menu_changed(GtkOptionMenu *dithering_config_menu,
history = gtk_option_menu_get_history(dithering_config_menu);
- switch (history) {
- case 2:
- dithering_config = NV_CTRL_DITHERING_DISABLED;
- break;
- case 1:
- dithering_config = NV_CTRL_DITHERING_ENABLED;
- break;
- default:
- case 0:
- dithering_config = NV_CTRL_DITHERING_AUTO;
- break;
- }
+ dithering_config = map_dithering_config_menu_idx_to_nvctrl(history);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING,
- dithering_config);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING,
+ dithering_config);
g_signal_handlers_block_by_func
(G_OBJECT(ctk_dithering_controls->dithering_config_menu),
@@ -721,10 +761,9 @@ static void dithering_mode_menu_changed(GtkOptionMenu *dithering_mode_menu,
dithering_mode = ctk_dithering_controls->dithering_mode_table[history];
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- dithering_mode);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ dithering_mode);
dithering_mode = map_nvctrl_value_to_table(ctk_dithering_controls,
dithering_mode);
@@ -757,23 +796,11 @@ static void dithering_depth_menu_changed(GtkOptionMenu *dithering_depth_menu,
history = gtk_option_menu_get_history(dithering_depth_menu);
- switch (history) {
- case 2:
- dithering_depth = NV_CTRL_DITHERING_DEPTH_8_BITS;
- break;
- case 1:
- dithering_depth = NV_CTRL_DITHERING_DEPTH_6_BITS;
- break;
- default:
- case 0:
- dithering_depth = NV_CTRL_DITHERING_DEPTH_AUTO;
- break;
- }
+ dithering_depth = map_dithering_depth_menu_idx_to_nvctrl(history);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_DEPTH,
- dithering_depth);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_DEPTH,
+ dithering_depth);
g_signal_handlers_block_by_func
(G_OBJECT(ctk_dithering_controls->dithering_depth_menu),
@@ -806,20 +833,17 @@ void ctk_dithering_controls_reset(CtkDitheringControls *ctk_dithering_controls)
return;
}
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING,
- NV_CTRL_DITHERING_AUTO);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING,
+ NV_CTRL_DITHERING_AUTO);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- NV_CTRL_DITHERING_MODE_AUTO);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ NV_CTRL_DITHERING_MODE_AUTO);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_DEPTH,
- NV_CTRL_DITHERING_DEPTH_AUTO);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_DEPTH,
+ NV_CTRL_DITHERING_DEPTH_AUTO);
ctk_dithering_controls_setup(ctk_dithering_controls);
} /* ctk_dithering_controls_reset() */
@@ -856,12 +880,6 @@ static void dithering_update_received(GtkObject *object, gpointer arg1,
CtkDitheringControls *ctk_object = CTK_DITHERING_CONTROLS(user_data);
CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
-
ctk_dithering_controls_setup(ctk_object);
/* update status bar message */
@@ -892,12 +910,11 @@ static gboolean build_dithering_mode_table(CtkDitheringControls *ctk_dithering_c
free(ctk_dithering_controls->dithering_mode_table);
}
- ret =
- NvCtrlGetValidDisplayAttributeValues(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- &valid);
-
+ ret =
+ NvCtrlGetValidAttributeValues(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ &valid);
+
if (ret != NvCtrlSuccess || valid.type != ATTRIBUTE_TYPE_INT_BITS) {
/*
* We do not have valid information to build a mode table
@@ -954,3 +971,25 @@ static gint map_nvctrl_value_to_table(CtkDitheringControls *ctk_dithering_contro
return 0;
} /*map_nvctrl_value_to_table() */
+
+
+static gint map_dithering_config_menu_idx_to_nvctrl(gint idx)
+{
+ switch (idx) {
+ case 2: return NV_CTRL_DITHERING_DISABLED;
+ case 1: return NV_CTRL_DITHERING_ENABLED;
+ default: /* fallthrough; w/ warning? */
+ case 0: return NV_CTRL_DITHERING_AUTO;
+ }
+}
+
+
+static gint map_dithering_depth_menu_idx_to_nvctrl(gint idx)
+{
+ switch (idx) {
+ case 2: return NV_CTRL_DITHERING_DEPTH_8_BITS;
+ case 1: return NV_CTRL_DITHERING_DEPTH_6_BITS;
+ default: /* fallthrough; w/ warning? */
+ case 0: return NV_CTRL_DITHERING_DEPTH_AUTO;
+ }
+}
diff --git a/src/gtk+-2.x/ctkditheringcontrols.h b/src/gtk+-2.x/ctkditheringcontrols.h
index 8ce37fe..f87ac9c 100644
--- a/src/gtk+-2.x/ctkditheringcontrols.h
+++ b/src/gtk+-2.x/ctkditheringcontrols.h
@@ -54,22 +54,23 @@ struct _CtkDitheringControls
NvCtrlAttributeHandle *handle;
CtkConfig *ctk_config;
+ char *name;
GtkWidget *reset_button;
- GtkWidget *dithering_controls_main;
+
+ GtkWidget *dithering_controls_box;
GtkWidget *dithering_mode_box;
GtkWidget *dithering_depth_box;
GtkWidget *dithering_config_menu;
GtkWidget *dithering_mode_menu;
GtkWidget *dithering_depth_menu;
- GtkWidget *dithering_current_config;
- GtkWidget *dithering_current_mode;
- GtkWidget *dithering_current_depth;
- gint display_device_mask;
+ GtkWidget *dithering_config_txt;
+ GtkWidget *dithering_mode_txt;
+ GtkWidget *dithering_depth_txt;
+
gint *dithering_mode_table;
gint dithering_mode_table_size;
- char *name;
};
struct _CtkDitheringControlsClass
@@ -81,7 +82,6 @@ GType ctk_dithering_controls_get_type (void) G_GNUC_CONST;
GtkWidget* ctk_dithering_controls_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
GtkWidget *,
- unsigned int display_device_mask,
char *);
void ctk_dithering_controls_reset (CtkDitheringControls*);
diff --git a/src/gtk+-2.x/ctkdropdownmenu.c b/src/gtk+-2.x/ctkdropdownmenu.c
index f2665cd..0593a44 100644
--- a/src/gtk+-2.x/ctkdropdownmenu.c
+++ b/src/gtk+-2.x/ctkdropdownmenu.c
@@ -52,6 +52,7 @@ GType ctk_drop_down_menu_get_type(
sizeof (CtkDropDownMenu),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_drop_down_menu_type = g_type_register_static(GTK_TYPE_VBOX,
diff --git a/src/gtk+-2.x/ctkecc.c b/src/gtk+-2.x/ctkecc.c
index 5fb1b31..d6f0c3f 100644
--- a/src/gtk+-2.x/ctkecc.c
+++ b/src/gtk+-2.x/ctkecc.c
@@ -85,6 +85,7 @@ GType ctk_ecc_get_type(void)
sizeof (CtkEcc),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_ecc_type =
diff --git a/src/gtk+-2.x/ctkedid.c b/src/gtk+-2.x/ctkedid.c
index d31fdbd..e2e0bc6 100644
--- a/src/gtk+-2.x/ctkedid.c
+++ b/src/gtk+-2.x/ctkedid.c
@@ -72,6 +72,7 @@ GType ctk_edid_get_type(void)
sizeof (CtkEdid),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_edid_type = g_type_register_static (GTK_TYPE_VBOX,
@@ -82,37 +83,39 @@ GType ctk_edid_get_type(void)
}
-GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
- CtkConfig *ctk_config, CtkEvent *ctk_event,
- GtkWidget *reset_button,
- unsigned int display_device_mask,
- char *name)
+void ctk_edid_setup(CtkEdid *ctk_object)
{
- CtkEdid *ctk_edid;
- GObject *object;
- GtkWidget *frame, *vbox, *label, *hbox, *alignment;
ReturnStatus ret;
gint val;
- /* check if EDID is available for this display device */
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_EDID_AVAILABLE, &val);
- ret = NvCtrlGetDisplayAttribute(handle, display_device_mask,
- NV_CTRL_EDID_AVAILABLE, &val);
-
if ((ret != NvCtrlSuccess) || (val != NV_CTRL_EDID_AVAILABLE_TRUE)) {
- return NULL;
+ gtk_widget_set_sensitive(ctk_object->button, FALSE);
+ return;
}
+ gtk_widget_set_sensitive(ctk_object->button, TRUE);
+}
+
+
+GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
+ CtkConfig *ctk_config, CtkEvent *ctk_event,
+ char *name)
+{
+ CtkEdid *ctk_edid;
+ GObject *object;
+ GtkWidget *frame, *vbox, *label, *hbox, *alignment;
+
/* create the object */
-
+
object = g_object_new(CTK_TYPE_EDID, NULL);
+ if (!object) return NULL;
ctk_edid = CTK_EDID(object);
-
+
ctk_edid->handle = handle;
ctk_edid->ctk_config = ctk_config;
- ctk_edid->reset_button = reset_button;
- ctk_edid->display_device_mask = display_device_mask;
ctk_edid->name = name;
ctk_edid->filename = DEFAULT_EDID_FILENAME_BINARY;
ctk_edid->file_format = FILE_FORMAT_BINARY;
@@ -197,6 +200,8 @@ GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
gtk_widget_show_all(GTK_WIDGET(object));
+ ctk_edid_setup(ctk_edid);
+
return GTK_WIDGET(object);
} /* ctk_edid_new() */
@@ -290,8 +295,7 @@ static void button_clicked(GtkButton *button, gpointer user_data)
/* Grab EDID information */
- ret = NvCtrlGetBinaryAttribute(ctk_edid->handle,
- ctk_edid->display_device_mask,
+ ret = NvCtrlGetBinaryAttribute(ctk_edid->handle, 0,
NV_CTRL_BINARY_DATA_EDID,
&data, &len);
if (ret != NvCtrlSuccess) {
diff --git a/src/gtk+-2.x/ctkedid.h b/src/gtk+-2.x/ctkedid.h
index a9e9d8f..d29738d 100644
--- a/src/gtk+-2.x/ctkedid.h
+++ b/src/gtk+-2.x/ctkedid.h
@@ -51,19 +51,17 @@ typedef struct _CtkEdidClass CtkEdidClass;
struct _CtkEdid
{
GtkVBox parent;
-
+
NvCtrlAttributeHandle *handle;
CtkConfig *ctk_config;
- GtkWidget *reset_button;
GtkWidget *button;
GtkWidget *file_selector;
GtkWidget *file_format_binary_radio_button;
GtkWidget *file_format_ascii_radio_button;
-
+
const gchar *filename;
char *name;
- unsigned int display_device_mask;
gint file_format;
};
@@ -75,11 +73,9 @@ struct _CtkEdidClass
GType ctk_edid_get_type (void) G_GNUC_CONST;
GtkWidget* ctk_edid_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
- GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name);
-void ctk_edid_reset(CtkEdid *);
+void ctk_edid_setup(CtkEdid *ctk_object);
void add_acquire_edid_help(GtkTextBuffer *b, GtkTextIter *i);
diff --git a/src/gtk+-2.x/ctkevent.c b/src/gtk+-2.x/ctkevent.c
index 296d07b..f26ad4d 100644
--- a/src/gtk+-2.x/ctkevent.c
+++ b/src/gtk+-2.x/ctkevent.c
@@ -91,6 +91,7 @@ GType ctk_event_get_type(void)
sizeof(CtkEvent),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_event_type = g_type_register_static
@@ -187,7 +188,6 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT);
MAKE_SIGNAL(NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT);
MAKE_SIGNAL(NV_CTRL_GVO_DATA_FORMAT);
- MAKE_SIGNAL(NV_CTRL_GVO_DISPLAY_X_SCREEN);
MAKE_SIGNAL(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED);
MAKE_SIGNAL(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE);
MAKE_SIGNAL(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED);
@@ -200,8 +200,6 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH);
MAKE_SIGNAL(NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT);
MAKE_SIGNAL(NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE);
- MAKE_SIGNAL(NV_CTRL_GVO_X_SCREEN_PAN_X);
- MAKE_SIGNAL(NV_CTRL_GVO_X_SCREEN_PAN_Y);
MAKE_SIGNAL(NV_CTRL_GPU_OVERCLOCKING_STATE);
MAKE_SIGNAL(NV_CTRL_GPU_2D_CLOCK_FREQS);
MAKE_SIGNAL(NV_CTRL_GPU_3D_CLOCK_FREQS);
@@ -327,6 +325,8 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH);
MAKE_SIGNAL(NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED);
MAKE_SIGNAL(NV_CTRL_GVO_AUDIO_BLANKING);
+ MAKE_SIGNAL(NV_CTRL_CURRENT_METAMODE_ID);
+ MAKE_SIGNAL(NV_CTRL_DISPLAY_ENABLED);
#undef MAKE_SIGNAL
/*
@@ -336,7 +336,7 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
* knows about.
*/
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GVO_AUDIO_BLANKING
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_DISPLAY_ENABLED
#warning "There are attributes that do not emit signals!"
#endif
@@ -380,13 +380,20 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_STRING_SIGNAL(NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME);
MAKE_STRING_SIGNAL(NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS);
MAKE_STRING_SIGNAL(NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_DP_GUID);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_RANDR);
#undef MAKE_STRING_SIGNAL
-#if NV_CTRL_STRING_LAST_ATTRIBUTE != NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME
+#if NV_CTRL_STRING_LAST_ATTRIBUTE != NV_CTRL_STRING_DISPLAY_NAME_RANDR
#warning "There are attributes that do not emit signals!"
#endif
-
-
+
+
/* make signals for binary attribute */
for (i = 0; i <= NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE; i++) binary_signals[i] = 0;
@@ -410,10 +417,11 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU);
MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_DISPLAY_TARGETS);
MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU);
-
+ MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_METAMODES_VERSION_2);
+ MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN);
#undef MAKE_BINARY_SIGNAL
-#if NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE != NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU
+#if NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE != NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN
#warning "There are attributes that do not emit signals!"
#endif
@@ -469,7 +477,9 @@ static void ctk_event_register_source(CtkEvent *ctk_event)
ctk_event_prepare,
ctk_event_check,
ctk_event_dispatch,
- NULL
+ NULL, /* finalize */
+ NULL, /* closure_callback */
+ NULL, /* closure_marshal */
};
source = g_source_new(&ctk_source_funcs, sizeof(CtkEventSource));
@@ -636,8 +646,7 @@ static gboolean ctk_event_dispatch(GSource *source,
/* make sure the attribute is in our signal array */
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
(signals[nvctrlevent->attribute] != 0)) {
event_struct.attribute = nvctrlevent->attribute;
@@ -669,8 +678,7 @@ static gboolean ctk_event_dispatch(GSource *source,
/* make sure the attribute is in our signal array */
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
(signals[nvctrlevent->attribute] != 0)) {
event_struct.attribute = nvctrlevent->attribute;
@@ -703,8 +711,7 @@ static gboolean ctk_event_dispatch(GSource *source,
/* make sure the attribute is in our signal array */
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
(signals[nvctrlevent->attribute] != 0)) {
event_struct.attribute = nvctrlevent->attribute;
@@ -735,8 +742,7 @@ static gboolean ctk_event_dispatch(GSource *source,
/* make sure the attribute is in our signal array */
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_STRING_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_STRING_LAST_ATTRIBUTE) &&
(string_signals[nvctrlevent->attribute] != 0)) {
event_struct.attribute = nvctrlevent->attribute;
@@ -764,8 +770,7 @@ static gboolean ctk_event_dispatch(GSource *source,
(XNVCtrlBinaryAttributeChangedEventTarget *) &event;
/* make sure the attribute is in our signal array */
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE) &&
(binary_signals[nvctrlevent->attribute] != 0)) {
event_struct.attribute = nvctrlevent->attribute;
diff --git a/src/gtk+-2.x/ctkframelock.c b/src/gtk+-2.x/ctkframelock.c
index 32d4192..6c6bfb6 100644
--- a/src/gtk+-2.x/ctkframelock.c
+++ b/src/gtk+-2.x/ctkframelock.c
@@ -44,6 +44,7 @@
#include "parse.h"
#include "msg.h"
+#include "common-utils.h"
#define DEFAULT_UPDATE_STATUS_TIME_INTERVAL 1000
@@ -743,9 +744,9 @@ static GtkWidget *create_enable_confirm_dialog(CtkFramelock *ctk_framelock)
* Creates a button with padding.
*
*/
-GtkWidget *my_button_new_with_label(const gchar *txt,
- gint hpad,
- gint vpad)
+static GtkWidget *my_button_new_with_label(const gchar *txt,
+ gint hpad,
+ gint vpad)
{
GtkWidget *btn;
GtkWidget *hbox;
@@ -771,9 +772,9 @@ GtkWidget *my_button_new_with_label(const gchar *txt,
* Creates a toggle button with padding.
*
*/
-GtkWidget *my_toggle_button_new_with_label(const gchar *txt,
- gint hpad,
- gint vpad)
+static GtkWidget *my_toggle_button_new_with_label(const gchar *txt,
+ gint hpad,
+ gint vpad)
{
GtkWidget *btn;
GtkWidget *hbox;
@@ -799,7 +800,7 @@ GtkWidget *my_toggle_button_new_with_label(const gchar *txt,
* Updates the container to hold a duplicate of the given image.
*
*/
-void update_image(GtkWidget *container, GdkPixbuf *new_pixbuf)
+static void update_image(GtkWidget *container, GdkPixbuf *new_pixbuf)
{
ctk_empty_container(container);
@@ -1194,7 +1195,14 @@ static void list_entry_update_gpu_controls(CtkFramelock *ctk_framelock,
}
}
+static gboolean framelock_refresh_rates_compatible(int server, int client)
+{
+ int range = ABS(((int64_t)(server - client) * 1000000) / client);
+ /* Framelock can be achieved if the range between refresh rates is less
+ * than 50 ppm */
+ return range <= 50;
+}
/** list_entry_update_display_controls() *****************************
*
@@ -1249,8 +1257,9 @@ static void list_entry_update_display_controls(CtkFramelock *ctk_framelock,
* the same as the current server's, or the X server tells us
* the client cannot be frame locked.
*/
- sensitive = ((!server_data || data->rate == server_data->rate) &&
- data->slaveable);
+ sensitive = (data->slaveable &&
+ (!server_data ||
+ framelock_refresh_rates_compatible(server_data->rate, data->rate)));
gtk_widget_set_sensitive(data->rate_label, sensitive);
gtk_widget_set_sensitive(data->rate_text, sensitive);
gtk_widget_set_sensitive(data->label, sensitive);
@@ -2522,79 +2531,6 @@ static gboolean get_server_id(NvCtrlAttributeHandle *handle,
-/** find_entry_by_name() *********************************************
- *
- * - Looks in the list tree for the first list entry to have a handle
- * to the given server name with the given entry data type and
- * target id.
- *
- */
-static nvListEntryPtr find_entry_by_name(nvListEntryPtr entry,
- gchar *server_name,
- int entry_type,
- int entry_id
- )
-{
- nvListEntryPtr found_entry = NULL;
-
- if (!entry) return NULL;
-
- /* Check this entry */
-
- if ((entry->data_type == ENTRY_DATA_FRAMELOCK &&
- entry_type == NV_CTRL_TARGET_TYPE_FRAMELOCK) ||
- (entry->data_type == ENTRY_DATA_GPU &&
- entry_type == NV_CTRL_TARGET_TYPE_GPU)) {
- gpointer handle;
-
- switch (entry->data_type) {
- case ENTRY_DATA_FRAMELOCK:
- handle = ((nvFrameLockDataPtr)(entry->data))->handle;
- break;
- case ENTRY_DATA_GPU:
- handle = ((nvGPUDataPtr)(entry->data))->handle;
- break;
- default:
- handle = NULL;
- break;
- }
-
- if (handle) {
- gchar *name = NvCtrlGetDisplayName(handle);
- int id = NvCtrlGetTargetId(handle);
-
- if (name && !strcasecmp(server_name, name) &&
- id == entry_id) {
- free(name);
- return entry;
- }
- free(name);
- }
- }
-
- /* Check children */
-
- found_entry = find_entry_by_name(entry->children,
- server_name,
- entry_type,
- entry_id);
- if (found_entry) return found_entry;
-
- /* Check siblings */
-
- found_entry = find_entry_by_name(entry->next_sibling,
- server_name,
- entry_type,
- entry_id);
- if (found_entry) return found_entry;
-
- /* Entry not found in this branch */
-
- return NULL;
-}
-
-
-
/**************************************************************************/
/*
@@ -3572,8 +3508,8 @@ static void toggle_detect_video_mode(GtkToggleButton *button,
* querying the current state of the X Server.
*
*/
-void list_entry_update_framelock_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_framelock_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
nvFrameLockDataPtr data = (nvFrameLockDataPtr)(entry->data);
gint rate, delay, house, port0, port1;
@@ -3665,8 +3601,8 @@ void list_entry_update_framelock_status(CtkFramelock *ctk_framelock,
* current state of the X Server.
*
*/
-void list_entry_update_gpu_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_gpu_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
nvGPUDataPtr data = (nvGPUDataPtr)(entry->data);
gboolean framelock_enabled;
@@ -3724,8 +3660,8 @@ void list_entry_update_gpu_status(CtkFramelock *ctk_framelock,
* the current state of the X Server.
*
*/
-void list_entry_update_display_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_display_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
nvDisplayDataPtr data = (nvDisplayDataPtr)(entry->data);
gboolean framelock_enabled;
@@ -3793,8 +3729,8 @@ void list_entry_update_display_status(CtkFramelock *ctk_framelock,
* by querying the X Server.
*
*/
-void list_entry_update_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
if (!entry) return;
@@ -4456,6 +4392,7 @@ GType ctk_framelock_get_type(
sizeof (CtkFramelock),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_framelock_type = g_type_register_static
@@ -5715,7 +5652,7 @@ static gint add_devices(CtkFramelock *ctk_framelock,
a.target_type = target_type; \
a.target_id = target_id; \
a.attr = (x); \
- a.val = (y); \
+ a.val.i = (y); \
a.display_device_mask = (z); \
a.flags |= NV_PARSER_HAS_TARGET; \
nv_parsed_attribute_add(head, &a);
@@ -5723,13 +5660,17 @@ static gint add_devices(CtkFramelock *ctk_framelock,
static void add_entry_to_parsed_attributes(nvListEntryPtr entry,
ParsedAttribute *head)
{
- ParsedAttribute a = { 0 };
+ ParsedAttribute a;
char *display_name = NULL;
int target_type = 0;
int target_id = 0;
- if (!entry) return;
-
+ if (!entry) {
+ return;
+ }
+
+ memset(&a, 0, sizeof(a));
+
switch (entry->data_type) {
case ENTRY_DATA_FRAMELOCK:
diff --git a/src/gtk+-2.x/ctkgauge.c b/src/gtk+-2.x/ctkgauge.c
index 74bcc02..276dbd3 100644
--- a/src/gtk+-2.x/ctkgauge.c
+++ b/src/gtk+-2.x/ctkgauge.c
@@ -65,6 +65,7 @@ GType ctk_gauge_get_type(
sizeof (CtkGauge),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gauge_type = g_type_register_static(GTK_TYPE_DRAWING_AREA,
diff --git a/src/gtk+-2.x/ctkglx.c b/src/gtk+-2.x/ctkglx.c
index bd65f90..cdbb9b9 100644
--- a/src/gtk+-2.x/ctkglx.c
+++ b/src/gtk+-2.x/ctkglx.c
@@ -146,6 +146,7 @@ GType ctk_glx_get_type(void)
sizeof (CtkGLX),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_glx_type = g_type_register_static (GTK_TYPE_VBOX,
diff --git a/src/gtk+-2.x/ctkgpu.c b/src/gtk+-2.x/ctkgpu.c
index 001f491..fa22fb1 100644
--- a/src/gtk+-2.x/ctkgpu.c
+++ b/src/gtk+-2.x/ctkgpu.c
@@ -54,6 +54,7 @@ GType ctk_gpu_get_type(
sizeof (CtkGpu),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gpu_type =
@@ -65,54 +66,10 @@ GType ctk_gpu_get_type(
}
-static gchar *make_display_device_list(NvCtrlAttributeHandle *handle,
- unsigned int display_devices)
+static gchar *make_display_device_list(NvCtrlAttributeHandle *handle)
{
- gchar *displays = NULL;
- gchar *type;
- gchar *name;
- gchar *tmp_str;
- unsigned int mask;
- ReturnStatus ret;
-
-
- /* List of Display Device connected on GPU */
-
- for (mask = 1; mask; mask <<= 1) {
-
- if (!(mask & display_devices)) continue;
-
- type = display_device_mask_to_display_device_name(mask);
- name = NULL;
-
- ret =
- NvCtrlGetStringDisplayAttribute(handle,
- mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &name);
- if (ret != NvCtrlSuccess) {
- tmp_str = g_strdup_printf("Unknown (%s)", type);
- } else {
- tmp_str = g_strdup_printf("%s (%s)", name, type);
- XFree(name);
- }
- free(type);
-
- if (displays) {
- name = g_strdup_printf("%s,\n%s", tmp_str, displays);
- g_free(displays);
- g_free(tmp_str);
- } else {
- name = tmp_str;
- }
- displays = name;
- }
-
- if (!displays) {
- displays = g_strdup("None");
- }
-
- return displays;
+ return create_display_name_list_string(handle,
+ NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU);
} /* make_display_device_list() */
@@ -250,7 +207,6 @@ GtkWidget* ctk_gpu_new(
gchar *link_width_str = NULL;
gchar *pcie_gen_str = NULL;
- unsigned int display_devices;
int xinerama_enabled;
int *pData;
int len;
@@ -394,17 +350,8 @@ GtkWidget* ctk_gpu_new(
screens = g_strdup("Unknown");
}
- /* List of Display Device connected on GPU */
-
- displays = NULL;
- ret = NvCtrlGetAttribute(handle, NV_CTRL_CONNECTED_DISPLAYS,
- (int *)&display_devices);
- if (ret == NvCtrlSuccess) {
- displays = make_display_device_list(handle, display_devices);
- }
-
/* now, create the object */
-
+
object = g_object_new(CTK_TYPE_GPU, NULL);
ctk_gpu = CTK_GPU(object);
@@ -525,6 +472,8 @@ GtkWidget* ctk_gpu_new(
0, 0, "X Screens:",
0, 0, screens);
/* spacing */
+ displays = make_display_device_list(handle);
+
row += 3;
ctk_gpu->displays =
add_table_row(table, row,
@@ -662,12 +611,10 @@ GtkTextBuffer *ctk_gpu_create_help(GtkTextTagTable *table,
static void probe_displays_received(GtkObject *object, gpointer arg1,
gpointer user_data)
{
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
CtkGpu *ctk_object = CTK_GPU(user_data);
- unsigned int probed_displays = event_struct->value;
gchar *str;
- str = make_display_device_list(ctk_object->handle, probed_displays);
+ str = make_display_device_list(ctk_object->handle);
gtk_label_set_text(GTK_LABEL(ctk_object->displays), str);
diff --git a/src/gtk+-2.x/ctkgvi.c b/src/gtk+-2.x/ctkgvi.c
index 49934ee..591c237 100644
--- a/src/gtk+-2.x/ctkgvi.c
+++ b/src/gtk+-2.x/ctkgvi.c
@@ -51,6 +51,7 @@ GType ctk_gvi_get_type(void)
sizeof (CtkGvi),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gvi_type =
@@ -96,8 +97,8 @@ static gboolean update_sdi_input_info(gpointer user_data);
/*
* ctk_gvio_get_format_name() - retrun name of format.
*/
-const char * ctk_gvio_get_format_name(const GvioFormatName *formatTable,
- const gint format)
+static const char *ctk_gvio_get_format_name(const GvioFormatName *formatTable,
+ const gint format)
{
int i;
for (i = 0; formatTable[i].name; i++) {
diff --git a/src/gtk+-2.x/ctkgvo-banner.c b/src/gtk+-2.x/ctkgvo-banner.c
index 23146ac..ca2128a 100644
--- a/src/gtk+-2.x/ctkgvo-banner.c
+++ b/src/gtk+-2.x/ctkgvo-banner.c
@@ -109,6 +109,7 @@ GType ctk_gvo_banner_get_type(void)
sizeof (CtkGvoBanner),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gvo_banner_type =
diff --git a/src/gtk+-2.x/ctkgvo-csc.c b/src/gtk+-2.x/ctkgvo-csc.c
index dfd5090..71f813f 100644
--- a/src/gtk+-2.x/ctkgvo-csc.c
+++ b/src/gtk+-2.x/ctkgvo-csc.c
@@ -169,6 +169,7 @@ GType ctk_gvo_csc_get_type(void)
sizeof (CtkGvoCsc),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gvo_csc_type =
diff --git a/src/gtk+-2.x/ctkgvo-sync.c b/src/gtk+-2.x/ctkgvo-sync.c
index 5861a5d..43e5212 100644
--- a/src/gtk+-2.x/ctkgvo-sync.c
+++ b/src/gtk+-2.x/ctkgvo-sync.c
@@ -165,6 +165,7 @@ GType ctk_gvo_sync_get_type(void)
sizeof (CtkGvoSync),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gvo_sync_type =
diff --git a/src/gtk+-2.x/ctkgvo.c b/src/gtk+-2.x/ctkgvo.c
index 799ba01..425159b 100644
--- a/src/gtk+-2.x/ctkgvo.c
+++ b/src/gtk+-2.x/ctkgvo.c
@@ -21,7 +21,6 @@
#include <string.h>
#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
#include "NvCtrlAttributes.h"
@@ -40,101 +39,39 @@
#define TABLE_PADDING 5
-/* Some defaults */
-
-#define DEFAULT_OUTPUT_VIDEO_FORMAT \
- NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC
-
-#define DEFAULT_OUTPUT_DATA_FORMAT \
- NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444
-
-
/* General information help */
-static const char * __general_firmware_version_help =
+static const char *__general_firmware_version_help =
"The Firmware Version reports the version of the firmware running on the "
"SDI device.";
-static const char * __general_current_sdi_resolution_help =
+static const char *__general_current_sdi_resolution_help =
"The Current SDI Resolution reports the current active resolution that the "
"SDI device is driving or 'Inactive' if SDI is currently disabled.";
-static const char * __general_current_sdi_state_help =
-"The Current SDI state reports on the current usage of the SDI device.";
-
-
-/* Clone mode help */
-
-static const char * __clone_mode_video_format_help =
-"The Video Format drop-down allows you to select the desired resolution and "
-"refresh rate to be used for Clone Mode.";
-
-static const char * __clone_mode_data_format_help =
-"The Data Format drop-down allows you to select the desired data format that "
-"the SDI will output. Note that the new data format "
-"will be applied at modeset time.";
-
-static const char * __clone_mode_x_offset_help =
-"The X Offset determines the start location of the left side of SDI output "
-"window when in Clone Mode.";
-
-static const char * __clone_mode_y_offset_help =
-"The Y Offset determines the start location of the top of the SDI output "
-"window when in Clone Mode.";
+static const char *__general_current_sdi_state_help =
+"The Current SDI state reports the current usage of the SDI device.";
-static const char * __clone_mode_enable_clone_mode_help =
-"The Enable Clone Mode button toggles SDI Clone mode.";
+static const char *__requested_sdi_video_format_help =
+"The Requested SDI Video Format indicates what video format is currently "
+"requested through NV-CONTROL.";
+static const char *__requested_sdi_data_format_help =
+"The Requested SDI Data Format indicates what data format is currently "
+"requested through NV-CONTROL.";
/* local prototypes */
-static gboolean query_init_gvo_state(CtkGvo *ctk_gvo);
-
static void query_video_format_details(CtkGvo *ctk_gvo);
-static void register_for_gvo_events(CtkGvo *ctk_gvo);
-
-
-static GtkWidget *start_menu(const gchar *name, GtkWidget *table,
- const gint row);
-static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row);
-
-
-static void fill_output_video_format_menu(CtkGvo *ctk_gvo);
-static void output_video_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data);
-static void post_output_video_format_changed(CtkGvo *ctk_gvo);
-
-
-static void fill_output_data_format_menu(CtkGvo *ctk_gvo);
-static void output_data_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data);
-static void post_output_data_format_changed(CtkGvo *ctk_gvo);
-
-
-static void x_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data);
-static void y_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data);
-
-
-static void create_toggle_clone_mode_button(CtkGvo *ctk_gvo);
-static void clone_mode_button_ui_toggled(GtkWidget *button,
- gpointer user_data);
-static void post_clone_mode_button_toggled(CtkGvo *gvo);
-
+static void register_for_gvo_events(CtkGvo *ctk_gvo, CtkEvent *ctk_event);
static void update_gvo_current_info(CtkGvo *ctk_gvo);
-static void update_offset_spin_button_ranges(CtkGvo *ctk_gvo);
-static void update_gvo_sensitivity(CtkGvo *ctk_gvo);
-
static void gvo_event_received(GtkObject *object,
gpointer arg1,
gpointer user_data);
-static void screen_changed_handler(GtkWidget *widget,
- XRRScreenChangeNotifyEvent *ev,
- gpointer data);
-
/*
* video format table -- should this be moved into NV-CONTROL?
@@ -280,12 +217,9 @@ static GvioFormatDetails videoFormatDetails[] = {
static const GvioFormatName dataFormatNames[] = {
- /* Valid for Clone Mode */
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444, "RGB -> YCrCb (4:4:4)" },
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422, "RGB -> YCrCb (4:2:2)" },
{ NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU, "RGB (4:4:4)" },
-
- /* Invalid for Clone Mode usage */
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444, "RGBA -> YCrCbA (4:4:4:4)" },
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444, "RGBZ -> YCrCbZ (4:4:4:4)" },
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224, "RGBA -> YCrCbA (4:2:2:4)" },
@@ -363,109 +297,6 @@ void ctk_gvo_get_video_format_resolution(const gint format, gint *w, gint *h)
/*
- * ctk_gvo_get_video_format_refresh() - return the refresh rate of the
- * given video format
- */
-
-void ctk_gvo_get_video_format_refresh(const gint format, gint *r)
-{
- gint i;
-
- *r = 0;
-
- for (i = 0; videoFormatDetails[i].format != -1; i++) {
- if (videoFormatDetails[i].format == format) {
- *r = videoFormatDetails[i].rate;
- return;
- }
- }
-} /* ctk_gvo_get_video_format_refresh() */
-
-
-
-/*
- * ctk_gvo_video_format_valid() - returns a bitmask indicating whether or not
- * the currently selected video format is valid for clone mode based on the
- * current X screen resolution and current sync method. Returns a bitmask
- * indicating possible valid/invalid state of the mode.
- */
-
-#define GVO_VIDEO_FORMAT_INVALID 0x00000000
-#define GVO_VIDEO_FORMAT_MODE_VALID 0x00000001
-#define GVO_VIDEO_FORMAT_RESOLUTION_VALID 0x00000002
-#define GVO_VIDEO_FORMAT_REFRESH_VALID 0x00000004
-
-#define GVO_VIDEO_FORMAT_VALID \
- (GVO_VIDEO_FORMAT_MODE_VALID | \
- GVO_VIDEO_FORMAT_RESOLUTION_VALID | \
- GVO_VIDEO_FORMAT_REFRESH_VALID)
-
-guint ctk_gvo_video_format_valid(CtkGvo *ctk_gvo, const gint format)
-{
- gint width, height, refresh_rate, input_refresh_rate;
- guint valid = GVO_VIDEO_FORMAT_VALID;
-
-
- /* Keep track of whether we'll need to re-set the video format
- * when enabling clone mode.
- */
-
- /* Check to make sure the format size <= current screen size */
- ctk_gvo_get_video_format_resolution(format, &width, &height);
-
- /* Make sure the resolution fits */
- if ((width > ctk_gvo->screen_width) || (height > ctk_gvo->screen_height)) {
- valid &= ~(GVO_VIDEO_FORMAT_RESOLUTION_VALID);
- }
-
- /* Check that format is supported */
- if (((format / 32) >=
- (sizeof(ctk_gvo->valid_output_video_format_mask)/
- sizeof(ctk_gvo->valid_output_video_format_mask[0]))) ||
- !(ctk_gvo->valid_output_video_format_mask[format / 32] &
- (1 << (format % 32)))) {
- valid &= ~(GVO_VIDEO_FORMAT_MODE_VALID);
- }
-
- /* Check that formats match if Genlock is enabled */
- else if ((ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_GENLOCK) &&
- (ctk_gvo->input_video_format != NV_CTRL_GVIO_VIDEO_FORMAT_NONE) &&
- (ctk_gvo->input_video_format != format)) {
- valid &= ~(GVO_VIDEO_FORMAT_REFRESH_VALID);
- }
-
-
- /* Check that format refresh rates match if Frame Lock is enabled */
- else if ((ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_FRAMELOCK) &&
- (ctk_gvo->input_video_format != NV_CTRL_GVIO_VIDEO_FORMAT_NONE)) {
-
- /* Get the refresh rate */
- ctk_gvo_get_video_format_refresh(format, &refresh_rate);
-
- /* Get the current input refresh rate */
- ctk_gvo_get_video_format_refresh(ctk_gvo->input_video_format,
- &input_refresh_rate);
-
- /* Check that the refresh rates are the same, or, for those
- * GVO devices that support multi-rate synchronization, check
- * that the fractional part of the rates are either both zero
- * or both non-zero.
- */
-
- if ((refresh_rate != input_refresh_rate) &&
- (!(ctk_gvo->caps & NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC) ||
- ((refresh_rate % 1000 == 0) != (input_refresh_rate % 1000 == 0)))) {
- valid &= ~(GVO_VIDEO_FORMAT_REFRESH_VALID);
- }
- }
-
- return valid;
-
-} /* ctk_gvo_video_format_valid() */
-
-
-
-/*
* ctk_gvo_get_data_format_name() - return the name of the given data format
*/
@@ -486,28 +317,6 @@ const char *ctk_gvo_get_data_format_name(const gint format)
/*
- * ctk_gvo_data_format_valid() - return whether or not the given data
- * format is valid for clone mode.
- */
-
-gboolean ctk_gvo_data_format_valid(const gint format)
-{
- gint i;
-
- for (i = 0; dataFormatNames[i].name; i++) {
- if (dataFormatNames[i].format == format) {
- /* Only the first three formats are valid */
- return (i < 3);
- }
- }
-
- return FALSE;
-
-} /* ctk_gvo_data_format_valid() */
-
-
-
-/*
* ctk_gvo_get_type() - Returns the CtkGvo "class" type
*/
@@ -526,6 +335,7 @@ GType ctk_gvo_get_type(void)
sizeof (CtkGvo),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_gvo_type =
@@ -551,37 +361,36 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
{
GObject *object;
CtkGvo *ctk_gvo;
- GtkWidget *hbox, *vbox, *alignment, *label;
+ GtkWidget *hbox;
ReturnStatus ret;
gchar scratch[64], *firmware, *string;
- gint val, width, height;
+ gint val;
- GtkWidget *frame, *table, *menu;
+ GtkWidget *frame, *table;
/* make sure we have a handle */
g_return_val_if_fail(handle != NULL, NULL);
+ /* Check if this screen supports GVO */
+
+ ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SUPPORTED, &val);
+ if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) {
+ /* GVO not available */
+ return NULL;
+ }
+
/* create and initialize the object */
object = g_object_new(CTK_TYPE_GVO, NULL);
ctk_gvo = CTK_GVO(object);
ctk_gvo->handle = handle;
- ctk_gvo->ctk_config = ctk_config;
- ctk_gvo->ctk_event = ctk_event;
-
- /* Query the current GVO state */
- if ( !query_init_gvo_state(ctk_gvo) ) {
- // Free the object
- g_object_ref(object);
- gtk_object_sink(GTK_OBJECT(object));
- g_object_unref(object);
- return NULL;
- }
-
- /* Query the width, height and refresh rate for each video format */
+ /*
+ * Query the validness, width, height and refresh rate for each
+ * video format
+ */
query_video_format_details(ctk_gvo);
@@ -655,162 +464,30 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
0, 0.5, "Current SDI State:",
0, 0.5, "Inactive");
-
/*
- * Clone mode options
+ * Requested SDI Configuration
*/
-
- frame = gtk_frame_new("Clone Mode");
- ctk_gvo->clone_mode_frame = frame;
- vbox = gtk_vbox_new(FALSE, 0);
+ frame = gtk_frame_new("Requested SDI Configuration");
- table = gtk_table_new(3, 2, FALSE);
- gtk_table_set_row_spacings(GTK_TABLE(table), 0);
- gtk_table_set_col_spacings(GTK_TABLE(table), 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, FALSE, 0);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0);
-
- /* Output Video Format */
-
- menu = start_menu("Video Format: ", table, 0);
- ctk_gvo->output_video_format_menu = menu;
- ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu,
- __clone_mode_video_format_help);
-
- fill_output_video_format_menu(ctk_gvo);
-
- finish_menu(menu, table, 0);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu),
- ctk_gvo->output_video_format);
-
- g_signal_connect(G_OBJECT(ctk_gvo->output_video_format_menu),
- "changed", G_CALLBACK(output_video_format_ui_changed),
- (gpointer) ctk_gvo);
-
- /* Output Data Format */
-
- menu = start_menu("Data Format: ", table, 1);
- ctk_gvo->output_data_format_menu = menu;
- ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu,
- __clone_mode_data_format_help);
-
- fill_output_data_format_menu(ctk_gvo);
-
- finish_menu(menu, table, 1);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu),
- ctk_gvo->output_data_format);
-
- g_signal_connect(G_OBJECT(ctk_gvo->output_data_format_menu),
- "changed", G_CALLBACK(output_data_format_ui_changed),
- (gpointer) ctk_gvo);
-
- /* Region of Interest */
-
- ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format,
- &width, &height);
- /* NV_CTRL_GVO_X_SCREEN_PAN_X */
-
- label = gtk_label_new("X Offset: ");
-
- alignment = gtk_alignment_new(0, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), label);
-
- gtk_table_attach(GTK_TABLE(table), alignment,
- 0, 1, 2, 3,
- GTK_FILL, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_X, &val);
- if (ret != NvCtrlSuccess) val = 0;
-
- width = ctk_gvo->screen_width - width;
- if (width < 1) width = 1;
-
- ctk_gvo->x_offset_spin_button =
- gtk_spin_button_new_with_range(0.0, width, 1);
-
- ctk_config_set_tooltip(ctk_config, ctk_gvo->x_offset_spin_button,
- __clone_mode_x_offset_help);
-
- gtk_spin_button_set_value
- (GTK_SPIN_BUTTON(ctk_gvo->x_offset_spin_button), val);
-
- g_signal_connect(G_OBJECT(ctk_gvo->x_offset_spin_button),
- "value-changed",
- G_CALLBACK(x_offset_ui_changed), ctk_gvo);
-
- hbox = gtk_hbox_new(FALSE, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->x_offset_spin_button,
- FALSE, FALSE, 0);
-
- gtk_table_attach(GTK_TABLE(table), hbox,
- 1, 2, 2, 3,
- GTK_FILL | GTK_EXPAND, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- /* NV_CTRL_GVO_X_SCREEN_PAN_Y */
-
- label = gtk_label_new("Y Offset: ");
- alignment = gtk_alignment_new(0, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), label);
-
- gtk_table_attach(GTK_TABLE(table), alignment,
- 0, 1, 3, 4,
- GTK_FILL, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, &val);
- if (ret != NvCtrlSuccess) val = 0;
-
- height = ctk_gvo->screen_height - height;
- if (height < 1) height = 1;
-
- ctk_gvo->y_offset_spin_button =
- gtk_spin_button_new_with_range(0.0, height, 1);
-
- gtk_spin_button_set_value
- (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), val);
-
- ctk_config_set_tooltip(ctk_config, ctk_gvo->y_offset_spin_button,
- __clone_mode_y_offset_help);
-
- g_signal_connect(G_OBJECT(ctk_gvo->y_offset_spin_button),
- "value-changed",
- G_CALLBACK(y_offset_ui_changed), ctk_gvo);
-
- hbox = gtk_hbox_new(FALSE, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->y_offset_spin_button,
- FALSE, FALSE, 0);
-
- gtk_table_attach(GTK_TABLE(table), hbox,
- 1, 2, 3, 4,
- GTK_FILL | GTK_EXPAND, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- /*
- * "Enable Clone Mode" button
- */
-
- create_toggle_clone_mode_button(ctk_gvo);
-
- ctk_config_set_tooltip(ctk_config, ctk_gvo->toggle_clone_mode_button,
- __clone_mode_enable_clone_mode_help);
-
- hbox = gtk_hbox_new(FALSE, 0);
+ table = gtk_table_new(2, 2, FALSE);
- gtk_box_pack_end(GTK_BOX(hbox), ctk_gvo->toggle_clone_mode_button,
- FALSE, FALSE, 5);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 3);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 15);
+ gtk_container_set_border_width(GTK_CONTAINER(table), 5);
- gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(frame), table);
+ ctk_gvo->current_output_video_format_label =
+ add_table_row(table, 3,
+ 0, 0.5, "Requested SDI Video Format:",
+ 0, 0.5, "Inactive");
+ ctk_gvo->current_output_data_format_label =
+ add_table_row(table, 4,
+ 0, 0.5, "Requested SDI Data Format:",
+ 0, 0.5, "Inactive");
/*
* Set the initial UI state
@@ -818,14 +495,11 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
update_gvo_current_info(ctk_gvo);
- update_gvo_sensitivity(ctk_gvo);
-
-
/*
* Start listening for events
*/
- register_for_gvo_events(ctk_gvo);
+ register_for_gvo_events(ctk_gvo, ctk_event);
/* show the GVO widget */
@@ -837,415 +511,20 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
-/*
- * create_toggle_clone_mode_button() -
- */
-
-static void create_toggle_clone_mode_button(CtkGvo *ctk_gvo)
-{
- GtkWidget *label;
- GtkWidget *hbox, *hbox2;
- GdkPixbuf *pixbuf;
- GtkWidget *image = NULL;
- GtkWidget *button;
- gboolean enabled;
-
- button = gtk_toggle_button_new();
-
- /* create the Enable Clone Mode icon */
-
- pixbuf = gtk_widget_render_icon(button,
- GTK_STOCK_EXECUTE,
- GTK_ICON_SIZE_BUTTON,
- "Enable Clone Mode");
- if (pixbuf) image = gtk_image_new_from_pixbuf(pixbuf);
- label = gtk_label_new("Enable Clone Mode");
-
- hbox = gtk_hbox_new(FALSE, 2);
-
- if (image) gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 2);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
- hbox2 = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox2), hbox, FALSE, FALSE, 15);
-
- gtk_widget_show_all(hbox2);
-
- /*
- * XXX increment the reference count, so that when we do
- * gtk_container_remove() later, it doesn't get destroyed
- */
-
- gtk_object_ref(GTK_OBJECT(hbox2));
-
- ctk_gvo->enable_clone_mode_label = hbox2;
-
-
- /* create the Disable Clone Mode icon */
-
- pixbuf = gtk_widget_render_icon(button,
- GTK_STOCK_STOP,
- GTK_ICON_SIZE_BUTTON,
- "Disable Clone Mode");
- if (pixbuf) image = gtk_image_new_from_pixbuf(pixbuf);
- label = gtk_label_new("Disable Clone Mode");
-
- hbox = gtk_hbox_new(FALSE, 2);
-
- if (image) gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 2);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
- hbox2 = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox2), hbox, FALSE, FALSE, 15);
-
- gtk_widget_show_all(hbox2);
-
- /*
- * XXX increment the reference count, so that when we do
- * gtk_container_remove() later, it doesn't get destroyed
- */
-
- gtk_object_ref(GTK_OBJECT(hbox2));
-
- ctk_gvo->disable_clone_mode_label = hbox2;
-
- /* Set the initial Clone Mode enabled state */
-
- enabled = (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE);
-
- gtk_container_add(GTK_CONTAINER(button),
- enabled ? ctk_gvo->disable_clone_mode_label :
- ctk_gvo->enable_clone_mode_label);
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), enabled);
-
- ctk_gvo->toggle_clone_mode_button = button;
-
- g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(clone_mode_button_ui_toggled),
- GTK_OBJECT(ctk_gvo));
-
-} /* create_toggle_clone_mode_button() */
-
-
-
-/*
- * start_menu() - Start the creation of a labled dropdown menu. (Packs
- * the dropdown label into the table row.
- */
-
-static GtkWidget *start_menu(const gchar *name, GtkWidget *table,
- const gint row)
-{
- GtkWidget *menu, *label, *alignment;
-
- label = gtk_label_new(name);
- alignment = gtk_alignment_new(0, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), label);
-
- gtk_table_attach(GTK_TABLE(table),
- alignment, 0, 1, row, row+1, GTK_FILL, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- menu = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_MONOSPACE);
-
- return menu;
-
-} /* start_menu() */
-
-
-
-/*
- * finish_menu() - Finish/Finalize a dropdown menu. (Packs the menu in
- * the table row.)
- */
-
-static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row)
-{
- gtk_widget_show_all(menu);
-
- gtk_table_attach(GTK_TABLE(table), menu, 1, 2, row, row+1,
- GTK_FILL | GTK_EXPAND, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-}
-
-
-
-/*
- * fill_output_video_format_menu() - Populates the output video
- * format menu.
- */
-
-static void fill_output_video_format_menu(CtkGvo *ctk_gvo)
-{
- int i;
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu);
- GtkWidget *label;
- guint valid;
- gint num_valid_entries = 0;
- gchar *str;
- gchar *tmp;
- const gchar *constStr;
-
- ctk_drop_down_menu_reset(CTK_DROP_DOWN_MENU(dmenu));
-
- for (i = 0; videoFormatNames[i].name; i++) {
-
- /*
- * runtime check that videoFormatDetails[] and
- * videoFormatNames[] are in sync
- */
-
- if (videoFormatDetails[i].format != videoFormatNames[i].format) {
- nv_error_msg("GVO format tables out of alignment!");
- return;
- }
-
- valid = ctk_gvo_video_format_valid(ctk_gvo,
- videoFormatNames[i].format);
-
- /* Mode must be supported */
- if (!(valid & GVO_VIDEO_FORMAT_MODE_VALID)) {
- continue;
- }
-
- /* Resolution must fit (or this is the selected mode) */
- if (!(valid & GVO_VIDEO_FORMAT_RESOLUTION_VALID) &&
- (ctk_gvo->output_video_format != videoFormatNames[i].format)) {
- continue;
- }
-
- if (valid == GVO_VIDEO_FORMAT_VALID) {
- constStr = videoFormatNames[i].name;
- str = NULL;
- } else {
- str = g_strconcat(videoFormatNames[i].name, " -", NULL);
-
- if (!(valid & GVO_VIDEO_FORMAT_RESOLUTION_VALID)) {
- tmp = g_strconcat(str, " Resolution mismatch", NULL);
- g_free(str);
- str = tmp;
- }
- if (!(valid & GVO_VIDEO_FORMAT_REFRESH_VALID)) {
- if (!(valid & GVO_VIDEO_FORMAT_RESOLUTION_VALID)) {
- tmp = g_strconcat(str, ",", NULL);
- g_free(str);
- str = tmp;
- }
- tmp = g_strconcat(str, " Refresh mismatch", NULL);
- g_free(str);
- str = tmp;
- }
- constStr = str;
- }
-
- label = ctk_drop_down_menu_append_item(dmenu, constStr,
- videoFormatNames[i].format);
- if (str) {
- g_free(str);
- }
-
- /* Gray out entry if it is not valid */
- gtk_widget_set_sensitive(label, (valid == GVO_VIDEO_FORMAT_VALID));
-
- if (valid == GVO_VIDEO_FORMAT_VALID) {
- num_valid_entries++;
- }
- }
-
- /* Show special menu if there are no valid entries */
- if (num_valid_entries <= 0) {
- nv_warning_msg("There are currently no GVO video formats valid for "
- "use with Clone Mode. Please make sure that the X "
- "screen resolution (currently %d x %d) is at least "
- "720 x 487.\n",
- ctk_gvo->screen_width, ctk_gvo->screen_height);
-
- ctk_drop_down_menu_reset(CTK_DROP_DOWN_MENU(dmenu));
- label = ctk_drop_down_menu_append_item(dmenu,
- "*** X screen is smaller than "
- "720x487 ***",
- ctk_gvo->output_video_format);
- gtk_widget_set_sensitive(label, FALSE);
- }
-
-} /* fill_output_video_format_menu() */
-
-
-
-/*
- * rebuild_output_video_format_menu() - Reconsutrcts the output data format
- * menu.
- */
-
-static void rebuild_output_video_format_menu(CtkGvo *ctk_gvo)
-{
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu);
-
- g_signal_handlers_block_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_video_format_ui_changed),
- (gpointer) ctk_gvo);
-
- fill_output_video_format_menu(ctk_gvo);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu),
- ctk_gvo->output_video_format);
-
- gtk_widget_show_all(GTK_WIDGET(dmenu));
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_video_format_ui_changed),
- (gpointer) ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
-} /* rebuild_output_video_format_menu() */
-
-
-
-/*
- * fill_output_data_format_menu() - Populates the output data format menu.
- */
-
-static void fill_output_data_format_menu(CtkGvo *ctk_gvo)
-{
- int i;
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu);
- GtkWidget *label;
- gboolean valid;
- gchar *str;
- const gchar *constStr;
-
- ctk_drop_down_menu_reset(CTK_DROP_DOWN_MENU(dmenu));
-
- for (i = 0; dataFormatNames[i].name; i++) {
- valid = ctk_gvo_data_format_valid(dataFormatNames[i].format);
- if (!valid &&
- (ctk_gvo->output_data_format != dataFormatNames[i].format)) {
- continue;
- }
-
- if (valid) {
- constStr = dataFormatNames[i].name;
- str = NULL;
- } else {
- str = g_strconcat(dataFormatNames[i].name,
- " - Invalid for Clone Mode", NULL);
- constStr = str;
- }
-
- label = ctk_drop_down_menu_append_item(dmenu, constStr,
- dataFormatNames[i].format);
- if (str) {
- g_free(str);
- }
-
- gtk_widget_set_sensitive(label, valid);
- }
-
-} /* fill_output_data_format_menu() */
-
-
-
-/*
- * rebuild_output_data_format_menu() - Reconsutrcts the output data format
- * menu.
- */
-
-static void rebuild_output_data_format_menu(CtkGvo *ctk_gvo)
-{
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu);
-
- g_signal_handlers_block_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_data_format_ui_changed),
- (gpointer) ctk_gvo);
-
- fill_output_data_format_menu(ctk_gvo);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu),
- ctk_gvo->output_data_format);
-
- gtk_widget_show_all(GTK_WIDGET(dmenu));
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_data_format_ui_changed),
- (gpointer) ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
-} /* rebuild_output_data_format_menu() */
-
-
-
-
/**** Initialization Functions ***********************************************/
/*
- * query_init_gvo_state() - Query the initial GVO state so we can setup
- * the UI correctly.
+ * query_video_format_details() - initialize the videoFormatDetails[]
+ * table by querying each of refresh rate, width, and height from
+ * NV-CONTROL.
*/
-static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
+static void query_video_format_details(CtkGvo *ctk_gvo)
{
- gint val;
ReturnStatus ret;
NVCTRLAttributeValidValuesRec valid;
+ gint i, val;
-
- /* Check if this screen supports GVO */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SUPPORTED, &val);
- if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) {
- /* GVO not available */
- return FALSE;
- }
-
- /* Get this GVO device's capabilities */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_CAPABILITIES, &val);
- if (ret != NvCtrlSuccess) return FALSE;
- ctk_gvo->caps = val;
-
- /* Query the current GVO lock owner (GVO enabled/disabled) */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_LOCK_OWNER, &val);
- if (ret != NvCtrlSuccess) return FALSE;
- ctk_gvo->lock_owner = val;
-
- /* Query the sync mode */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_MODE, &val);
- if (ret != NvCtrlSuccess) {
- val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING;
- }
- ctk_gvo->sync_mode = val;
-
- /* Query the current input/output video formats */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT,
- &val);
- if (ret != NvCtrlSuccess) {
- val = NV_CTRL_GVIO_VIDEO_FORMAT_NONE;
- }
- ctk_gvo->input_video_format = val;
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT,
- &val);
- if (ret != NvCtrlSuccess) {
- val = DEFAULT_OUTPUT_VIDEO_FORMAT;
- }
- ctk_gvo->output_video_format = val;
-
/* Valid output video formats */
ret = NvCtrlGetValidAttributeValues(ctk_gvo->handle,
@@ -1256,11 +535,11 @@ static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
} else {
ctk_gvo->valid_output_video_format_mask[0] = valid.u.bits.ints;
}
-
+
ret = NvCtrlGetValidAttributeValues(ctk_gvo->handle,
NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2,
&valid);
-
+
if ((ret != NvCtrlSuccess) || (valid.type != ATTRIBUTE_TYPE_INT_BITS)) {
ctk_gvo->valid_output_video_format_mask[1] = 0;
} else {
@@ -1277,36 +556,6 @@ static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
ctk_gvo->valid_output_video_format_mask[2] = valid.u.bits.ints;
}
- /* Output data format */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT, &val);
- if (ret != NvCtrlSuccess) {
- val = DEFAULT_OUTPUT_DATA_FORMAT;
- }
- ctk_gvo->output_data_format = val;
-
- /* Get the current screen dimensions */
-
- ctk_gvo->screen_width = NvCtrlGetScreenWidth(ctk_gvo->handle);
- ctk_gvo->screen_height = NvCtrlGetScreenHeight(ctk_gvo->handle);
-
- return TRUE;
-
-} /* query_init_gvo_state() */
-
-
-
-/*
- * query_video_format_details() - initialize the videoFormatDetails[]
- * table by querying each of refresh rate, width, and height from
- * NV-CONTROL.
- */
-
-static void query_video_format_details(CtkGvo *ctk_gvo)
-{
- ReturnStatus ret;
- gint i, val;
-
for (i = 0; videoFormatDetails[i].format != -1; i++) {
ret = NvCtrlGetDisplayAttribute(ctk_gvo->handle,
@@ -1346,346 +595,70 @@ static void query_video_format_details(CtkGvo *ctk_gvo)
* GVO related evens.
*/
-static void register_for_gvo_events(CtkGvo *ctk_gvo)
+static void register_for_gvo_events(CtkGvo *ctk_gvo, CtkEvent *ctk_event)
{
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
+ g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT),
G_CALLBACK(gvo_event_received),
(gpointer) ctk_gvo);
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
+ g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_GVO_DATA_FORMAT),
G_CALLBACK(gvo_event_received),
(gpointer) ctk_gvo);
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_X),
- G_CALLBACK(gvo_event_received),
- (gpointer) ctk_gvo);
-
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_Y),
- G_CALLBACK(gvo_event_received),
- (gpointer) ctk_gvo);
-
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
+ g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_GVO_LOCK_OWNER),
G_CALLBACK(gvo_event_received),
(gpointer) ctk_gvo);
- /* Ask for screen change notify events so we can
- * know when to reconstruct the output video format drop down
- */
-
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
- "CTK_EVENT_RRScreenChangeNotify",
- G_CALLBACK(screen_changed_handler),
- (gpointer) ctk_gvo);
-
} /* register_for_gvo_events() */
-/**** User Interface Update Functions ****************************************/
-
-/*
- * output_video_format_ui_changed() - callback when the user makes a
- * selection from the output video format menu (from the UI.)
- */
-
-static void output_video_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- guint was_valid;
-
- was_valid = ctk_gvo_video_format_valid(ctk_gvo,
- ctk_gvo->output_video_format);
-
- ctk_gvo->output_video_format = ctk_drop_down_menu_get_current_value(menu);
-
- if (ctk_gvo_video_format_valid(ctk_gvo, ctk_gvo->output_video_format) !=
- GVO_VIDEO_FORMAT_VALID) {
- /* Video format is invalid, don't set it */
- update_gvo_sensitivity(ctk_gvo);
- return;
- }
-
- NvCtrlSetAttribute(ctk_gvo->handle,
- NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT,
- ctk_gvo->output_video_format);
-
- /* Rebuild menu to remove previously invalid entry */
- if (was_valid != GVO_VIDEO_FORMAT_VALID) {
- rebuild_output_video_format_menu(ctk_gvo);
- }
-
- update_gvo_sensitivity(ctk_gvo);
-
- /* Made GVO banner to update current output video format */
- CTK_GVO_BANNER(ctk_gvo->banner)->output_video_format =
- ctk_gvo->output_video_format;
-
- post_output_video_format_changed(ctk_gvo);
-
-} /* output_video_format_ui_changed() */
-
-
-
-/*
- * output_data_format_ui_changed() - callback when the output data format
- * menu changes
- */
-
-static void output_data_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gboolean was_valid;
-
-
- was_valid = ctk_gvo_data_format_valid(ctk_gvo->output_data_format);
-
- ctk_gvo->output_data_format = ctk_drop_down_menu_get_current_value(menu);
-
- if (!ctk_gvo_data_format_valid(ctk_gvo->output_data_format)) {
- /* Data format is invalid, don't set it */
- update_gvo_sensitivity(ctk_gvo);
- return;
- }
-
- NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT,
- ctk_gvo->output_data_format);
-
- /* Rebuild menu to remove previously invalid entry */
- if (!was_valid) {
- rebuild_output_data_format_menu(ctk_gvo);
- }
-
- update_gvo_sensitivity(ctk_gvo);
-
- /* Made GVO banner to update current output data format */
- CTK_GVO_BANNER(ctk_gvo->banner)->output_data_format =
- ctk_gvo->output_data_format;
-
- post_output_data_format_changed(ctk_gvo);
-
-} /* output_data_format_ui_changed() */
-
-
-
-/*
- * x_offset_ui_changed() - Updates the X Server with the current setting of
- * the spin button.
- */
-
-static void x_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gint val;
-
- val = gtk_spin_button_get_value(spinbutton);
-
- NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_X, val);
-
-} /* x_offset_ui_changed() */
-
-
-
-/*
- * y_offset_ui_changed() - Updates the X Server with the current setting of
- * the spin button.
- */
-
-static void y_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gint val;
-
- val = gtk_spin_button_get_value(spinbutton);
-
- NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, val);
-
-} /* y_offset_ui_changed() */
-
-
+/**** Common Update Functions ************************************************/
/*
- * clone_mode_button_ui_toggled() - Updates the X server to enable/disable
- * clone mode when the UI button is toggled.
+ * update_gvo_current_info() - Updates the page's information to reflect
+ * the GVO device's current state.
*/
-static void clone_mode_button_ui_toggled(GtkWidget *button, gpointer user_data)
+static void update_gvo_current_info(CtkGvo *ctk_gvo)
{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gboolean enabled;
+ int width;
+ int height;
ReturnStatus ret;
- gint val;
-
- enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
-
- if (enabled) val = NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE;
- else val = NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE;
-
- ret = NvCtrlSetDisplayAttributeWithReply(ctk_gvo->handle,
- 0, /* display_mask */
- NV_CTRL_GVO_DISPLAY_X_SCREEN,
- val);
-
- if (ret == NvCtrlSuccess) {
-
- /*
- * XXX NV_CTRL_GVO_DISPLAY_X_SCREEN can silently fail if GLX
- * locked GVO output for use by pbuffer(s). Check that the
- * setting actually stuck.
- */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle,
- NV_CTRL_GVO_LOCK_OWNER,
- &ctk_gvo->lock_owner);
- }
-
- if ((ret != NvCtrlSuccess) ||
- (enabled &&
- (ctk_gvo->lock_owner != NV_CTRL_GVO_LOCK_OWNER_CLONE))) {
-
- /*
- * setting did not apply; restore the button to its previous
- * state
- */
-
- g_signal_handlers_block_matched
- (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
- G_CALLBACK(clone_mode_button_ui_toggled), NULL);
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), !enabled);
-
- g_signal_handlers_unblock_matched
- (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
- G_CALLBACK(clone_mode_button_ui_toggled), NULL);
+ gchar res_string[64], state_string[64];
+ int output_video_format;
+ int output_data_format;
+ int lock_owner;
- // XXX update the status bar; maybe pop up a dialog box?
- return;
+ ret = NvCtrlGetAttribute(ctk_gvo->handle,
+ NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT,
+ &output_video_format);
+ if (ret != NvCtrlSuccess) {
+ output_video_format = NV_CTRL_GVIO_VIDEO_FORMAT_NONE;
}
-
- post_clone_mode_button_toggled(ctk_gvo);
-
-} /* clone_mode_button_ui_toggled() */
-
-
-
-/**** Common Update Functions ************************************************/
-
-/*
- * post_output_video_format_changed() - Makes sure the CPL does the right
- * things after the output video format has been changed. (by UI interaction
- * or through an NV-CONTROL event.
- *
- */
-
-static void post_output_video_format_changed(CtkGvo *ctk_gvo)
-{
- /* Update UI state */
-
- update_gvo_current_info(ctk_gvo);
-
- update_offset_spin_button_ranges(ctk_gvo);
-
- ctk_config_statusbar_message(ctk_gvo->ctk_config,
- "Output Video Format set to: %s.",
- ctk_gvio_get_video_format_name
- (ctk_gvo->output_video_format));
-
-} /* post_output_video_format_changed() */
-
-
-
-/*
- * post_output_data_format_changed() - Makes sure the CPL does the right
- * things after the output data format has been changed (by UI interaction
- * or through an NV-CONTROL event.
- */
-
-static void post_output_data_format_changed(CtkGvo *ctk_gvo)
-{
- ctk_config_statusbar_message
- (ctk_gvo->ctk_config,
- "Output Data Format set to: %s.",
- ctk_gvo_get_data_format_name(ctk_gvo->output_data_format));
-
-} /* post_output_data_format_changed() */
-
-
-/*
- * post_clone_mode_button_toggled() - Makes sure the CPL does the right
- * things after clone mode is enabled/disabled (by UI interaction or
- * through an NV-CONTROL event.
- */
-
-static void post_clone_mode_button_toggled(CtkGvo *ctk_gvo)
-{
- GList *children;
- GList *child;
- gboolean enabled;
-
- children = gtk_container_get_children
- (GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button));
-
- for (child = children; child; child = child->next) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button),
- (GtkWidget *) child->data);
+ ret = NvCtrlGetAttribute(ctk_gvo->handle,
+ NV_CTRL_GVO_DATA_FORMAT,
+ &output_data_format);
+ if (ret != NvCtrlSuccess) {
+ output_data_format = -1;
}
- g_list_free(children);
-
- enabled =
- (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE);
-
- if (enabled) {
- gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button),
- ctk_gvo->disable_clone_mode_label);
- } else {
- gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button),
- ctk_gvo->enable_clone_mode_label);
+ ret = NvCtrlGetAttribute(ctk_gvo->handle,
+ NV_CTRL_GVO_LOCK_OWNER,
+ &lock_owner);
+ if (ret != NvCtrlSuccess) {
+ lock_owner = NV_CTRL_GVO_LOCK_OWNER_NONE;
}
-
- /* Update UI state */
-
- update_gvo_current_info(ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
- ctk_config_statusbar_message(ctk_gvo->ctk_config, "Clone Mode %s.",
- enabled ? "enabled" : "disabled");
-
-} /* post_clone_mode_button_toggled() */
-
-/*
- * update_gvo_current_info() - Updates the page's information to reflect
- * the GVO device's current state.
- *
- * This function must be called when the following have changed:
- *
- * ctk_gvo->lock_owner
- * ctk_gvo->output_video_format
-
- */
-
-static void update_gvo_current_info(CtkGvo *ctk_gvo)
-{
- int width;
- int height;
- gchar res_string[64], state_string[64];
-
/* Get the current video format sizes */
- ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format,
- &width, &height);
+ ctk_gvo_get_video_format_resolution(output_video_format, &width, &height);
- switch (ctk_gvo->lock_owner) {
+ switch (lock_owner) {
case NV_CTRL_GVO_LOCK_OWNER_NONE:
snprintf(res_string, 64, "Inactive");
@@ -1693,10 +666,7 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo)
break;
case NV_CTRL_GVO_LOCK_OWNER_CLONE:
- snprintf(res_string, 64, "%d x %d", width, height);
- snprintf(state_string, 64, "In use by X (Clone mode)");
- break;
-
+ /* fall through for compatibility */
case NV_CTRL_GVO_LOCK_OWNER_X_SCREEN:
snprintf(res_string, 64, "%d x %d", width, height);
snprintf(state_string, 64, "In use by X");
@@ -1706,7 +676,7 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo)
snprintf(res_string, 64, "%d x %d", width, height);
snprintf(state_string, 64, "In use by GLX");
break;
-
+
default:
return;
}
@@ -1721,75 +691,19 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo)
state_string);
}
-} /* update_gvo_current_info() */
-
-
-
-/*
- * update_offset_spin_button_ranges() - Updates the range of the
- * offset spin buttons based on the current screen's width/height.
- */
-
-static void update_offset_spin_button_ranges(CtkGvo *ctk_gvo)
-{
- gint w, h, x, y;
-
- ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format,
- &w, &h);
-
- x = ctk_gvo->screen_width - w;
- y = ctk_gvo->screen_height - h;
-
- gtk_spin_button_set_range
- (GTK_SPIN_BUTTON(ctk_gvo->x_offset_spin_button), 0, x);
- gtk_spin_button_set_range
- (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), 0, y);
-
-} /* update_offset_spin_button_ranges() */
-
-
-
-/*
- * update_gvo_sensitivity() - Set the sensitivity of the GVO panel's widgets
- */
-
-static void update_gvo_sensitivity(CtkGvo *ctk_gvo)
-{
- gboolean sensitive;
- guint video_format_valid;
- gboolean data_format_valid;
-
- sensitive = ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) ||
- (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE));
-
- gtk_widget_set_sensitive(ctk_gvo->clone_mode_frame, sensitive);
-
- if (sensitive) {
-
- /* Video & data formats */
-
- sensitive = (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE);
- gtk_widget_set_sensitive(ctk_gvo->output_video_format_menu, sensitive);
- gtk_widget_set_sensitive(ctk_gvo->output_data_format_menu, sensitive);
-
- /* Enable/Disable clone mode button */
-
- video_format_valid =
- ctk_gvo_video_format_valid(ctk_gvo, ctk_gvo->output_video_format);
-
- data_format_valid =
- ctk_gvo_data_format_valid(ctk_gvo->output_data_format);
+ if (ctk_gvo->current_output_video_format_label) {
+ gtk_label_set_text
+ (GTK_LABEL(ctk_gvo->current_output_video_format_label),
+ ctk_gvio_get_video_format_name(output_video_format));
+ }
- sensitive =
- (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE) ||
- ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) &&
- (video_format_valid == GVO_VIDEO_FORMAT_VALID) &&
- data_format_valid);
-
- gtk_widget_set_sensitive(ctk_gvo->toggle_clone_mode_button, sensitive);
+ if (ctk_gvo->current_output_data_format_label) {
+ gtk_label_set_text
+ (GTK_LABEL(ctk_gvo->current_output_data_format_label),
+ ctk_gvo_get_data_format_name(output_data_format));
}
-} /* update_gvo_sensitivity() */
+} /* update_gvo_current_info() */
@@ -1803,165 +717,16 @@ static void gvo_event_received(GtkObject *object,
gpointer arg1,
gpointer user_data)
{
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- GtkWidget *widget;
- gint attribute = event_struct->attribute;
- gint value = event_struct->value;
- gboolean active;
-
-
- switch (attribute) {
-
- case NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT:
- widget = ctk_gvo->output_video_format_menu;
-
- ctk_gvo->output_video_format = value;
-
- rebuild_output_video_format_menu(ctk_gvo);
-
- post_output_video_format_changed(ctk_gvo);
- break;
-
- case NV_CTRL_GVO_DATA_FORMAT:
- widget = ctk_gvo->output_data_format_menu;
-
- ctk_gvo->output_data_format = value;
-
- rebuild_output_data_format_menu(ctk_gvo);
-
- post_output_data_format_changed(ctk_gvo);
- break;
-
- case NV_CTRL_GVO_X_SCREEN_PAN_X:
- widget = ctk_gvo->x_offset_spin_button;
-
- g_signal_handlers_block_by_func(G_OBJECT(widget),
- G_CALLBACK(x_offset_ui_changed),
- (gpointer) ctk_gvo);
-
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value);
-
- g_signal_handlers_unblock_by_func(G_OBJECT(widget),
- G_CALLBACK(x_offset_ui_changed),
- (gpointer) ctk_gvo);
- break;
-
- case NV_CTRL_GVO_X_SCREEN_PAN_Y:
- widget = ctk_gvo->y_offset_spin_button;
-
- g_signal_handlers_block_by_func(G_OBJECT(widget),
- G_CALLBACK(y_offset_ui_changed),
- (gpointer) ctk_gvo);
-
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value);
-
- g_signal_handlers_unblock_by_func(G_OBJECT(widget),
- G_CALLBACK(y_offset_ui_changed),
- (gpointer) ctk_gvo);
- break;
-
- case NV_CTRL_GVO_LOCK_OWNER:
- widget = ctk_gvo->toggle_clone_mode_button;
-
- g_signal_handlers_block_by_func
- (G_OBJECT(widget),
- G_CALLBACK(clone_mode_button_ui_toggled),
- ctk_gvo);
-
- ctk_gvo->lock_owner = value;
- active = (value != NV_CTRL_GVO_LOCK_OWNER_NONE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), active);
-
- post_clone_mode_button_toggled(ctk_gvo);
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(widget),
- G_CALLBACK(clone_mode_button_ui_toggled),
- ctk_gvo);
- break;
- }
+ update_gvo_current_info(CTK_GVO(user_data));
} /* gvo_event_received(() */
-/*
- * screen_changed_handler() - Handle XRandR screen size update events.
- */
-
-static void screen_changed_handler(GtkWidget *widget,
- XRRScreenChangeNotifyEvent *ev,
- gpointer data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(data);
-
- /* Cache the new screen dimensions */
-
- ctk_gvo->screen_width = ev->width;
- ctk_gvo->screen_height = ev->height;
-
- /* Update UI */
-
- rebuild_output_video_format_menu(ctk_gvo);
-
- rebuild_output_data_format_menu(ctk_gvo);
-
- update_gvo_current_info(ctk_gvo);
-
- update_offset_spin_button_ranges(ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
-} /* screen_changed_handler() */
-
-
-
/**** Callback Handlers ******************************************************/
/*
- * ctk_gvo_probe_callback() - This function gets called when the
- * GVO probe occurs so that we can update the state of attributes that
- * do not emit events.
- *
- * These attributes are:
- *
- * - NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED
- * - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED
- * - NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT
- *
- */
-
-gint ctk_gvo_probe_callback(gpointer data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(data);
- gint old_input_format = ctk_gvo->input_video_format;
- gint old_sync_mode = ctk_gvo->sync_mode;
-
- /* Update our copies of some SDI state variables */
-
- ctk_gvo->input_video_format =
- CTK_GVO_BANNER(ctk_gvo->banner)->input_video_format;
-
- ctk_gvo->sync_mode =
- CTK_GVO_BANNER(ctk_gvo->banner)->sync_mode;
-
- if ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) &&
- ((old_input_format != ctk_gvo->input_video_format) ||
- (old_sync_mode != ctk_gvo->sync_mode))) {
-
- /* update the available output video formats */
-
- rebuild_output_video_format_menu(ctk_gvo);
- }
-
- return TRUE;
-
-} /* ctk_gvo_probe_callback() */
-
-
-/*
* ctk_gvo_select() - Called when the ctk_gvo page is selected
*/
@@ -1972,8 +737,7 @@ void ctk_gvo_select(GtkWidget *widget)
/* Grab the GVO banner */
ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner),
- ctk_gvo->banner_box,
- ctk_gvo_probe_callback, ctk_gvo);
+ ctk_gvo->banner_box, NULL, NULL);
} /* ctk_gvo_select() */
@@ -2025,33 +789,10 @@ GtkTextBuffer* ctk_gvo_create_help(GtkTextTagTable *table)
ctk_help_heading(b, &i, "Current SDI State");
ctk_help_para(b, &i, __general_current_sdi_state_help);
- ctk_help_heading(b, &i, "Clone Mode");
- ctk_help_para(b, &i, "This section allows configuration and operation "
- "of the SDI device in Clone Mode.");
- ctk_help_heading(b, &i, "Video Format");
- ctk_help_para(b, &i, "%s The current size of the associated X screen "
- "will limit the available clone mode video formats such "
- "that only video modes that are smaller than or equal to "
- "the current X screen size will be available. Also, the "
- "current Sync Mode may limit available modes when not in "
- "Free-Running (see Synchronization Options page for more "
- "information).", __clone_mode_video_format_help);
- ctk_help_heading(b, &i, "Data Format");
- ctk_help_para(b, &i, "%s Note that other NV-CONTROL clients are still "
- "able to select a data format that is not supported with "
- "clone mode. In this case, the current data format will "
- "be shown as \"Invalid for Clone Mode\" and you will need "
- "to select a valid data format in order to enable Clone "
- "Mode.", __clone_mode_data_format_help);
- ctk_help_heading(b, &i, "X Offset");
- ctk_help_para(b, &i, __clone_mode_x_offset_help);
- ctk_help_heading(b, &i, "Y Offset");
- ctk_help_para(b, &i, __clone_mode_y_offset_help);
- ctk_help_heading(b, &i, "Enable Clone Mode");
- ctk_help_para(b, &i, "%s Clone mode may only be enabled when the SDI "
- "device is currently free (It is not being used by other "
- "modes such as OpenGL, TwinView, or Separate X Screens).",
- __clone_mode_enable_clone_mode_help);
+ ctk_help_heading(b, &i, "Requested SDI Video Format");
+ ctk_help_para(b, &i, __requested_sdi_video_format_help);
+ ctk_help_heading(b, &i, "Requested SDI Data Format");
+ ctk_help_para(b, &i, __requested_sdi_data_format_help);
ctk_help_finish(b);
diff --git a/src/gtk+-2.x/ctkgvo.h b/src/gtk+-2.x/ctkgvo.h
index 2c5cf53..a5a073c 100644
--- a/src/gtk+-2.x/ctkgvo.h
+++ b/src/gtk+-2.x/ctkgvo.h
@@ -54,49 +54,21 @@ typedef struct _CtkGvoClass CtkGvoClass;
struct _CtkGvo
{
GtkVBox parent;
-
NvCtrlAttributeHandle *handle;
- GtkWidget *parent_window;
- CtkConfig *ctk_config;
- CtkEvent *ctk_event;
-
- /* State */
-
- gint caps; // Capabilities
- gint lock_owner;
-
- gint sync_mode;
- gint input_video_format;
+ /* State */
- gint output_video_format;
guint valid_output_video_format_mask[3];
-
- gint output_data_format;
-
- gint screen_width;
- gint screen_height;
/* Widgets */
GtkWidget *banner_box;
GtkWidget *banner;
-
GtkWidget *current_resolution_label;
GtkWidget *current_state_label;
-
- GtkWidget *clone_mode_frame;
-
- GtkWidget *output_video_format_menu;
- GtkWidget *output_data_format_menu;
-
- GtkWidget *x_offset_spin_button;
- GtkWidget *y_offset_spin_button;
-
- GtkWidget *toggle_clone_mode_button;
- GtkWidget *enable_clone_mode_label;
- GtkWidget *disable_clone_mode_label;
+ GtkWidget *current_output_video_format_label;
+ GtkWidget *current_output_data_format_label;
};
@@ -126,8 +98,6 @@ GtkWidget* ctk_gvo_new (NvCtrlAttributeHandle *,
void ctk_gvo_select (GtkWidget *);
void ctk_gvo_unselect (GtkWidget *);
GtkTextBuffer* ctk_gvo_create_help (GtkTextTagTable *);
-void ctk_gvo_pack_banner_slot (CtkGvoBanner *, gint slot, gint new);
-gint ctk_gvo_probe (gpointer data);
diff --git a/src/gtk+-2.x/ctkhelp.c b/src/gtk+-2.x/ctkhelp.c
index 1ca7cd0..24b8bed 100644
--- a/src/gtk+-2.x/ctkhelp.c
+++ b/src/gtk+-2.x/ctkhelp.c
@@ -20,7 +20,7 @@
#include <gtk/gtk.h>
#include "ctkhelp.h"
-#include "msg.h"
+#include "common-utils.h"
#include "ctkconstants.h"
#include "ctkbanner.h"
@@ -51,6 +51,7 @@ GType ctk_help_get_type(
sizeof (CtkHelp),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_help_type = g_type_register_static
diff --git a/src/gtk+-2.x/ctkimagesliders.c b/src/gtk+-2.x/ctkimagesliders.c
index fb6a190..3fff22e 100644
--- a/src/gtk+-2.x/ctkimagesliders.c
+++ b/src/gtk+-2.x/ctkimagesliders.c
@@ -32,10 +32,6 @@
static const char *__digital_vibrance_help = "The Digital Vibrance slider "
"alters the level of Digital Vibrance for this display device.";
-static const char *__overscan_compensation_help = "The Overscan Compensation "
-"slider adjusts the amount of overscan compensation applied to this display "
-"device, in raster pixels.";
-
static const char *__image_sharpening_help = "The Image Sharpening slider "
"alters the level of Image Sharpening for this display device.";
@@ -45,11 +41,14 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
char *name,
const char *help,
gint value_type,
+ gint default_value,
gpointer callback_data);
static void setup_scale(CtkImageSliders *ctk_image_sliders,
int attribute, GtkWidget *scale);
+static void setup_reset_button(CtkImageSliders *ctk_image_sliders);
+
static void scale_value_changed(GtkAdjustment *adjustment,
gpointer user_data);
@@ -59,7 +58,7 @@ static void scale_value_received(GtkObject *, gpointer arg1, gpointer);
GType ctk_image_sliders_get_type(void)
{
static GType ctk_image_sliders_type = 0;
-
+
if (!ctk_image_sliders_type) {
static const GTypeInfo ctk_image_sliders_info = {
sizeof (CtkImageSlidersClass),
@@ -71,6 +70,7 @@ GType ctk_image_sliders_get_type(void)
sizeof (CtkImageSliders),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_image_sliders_type = g_type_register_static (GTK_TYPE_VBOX,
@@ -84,59 +84,49 @@ GType ctk_image_sliders_get_type(void)
GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
CtkConfig *ctk_config, CtkEvent *ctk_event,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name)
{
CtkImageSliders *ctk_image_sliders;
-
+
GObject *object;
-
+
GtkWidget *frame;
GtkWidget *vbox;
ReturnStatus status;
gint val;
-
+
/*
* now that we know that we will have atleast one attribute,
* create the object
*/
object = g_object_new(CTK_TYPE_IMAGE_SLIDERS, NULL);
+ if (!object) return NULL;
ctk_image_sliders = CTK_IMAGE_SLIDERS(object);
ctk_image_sliders->handle = handle;
ctk_image_sliders->ctk_config = ctk_config;
ctk_image_sliders->ctk_event = ctk_event;
ctk_image_sliders->reset_button = reset_button;
- ctk_image_sliders->display_device_mask = display_device_mask;
ctk_image_sliders->name = name;
-
- /* cache image sharpening default value */
- status = NvCtrlGetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_IMAGE_SHARPENING_DEFAULT,
- &val);
- if (status != NvCtrlSuccess) {
- val = 0;
- }
- ctk_image_sliders->default_val = val;
-
/* create the frame and vbox */
-
+
frame = gtk_frame_new(NULL);
vbox = gtk_vbox_new(FALSE, 0);
gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING);
gtk_container_add(GTK_CONTAINER(frame), vbox);
gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0);
ctk_image_sliders->frame = frame;
-
+
/* Digital Vibrance */
-
+
ctk_image_sliders->digital_vibrance =
add_scale(ctk_config,
NV_CTRL_DIGITAL_VIBRANCE, "Digital Vibrance",
- __digital_vibrance_help, G_TYPE_DOUBLE, ctk_image_sliders);
+ __digital_vibrance_help, G_TYPE_INT,
+ 0, /* default value */
+ ctk_image_sliders);
g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_DIGITAL_VIBRANCE),
@@ -146,28 +136,19 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
gtk_box_pack_start(GTK_BOX(vbox), ctk_image_sliders->digital_vibrance,
TRUE, TRUE, 0);
- /* Overscan Compensation */
-
- ctk_image_sliders->overscan_compensation =
- add_scale(ctk_config,
- NV_CTRL_OVERSCAN_COMPENSATION, "Overscan Compensation",
- __overscan_compensation_help, G_TYPE_INT,
- ctk_image_sliders);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_OVERSCAN_COMPENSATION),
- G_CALLBACK(scale_value_received),
- (gpointer) ctk_image_sliders);
+ /* Image Sharpening */
- gtk_box_pack_start(GTK_BOX(vbox), ctk_image_sliders->overscan_compensation,
- TRUE, TRUE, 0);
+ status = NvCtrlGetAttribute(ctk_image_sliders->handle,
+ NV_CTRL_IMAGE_SHARPENING_DEFAULT,
+ &val);
+ if (status != NvCtrlSuccess) {
+ val = 0;
+ }
- /* Image Sharpening */
-
ctk_image_sliders->image_sharpening =
add_scale(ctk_config,
NV_CTRL_IMAGE_SHARPENING, "Image Sharpening",
- __image_sharpening_help, G_TYPE_DOUBLE, ctk_image_sliders);
+ __image_sharpening_help, G_TYPE_INT, val, ctk_image_sliders);
g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_IMAGE_SHARPENING),
@@ -184,23 +165,8 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
ctk_image_sliders_setup(ctk_image_sliders);
return GTK_WIDGET(object);
-
-} /* ctk_image_sliders_new() */
-
-
-/*
- * Returns whether or not the scale is active
- */
-
-static gint get_scale_active(CtkScale *scale)
-{
- GtkAdjustment *adj = scale->gtk_adjustment;
-
- return
- GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj), "attribute active"));
-
-} /* get_scale_active() */
+} /* ctk_image_sliders_new() */
@@ -214,33 +180,32 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
char *name,
const char *help,
gint value_type,
+ gint default_value,
gpointer callback_data)
{
GtkObject *adj;
GtkWidget *scale;
-
+
adj = gtk_adjustment_new(0, 0, 10, 1, 1, 0);
-
+
g_object_set_data(G_OBJECT(adj), "attribute",
GINT_TO_POINTER(attribute));
g_object_set_data(G_OBJECT(adj), "attribute name", name);
-
- g_object_set_data(G_OBJECT(adj), "attribute active",
- GINT_TO_POINTER(0));
+
+ g_object_set_data(G_OBJECT(adj), "attribute default value",
+ GINT_TO_POINTER(default_value));
g_signal_connect(G_OBJECT(adj), "value_changed",
G_CALLBACK(scale_value_changed),
(gpointer) callback_data);
-
+
scale = ctk_scale_new(GTK_ADJUSTMENT(adj), name, ctk_config, value_type);
-
- if (help) {
- ctk_config_set_tooltip(ctk_config, CTK_SCALE_TOOLTIP_WIDGET(scale),
- help);
- }
-
+
+ ctk_config_set_tooltip(ctk_config, CTK_SCALE_TOOLTIP_WIDGET(scale),
+ help);
+
return scale;
} /* add_scale() */
@@ -259,12 +224,12 @@ static void post_scale_value_changed(GtkAdjustment *adjustment,
gint value)
{
char *name = g_object_get_data(G_OBJECT(adjustment), "attribute name");
-
+
gtk_widget_set_sensitive(ctk_image_sliders->reset_button, TRUE);
ctk_config_statusbar_message(ctk_image_sliders->ctk_config,
"%s set to %d.", name, value);
-
+
} /* post_scale_value_changed() */
@@ -289,11 +254,10 @@ static void scale_value_changed(GtkAdjustment *adjustment,
user_data = g_object_get_data(G_OBJECT(adjustment), "attribute");
attribute = GPOINTER_TO_INT(user_data);
-
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- attribute, (int) value);
-
+
+ NvCtrlSetAttribute(ctk_image_sliders->handle,
+ attribute, (int) value);
+
post_scale_value_changed(adjustment, ctk_image_sliders, value);
} /* scale_value_changed() */
@@ -301,51 +265,45 @@ static void scale_value_changed(GtkAdjustment *adjustment,
/*
- * ctk_image_sliders_reset() -
+ * ctk_image_sliders_reset() - resets sliders to their default values
*/
void ctk_image_sliders_reset(CtkImageSliders *ctk_image_sliders)
{
+ GtkAdjustment *adj;
+ gint val;
+
if (!ctk_image_sliders) return;
- if (get_scale_active(CTK_SCALE(ctk_image_sliders->digital_vibrance))) {
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_DIGITAL_VIBRANCE,
- 0);
- }
+ if (GTK_WIDGET_SENSITIVE(ctk_image_sliders->digital_vibrance)) {
+ adj = CTK_SCALE(ctk_image_sliders->digital_vibrance)->gtk_adjustment;
+ val = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
- /*
- * Reset IMAGE_SHARPENING before OVERSCAN_COMPENSATION, even though they're
- * in the other order in the page, because setting OVERSCAN_COMPENSATION to
- * 0 may cause IMAGE_SHARPENING to become unavailable and trying to reset it
- * here would cause a BadValue error.
- */
- if (get_scale_active(CTK_SCALE(ctk_image_sliders->image_sharpening))) {
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_IMAGE_SHARPENING,
- ctk_image_sliders->default_val);
+ NvCtrlSetAttribute(ctk_image_sliders->handle,
+ NV_CTRL_DIGITAL_VIBRANCE,
+ val);
}
- if (get_scale_active(CTK_SCALE(ctk_image_sliders->overscan_compensation))) {
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_OVERSCAN_COMPENSATION,
- 0);
+ if (GTK_WIDGET_SENSITIVE(ctk_image_sliders->image_sharpening)) {
+ adj = CTK_SCALE(ctk_image_sliders->image_sharpening)->gtk_adjustment;
+ val = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
+
+ NvCtrlSetAttribute(ctk_image_sliders->handle,
+ NV_CTRL_IMAGE_SHARPENING,
+ val);
}
/*
- * The above may have triggered events (e.g., changing
- * NV_CTRL_OVERSCAN_COMPENSATION may trigger an
- * NV_CTRL_IMAGE_SHARPENING value change). Such an event will
+ * The above may have triggered events. Such an event will
* cause scale_value_changed() and post_scale_value_changed() to
* be called when control returns to the gtk_main loop.
* post_scale_value_changed() will write a status message to the
* statusbar.
*
* However, the caller of ctk_image_sliders_reset() (e.g.,
- * ctkdisplaydevice-dfp.c:reset_button_clicked()) may also want to
+ * ctkdisplaydevice.c:reset_button_clicked()) may also want to
* write a status message to the statusbar. To ensure that the
* caller's statusbar message takes precedence (i.e., is the last
* thing written to the statusbar), process any generated events
@@ -357,7 +315,7 @@ void ctk_image_sliders_reset(CtkImageSliders *ctk_image_sliders)
}
ctk_image_sliders_setup(ctk_image_sliders);
-
+
} /* ctk_image_sliders_reset() */
@@ -372,9 +330,8 @@ static void scale_value_received(GtkObject *object, gpointer arg1,
gpointer user_data)
{
CtkEventStruct *event_struct;
- CtkImageSliders *ctk_image_sliders =
- CTK_IMAGE_SLIDERS(user_data);
-
+ CtkImageSliders *ctk_image_sliders = CTK_IMAGE_SLIDERS(user_data);
+
GtkAdjustment *adj;
GtkWidget *scale;
gint val;
@@ -382,20 +339,10 @@ static void scale_value_received(GtkObject *object, gpointer arg1,
event_struct = (CtkEventStruct *) arg1;
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask &
- ctk_image_sliders->display_device_mask)) {
- return;
- }
-
switch (event_struct->attribute) {
case NV_CTRL_DIGITAL_VIBRANCE:
scale = ctk_image_sliders->digital_vibrance;
break;
- case NV_CTRL_OVERSCAN_COMPENSATION:
- scale = ctk_image_sliders->overscan_compensation;
- break;
case NV_CTRL_IMAGE_SHARPENING:
scale = ctk_image_sliders->image_sharpening;
break;
@@ -445,11 +392,6 @@ void add_image_sliders_help(CtkImageSliders *ctk_image_sliders,
"including 2D, 3D, and video appear brighter and "
"crisper (even on flat panels) in your applications.");
- ctk_help_heading(b, i, "Overscan Compensation");
- ctk_help_para(b, i, "Use the Overscan Compensation slider to adjust the "
- "size of the display, to adjust for the overscan behavior of "
- "certain display devices.");
-
ctk_help_heading(b, i, "Image Sharpening");
ctk_help_para(b, i, "Use the Image Sharpening slider to adjust the "
"sharpness of the image quality by amplifying high "
@@ -470,17 +412,15 @@ static void setup_scale(CtkImageSliders *ctk_image_sliders,
ReturnStatus ret0, ret1;
NVCTRLAttributeValidValuesRec valid;
NvCtrlAttributeHandle *handle = ctk_image_sliders->handle;
- unsigned int mask = ctk_image_sliders->display_device_mask;
int val;
GtkAdjustment *adj = CTK_SCALE(scale)->gtk_adjustment;
-
+
/* Read settings from X server */
- ret0 = NvCtrlGetValidDisplayAttributeValues(handle, mask,
- attribute, &valid);
-
- ret1 = NvCtrlGetDisplayAttribute(handle, mask, attribute, &val);
-
+ ret0 = NvCtrlGetValidAttributeValues(handle, attribute, &valid);
+
+ ret1 = NvCtrlGetAttribute(handle, attribute, &val);
+
if ((ret0 == NvCtrlSuccess) && (ret1 == NvCtrlSuccess) &&
(valid.type == ATTRIBUTE_TYPE_RANGE)) {
@@ -496,20 +436,62 @@ static void setup_scale(CtkImageSliders *ctk_image_sliders,
g_signal_handlers_unblock_by_func(adj, scale_value_changed,
ctk_image_sliders);
- g_object_set_data(G_OBJECT(adj), "attribute active",
- GINT_TO_POINTER(1));
-
gtk_widget_set_sensitive(scale, TRUE);
} else {
- g_object_set_data(G_OBJECT(adj), "attribute active",
- GINT_TO_POINTER(0));
-
gtk_widget_set_sensitive(scale, FALSE);
}
} /* setup_scale() */
+
+static void setup_reset_button(CtkImageSliders *ctk_image_sliders)
+{
+ GtkWidget *scale;
+ GtkAdjustment *adj;
+ gint default_val;
+ gint current_val;
+
+
+ /* Reset button should be sensitive if all scales are sensitive and
+ * at least one scale is set to the non-default value
+ */
+
+ scale = ctk_image_sliders->digital_vibrance;
+ if (GTK_WIDGET_SENSITIVE(scale)) {
+ adj = CTK_SCALE(scale)->gtk_adjustment;
+ current_val = (gint) gtk_adjustment_get_value(adj);
+ default_val =
+ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
+ if (current_val != default_val) {
+ goto enable;
+ }
+ }
+
+ scale = ctk_image_sliders->image_sharpening;
+ if (GTK_WIDGET_SENSITIVE(scale)) {
+ adj = CTK_SCALE(scale)->gtk_adjustment;
+ current_val = (gint) gtk_adjustment_get_value(adj);
+ default_val =
+ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
+ if (current_val != default_val) {
+ goto enable;
+ }
+ }
+
+ /* Don't disable reset button here, since other settings that are not
+ * managed by the ctk_image_slider here may need it enabled
+ */
+ return;
+
+ enable:
+ gtk_widget_set_sensitive(ctk_image_sliders->reset_button, TRUE);
+}
+
+
+
/*
* Updates the page to reflect the current configuration of
* the display device.
@@ -519,27 +501,18 @@ void ctk_image_sliders_setup(CtkImageSliders *ctk_image_sliders)
if (!ctk_image_sliders) return;
/* Update sliders */
-
+
/* NV_CTRL_DIGITAL_VIBRANCE */
-
+
setup_scale(ctk_image_sliders, NV_CTRL_DIGITAL_VIBRANCE,
ctk_image_sliders->digital_vibrance);
- /* NV_CTRL_OVERSCAN_COMPENSATION */
-
- setup_scale(ctk_image_sliders, NV_CTRL_OVERSCAN_COMPENSATION,
- ctk_image_sliders->overscan_compensation);
-
/* NV_CTRL_IMAGE_SHARPENING */
-
+
setup_scale(ctk_image_sliders, NV_CTRL_IMAGE_SHARPENING,
ctk_image_sliders->image_sharpening);
- gtk_widget_set_sensitive(ctk_image_sliders->digital_vibrance,
- get_scale_active(CTK_SCALE(ctk_image_sliders->digital_vibrance)));
- gtk_widget_set_sensitive(ctk_image_sliders->overscan_compensation,
- get_scale_active(CTK_SCALE(ctk_image_sliders->overscan_compensation)));
- gtk_widget_set_sensitive(ctk_image_sliders->image_sharpening,
- get_scale_active(CTK_SCALE(ctk_image_sliders->image_sharpening)));
+
+ setup_reset_button(ctk_image_sliders);
} /* ctk_image_sliders_setup() */
diff --git a/src/gtk+-2.x/ctkimagesliders.h b/src/gtk+-2.x/ctkimagesliders.h
index b900cf7..1ded2ac 100644
--- a/src/gtk+-2.x/ctkimagesliders.h
+++ b/src/gtk+-2.x/ctkimagesliders.h
@@ -51,20 +51,18 @@ typedef struct _CtkImageSlidersClass CtkImageSlidersClass;
struct _CtkImageSliders
{
GtkVBox parent;
-
+
NvCtrlAttributeHandle *handle;
- unsigned int display_device_mask;
char *name;
CtkConfig *ctk_config;
CtkEvent *ctk_event;
GtkWidget *reset_button;
-
+
GtkWidget *frame;
+
GtkWidget *digital_vibrance;
- GtkWidget *overscan_compensation;
GtkWidget *image_sharpening;
- gint default_val;
};
struct _CtkImageSlidersClass
@@ -76,7 +74,6 @@ GType ctk_image_sliders_get_type (void) G_GNUC_CONST;
GtkWidget* ctk_image_sliders_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name);
void ctk_image_sliders_reset(CtkImageSliders *);
diff --git a/src/gtk+-2.x/ctklicense.c b/src/gtk+-2.x/ctklicense.c
index fc0308c..02027a7 100644
--- a/src/gtk+-2.x/ctklicense.c
+++ b/src/gtk+-2.x/ctklicense.c
@@ -121,6 +121,7 @@ GType ctk_license_dialog_get_type(void)
sizeof (CtkLicenseDialog),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_license_dialog_type = g_type_register_static(GTK_TYPE_VBOX,
diff --git a/src/gtk+-2.x/ctkmultisample.c b/src/gtk+-2.x/ctkmultisample.c
index 7596965..c58862c 100644
--- a/src/gtk+-2.x/ctkmultisample.c
+++ b/src/gtk+-2.x/ctkmultisample.c
@@ -134,21 +134,23 @@ static const char *__texture_sharpening_help =
#define __LOG_ANISO_RANGE (1 << 2)
#define __TEXTURE_SHARPEN (1 << 3)
#define __FSAA (1 << 4)
-#define __FSAA_NONE (1 << (__FSAA + NV_CTRL_FSAA_MODE_NONE))
-#define __FSAA_2x (1 << (__FSAA + NV_CTRL_FSAA_MODE_2x))
-#define __FSAA_2x_5t (1 << (__FSAA + NV_CTRL_FSAA_MODE_2x_5t))
-#define __FSAA_15x15 (1 << (__FSAA + NV_CTRL_FSAA_MODE_15x15))
-#define __FSAA_2x2 (1 << (__FSAA + NV_CTRL_FSAA_MODE_2x2))
-#define __FSAA_4x (1 << (__FSAA + NV_CTRL_FSAA_MODE_4x))
-#define __FSAA_4x_9t (1 << (__FSAA + NV_CTRL_FSAA_MODE_4x_9t))
-#define __FSAA_8x (1 << (__FSAA + NV_CTRL_FSAA_MODE_8x))
-#define __FSAA_16x (1 << (__FSAA + NV_CTRL_FSAA_MODE_16x))
-#define __FSAA_8xS (1 << (__FSAA + NV_CTRL_FSAA_MODE_8xS))
-#define __FSAA_8xQ (1 << (__FSAA + NV_CTRL_FSAA_MODE_8xQ))
-#define __FSAA_16xS (1 << (__FSAA + NV_CTRL_FSAA_MODE_16xS))
-#define __FSAA_16xQ (1 << (__FSAA + NV_CTRL_FSAA_MODE_16xQ))
-#define __FSAA_32xS (1 << (__FSAA + NV_CTRL_FSAA_MODE_32xS))
-#define __FSAA_ENHANCE (1 << (__FSAA + NV_CTRL_FSAA_MODE_MAX +1))
+#define __FSAA_NONE (__FSAA << NV_CTRL_FSAA_MODE_NONE)
+#define __FSAA_2x (__FSAA << NV_CTRL_FSAA_MODE_2x)
+#define __FSAA_2x_5t (__FSAA << NV_CTRL_FSAA_MODE_2x_5t)
+#define __FSAA_15x15 (__FSAA << NV_CTRL_FSAA_MODE_15x15)
+#define __FSAA_2x2 (__FSAA << NV_CTRL_FSAA_MODE_2x2)
+#define __FSAA_4x (__FSAA << NV_CTRL_FSAA_MODE_4x)
+#define __FSAA_4x_9t (__FSAA << NV_CTRL_FSAA_MODE_4x_9t)
+#define __FSAA_8x (__FSAA << NV_CTRL_FSAA_MODE_8x)
+#define __FSAA_16x (__FSAA << NV_CTRL_FSAA_MODE_16x)
+#define __FSAA_8xS (__FSAA << NV_CTRL_FSAA_MODE_8xS)
+#define __FSAA_8xQ (__FSAA << NV_CTRL_FSAA_MODE_8xQ)
+#define __FSAA_16xS (__FSAA << NV_CTRL_FSAA_MODE_16xS)
+#define __FSAA_16xQ (__FSAA << NV_CTRL_FSAA_MODE_16xQ)
+#define __FSAA_32xS (__FSAA << NV_CTRL_FSAA_MODE_32xS)
+#define __FSAA_32x (__FSAA << NV_CTRL_FSAA_MODE_32x)
+#define __FSAA_64xS (__FSAA << NV_CTRL_FSAA_MODE_64xS)
+#define __FSAA_ENHANCE (__FSAA << (NV_CTRL_FSAA_MODE_MAX + 1))
#define FRAME_PADDING 5
@@ -169,6 +171,7 @@ GType ctk_multisample_get_type(
sizeof (CtkMultisample),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_multisample_type =
@@ -526,6 +529,8 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
gint i, n = 0;
gint index_8xs = -1;
gint index_16x = -1;
+ gint index_32x = -1;
+ gint index_32xs = -1;
gint mask = valid.u.bits.ints;
ctk_multisample->fsaa_translation_table_size = 0;
@@ -543,15 +548,17 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
if (i == NV_CTRL_FSAA_MODE_8xS) index_8xs = n;
if (i == NV_CTRL_FSAA_MODE_16x) index_16x = n;
+ if (i == NV_CTRL_FSAA_MODE_32x) index_32x = n;
+ if (i == NV_CTRL_FSAA_MODE_32xS) index_32xs = n;
n++;
}
}
/*
- * XXX 8xS was added to the NV_CTRL_FSAA_MODE list after 16x, but
- * should appear before it in the slider. If both were added to
- * the fsaa_translation_table[], then swap their positions.
+ * XXX 8xS was added to the NV_CTRL_FSAA_MODE list after 16x, but should
+ * appear before it in the slider. Same with 32x and 32xS. If both were
+ * added to the fsaa_translation_table[], then re-order them appropriately.
*/
if ((index_8xs != -1) && (index_16x != -1)) {
@@ -560,7 +567,14 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
ctk_multisample->fsaa_translation_table[index_16x] =
NV_CTRL_FSAA_MODE_8xS;
}
-
+
+ if ((index_32x != -1) && (index_32xs != -1)) {
+ ctk_multisample->fsaa_translation_table[index_32x] =
+ NV_CTRL_FSAA_MODE_32xS;
+ ctk_multisample->fsaa_translation_table[index_32xs] =
+ NV_CTRL_FSAA_MODE_32x;
+ }
+
ctk_multisample->fsaa_translation_table_size = n;
} /* build_fsaa_translation_table() */
diff --git a/src/gtk+-2.x/ctkopengl.c b/src/gtk+-2.x/ctkopengl.c
index d18d3ca..97f957e 100644
--- a/src/gtk+-2.x/ctkopengl.c
+++ b/src/gtk+-2.x/ctkopengl.c
@@ -48,6 +48,8 @@ static void post_stereo_eyes_exchange_button_toggled(CtkOpenGL *, gboolean);
static void post_aa_line_gamma_toggled(CtkOpenGL *, gboolean);
+static void post_use_conformant_clamping_button_toggled(CtkOpenGL *, gint);
+
static void allow_flipping_button_toggled(GtkWidget *, gpointer);
static void force_stereo_button_toggled (GtkWidget *, gpointer);
@@ -58,6 +60,8 @@ static void stereo_eyes_exchange_button_toggled (GtkWidget *, gpointer);
static void aa_line_gamma_toggled (GtkWidget *, gpointer);
+static void use_conformant_clamping_button_toggled(GtkWidget *, gpointer);
+
static void show_sli_visual_indicator_button_toggled (GtkWidget *, gpointer);
static void show_multigpu_visual_indicator_button_toggled (GtkWidget *, gpointer);
@@ -142,6 +146,12 @@ static const char *__stereo_eyes_exchange_help =
"eye image in the right eye and vice versa for stereo "
"drawables. This option is applied immediately.";
+static const char *__use_conformant_clamping_help =
+"Disabling this option causes OpenGL to replace GL_CLAMP with "
+"GL_CLAMP_TO_EDGE for borderless 2D textures. This eliminates "
+"seams at the edges of textures in some older games such as "
+"Quake 3.";
+
#define __SYNC_TO_VBLANK (1 << 1)
#define __ALLOW_FLIPPING (1 << 2)
#define __AA_LINE_GAMMA_VALUE (1 << 3)
@@ -153,6 +163,7 @@ static const char *__stereo_eyes_exchange_help =
#define __SHOW_SLI_VISUAL_INDICATOR (1 << 9)
#define __STEREO_EYES_EXCHANGE (1 << 10)
#define __SHOW_MULTIGPU_VISUAL_INDICATOR (1 << 11)
+#define __CONFORMANT_CLAMPING (1 << 12)
@@ -173,6 +184,7 @@ GType ctk_opengl_get_type(
sizeof (CtkOpenGL),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_opengl_type = g_type_register_static (GTK_TYPE_VBOX,
@@ -206,6 +218,7 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
NVCTRLAttributeValidValuesRec image_settings_valid;
gint image_settings_value;
gint aa_line_gamma;
+ gint use_conformant_clamping;
gint show_sli_visual_indicator;
gint show_multigpu_visual_indicator;
@@ -216,6 +229,7 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
ReturnStatus ret_stereo_eyes_exchange;
ReturnStatus ret_image_settings;
ReturnStatus ret_aa_line_gamma;
+ ReturnStatus ret_use_conformant_clamping;
ReturnStatus ret_show_sli_visual_indicator;
ReturnStatus ret_show_multigpu_visual_indicator;
@@ -252,6 +266,11 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
ret_aa_line_gamma = NvCtrlGetAttribute(handle, NV_CTRL_OPENGL_AA_LINE_GAMMA,
&aa_line_gamma);
+
+ ret_use_conformant_clamping =
+ NvCtrlGetAttribute(handle, NV_CTRL_TEXTURE_CLAMPING,
+ &use_conformant_clamping);
+
ret_show_sli_visual_indicator = NvCtrlGetAttribute(handle,
NV_CTRL_SHOW_SLI_VISUAL_INDICATOR,
&show_sli_visual_indicator);
@@ -267,6 +286,7 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
(ret_stereo_eyes_exchange != NvCtrlSuccess) &&
(ret_image_settings != NvCtrlSuccess) &&
(ret_aa_line_gamma != NvCtrlSuccess) &&
+ (ret_use_conformant_clamping != NvCtrlSuccess) &&
(ret_show_sli_visual_indicator != NvCtrlSuccess) &&
(ret_show_multigpu_visual_indicator != NvCtrlSuccess)) {
return NULL;
@@ -565,6 +585,37 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON(check_button)));
}
+
+ /*
+ * NV_CTRL_TEXTURE_CLAMPING
+ */
+
+ if (ret_use_conformant_clamping == NvCtrlSuccess) {
+ label = gtk_label_new("Use Conformant Texture Clamping");
+
+ check_button = gtk_check_button_new();
+ gtk_container_add(GTK_CONTAINER(check_button), label);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
+ use_conformant_clamping);
+
+ gtk_box_pack_start(GTK_BOX(vbox), check_button, FALSE, FALSE, 0);
+
+ g_signal_connect(G_OBJECT(check_button), "toggled",
+ G_CALLBACK(use_conformant_clamping_button_toggled),
+ (gpointer) ctk_opengl);
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_TEXTURE_CLAMPING),
+ G_CALLBACK(value_changed), (gpointer) ctk_opengl);
+
+ ctk_config_set_tooltip(ctk_config, check_button,
+ __use_conformant_clamping_help);
+
+ ctk_opengl->active_attributes |= __CONFORMANT_CLAMPING;
+
+ ctk_opengl->use_conformant_clamping_button = check_button;
+ }
if (ret_show_sli_visual_indicator == NvCtrlSuccess) {
@@ -696,6 +747,15 @@ static void post_aa_line_gamma_toggled(CtkOpenGL *ctk_opengl,
enabled ? "enabled" : "disabled");
}
+static void
+post_use_conformant_clamping_button_toggled(CtkOpenGL *ctk_opengl,
+ int clamping)
+{
+ ctk_config_statusbar_message(ctk_opengl->ctk_config,
+ "Use %sConformant OpenGL Texture Clamping",
+ (clamping == NV_CTRL_TEXTURE_CLAMPING_SPEC) ?
+ "" : "Non-");
+}
static void vblank_sync_button_toggled(
GtkWidget *widget,
@@ -826,6 +886,24 @@ static void aa_line_gamma_toggled(
post_aa_line_gamma_toggled(ctk_opengl, enabled);
}
+static void use_conformant_clamping_button_toggled(GtkWidget *widget,
+ gpointer user_data)
+{
+ CtkOpenGL *ctk_opengl;
+ int clamping;
+
+ ctk_opengl = CTK_OPENGL(user_data);
+
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+ clamping = NV_CTRL_TEXTURE_CLAMPING_SPEC;
+ } else {
+ clamping = NV_CTRL_TEXTURE_CLAMPING_EDGE;
+ }
+
+ NvCtrlSetAttribute(ctk_opengl->handle, NV_CTRL_TEXTURE_CLAMPING, clamping);
+
+ post_use_conformant_clamping_button_toggled(ctk_opengl, clamping);
+}
/*
@@ -877,6 +955,13 @@ static void value_changed(GtkObject *object, gpointer arg1, gpointer user_data)
gtk_widget_set_sensitive(ctk_opengl->aa_line_gamma_scale,
event_struct->value);
break;
+ case NV_CTRL_TEXTURE_CLAMPING:
+ button =
+ GTK_TOGGLE_BUTTON(ctk_opengl->use_conformant_clamping_button);
+ func = G_CALLBACK(use_conformant_clamping_button_toggled);
+ post_use_conformant_clamping_button_toggled(ctk_opengl,
+ event_struct->value);
+ break;
case NV_CTRL_SHOW_SLI_VISUAL_INDICATOR:
button = GTK_TOGGLE_BUTTON(ctk_opengl->show_sli_visual_indicator_button);
func = G_CALLBACK(show_sli_visual_indicator_button_toggled);
@@ -1201,6 +1286,11 @@ GtkTextBuffer *ctk_opengl_create_help(GtkTextTagTable *table,
ctk_help_para(b, &i, __aa_line_gamma_slider_help);
}
+ if (ctk_opengl->active_attributes & __CONFORMANT_CLAMPING) {
+ ctk_help_heading(b, &i, "Use Conformant Texture Clamping");
+ ctk_help_para(b, &i, __use_conformant_clamping_help);
+ }
+
if (ctk_opengl->active_attributes & __SHOW_SLI_VISUAL_INDICATOR) {
ctk_help_heading(b, &i, "SLI Visual Indicator");
ctk_help_para(b, &i, "This option draws information about the current "
diff --git a/src/gtk+-2.x/ctkopengl.h b/src/gtk+-2.x/ctkopengl.h
index 6a5c6de..be88c94 100644
--- a/src/gtk+-2.x/ctkopengl.h
+++ b/src/gtk+-2.x/ctkopengl.h
@@ -55,6 +55,7 @@ struct _CtkOpenGL
GtkWidget *sync_to_vblank_button;
GtkWidget *allow_flipping_button;
+ GtkWidget *use_conformant_clamping_button;
GtkWidget *force_stereo_button;
GtkWidget *xinerama_stereo_button;
GtkWidget *stereo_eyes_exchange_button;
diff --git a/src/gtk+-2.x/ctkpowermizer.c b/src/gtk+-2.x/ctkpowermizer.c
index 23c3bac..da791ce 100644
--- a/src/gtk+-2.x/ctkpowermizer.c
+++ b/src/gtk+-2.x/ctkpowermizer.c
@@ -100,6 +100,7 @@ GType ctk_powermizer_get_type(void)
sizeof (CtkPowermizer),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_powermizer_type =
diff --git a/src/gtk+-2.x/ctkpowersavings.c b/src/gtk+-2.x/ctkpowersavings.c
index 744b4a4..fe293ce 100644
--- a/src/gtk+-2.x/ctkpowersavings.c
+++ b/src/gtk+-2.x/ctkpowersavings.c
@@ -54,6 +54,7 @@ GType ctk_power_savings_get_type(void)
sizeof (CtkPowerSavings),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_power_savings_type = g_type_register_static (GTK_TYPE_VBOX,
diff --git a/src/gtk+-2.x/ctkrandr.c b/src/gtk+-2.x/ctkrandr.c
deleted file mode 100644
index 322b410..0000000
--- a/src/gtk+-2.x/ctkrandr.c
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#include <stdlib.h> /* malloc */
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include <gdk-pixbuf/gdk-pixdata.h>
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
-
-#include "ctkevent.h"
-#include "ctkhelp.h"
-#include "ctkrandr.h"
-#include "ctkbanner.h"
-
-#include "rotation_orientation_horz_pixdata.h"
-#include "rotation_orientation_vert_pixdata.h"
-
-#include "rotate_left_on_pixdata.h"
-#include "rotate_left_off_pixdata.h"
-#include "rotate_right_on_pixdata.h"
-#include "rotate_right_off_pixdata.h"
-
-
-GType ctk_randr_get_type(void)
-{
- static GType ctk_randr_type = 0;
-
- if (!ctk_randr_type) {
- static const GTypeInfo ctk_randr_info = {
- sizeof (CtkRandRClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- NULL, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(CtkRandR),
- 0, /* n_preallocs */
- NULL, /* instance_init */
- };
-
- ctk_randr_type = g_type_register_static
- (GTK_TYPE_VBOX, "CtkRandR", &ctk_randr_info, 0);
- }
-
- return ctk_randr_type;
-}
-
-
-
-/*
- * Human readable rotation settings
- */
-static char *get_rotation_string(int rotation)
-{
- switch ( rotation ) {
- case RR_Rotate_0:
- return "Normal (0 degree rotation)";
- break;
- case RR_Rotate_90:
- return "Rotated left (90 degree rotation)";
- break;
- case RR_Rotate_180:
- return "Inverted (180 degree rotation)";
- break;
- case RR_Rotate_270:
- return "Rotated right (270 degree rotation)";
- break;
- default:
- return "Unknown rotation";
- break;
- }
-}
-
-
-
-/*
- * Helper function to flip the contents of a pixbuf
- * horizontally. This is used to perform a 180 degree
- * rotation + vertical flip.
- */
-
-static void horz_flip_pixbuf(GdkPixbuf *pixbuf)
-{
- guchar *pixels;
- int width;
- int height;
- int rowstride; // # bytes per row
- int bits_per_sample; // # bits per color sample
- int n_channels; // # color samples per component
-
- guchar *row;
- guchar *head;
- guchar *tail;
- int x, y, c;
- int component_size;
-
- /* Get pixbuf information */
- pixels = gdk_pixbuf_get_pixels(pixbuf);
- width = gdk_pixbuf_get_width(pixbuf);
- height = gdk_pixbuf_get_height(pixbuf);
- rowstride = gdk_pixbuf_get_rowstride(pixbuf);
- bits_per_sample = gdk_pixbuf_get_bits_per_sample(pixbuf);
- n_channels = gdk_pixbuf_get_n_channels(pixbuf);
-
- /* Compute the number of bytes per component (RGB/RGBA) */
- component_size = n_channels * (bits_per_sample / 8);
-
- /* Swap all components in all rows */
- for (y = 0; y < height; y++) {
-
- row = pixels + (y * rowstride);
- head = row;
- tail = row + (width - 1) * (component_size);
-
- for (x = 0; x < width/2; x++) {
-
- for (c = 0; c < component_size; c++) {
- guchar h = head[c];
- head[c] = tail[c];
- tail[c] = h;
- }
- head += component_size;
- tail -= component_size;
- }
- }
-
-} /* horz_flip_pixbuf() */
-
-
-
-/*
- * Helper function to load the correctly oriented pixbuf
- * orientation image from the nv_image dump repository
- */
-static GdkPixbuf *load_orientation_image_pixbuf(Rotation rotation)
-{
- const GdkPixdata *pixdata;
- GdkPixbuf *pixbuf;
- gboolean tweak_img; /* Rotate and flip image */
-
-
- /* Figure out which image and rotation to use */
- switch ( rotation ) {
- case RR_Rotate_0: /* Normal */
- pixdata = &rotation_orientation_horz_pixdata;
- tweak_img = FALSE;
- break;
- case RR_Rotate_90: /* Left */
- pixdata = &rotation_orientation_vert_pixdata;
- tweak_img = TRUE;
- break;
- case RR_Rotate_180: /* Inverted */
- pixdata = &rotation_orientation_horz_pixdata;
- tweak_img = TRUE;
- break;
- case RR_Rotate_270: /* Right */
- pixdata = &rotation_orientation_vert_pixdata;
- tweak_img = FALSE;
- break;
- default: /* Unknown */
- pixdata = &rotation_orientation_horz_pixdata;
- tweak_img = FALSE;
- break;
- }
-
-
- /* Generate the pixbuf from the pixdata */
- pixbuf = gdk_pixbuf_from_pixdata(pixdata, TRUE, NULL);
- if (!pixbuf) {
- return NULL;
- }
-
-
- /* Image requires 180 degree rotation + vertical flip,
- * this is the same as a horizontal flip.
- */
- if (tweak_img) {
- horz_flip_pixbuf(pixbuf);
- }
-
- return pixbuf;
-
-} /* load_orientation_image_pixbuf() */
-
-
-
-/*
- * Makes widgets associated with rotation reflect the given
- * rotation setting.
- */
-static void update_rotation(CtkRandR *ctk_randr, Rotation rotation)
-{
- /* Update screen image */
- gtk_image_set_from_pixbuf(ctk_randr->orientation_image,
- ctk_randr->orientation_image_pixbufs[rotation]);
-
- /* Update label */
- gtk_label_set_text(ctk_randr->label,
- get_rotation_string(rotation));
-
-
- /* Update the status bar */
- ctk_config_statusbar_message(ctk_randr->ctk_config,
- "Screen rotation set to %s.",
- get_rotation_string(rotation));
-
-} /* update_rotation() */
-
-
-
-/*
- * When XRandR events happens outside of the control panel,
- * they are trapped by this function so the gui can be updated
- * with the new rotation setting.
- */
-void ctk_randr_event_handler(GtkWidget *widget,
- XRRScreenChangeNotifyEvent *ev,
- gpointer data)
-{
- update_rotation((CtkRandR *)data, ev->rotation);
-} /* ctk_randr_event_handler() */
-
-
-
-/*
- * Rotate left button event handlers
- */
-static void do_button_rotate_left_clicked(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
- int orig_rotation;
- int rotation;
- int rotations;
- ReturnStatus status;
-
-
- /* Get current rotation */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATION,
- &orig_rotation);
-
- /* Get available rotations */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATIONS,
- &rotations);
-
- /* Find next available rotation to the left */
- rotation = orig_rotation;
- do {
- rotation <<= 1;
- if ( rotation > 8 ) {
- rotation = 1;
- }
- } while ( !(rotation & rotations) && (rotation != orig_rotation) );
-
- /* Set rotation */
- status = NvCtrlSetAttribute(ctk_randr->handle,
- NV_CTRL_ATTR_XRANDR_ROTATION,
- rotation);
-
- /* Update widgets */
- update_rotation(ctk_randr, rotation);
-}
-
-static void do_button_rotate_left_press(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_left_button_pressed = True;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_ON]);
-}
-
-static void do_button_rotate_left_release(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_left_button_pressed = False;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF]);
-}
-
-static void do_button_rotate_left_enter(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_left_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_ON]);
- }
-}
-
-static void do_button_rotate_left_leave(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_left_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF]);
- }
-}
-
-
-
-/*
- * Rotate right button event handlers
- */
-static void do_button_rotate_right_clicked(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
- int orig_rotation;
- int rotation;
- int rotations;
- ReturnStatus status;
-
-
- /* Get current rotation */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATION,
- &orig_rotation);
-
- /* Get available rotations */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATIONS,
- &rotations);
-
- /* Find next available rotation to the left */
- rotation = orig_rotation;
- do {
- rotation >>= 1;
- if ( rotation == 0 ) {
- rotation = 8;
- }
- } while ( !(rotation & rotations) && (rotation != orig_rotation) );
-
-
- /* Set rotation */
- status = NvCtrlSetAttribute(ctk_randr->handle,
- NV_CTRL_ATTR_XRANDR_ROTATION,
- rotation);
-
- /* Update widgets */
- update_rotation(ctk_randr, rotation);
-}
-
-static void do_button_rotate_right_press(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_right_button_pressed = True;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_ON]);
-}
-
-
-static void do_button_rotate_right_release(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_right_button_pressed = False;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF]);
-}
-
-static void do_button_rotate_right_enter(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_right_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_ON]);
- }
-}
-
-static void do_button_rotate_right_leave(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_right_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF]);
- }
-}
-
-
-
-/*
- * CTK RandR widget creation
- *
- */
-GtkWidget* ctk_randr_new(NvCtrlAttributeHandle *handle,
- CtkConfig *ctk_config,
- CtkEvent *ctk_event)
-{
- GObject *object;
- CtkRandR *ctk_randr;
-
- Bool ret; /* NvCtrlxxx function return value */
- int rotation_supported;
- int rotation;
-
-
-
- /* Make sure we have a handle */
- g_return_val_if_fail(handle != NULL, NULL);
-
-
- /* Check if this screen supports rotation */
- ret = NvCtrlGetAttribute(handle, NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED,
- &rotation_supported);
- if ((ret != NvCtrlSuccess) || (!rotation_supported)) {
- /* Rotation not available */
- return NULL;
- }
-
-
- /* Get the initial state of rotation */
- NvCtrlGetAttribute(handle, NV_CTRL_ATTR_XRANDR_ROTATION, &rotation);
-
-
- /* Create the ctk object */
- object = g_object_new(CTK_TYPE_RANDR, NULL);
- ctk_randr = CTK_RANDR(object);
-
-
- /* Cache the attribute handle */
- ctk_randr->handle = handle;
-
-
- /* Set container properties of the object */
- ctk_randr->ctk_config = ctk_config;
- gtk_box_set_spacing(GTK_BOX(ctk_randr), 10);
-
-
- /* Preload orientated screens pixbufs & image */
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_NORMAL] =
- load_orientation_image_pixbuf(RR_Rotate_0);
-
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_LEFT] =
- load_orientation_image_pixbuf(RR_Rotate_90);
-
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_INVERTED] =
- load_orientation_image_pixbuf(RR_Rotate_180);
-
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_RIGHT] =
- load_orientation_image_pixbuf(RR_Rotate_270);
-
- ctk_randr->orientation_image =
- GTK_IMAGE(gtk_image_new_from_pixbuf(ctk_randr->orientation_image_pixbufs[rotation]) );
-
-
- /* Preload button pixbufs & images */
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF] =
- gdk_pixbuf_from_pixdata(&rotate_left_off_pixdata,
- TRUE, NULL);
-
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_ON] =
- gdk_pixbuf_from_pixdata(&rotate_left_on_pixdata,
- TRUE, NULL);
-
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF] =
- gdk_pixbuf_from_pixdata(&rotate_right_off_pixdata,
- TRUE, NULL);
-
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_ON] =
- gdk_pixbuf_from_pixdata(&rotate_right_on_pixdata,
- TRUE, NULL);
-
- ctk_randr->rotate_left_button_image =
- GTK_IMAGE(gtk_image_new_from_pixbuf(ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF]) );
-
- ctk_randr->rotate_right_button_image =
- GTK_IMAGE(gtk_image_new_from_pixbuf(ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF]) );
-
-
-
- { /* Banner image */
- GtkWidget *banner = ctk_banner_image_new(BANNER_ARTWORK_ROTATION);
- gtk_box_pack_start(GTK_BOX(object), banner, FALSE, FALSE, 0);
- }
-
-
- { /* Rotation control pane */
- GtkWidget *vRotationPane = gtk_vbox_new(FALSE, 0);
- GtkWidget *hStrechedControlBox = gtk_hbox_new(TRUE, 0);
- GtkWidget *hControlBox = gtk_hbox_new(FALSE, 10);
-
- gtk_box_pack_start(GTK_BOX(object), vRotationPane, TRUE, FALSE, 0);
-
- gtk_box_pack_start(GTK_BOX(vRotationPane), hStrechedControlBox,
- FALSE, FALSE,
- 0);
-
- gtk_box_pack_start(GTK_BOX(hStrechedControlBox), hControlBox,
- FALSE, FALSE, 0);
-
-
- { /* Rotate left button */
- GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
- GtkWidget *btn_box = gtk_hbox_new(FALSE, 0);
- GtkWidget *button = gtk_button_new();
-
- gtk_box_pack_start(GTK_BOX(hControlBox), vbox, TRUE, FALSE, 0);
-
- gtk_widget_set_size_request(button, 26, 26);
- ctk_config_set_tooltip(ctk_config, button, "Rotate left");
- g_signal_connect(G_OBJECT(button), "pressed",
- G_CALLBACK(do_button_rotate_left_press),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "released",
- G_CALLBACK(do_button_rotate_left_release),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "enter",
- G_CALLBACK(do_button_rotate_left_enter),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "leave",
- G_CALLBACK(do_button_rotate_left_leave),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "clicked",
- G_CALLBACK(do_button_rotate_left_clicked),
- (gpointer) (ctk_randr));
-
- gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(button), btn_box);
-
- gtk_container_add(GTK_CONTAINER(btn_box),
- GTK_WIDGET(ctk_randr->rotate_left_button_image));
- }
-
- { /* Rotation orientation image */
- GtkWidget *frame = gtk_frame_new(NULL);
- GtkWidget *img_box = gtk_hbox_new(TRUE, 0);
- GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
- GtkWidget *vbox = gtk_vbox_new(TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(img_box),
- GTK_WIDGET(ctk_randr->orientation_image),
- FALSE, FALSE, 0);
- gtk_container_add(GTK_CONTAINER(frame), img_box);
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
- gtk_widget_set_size_request(hbox, 130, 130);
- gtk_box_pack_start(GTK_BOX(hControlBox), hbox, FALSE, FALSE, 0);
- }
-
- { /* Rotate right button */
- GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
- GtkWidget *btn_box = gtk_hbox_new(FALSE, 0);
- GtkWidget *button = gtk_button_new();
-
- gtk_box_pack_start(GTK_BOX(hControlBox), vbox, TRUE, FALSE, 0);
-
- gtk_widget_set_size_request(button, 26, 26);
- ctk_config_set_tooltip(ctk_config, button, "Rotate right");
- g_signal_connect(G_OBJECT(button), "pressed",
- G_CALLBACK(do_button_rotate_right_press),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "released",
- G_CALLBACK(do_button_rotate_right_release),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "enter",
- G_CALLBACK(do_button_rotate_right_enter),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "leave",
- G_CALLBACK(do_button_rotate_right_leave),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "clicked",
- G_CALLBACK(do_button_rotate_right_clicked),
- (gpointer) (ctk_randr));
-
- gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(button), btn_box);
-
- gtk_container_add(GTK_CONTAINER(btn_box),
- GTK_WIDGET(ctk_randr->rotate_right_button_image));
- }
-
- { /* Rotation label */
- ctk_randr->label =
- GTK_LABEL( gtk_label_new(get_rotation_string(rotation)));
- gtk_box_pack_start(GTK_BOX(vRotationPane),
- GTK_WIDGET(ctk_randr->label),
- TRUE, TRUE, 10);
- }
-
- } /* Rotation control pane */
-
-
-
- /* Show the widget */
- gtk_widget_show_all(GTK_WIDGET(ctk_randr));
-
-
- /* Link widget to XRandR events */
- g_signal_connect(ctk_event, "CTK_EVENT_RRScreenChangeNotify",
- G_CALLBACK(ctk_randr_event_handler),
- (gpointer) ctk_randr);
-
-
- return GTK_WIDGET(ctk_randr);
-}
-
-
-
-/*
- * RandR help screen
- */
-GtkTextBuffer *ctk_randr_create_help(GtkTextTagTable *table,
- CtkRandR *ctk_randr)
-{
- GtkTextIter i;
- GtkTextBuffer *b;
-
- b = gtk_text_buffer_new(table);
-
- gtk_text_buffer_get_iter_at_offset(b, &i, 0);
-
- ctk_help_title(b, &i, "Rotation Help");
- ctk_help_para(b, &i,
- "This page in the NVIDIA X Server Control Panel allows "
- "you to select the desired screen orientation through "
- "the XRandR extension."
- );
-
- ctk_help_finish(b);
-
- return b;
-}
diff --git a/src/gtk+-2.x/ctkrandr.h b/src/gtk+-2.x/ctkrandr.h
deleted file mode 100644
index aed7887..0000000
--- a/src/gtk+-2.x/ctkrandr.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#ifndef __CTK_RANDR_H__
-#define __CTK_RANDR_H__
-
-#include "ctkevent.h"
-#include "ctkconfig.h"
-
-G_BEGIN_DECLS
-
-#define CTK_TYPE_RANDR (ctk_randr_get_type())
-
-#define CTK_RANDR(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_RANDR, CtkRandR))
-
-#define CTK_RANDR_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_RANDR, CtkRandRClass))
-
-#define CTK_IS_RANDR(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_RANDR))
-
-#define CTK_IS_RANDR_CLASS(class) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_RANDR))
-
-#define CTK_RANDR_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_RANDR, CtkRandRClass))
-
-
-/* Image pixbuf indices */
-#define CTKRANDR_IMG_ROTATION_NORMAL RR_Rotate_0
-#define CTKRANDR_IMG_ROTATION_LEFT RR_Rotate_90
-#define CTKRANDR_IMG_ROTATION_INVERTED RR_Rotate_180
-#define CTKRANDR_IMG_ROTATION_RIGHT RR_Rotate_270
-
-/* Button pixbuf indices */
-#define CTKRANDR_BTN_ROTATE_LEFT_OFF 0
-#define CTKRANDR_BTN_ROTATE_LEFT_ON 1
-#define CTKRANDR_BTN_ROTATE_RIGHT_OFF 2
-#define CTKRANDR_BTN_ROTATE_RIGHT_ON 3
-
-
-typedef struct _CtkRandR
-{
- GtkVBox parent;
-
- NvCtrlAttributeHandle *handle;
- CtkConfig *ctk_config;
-
- GtkLabel *label;
-
- GtkImage *orientation_image;
- GdkPixbuf *orientation_image_pixbufs[9];
-
- GtkImage *rotate_left_button_image;
- Bool rotate_left_button_pressed;
- GtkImage *rotate_right_button_image;
- Bool rotate_right_button_pressed;
- GdkPixbuf *button_pixbufs[4];
-
-} CtkRandR;
-
-typedef struct _CtkRandRClass
-{
- GtkVBoxClass parent_class;
-} CtkRandRClass;
-
-GType ctk_randr_get_type (void) G_GNUC_CONST;
-GtkWidget* ctk_randr_new (NvCtrlAttributeHandle *, CtkConfig *,
- CtkEvent *);
-
-GtkTextBuffer *ctk_randr_create_help(GtkTextTagTable *, CtkRandR *);
-
-G_END_DECLS
-
-#endif /* __CTK_RANDR_H__ */
diff --git a/src/gtk+-2.x/ctkscale.c b/src/gtk+-2.x/ctkscale.c
index ce0c924..5eaebff 100644
--- a/src/gtk+-2.x/ctkscale.c
+++ b/src/gtk+-2.x/ctkscale.c
@@ -47,6 +47,7 @@ GType ctk_scale_get_type(
sizeof (CtkScale),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_scale_type = g_type_register_static (GTK_TYPE_VBOX,
diff --git a/src/gtk+-2.x/ctkscreen.c b/src/gtk+-2.x/ctkscreen.c
index a3fd5e3..4fa2541 100644
--- a/src/gtk+-2.x/ctkscreen.c
+++ b/src/gtk+-2.x/ctkscreen.c
@@ -88,6 +88,7 @@ GType ctk_screen_get_type(
sizeof (CtkScreen),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_screen_type =
@@ -108,76 +109,8 @@ static gchar *make_gpu_display_device_list(NvCtrlAttributeHandle *handle,
int gpu_id,
int xinerama_enabled)
{
- gchar *displays = NULL;
- gchar *type;
- gchar *name;
- gchar *tmp_str;
- unsigned int display_devices;
- unsigned int mask;
- Bool valid;
-
-
- /* Get the list of enabled display devices on the GPU */
-
- valid =
- XNVCTRLQueryTargetAttribute(NvCtrlGetDisplayPtr(handle),
- NV_CTRL_TARGET_TYPE_GPU,
- gpu_id,
- 0,
- NV_CTRL_ENABLED_DISPLAYS,
- (int *)&display_devices);
- if (!valid) return NULL;
-
- /* If Xinerama is disabled, only show displays that are associated
- * to this X screen.
- */
- if (!xinerama_enabled) {
- ReturnStatus ret;
- unsigned int associated_devices;
-
- ret = NvCtrlGetAttribute(handle,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- (int *)&associated_devices);
- if (ret == NvCtrlSuccess) {
- display_devices &= associated_devices;
- }
- }
-
- /* Make the list of display device names */
-
- for (mask = 1; mask; mask <<= 1) {
-
- if (!(mask & display_devices)) continue;
-
- type = display_device_mask_to_display_device_name(mask);
- name = NULL;
-
- valid =
- XNVCTRLQueryTargetStringAttribute(NvCtrlGetDisplayPtr(handle),
- NV_CTRL_TARGET_TYPE_GPU,
- gpu_id,
- mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &name);
- if (!valid) {
- tmp_str = g_strdup_printf("Unknown (%s)", type);
- } else {
- tmp_str = g_strdup_printf("%s (%s)", name, type);
- XFree(name);
- }
- free(type);
-
- if (displays) {
- name = g_strdup_printf("%s,\n%s", tmp_str, displays);
- g_free(displays);
- g_free(tmp_str);
- } else {
- name = tmp_str;
- }
- displays = name;
- }
-
- return displays;
+ return create_display_name_list_string(handle,
+ NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN);
}
@@ -395,16 +328,14 @@ GtkWidget* ctk_screen_new(NvCtrlAttributeHandle *handle,
/* get the number of gpu errors occurred */
gpu_errors = 0;
- ret = NvCtrlGetDisplayAttribute(handle,
- 0,
- NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
- (int *)&gpu_errors);
+ ret = NvCtrlGetAttribute(handle,
+ NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
+ (int *)&gpu_errors);
snprintf(tmp, 16, "%d", gpu_errors);
/* get the stereo mode set for this X screen */
- ret = NvCtrlGetDisplayAttribute(handle, 0, NV_CTRL_STEREO,
- (int *)&stereo_mode);
+ ret = NvCtrlGetAttribute(handle, NV_CTRL_STEREO, (int *)&stereo_mode);
if (ret != NvCtrlSuccess) {
stereo_mode = -1;
}
@@ -625,11 +556,12 @@ static void info_update_gpu_error(GtkObject *object, gpointer arg1,
char tmp[16];
/* get the number of gpu errors occurred */
- ret = NvCtrlGetDisplayAttribute(ctk_screen->handle, 0,
- NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
- (int *)&gpu_errors);
+ ret = NvCtrlGetAttribute(ctk_screen->handle,
+ NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
+ (int *)&gpu_errors);
if (ret == NvCtrlSuccess) {
snprintf(tmp, 16, "%d", gpu_errors);
gtk_label_set_text(GTK_LABEL(ctk_screen->gpu_errors), tmp);
}
+
} /* info_update_gpu_error() */
diff --git a/src/gtk+-2.x/ctkserver.c b/src/gtk+-2.x/ctkserver.c
index 5d61038..c60eee9 100644
--- a/src/gtk+-2.x/ctkserver.c
+++ b/src/gtk+-2.x/ctkserver.c
@@ -47,6 +47,7 @@ GType ctk_server_get_type(void)
sizeof(CtkServer),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_server_type = g_type_register_static
diff --git a/src/gtk+-2.x/ctkslimm.c b/src/gtk+-2.x/ctkslimm.c
index ecbf17a..93bc4b6 100644
--- a/src/gtk+-2.x/ctkslimm.c
+++ b/src/gtk+-2.x/ctkslimm.c
@@ -23,7 +23,6 @@
#include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
#include "msg.h"
#include "parse.h"
@@ -106,6 +105,7 @@ GType ctk_slimm_get_type()
sizeof (CtkSLIMM),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_slimm_type =
@@ -348,7 +348,7 @@ static void save_xconfig_button_clicked(GtkWidget *widget, gpointer user_data)
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_OK,
- err_msg);
+ "%s", err_msg);
gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
diff --git a/src/gtk+-2.x/ctkthermal.c b/src/gtk+-2.x/ctkthermal.c
index 187ff55..ca3967a 100644
--- a/src/gtk+-2.x/ctkthermal.c
+++ b/src/gtk+-2.x/ctkthermal.c
@@ -136,6 +136,7 @@ GType ctk_thermal_get_type(void)
sizeof (CtkThermal),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_thermal_type =
diff --git a/src/gtk+-2.x/ctkutils.c b/src/gtk+-2.x/ctkutils.c
index aad233a..a65b411 100644
--- a/src/gtk+-2.x/ctkutils.c
+++ b/src/gtk+-2.x/ctkutils.c
@@ -19,6 +19,7 @@
#include <gtk/gtk.h>
#include <NvCtrlAttributes.h>
+#include "NVCtrlLib.h"
#include "ctkutils.h"
#include "msg.h"
@@ -75,23 +76,22 @@ gchar *get_pcie_link_speed_string(NvCtrlAttributeHandle *handle,
/*
* Used to check if current display enabled or disabled.
- */
+ */
void update_display_enabled_flag(NvCtrlAttributeHandle *handle,
- gboolean *display_enabled,
- unsigned int display_device_mask)
-{
+ gboolean *display_enabled)
+{
ReturnStatus ret;
- unsigned int enabled_displays;
+ int val;
/* Is display enabled? */
ret = NvCtrlGetAttribute(handle,
- NV_CTRL_ENABLED_DISPLAYS,
- (int *)&enabled_displays);
+ NV_CTRL_DISPLAY_ENABLED,
+ &val);
*display_enabled =
- (ret == NvCtrlSuccess &&
- (enabled_displays & (display_device_mask)));
+ ((ret == NvCtrlSuccess) &&
+ (val == NV_CTRL_DISPLAY_ENABLED_TRUE));
} /* update_display_enabled_flag() */
@@ -102,10 +102,10 @@ gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle)
gchar *gpu_name;
gchar *gpu_product_name;
ReturnStatus ret;
-
- ret = NvCtrlGetStringDisplayAttribute(gpu_handle, 0,
- NV_CTRL_STRING_PRODUCT_NAME,
- &gpu_product_name);
+
+ ret = NvCtrlGetStringAttribute(gpu_handle,
+ NV_CTRL_STRING_PRODUCT_NAME,
+ &gpu_product_name);
if (ret == NvCtrlSuccess && gpu_product_name) {
gpu_name = g_strdup_printf("GPU %d - (%s)",
NvCtrlGetTargetId(gpu_handle),
@@ -115,11 +115,91 @@ gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle)
NvCtrlGetTargetId(gpu_handle));
}
g_free(gpu_product_name);
-
+
return gpu_name;
}
+gchar* create_display_name_list_string(NvCtrlAttributeHandle *handle,
+ unsigned int attr)
+{
+ gchar *displays = NULL;
+ gchar *typeIdName;
+ gchar *logName;
+ gchar *tmp_str;
+ ReturnStatus ret;
+ int *pData;
+ int len;
+ int i;
+ Bool valid;
+
+
+ /* List of Display Device connected on GPU */
+
+ ret = NvCtrlGetBinaryAttribute(handle, 0,
+ attr,
+ (unsigned char **)(&pData), &len);
+ if (ret != NvCtrlSuccess) {
+ goto done;
+ }
+
+ for (i = 0; i < pData[0]; i++) {
+ int display_id = pData[i+1];
+
+ valid =
+ XNVCTRLQueryTargetStringAttribute(NvCtrlGetDisplayPtr(handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ 0,
+ NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
+ &tmp_str);
+ if (!valid) {
+ logName = g_strdup("Unknown");
+ } else {
+ logName = g_strdup(tmp_str);
+ XFree(tmp_str);
+ }
+
+ valid =
+ XNVCTRLQueryTargetStringAttribute(NvCtrlGetDisplayPtr(handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ 0,
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID,
+ &tmp_str);
+ if (!valid) {
+ typeIdName = g_strdup_printf("DPY-%d", display_id);
+ } else {
+ typeIdName = g_strdup(tmp_str);
+ XFree(tmp_str);
+ }
+
+ tmp_str = g_strdup_printf("%s (%s)", logName, typeIdName);
+ g_free(logName);
+ g_free(typeIdName);
+
+ if (displays) {
+ logName = g_strdup_printf("%s,\n%s", tmp_str, displays);
+ g_free(displays);
+ g_free(tmp_str);
+ displays = logName;
+ } else {
+ displays = tmp_str;
+ }
+ }
+
+ done:
+
+ if (!displays) {
+ displays = g_strdup("None");
+ }
+
+ return displays;
+}
+
+
+
+
GtkWidget *add_table_row_with_help_text(GtkWidget *table,
CtkConfig *ctk_config,
const char *help,
@@ -228,7 +308,7 @@ void ctk_display_error_msg(GtkWidget *parent, gchar * msg)
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
- msg);
+ "%s", msg);
gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
}
@@ -256,7 +336,7 @@ void ctk_display_warning_msg(GtkWidget *parent, gchar * msg)
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_OK,
- msg);
+ "%s", msg);
gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
}
diff --git a/src/gtk+-2.x/ctkutils.h b/src/gtk+-2.x/ctkutils.h
index 446bcb8..76d707d 100644
--- a/src/gtk+-2.x/ctkutils.h
+++ b/src/gtk+-2.x/ctkutils.h
@@ -37,6 +37,8 @@ gchar *get_pcie_link_speed_string(NvCtrlAttributeHandle *handle,
gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle);
+gchar* create_display_name_list_string(NvCtrlAttributeHandle *handle,
+ unsigned int attr);
GtkWidget *add_table_row_with_help_text(GtkWidget *table,
CtkConfig *ctk_config,
@@ -65,8 +67,7 @@ void ctk_display_warning_msg(GtkWidget *parent, gchar *msg);
void ctk_empty_container(GtkWidget *);
void update_display_enabled_flag(NvCtrlAttributeHandle *handle,
- gboolean *display_enabled,
- unsigned int display_device_mask);
+ gboolean *display_enabled);
G_END_DECLS
diff --git a/src/gtk+-2.x/ctkvcs.c b/src/gtk+-2.x/ctkvcs.c
index 5f252c5..9932fea 100644
--- a/src/gtk+-2.x/ctkvcs.c
+++ b/src/gtk+-2.x/ctkvcs.c
@@ -117,6 +117,7 @@ GType ctk_vcs_get_type(void)
sizeof(CtkVcs),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_vcs_type = g_type_register_static
@@ -231,7 +232,7 @@ static gboolean update_vcs_info(gpointer user_data)
*
**/
-GtkWidget * create_error_dialog(CtkVcs *ctk_object)
+static GtkWidget * create_error_dialog(CtkVcs *ctk_object)
{
GtkWidget *dialog;
GtkWidget *image;
diff --git a/src/gtk+-2.x/ctkwindow.c b/src/gtk+-2.x/ctkwindow.c
index 1a45bdd..d3d24f8 100644
--- a/src/gtk+-2.x/ctkwindow.c
+++ b/src/gtk+-2.x/ctkwindow.c
@@ -45,7 +45,6 @@
#include "ctkgpu.h"
#include "ctkcolorcorrection.h"
#include "ctkxvideo.h"
-#include "ctkrandr.h"
#include "ctkcursorshadow.h"
#include "ctkopengl.h"
#include "ctkglx.h"
@@ -59,7 +58,7 @@
#include "ctkdisplaydevice-crt.h"
#include "ctkdisplaydevice-tv.h"
-#include "ctkdisplaydevice-dfp.h"
+#include "ctkdisplaydevice.h"
#include "ctkdisplayconfig.h"
#include "ctkserver.h"
@@ -156,6 +155,7 @@ GType ctk_window_get_type(void)
sizeof(CtkWindow),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_window_type = g_type_register_static
@@ -687,15 +687,6 @@ GtkWidget *ctk_window_new(ParsedAttribute *p, ConfigProperties *conf,
"X Server XVideo Settings", NULL, NULL, NULL);
}
- /* randr settings */
-
- child = ctk_randr_new(screen_handle, ctk_config, ctk_event);
- if (child) {
- help = ctk_randr_create_help(tag_table, CTK_RANDR(child));
- add_page(child, help, ctk_window, &iter, NULL,
- "Rotation Settings", NULL, NULL, NULL);
- }
-
/* cursor shadow */
child = ctk_cursor_shadow_new(screen_handle, ctk_config, ctk_event);
@@ -887,9 +878,9 @@ GtkWidget *ctk_window_new(ParsedAttribute *p, ConfigProperties *conf,
/* create the vcs entry name */
- ret = NvCtrlGetStringDisplayAttribute(vcs_handle, 0,
- NV_CTRL_STRING_VCSC_PRODUCT_NAME,
- &vcs_product_name);
+ ret = NvCtrlGetStringAttribute(vcs_handle,
+ NV_CTRL_STRING_VCSC_PRODUCT_NAME,
+ &vcs_product_name);
if (ret == NvCtrlSuccess && vcs_product_name) {
vcs_name = g_strdup_printf("VCS %d - (%s)",
NvCtrlGetTargetId(vcs_handle),
@@ -1360,102 +1351,117 @@ void add_special_config_file_attributes(CtkWindow *ctk_window)
*/
static void add_display_devices(CtkWindow *ctk_window, GtkTreeIter *iter,
- NvCtrlAttributeHandle *handle,
+ NvCtrlAttributeHandle *gpu_handle,
CtkEvent *ctk_event,
GtkTextTagTable *tag_table,
UpdateDisplaysData *data)
{
- GtkWidget *widget;
GtkTextBuffer *help;
ReturnStatus ret;
- int i, connected, n, mask;
- char *name;
- char *type;
- gchar *title;
-
-
- /* retrieve the connected display device mask */
+ int *pData;
+ int len;
+ int i;
+ NvCtrlAttributeHandle *display_handle;
- ret = NvCtrlGetAttribute(handle, NV_CTRL_CONNECTED_DISPLAYS, &connected);
- if (ret != NvCtrlSuccess) {
- return;
- }
- /* count how many display devices are connected */
+ /* retrieve the list of connected display devices */
- for (i = 0, n = 0; i < 24; i++) {
- if (connected & (1 << i)) n++;
- }
- if (n == 0) {
+ ret = NvCtrlGetBinaryAttribute(gpu_handle, 0,
+ NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU,
+ (unsigned char **)(&pData), &len);
+ if ((ret != NvCtrlSuccess) || (pData[0] <= 0)) {
return;
}
-
- if (data->display_iters) {
- free(data->display_iters);
- }
- data->display_iters = calloc(n, sizeof(GtkTreeIter));
+ nvfree(data->display_iters);
+ data->display_iters = calloc(pData[0], sizeof(GtkTreeIter));
data->num_displays = 0;
if (!data->display_iters) return;
/*
- * create pages for each of the display devices driven by this handle.
+ * create pages for each of the display devices driven by this (gpu)
+ * handle.
*/
- for (i = 0; i < 24; i++) {
- mask = (1 << i);
- if (!(mask & connected)) continue;
+ for (i = 0; i < pData[0]; i++) {
+ int display_id = pData[i+1];
+ char *logName;
+ char *typeBaseName;
+ char *typeIdName;
+ GtkWidget *widget;
+ gchar *title;
+
+ display_handle =
+ NvCtrlAttributeInit(NvCtrlGetDisplayPtr(gpu_handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM);
+ if (!display_handle) {
+ continue;
+ }
- type = display_device_mask_to_display_device_name(mask);
-
- ret =
- NvCtrlGetStringDisplayAttribute(handle, mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &name);
-
- if ((ret != NvCtrlSuccess) || (!name)) {
- title = g_strdup_printf("%s - (Unknown)", type);
+ /* Query display's names */
+ ret = NvCtrlGetStringAttribute(display_handle,
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME,
+ &typeBaseName);
+ if (ret != NvCtrlSuccess) {
+ NvCtrlAttributeClose(display_handle);
+ continue;
+ }
+ ret = NvCtrlGetStringAttribute(display_handle,
+ NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
+ &logName);
+ if (ret != NvCtrlSuccess) {
+ logName = NULL;
+ }
+ ret = NvCtrlGetStringAttribute(display_handle,
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID,
+ &typeIdName);
+ if (ret != NvCtrlSuccess) {
+ typeIdName = NULL;
+ }
+
+ if (!logName && !typeIdName) {
+ title = g_strdup_printf("DPY-%d - (Unknown)", display_id);
} else {
- title = g_strdup_printf("%s - (%s)", type, name);
- XFree(name);
+ title = g_strdup_printf("%s - (%s)", typeIdName, logName);
}
- free(type);
-
- if (mask & CTK_DISPLAY_DEVICE_CRT_MASK) {
-
+ XFree(logName);
+ XFree(typeIdName);
+
+ /* Create the appropriate page for the display */
+ if (strcmp(typeBaseName, "CRT") == 0) {
widget = ctk_display_device_crt_new
- (handle, ctk_window->ctk_config, ctk_event, mask, title);
-
+ (display_handle, ctk_window->ctk_config, ctk_event, title);
help = ctk_display_device_crt_create_help
(tag_table, CTK_DISPLAY_DEVICE_CRT(widget));
-
- } else if (mask & CTK_DISPLAY_DEVICE_TV_MASK) {
-
+ } else if (strcmp(typeBaseName, "TV") == 0) {
widget = ctk_display_device_tv_new
- (handle, ctk_window->ctk_config, ctk_event, mask, title);
-
+ (display_handle, ctk_window->ctk_config, ctk_event, title);
help = ctk_display_device_tv_create_help
(tag_table, CTK_DISPLAY_DEVICE_TV(widget));
-
- } else if (mask & CTK_DISPLAY_DEVICE_DFP_MASK) {
-
- widget = ctk_display_device_dfp_new
- (handle, ctk_window->ctk_config, ctk_event, mask, title);
-
- help = ctk_display_device_dfp_create_help
- (tag_table, CTK_DISPLAY_DEVICE_DFP(widget));
-
+ } else if (strcmp(typeBaseName, "DFP") == 0) {
+ widget = ctk_display_device_new(display_handle,
+ ctk_window->ctk_config, ctk_event,
+ title, typeBaseName);
+ help = ctk_display_device_create_help(tag_table,
+ CTK_DISPLAY_DEVICE(widget));
} else {
- g_free(title);
- continue;
+ widget = NULL;
+ }
+
+ if (!widget) {
+ NvCtrlAttributeClose(display_handle);
+ } else {
+ add_page(widget, help, ctk_window, iter,
+ &(data->display_iters[data->num_displays]), title,
+ NULL, NULL, NULL);
+ data->num_displays++;
}
- add_page(widget, help, ctk_window, iter,
- &(data->display_iters[data->num_displays]), title,
- NULL, NULL, NULL);
+ XFree(typeBaseName);
g_free(title);
- data->num_displays++;
}
} /* add_display_devices() */
diff --git a/src/gtk+-2.x/ctkxvideo.c b/src/gtk+-2.x/ctkxvideo.c
index aae0cfb..f5313c3 100644
--- a/src/gtk+-2.x/ctkxvideo.c
+++ b/src/gtk+-2.x/ctkxvideo.c
@@ -181,6 +181,7 @@ GType ctk_xvideo_get_type(
sizeof(CtkXVideo),
0, /* n_preallocs */
NULL, /* instance_init */
+ NULL /* value_table */
};
ctk_xvideo_type = g_type_register_static
diff --git a/src/gtk+-2.x/src.mk b/src/gtk+-2.x/src.mk
deleted file mode 100644
index 1ba1b5d..0000000
--- a/src/gtk+-2.x/src.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# files in the src/gtk+-2.x directory of nvidia-settings
-#
-
-GTK_SRC += ctkxvideo.c
-GTK_SRC += ctkcursorshadow.c
-GTK_SRC += ctkui.c
-GTK_SRC += ctkframelock.c
-GTK_SRC += ctkgauge.c
-GTK_SRC += ctkcurve.c
-GTK_SRC += ctkcolorcorrection.c
-GTK_SRC += ctkscale.c
-GTK_SRC += ctkmultisample.c
-GTK_SRC += ctkconfig.c
-GTK_SRC += ctkevent.c
-GTK_SRC += ctkwindow.c
-GTK_SRC += ctkopengl.c
-GTK_SRC += ctkglx.c
-GTK_SRC += ctkhelp.c
-GTK_SRC += ctkimagesliders.c
-GTK_SRC += ctkdisplaydevice-crt.c
-GTK_SRC += ctkdisplaydevice-tv.c
-GTK_SRC += ctkdisplaydevice-dfp.c
-GTK_SRC += ctkditheringcontrols.c
-GTK_SRC += ctkthermal.c
-GTK_SRC += ctkpowermizer.c
-GTK_SRC += ctkgvo.c
-GTK_SRC += ctkgvo-csc.c
-GTK_SRC += ctkdropdownmenu.c
-GTK_SRC += ctkrandr.c
-GTK_SRC += ctkclocks.c
-GTK_SRC += ctkutils.c
-GTK_SRC += ctkedid.c
-GTK_SRC += ctkserver.c
-GTK_SRC += ctkdisplaylayout.c
-GTK_SRC += ctkdisplayconfig.c
-GTK_SRC += ctkscreen.c
-GTK_SRC += ctkslimm.c
-GTK_SRC += ctkgpu.c
-GTK_SRC += ctkbanner.c
-GTK_SRC += ctkvcs.c
-GTK_SRC += ctkdisplayconfig-utils.c
-GTK_SRC += ctkgvo-banner.c
-GTK_SRC += ctkgvo-sync.c
-GTK_SRC += ctkpowersavings.c
-GTK_SRC += ctkgvi.c
-GTK_SRC += ctklicense.c
-GTK_SRC += ctkecc.c
-GTK_SRC += ctkcolorcontrols.c
-GTK_SRC += ctk3dvisionpro.c
-
-GTK_EXTRA_DIST += ctkxvideo.h
-GTK_EXTRA_DIST += ctkcursorshadow.h
-GTK_EXTRA_DIST += ctkui.h
-GTK_EXTRA_DIST += ctkframelock.h
-GTK_EXTRA_DIST += ctkgauge.h
-GTK_EXTRA_DIST += ctkcurve.h
-GTK_EXTRA_DIST += ctkcolorcorrection.h
-GTK_EXTRA_DIST += ctkscale.h
-GTK_EXTRA_DIST += ctkmultisample.h
-GTK_EXTRA_DIST += ctkconfig.h
-GTK_EXTRA_DIST += ctkevent.h
-GTK_EXTRA_DIST += ctkwindow.h
-GTK_EXTRA_DIST += ctkopengl.h
-GTK_EXTRA_DIST += ctkglx.h
-GTK_EXTRA_DIST += ctkhelp.h
-GTK_EXTRA_DIST += ctkimagesliders.h
-GTK_EXTRA_DIST += ctkdisplaydevice-crt.h
-GTK_EXTRA_DIST += ctkdisplaydevice-tv.h
-GTK_EXTRA_DIST += ctkdisplaydevice-dfp.h
-GTK_EXTRA_DIST += ctkditheringcontrols.h
-GTK_EXTRA_DIST += ctkconstants.h
-GTK_EXTRA_DIST += ctkthermal.h
-GTK_EXTRA_DIST += ctkpowermizer.h
-GTK_EXTRA_DIST += ctkgvo.h
-GTK_EXTRA_DIST += ctkgvo-csc.h
-GTK_EXTRA_DIST += ctkdropdownmenu.h
-GTK_EXTRA_DIST += ctkrandr.h
-GTK_EXTRA_DIST += ctkclocks.h
-GTK_EXTRA_DIST += ctkutils.h
-GTK_EXTRA_DIST += ctkedid.h
-GTK_EXTRA_DIST += ctkserver.h
-GTK_EXTRA_DIST += ctkdisplaylayout.h
-GTK_EXTRA_DIST += ctkdisplayconfig.h
-GTK_EXTRA_DIST += ctkscreen.h
-GTK_EXTRA_DIST += ctkslimm.h
-GTK_EXTRA_DIST += ctkgpu.h
-GTK_EXTRA_DIST += ctkbanner.h
-GTK_EXTRA_DIST += ctkvcs.h
-GTK_EXTRA_DIST += ctkdisplayconfig-utils.h
-GTK_EXTRA_DIST += ctkpowersavings.h
-GTK_EXTRA_DIST += ctkgvo-banner.h
-GTK_EXTRA_DIST += ctkgvo-sync.h
-GTK_EXTRA_DIST += ctkgvi.h
-GTK_EXTRA_DIST += ctklicense.h
-GTK_EXTRA_DIST += ctkecc.h
-GTK_EXTRA_DIST += ctkcolorcontrols.h
-GTK_EXTRA_DIST += ctk3dvisionpro.h
-GTK_EXTRA_DIST += src.mk
diff --git a/src/image_data/rotate_left_off.png b/src/image_data/rotate_left_off.png
deleted file mode 100644
index 3b609a3..0000000
--- a/src/image_data/rotate_left_off.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_left_off_pixdata.h b/src/image_data/rotate_left_off_pixdata.h
deleted file mode 100644
index bbd0282..0000000
--- a/src/image_data/rotate_left_off_pixdata.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_left_off_pixdata_pixel_data[] = {
- 0x99,0x99,0x99,0x99,0x7f,0x72,0x72,0x72,0x99,0x99,0x99,0xff,0xff,0xff,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,
- 0xf9,0xf9,0xf8,0xf8,0xf8,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,
- 0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0x32,0x32,0x32,0x99,0x99,0x99,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0x32,
- 0x32,0x32,0x99,0x99,0x99,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,
- 0xe3,0xe3,0x32,0x32,0x32,0x99,0x99,0x99,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x07,0xe4,0xe4,0xe4,
- 0xe3,0xe3,0xe3,0xe1,0xe1,0xe1,0x32,0x32,0x32,0x99,0x99,0x99,0xf9,0xf9,0xf9,
- 0xf8,0xf8,0xf8,0x82,0xf6,0xf6,0xf6,0x0b,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,
- 0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xce,0xce,0xce,0x92,0x92,0x92,0x82,0x74,0x74,0x74,
- 0x16,0xe5,0xe5,0xe5,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,0xe2,0xe2,
- 0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0x32,0x32,0x32,0x99,0x99,0x99,0xf7,0xf7,
- 0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,
- 0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,
- 0xed,0xce,0xce,0xce,0x58,0x58,0x58,0x84,0x25,0x25,0x25,0x15,0xe1,0xe1,0xe1,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0x32,0x32,0x32,0x99,0x99,0x99,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,
- 0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,0xed,0xc0,0xc0,0xc0,0x24,0x24,0x24,
- 0x85,0x25,0x25,0x25,0x14,0xe0,0xe0,0xe0,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,
- 0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,
- 0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xed,0xed,0xed,0xec,0xec,0xec,0xce,
- 0xce,0xce,0x24,0x24,0x24,0x83,0x25,0x25,0x25,0x01,0x4d,0x4d,0x4d,0x82,0x92,
- 0x92,0x92,0x13,0xe0,0xe0,0xe0,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdc,0xdc,0xdc,0x32,0x32,0x32,0x99,0x99,0x99,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,
- 0xee,0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0x57,0x57,0x57,
- 0x82,0x25,0x25,0x25,0x17,0x32,0x32,0x32,0xbb,0xbb,0xbb,0xff,0xff,0xff,0xfa,
- 0xfa,0xfa,0xf1,0xf1,0xf1,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0xde,
- 0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xcd,0xcd,0xcd,0x83,
- 0x25,0x25,0x25,0x17,0xbb,0xbb,0xbb,0xfd,0xfd,0xfd,0xec,0xec,0xec,0xe3,0xe3,
- 0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,
- 0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x32,0x32,0x32,0x99,0x99,
- 0x99,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,
- 0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0x91,0x91,0x91,0x82,0x25,
- 0x25,0x25,0x14,0x4d,0x4d,0x4d,0xff,0xff,0xff,0xec,0xec,0xec,0xe2,0xe2,0xe2,
- 0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0x32,0x32,0x32,
- 0x99,0x99,0x99,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,0xed,
- 0xec,0xec,0xec,0x82,0xea,0xea,0xea,0x02,0xe8,0xe8,0xe8,0x73,0x73,0x73,0x82,
- 0x25,0x25,0x25,0x20,0x92,0x92,0x92,0xfa,0xfa,0xfa,0xe2,0xe2,0xe2,0xe1,0xe1,
- 0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,
- 0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xef,0xef,0xef,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0x2b,0x2b,0x2b,0x0c,0x0c,0x0c,0x18,0x18,0x18,0x24,0x24,
- 0x24,0x30,0x30,0x30,0x3c,0x3c,0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,
- 0x61,0x82,0x82,0x82,0xdf,0xdf,0xdf,0xde,0xde,0xde,0x82,0xdc,0xdc,0xdc,0x28,
- 0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0x32,0x32,0x32,0x99,0x99,0x99,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,
- 0xea,0xea,0xea,0xe9,0xe9,0xe9,0xda,0xda,0xda,0x25,0x25,0x25,0x24,0x24,0x24,
- 0x30,0x30,0x30,0x3c,0x3c,0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,
- 0x76,0x76,0x76,0xf7,0xf7,0xf7,0xf9,0xf9,0xf9,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,
- 0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0xd5,0xd5,0xd5,0x32,0x32,0x32,0x99,0x99,0x99,0xec,0xec,0xec,0xeb,0xeb,0xeb,
- 0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xc3,0xc3,0xc3,
- 0x82,0x3c,0x3c,0x3c,0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x76,
- 0x76,0x76,0xe6,0xe6,0xe6,0xfd,0xfd,0xfd,0xde,0xde,0xde,0xdb,0xdb,0xdb,0xda,
- 0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,
- 0xd5,0xd5,0xd4,0xd4,0xd4,0x32,0x32,0x32,0x99,0x99,0x99,0xeb,0xeb,0xeb,0xea,
- 0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xa7,0xa7,0xa7,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x6d,
- 0x6d,0x6d,0xcd,0xcd,0xcd,0xfd,0xfd,0xfd,0xe3,0xe3,0xe3,0xdb,0xdb,0xdb,0xda,
- 0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,
- 0xd5,0xd5,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0x32,0x32,0x32,0x99,0x99,0x99,0xea,
- 0xea,0xea,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xa0,0xa0,0xa0,0x61,0x61,0x61,0x6d,
- 0x6d,0x6d,0xbc,0xbc,0xbc,0xff,0xff,0xff,0xe9,0xe9,0xe9,0xdb,0xdb,0xdb,0xda,
- 0xda,0xda,0xd8,0xd8,0xd8,0x82,0xd7,0xd7,0xd7,0x29,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0x32,0x32,0x32,0x99,0x99,
- 0x99,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,
- 0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0x9d,0x9d,
- 0x9d,0xab,0xab,0xab,0xff,0xff,0xff,0xee,0xee,0xee,0xda,0xda,0xda,0xd9,0xd9,
- 0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,
- 0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0x82,0xde,
- 0xde,0xde,0x82,0xf2,0xf2,0xf2,0x21,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,
- 0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,
- 0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,0xe3,
- 0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,
- 0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,
- 0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,
- 0xd3,0x82,0xd1,0xd1,0xd1,0x29,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xcd,0xcd,0xcd,
- 0x32,0x32,0x32,0x99,0x99,0x99,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,
- 0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,
- 0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,
- 0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,0xcd,0xcd,
- 0xcc,0xcc,0xcc,0x32,0x32,0x32,0x99,0x99,0x99,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,
- 0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x82,0xd8,0xd8,0xd8,0x24,0xd7,
- 0xd7,0xd7,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,
- 0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,0xcd,0xcd,0xcc,
- 0xcc,0xcc,0xcb,0xcb,0xcb,0x32,0x32,0x32,0x99,0x99,0x99,0xe2,0xe2,0xe2,0xe1,
- 0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0xdc,
- 0xdc,0xdc,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,
- 0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,
- 0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,0xcd,0xcd,0xcc,
- 0xcc,0xcc,0x82,0xca,0xca,0xca,0x02,0x32,0x32,0x32,0x72,0x72,0x72,0x99,0x32,
- 0x32,0x32
-};
-
-static const GdkPixdata rotate_left_off_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1847, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_left_off_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotate_left_on.png b/src/image_data/rotate_left_on.png
deleted file mode 100644
index 4adb3e9..0000000
--- a/src/image_data/rotate_left_on.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_left_on_pixdata.h b/src/image_data/rotate_left_on_pixdata.h
deleted file mode 100644
index c489283..0000000
--- a/src/image_data/rotate_left_on_pixdata.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_left_on_pixdata_pixel_data[] = {
- 0x99,0x32,0x32,0x32,0x7f,0x8c,0x8c,0x8c,0x32,0x32,0x32,0xc7,0xc7,0xc7,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xc0,0xc0,0xc0,0xbe,0xbe,0xbe,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb5,0xb5,0xb5,0xb3,
- 0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0x96,
- 0x96,0x96,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbe,0xbe,0xbe,0xbc,0xbc,0xbc,0xba,
- 0xba,0xba,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xb1,
- 0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,
- 0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x2f,0x98,0x98,0x98,
- 0x96,0x96,0x96,0x94,0x94,0x94,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbc,0xbc,0xbc,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,
- 0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xaa,0xaa,0xaa,
- 0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0x8f,0x8f,0x8f,0x65,0x65,0x65,0x50,0x50,0x50,
- 0x4f,0x4f,0x4f,0x62,0x62,0x62,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x97,0x97,0x97,
- 0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0xc1,0xc1,0xc1,0x32,0x32,0x32,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,
- 0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,0xa9,0xa9,
- 0xa7,0xa7,0xa7,0x91,0x91,0x91,0x3d,0x3d,0x3d,0x00,0x00,0x00,0x20,0x20,0x20,
- 0x60,0x60,0x60,0x82,0x80,0x80,0x80,0x16,0x98,0x98,0x98,0x97,0x97,0x97,0x95,
- 0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,
- 0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,
- 0xa7,0xa7,0x86,0x86,0x86,0x0a,0x0a,0x0a,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x84,
- 0xff,0xff,0xff,0x15,0x98,0x98,0x98,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,
- 0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb5,0xb5,
- 0xb5,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,
- 0xac,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,0xa7,0xa7,0x90,0x90,0x90,0x0a,0x0a,
- 0x0a,0x30,0x30,0x30,0xf0,0xf0,0xf0,0x85,0xff,0xff,0xff,0x14,0x97,0x97,0x97,
- 0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb3,0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,
- 0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,
- 0xa4,0xa4,0xa4,0x3d,0x3d,0x3d,0x20,0x20,0x20,0xf0,0xf0,0xf0,0x83,0xff,0xff,
- 0xff,0x16,0xec,0xec,0xec,0xcb,0xcb,0xcb,0xca,0xca,0xca,0x94,0x94,0x94,0x90,
- 0x90,0x90,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,
- 0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0x8e,
- 0x8e,0x8e,0x00,0x00,0x00,0xa0,0xa0,0xa0,0x82,0xff,0xff,0xff,0x17,0xf9,0xf9,
- 0xf9,0xb8,0xb8,0xb8,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,
- 0x90,0x8e,0x8e,0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x89,0x89,0x89,0x87,0x87,
- 0x87,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,
- 0xab,0xa9,0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0x64,0x64,0x64,0x20,0x20,0x20,0x83,0xff,0xff,0xff,0x17,0xb8,0xb8,0xb8,
- 0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,0x8e,
- 0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,0x85,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,0xa9,0xa9,
- 0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,
- 0x4f,0x4f,0x4f,0x60,0x60,0x60,0x82,0xff,0xff,0xff,0x14,0xec,0xec,0xec,0x95,
- 0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,
- 0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,
- 0x82,0x82,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,
- 0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0x1e,0x1e,0x1e,0x83,0x00,0x00,0x00,
- 0x01,0x80,0x80,0x80,0x82,0xff,0xff,0xff,0x15,0x80,0x80,0x80,0x00,0x00,0x00,
- 0x1b,0x1b,0x1b,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,
- 0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,
- 0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x95,0x95,0x95,0xd2,0xd2,0xd2,0x88,0xff,0xff,
- 0xff,0x13,0xea,0xea,0xea,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0x85,
- 0x85,0x85,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,
- 0xa1,0xa1,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x86,0x86,0x86,0xf1,0xf1,0xf1,0x86,
- 0xff,0xff,0xff,0x15,0xf8,0xf8,0xf8,0x92,0x92,0x92,0x89,0x89,0x89,0x87,0x87,
- 0x87,0x85,0x85,0x85,0x83,0x83,0x83,0x81,0x81,0x81,0x80,0x80,0x80,0x7e,0x7e,
- 0x7e,0x7c,0x7c,0x7c,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,
- 0x99,0x7c,0x7c,0x7c,0xf0,0xf0,0xf0,0x84,0xff,0xff,0xff,0x16,0xf8,0xf8,0xf8,
- 0xa0,0xa0,0xa0,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,0x85,0x83,0x83,0x83,
- 0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7a,0x7a,0x7a,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,
- 0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x97,0x97,0x97,0x95,0x95,0x95,
- 0x8e,0x8e,0x8e,0x84,0xff,0xff,0xff,0x17,0xb6,0xb6,0xb6,0x88,0x88,0x88,0x86,
- 0x86,0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,
- 0x7d,0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,
- 0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x9a,
- 0x9a,0x9a,0x82,0xff,0xff,0xff,0x7f,0xc5,0xc5,0xc5,0x88,0x88,0x88,0x86,0x86,
- 0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7d,0x7d,
- 0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0xc1,0xc1,
- 0xc1,0x32,0x32,0x32,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0x71,0x71,0x71,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x99,0x99,0x99,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x71,0x71,0x71,0x6f,0x6f,0x6f,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,
- 0x84,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,0x7b,
- 0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0xc1,0xc1,0xc1,0x32,0x32,
- 0x32,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,
- 0x8d,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x11,0x84,
- 0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,
- 0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,
- 0x72,0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0xc1,
- 0xc1,0xc1,0x8c,0x8c,0x8c,0x99,0xc1,0xc1,0xc1
-};
-
-static const GdkPixdata rotate_left_on_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1809, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_left_on_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotate_right_off.png b/src/image_data/rotate_right_off.png
deleted file mode 100644
index 3bd9413..0000000
--- a/src/image_data/rotate_right_off.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_right_off_pixdata.h b/src/image_data/rotate_right_off_pixdata.h
deleted file mode 100644
index 1eb0be1..0000000
--- a/src/image_data/rotate_right_off_pixdata.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_right_off_pixdata_pixel_data[] = {
- 0x99,0x99,0x99,0x99,0x7f,0x72,0x72,0x72,0x99,0x99,0x99,0xff,0xff,0xff,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,
- 0xf9,0xf9,0xf8,0xf8,0xf8,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,
- 0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0x32,0x32,0x32,0x99,0x99,0x99,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0x32,
- 0x32,0x32,0x99,0x99,0x99,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,
- 0xe3,0xe3,0x32,0x32,0x32,0x99,0x99,0x99,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x07,0xe4,0xe4,0xe4,
- 0xe3,0xe3,0xe3,0xe1,0xe1,0xe1,0x32,0x32,0x32,0x99,0x99,0x99,0xf9,0xf9,0xf9,
- 0xf8,0xf8,0xf8,0x82,0xf6,0xf6,0xf6,0x1c,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0x79,
- 0x79,0x79,0x78,0x78,0x78,0x96,0x96,0x96,0xd1,0xd1,0xd1,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,0xe2,
- 0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0x32,0x32,0x32,0x99,0x99,0x99,0xf7,
- 0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,
- 0xf2,0xf2,0x84,0x25,0x25,0x25,0x04,0x4d,0x4d,0x4d,0xce,0xce,0xce,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0x82,0xe8,0xe8,0xe8,0x10,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0x32,0x32,0x32,0x99,0x99,0x99,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0x85,0x25,0x25,
- 0x25,0x15,0x2d,0x2d,0x2d,0xa5,0xa5,0xa5,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,
- 0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,
- 0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,
- 0xf1,0xf1,0xf0,0xf0,0xf0,0x82,0x92,0x92,0x92,0x01,0x4d,0x4d,0x4d,0x83,0x25,
- 0x25,0x25,0x19,0x31,0x31,0x31,0xa4,0xa4,0xa4,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdc,0xdc,0xdc,0x32,0x32,0x32,0x99,0x99,0x99,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,
- 0xee,0xee,0xee,0xfc,0xfc,0xfc,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xb0,0xb0,0xb0,
- 0x32,0x32,0x32,0x82,0x25,0x25,0x25,0x18,0x73,0x73,0x73,0xe8,0xe8,0xe8,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0xde,
- 0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,
- 0xe9,0xe9,0x7e,0x7e,0x7e,0x83,0x25,0x25,0x25,0x18,0xd7,0xd7,0xd7,0xe3,0xe3,
- 0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,
- 0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x32,0x32,0x32,0x99,0x99,
- 0x99,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,
- 0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,
- 0xe8,0xe6,0xe6,0xe6,0x33,0x33,0x33,0x82,0x25,0x25,0x25,0x11,0xad,0xad,0xad,
- 0xe5,0xe5,0xe5,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0x32,0x32,0x32,
- 0x99,0x99,0x99,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,0xed,
- 0xec,0xec,0xec,0x82,0xea,0xea,0xea,0x05,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,
- 0xe6,0xe6,0xe5,0xe5,0xe5,0x72,0x72,0x72,0x82,0x25,0x25,0x25,0x4a,0x92,0x92,
- 0x92,0xec,0xec,0xec,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,
- 0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xef,0xef,0xef,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0x2a,0x2a,
- 0x2a,0x0c,0x0c,0x0c,0x18,0x18,0x18,0x24,0x24,0x24,0x30,0x30,0x30,0x3c,0x3c,
- 0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x81,0x81,0x81,0xdc,0xdc,
- 0xdc,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,
- 0xd6,0x32,0x32,0x32,0x99,0x99,0x99,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,
- 0xe6,0xd7,0xd7,0xd7,0x25,0x25,0x25,0x24,0x24,0x24,0x30,0x30,0x30,0x3c,0x3c,
- 0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x76,0x76,0x76,0xf7,0xf7,
- 0xf7,0xf8,0xf8,0xf8,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,
- 0xd6,0xd5,0xd5,0xd5,0x32,0x32,0x32,0x99,0x99,0x99,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,
- 0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xc1,0xc1,0xc1,0x82,0x3c,0x3c,0x3c,0x39,
- 0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x76,0x76,0x76,0xe6,0xe6,0xe6,
- 0xfd,0xfd,0xfd,0xdb,0xdb,0xdb,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0x32,0x32,0x32,0x99,0x99,0x99,0xeb,0xeb,0xeb,
- 0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xa6,0xa6,0xa6,
- 0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x6d,0x6d,0x6d,0xcd,0xcd,0xcd,
- 0xfd,0xfd,0xfd,0xe0,0xe0,0xe0,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0xd5,0xd5,0xd5,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0x32,0x32,0x32,0x99,0x99,0x99,
- 0xea,0xea,0xea,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x61,0x61,0x61,0x6d,0x6d,0x6d,0xbc,0xbc,0xbc,
- 0xff,0xff,0xff,0xe7,0xe7,0xe7,0x82,0xd7,0xd7,0xd7,0x29,0xd5,0xd5,0xd5,0xd4,
- 0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,
- 0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0x9d,0x9d,0x9d,0xab,0xab,0xab,0xff,
- 0xff,0xff,0xec,0xec,0xec,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,
- 0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0x32,
- 0x32,0x32,0x99,0x99,0x99,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0x82,
- 0xde,0xde,0xde,0x23,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xf1,0xf1,
- 0xf1,0xf0,0xf0,0xf0,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,
- 0xcf,0x32,0x32,0x32,0x99,0x99,0x99,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,
- 0xe4,0xe3,0xe3,0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,
- 0xde,0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,
- 0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0x82,0xd1,0xd1,0xd1,0x29,0xd0,0xd0,0xd0,0xce,0xce,0xce,
- 0xcd,0xcd,0xcd,0x32,0x32,0x32,0x99,0x99,0x99,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,
- 0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,
- 0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,
- 0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd3,0xd3,0xd3,
- 0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,
- 0xcd,0xcd,0xcd,0xcc,0xcc,0xcc,0x32,0x32,0x32,0x99,0x99,0x99,0xe3,0xe3,0xe3,
- 0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,
- 0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x82,0xd8,0xd8,
- 0xd8,0x24,0xd7,0xd7,0xd7,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,
- 0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,
- 0xcd,0xcd,0xcc,0xcc,0xcc,0xcb,0xcb,0xcb,0x32,0x32,0x32,0x99,0x99,0x99,0xe2,
- 0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,
- 0xdd,0xdd,0xdc,0xdc,0xdc,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,
- 0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,
- 0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,
- 0xcd,0xcd,0xcc,0xcc,0xcc,0x82,0xca,0xca,0xca,0x02,0x32,0x32,0x32,0x72,0x72,
- 0x72,0x99,0x32,0x32,0x32
-};
-
-static const GdkPixdata rotate_right_off_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1850, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_right_off_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotate_right_on.png b/src/image_data/rotate_right_on.png
deleted file mode 100644
index 5a99d55..0000000
--- a/src/image_data/rotate_right_on.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_right_on_pixdata.h b/src/image_data/rotate_right_on_pixdata.h
deleted file mode 100644
index c4acd08..0000000
--- a/src/image_data/rotate_right_on_pixdata.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_right_on_pixdata_pixel_data[] = {
- 0x99,0x32,0x32,0x32,0x7f,0x8c,0x8c,0x8c,0x32,0x32,0x32,0xc7,0xc7,0xc7,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xc0,0xc0,0xc0,0xbe,0xbe,0xbe,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb5,0xb5,0xb5,0xb3,
- 0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0x96,
- 0x96,0x96,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbe,0xbe,0xbe,0xbc,0xbc,0xbc,0xba,
- 0xba,0xba,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xb1,
- 0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,
- 0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x26,0x98,0x98,0x98,
- 0x96,0x96,0x96,0x94,0x94,0x94,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbc,0xbc,0xbc,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,
- 0xb1,0xb1,0xb1,0x57,0x57,0x57,0x6c,0x6c,0x6c,0x96,0x96,0x96,0xaa,0xaa,0xaa,
- 0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,
- 0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x97,0x97,0x97,
- 0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0xc1,0xc1,0xc1,0x32,0x32,0x32,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,
- 0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0x82,0x80,0x80,0x80,0x18,0x60,0x60,0x60,0x36,
- 0x36,0x36,0x91,0x91,0x91,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,0x9e,
- 0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x97,0x97,0x97,0x95,
- 0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,
- 0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0x84,0xff,0xff,0xff,0x16,0xa4,0xa4,
- 0xa4,0x72,0x72,0x72,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,
- 0x9a,0x98,0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,
- 0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb5,0xb5,
- 0xb5,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,
- 0xac,0xab,0xab,0xab,0x85,0xff,0xff,0xff,0x18,0xf1,0xf1,0xf1,0xa5,0xa5,0xa5,
- 0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,
- 0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb3,0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,
- 0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xd3,0xd3,0xd3,
- 0xd2,0xd2,0xd2,0xed,0xed,0xed,0x83,0xff,0xff,0xff,0x19,0xf6,0xf6,0xf6,0xa6,
- 0xa6,0xa6,0x98,0x98,0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,
- 0x90,0x90,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,
- 0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,
- 0xa2,0xa2,0xa1,0xa1,0xa1,0x97,0x97,0x97,0xf0,0xf0,0xf0,0x82,0xff,0xff,0xff,
- 0x18,0xdd,0xdd,0xdd,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,
- 0x90,0x8e,0x8e,0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x89,0x89,0x89,0x87,0x87,
- 0x87,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,
- 0xab,0xa9,0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x5a,0x5a,0x5a,0x83,0xff,
- 0xff,0xff,0x18,0xa1,0xa1,0xa1,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,0x8e,
- 0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,0x85,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,0xa9,0xa9,
- 0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,
- 0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x4c,0x4c,0x4c,0xd0,0xd0,0xd0,
- 0x82,0xff,0xff,0xff,0x14,0xba,0xba,0xba,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,
- 0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,
- 0x82,0x82,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,
- 0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0xa0,0xa0,0xa0,0x9e,
- 0x9e,0x9e,0x1d,0x1d,0x1d,0x83,0x00,0x00,0x00,0x01,0x80,0x80,0x80,0x82,0xff,
- 0xff,0xff,0x15,0x80,0x80,0x80,0x00,0x00,0x00,0x1a,0x1a,0x1a,0x8a,0x8a,0x8a,
- 0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,
- 0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,
- 0x8f,0x8f,0x8f,0xd2,0xd2,0xd2,0x88,0xff,0xff,0xff,0x13,0xe9,0xe9,0xe9,0x85,
- 0x85,0x85,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,
- 0xa1,0xa1,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,
- 0x98,0x98,0x82,0x82,0x82,0xf1,0xf1,0xf1,0x86,0xff,0xff,0xff,0x15,0xf8,0xf8,
- 0xf8,0x8d,0x8d,0x8d,0x83,0x83,0x83,0x81,0x81,0x81,0x80,0x80,0x80,0x7e,0x7e,
- 0x7e,0x7c,0x7c,0x7c,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,
- 0x99,0x97,0x97,0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x7a,0x7a,0x7a,0xf0,0xf0,
- 0xf0,0x84,0xff,0xff,0xff,0x16,0xf8,0xf8,0xf8,0x9c,0x9c,0x9c,0x83,0x83,0x83,
- 0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7a,0x7a,0x7a,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,
- 0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x97,0x97,0x97,0x95,0x95,0x95,
- 0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8c,0x8c,0x8c,0x84,0xff,0xff,
- 0xff,0x17,0xb2,0xb2,0xb2,0x82,0x82,0x82,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,
- 0x7d,0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,
- 0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,
- 0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x99,0x99,0x99,0x82,0xff,0xff,0xff,
- 0x7f,0xc2,0xc2,0xc2,0x82,0x82,0x82,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7d,0x7d,
- 0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0xc1,0xc1,
- 0xc1,0x32,0x32,0x32,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0xd2,0xd2,
- 0xd2,0xd1,0xd1,0xd1,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0x71,0x71,0x71,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x99,0x99,0x99,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x71,0x71,0x71,0x6f,0x6f,0x6f,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,
- 0x84,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,0x7b,
- 0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0xc1,0xc1,0xc1,0x32,0x32,
- 0x32,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,
- 0x8d,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,
- 0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x0e,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,
- 0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,
- 0x72,0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0xc1,
- 0xc1,0xc1,0x8c,0x8c,0x8c,0x99,0xc1,0xc1,0xc1
-};
-
-static const GdkPixdata rotate_right_on_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1809, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_right_on_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotation.png b/src/image_data/rotation.png
deleted file mode 100644
index 466812a..0000000
--- a/src/image_data/rotation.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotation_orientation_horz.png b/src/image_data/rotation_orientation_horz.png
deleted file mode 100644
index 8280377..0000000
--- a/src/image_data/rotation_orientation_horz.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotation_orientation_horz_pixdata.h b/src/image_data/rotation_orientation_horz_pixdata.h
deleted file mode 100644
index d346355..0000000
--- a/src/image_data/rotation_orientation_horz_pixdata.h
+++ /dev/null
@@ -1,2304 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotation_orientation_horz_pixdata_pixel_data[] = {
- 0x03,0x00,0x00,0x00,0xff,0x05,0x05,0x05,0xff,0x05,0x04,0x04,0xff,0x91,0x05,
- 0x05,0x05,0xff,0x05,0x04,0x05,0x05,0xff,0x04,0x04,0x04,0xff,0x04,0x04,0x05,
- 0xff,0x05,0x05,0x05,0xff,0x04,0x05,0x05,0xff,0x84,0x05,0x05,0x05,0xff,0x82,
- 0x04,0x04,0x04,0xff,0xd5,0x05,0x05,0x05,0xff,0x82,0x04,0x04,0x04,0xff,0x0b,
- 0x05,0x05,0x05,0xff,0x00,0x00,0x00,0xff,0x04,0x04,0x04,0xff,0xe5,0xe4,0xe4,
- 0xff,0xdb,0xc6,0xc5,0xff,0xde,0xd4,0xd3,0xff,0xe5,0xe5,0xe5,0xff,0xe0,0xe0,
- 0xe0,0xff,0xe2,0xe2,0xe2,0xff,0xde,0xde,0xde,0xff,0xe4,0xe4,0xe4,0xff,0x82,
- 0xe2,0xe2,0xe2,0xff,0x18,0xe3,0xe3,0xe3,0xff,0xe4,0xe4,0xe4,0xff,0xe5,0xe5,
- 0xe5,0xff,0xe1,0xe1,0xe1,0xff,0xe3,0xe3,0xe3,0xff,0xe2,0xe2,0xe2,0xff,0xe3,
- 0xe3,0xe3,0xff,0xe4,0xe4,0xe4,0xff,0xde,0xdf,0xdf,0xff,0xc3,0xcf,0xcf,0xff,
- 0xaf,0xc7,0xcc,0xff,0xc6,0xcd,0xd6,0xff,0xd1,0xd3,0xd3,0xff,0xc9,0xce,0xcf,
- 0xff,0xd8,0xd9,0xd8,0xff,0xd1,0xd1,0xd1,0xff,0xd4,0xd4,0xd4,0xff,0xd5,0xd5,
- 0xd8,0xff,0xb9,0xbc,0xc3,0xff,0xbd,0xc1,0xc8,0xff,0xd2,0xd4,0xd8,0xff,0xd0,
- 0xd3,0xd5,0xff,0xd9,0xda,0xdb,0xff,0xe4,0xe4,0xe4,0xff,0xbf,0xe6,0xe6,0xe6,
- 0xff,0x0f,0xe3,0xe3,0xe3,0xff,0xe4,0xe4,0xe4,0xff,0xdc,0xdc,0xdc,0xff,0xdf,
- 0xdf,0xdf,0xff,0xe4,0xe4,0xe4,0xff,0xe1,0xe1,0xe1,0xff,0xe3,0xe3,0xe3,0xff,
- 0xe4,0xe4,0xe4,0xff,0xe0,0xe0,0xe0,0xff,0xde,0xde,0xde,0xff,0xe4,0xe4,0xe4,
- 0xff,0xdd,0xdd,0xdd,0xff,0xe1,0xe1,0xe1,0xff,0xdd,0xdd,0xdd,0xff,0xe3,0xe3,
- 0xe3,0xff,0x82,0xde,0xde,0xde,0xff,0x04,0xe5,0xe5,0xe5,0xff,0xc9,0xc9,0xc9,
- 0xff,0xc7,0xc7,0xc7,0xff,0xe5,0xe5,0xe5,0xff,0x82,0x04,0x04,0x04,0xff,0x22,
- 0xde,0xd6,0xd6,0xff,0xb8,0x47,0x42,0xff,0xb7,0x64,0x62,0xff,0xcb,0xcb,0xcb,
- 0xff,0x9b,0x9b,0x9b,0xff,0xa3,0xa3,0xa3,0xff,0x98,0x98,0x98,0xff,0xb8,0xb8,
- 0xb8,0xff,0x9d,0x9d,0x9d,0xff,0xaa,0xaa,0xaa,0xff,0xa3,0xa3,0xa3,0xff,0xc0,
- 0xc0,0xc0,0xff,0xda,0xda,0xda,0xff,0xb2,0xb2,0xb2,0xff,0xaa,0xaa,0xaa,0xff,
- 0xa9,0xa9,0xa9,0xff,0xac,0xac,0xac,0xff,0xb0,0xb0,0xb0,0xff,0xc5,0xc8,0xca,
- 0xff,0xa4,0xb6,0xb8,0xff,0x7f,0x99,0x9c,0xff,0xa4,0xa4,0xa5,0xff,0xc7,0xba,
- 0x9e,0xff,0xbb,0xb3,0x99,0xff,0xc2,0xc0,0xb9,0xff,0xc6,0xc5,0xc5,0xff,0xce,
- 0xce,0xcf,0xff,0xc7,0xc7,0xca,0xff,0xa4,0xae,0xb8,0xff,0xa7,0xb2,0xbd,0xff,
- 0xad,0xbd,0xcf,0xff,0xa4,0xad,0xb7,0xff,0xc5,0xc2,0xc0,0xff,0xe0,0xe0,0xe0,
- 0xff,0xbf,0xe6,0xe6,0xe6,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x36,0xc8,0xc8,0xc8,
- 0xff,0xab,0xab,0xab,0xff,0xba,0xba,0xba,0xff,0xa6,0xa6,0xa6,0xff,0xac,0xac,
- 0xac,0xff,0xaf,0xaf,0xaf,0xff,0xb8,0xb8,0xb8,0xff,0xbb,0xbb,0xbb,0xff,0xda,
- 0xda,0xda,0xff,0xc5,0xc5,0xc5,0xff,0xc0,0xc0,0xc0,0xff,0x9e,0x9e,0x9e,0xff,
- 0xb4,0xb4,0xb4,0xff,0x96,0x96,0x96,0xff,0x8b,0x8b,0x8b,0xff,0xdc,0xdc,0xdc,
- 0xff,0xa4,0xa4,0xa4,0xff,0xb6,0xb6,0xb6,0xff,0xe4,0xe4,0xe4,0xff,0x04,0x04,
- 0x04,0xff,0x03,0x03,0x04,0xff,0xd0,0xd2,0xd7,0xff,0xc9,0xc8,0xcd,0xff,0xc5,
- 0xc0,0xc4,0xff,0xcd,0xcf,0xd4,0xff,0xc0,0xc2,0xc6,0xff,0xba,0xbc,0xc1,0xff,
- 0xc7,0xc9,0xce,0xff,0xc6,0xc8,0xcd,0xff,0xc3,0xc5,0xca,0xff,0xc6,0xc8,0xcd,
- 0xff,0xc7,0xca,0xce,0xff,0xc8,0xca,0xcf,0xff,0xd0,0xd2,0xd7,0xff,0xcc,0xce,
- 0xd3,0xff,0xc6,0xc8,0xcd,0xff,0xc7,0xc9,0xce,0xff,0xc7,0xca,0xce,0xff,0xc8,
- 0xca,0xce,0xff,0xcd,0xcf,0xd3,0xff,0xc6,0xca,0xd0,0xff,0xb4,0xb8,0xc1,0xff,
- 0xbe,0xc0,0xc6,0xff,0xc9,0xc6,0xc4,0xff,0xc3,0xbf,0xb7,0xff,0xc9,0xc8,0xc8,
- 0xff,0xc4,0xc5,0xc9,0xff,0xbb,0xbd,0xc2,0xff,0xc3,0xc5,0xcb,0xff,0xbb,0xc3,
- 0xce,0xff,0xba,0xc2,0xcd,0xff,0xbf,0xc3,0xcc,0xff,0xaa,0xaf,0xbf,0xff,0xbc,
- 0xbf,0xca,0xff,0x86,0xd2,0xd4,0xd9,0xff,0x83,0xd2,0xd5,0xda,0xff,0x8c,0xd3,
- 0xd5,0xda,0xff,0x82,0xd3,0xd5,0xdb,0xff,0x87,0xd3,0xd6,0xdb,0xff,0x87,0xd4,
- 0xd6,0xdb,0xff,0x86,0xd4,0xd6,0xdc,0xff,0x87,0xd4,0xd7,0xdc,0xff,0x84,0xd5,
- 0xd7,0xdc,0xff,0x8a,0xd5,0xd7,0xdd,0xff,0x1c,0xd3,0xd5,0xda,0xff,0xd4,0xd6,
- 0xdb,0xff,0xd2,0xd5,0xda,0xff,0xcd,0xcf,0xd5,0xff,0xcb,0xcd,0xd3,0xff,0xce,
- 0xd0,0xd5,0xff,0xca,0xcd,0xd2,0xff,0xbb,0xbe,0xc3,0xff,0xc3,0xc5,0xcb,0xff,
- 0xc6,0xc8,0xcd,0xff,0xcb,0xce,0xd3,0xff,0xd0,0xd3,0xd8,0xff,0xd1,0xd4,0xd9,
- 0xff,0xcc,0xce,0xd4,0xff,0xd0,0xd3,0xd8,0xff,0xcf,0xd1,0xd7,0xff,0xd0,0xd3,
- 0xd8,0xff,0xd5,0xd7,0xdc,0xff,0xc0,0xc2,0xc7,0xff,0xc3,0xc6,0xcb,0xff,0xd4,
- 0xd7,0xdc,0xff,0x03,0x04,0x04,0xff,0x01,0x01,0x02,0xff,0x23,0x3b,0x72,0xff,
- 0x24,0x3c,0x72,0xff,0x24,0x3d,0x73,0xff,0x25,0x3e,0x74,0xff,0x26,0x3e,0x74,
- 0xff,0x82,0x26,0x3e,0x75,0xff,0x82,0x26,0x3f,0x75,0xff,0x01,0x27,0x3f,0x75,
- 0xff,0x82,0x27,0x40,0x75,0xff,0x0e,0x28,0x40,0x75,0xff,0x28,0x41,0x76,0xff,
- 0x29,0x41,0x77,0xff,0x29,0x42,0x77,0xff,0x2a,0x42,0x78,0xff,0x2a,0x43,0x79,
- 0xff,0x2b,0x43,0x79,0xff,0x2b,0x44,0x7a,0xff,0x2c,0x44,0x7a,0xff,0x2c,0x45,
- 0x7b,0xff,0x2d,0x45,0x7c,0xff,0x2d,0x46,0x7d,0xff,0x2e,0x47,0x7d,0xff,0x2e,
- 0x47,0x7e,0xff,0x82,0x2f,0x48,0x7f,0xff,0x12,0x30,0x49,0x80,0xff,0x30,0x49,
- 0x81,0xff,0x31,0x49,0x81,0xff,0x31,0x4a,0x82,0xff,0x32,0x4a,0x83,0xff,0x33,
- 0x4b,0x84,0xff,0x33,0x4c,0x85,0xff,0x34,0x4d,0x86,0xff,0x35,0x4e,0x87,0xff,
- 0x36,0x4f,0x88,0xff,0x37,0x50,0x89,0xff,0x38,0x51,0x8b,0xff,0x38,0x53,0x8c,
- 0xff,0x39,0x54,0x8d,0xff,0x3a,0x54,0x8e,0xff,0x3a,0x55,0x8e,0xff,0x3b,0x55,
- 0x8f,0xff,0x3b,0x56,0x90,0xff,0x82,0x3c,0x57,0x91,0xff,0x03,0x3d,0x58,0x92,
- 0xff,0x3d,0x58,0x94,0xff,0x3e,0x59,0x94,0xff,0x82,0x3f,0x5a,0x95,0xff,0x04,
- 0x40,0x5b,0x96,0xff,0x40,0x5b,0x97,0xff,0x41,0x5c,0x97,0xff,0x41,0x5d,0x98,
- 0xff,0x82,0x42,0x5e,0x99,0xff,0x21,0x43,0x5f,0x9a,0xff,0x43,0x5f,0x9b,0xff,
- 0x44,0x60,0x9c,0xff,0x45,0x60,0x9c,0xff,0x45,0x61,0x9d,0xff,0x46,0x62,0x9d,
- 0xff,0x46,0x62,0x9e,0xff,0x47,0x63,0x9f,0xff,0x47,0x63,0xa0,0xff,0x48,0x64,
- 0xa0,0xff,0x48,0x65,0xa1,0xff,0x49,0x65,0xa2,0xff,0x4a,0x66,0xa2,0xff,0x4b,
- 0x66,0xa3,0xff,0x4b,0x67,0xa4,0xff,0x4c,0x67,0xa4,0xff,0x4c,0x68,0xa5,0xff,
- 0x4d,0x68,0xa6,0xff,0x4d,0x69,0xa6,0xff,0x4e,0x6a,0xa7,0xff,0x4f,0x6a,0xa8,
- 0xff,0x4f,0x6b,0xa8,0xff,0x50,0x6b,0xa9,0xff,0x50,0x6c,0xaa,0xff,0x51,0x6c,
- 0xaa,0xff,0x52,0x6d,0xab,0xff,0x52,0x6e,0xac,0xff,0x53,0x6e,0xad,0xff,0x53,
- 0x6f,0xad,0xff,0x54,0x6f,0xae,0xff,0x54,0x70,0xaf,0xff,0x55,0x70,0xb0,0xff,
- 0x55,0x71,0xb0,0xff,0x9a,0x56,0x71,0xb0,0xff,0x07,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x06,0x22,
- 0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x83,0x25,0x3e,0x77,0xff,0x01,0x25,
- 0x3f,0x77,0xff,0x82,0x25,0x3f,0x78,0xff,0x02,0x26,0x40,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x02,0x28,0x41,0x7b,0xff,0x29,0x42,0x7c,
- 0xff,0x82,0x29,0x43,0x7c,0xff,0x29,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,
- 0x34,0x4e,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,
- 0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x57,0x95,0xff,0x3c,
- 0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,
- 0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,0xff,0x14,0x45,0x62,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,
- 0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,
- 0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x9a,0x52,0x6f,0xb1,0xff,0x15,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,
- 0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x84,0x28,0x42,0x7c,0xff,0x01,0x29,0x42,
- 0x7c,0xff,0x83,0x29,0x43,0x7d,0xff,0x28,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,
- 0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x40,0x5c,
- 0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x0f,0x44,0x61,0xa0,0xff,0x44,0x61,
- 0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,
- 0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x82,0x4d,0x6a,0xab,0xff,0x05,
- 0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x99,0x52,0x6f,0xb1,0xff,
- 0x0a,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,
- 0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,
- 0xff,0x05,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x82,0x26,0x3f,0x79,0xff,0x08,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x82,0x2b,0x45,0x80,0xff,0x83,0x2c,0x46,0x80,0xff,0x01,0x2c,0x46,0x81,0xff,
- 0x82,0x2c,0x47,0x81,0xff,0x82,0x2d,0x47,0x82,0xff,0x82,0x2e,0x48,0x83,0xff,
- 0x38,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,
- 0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x60,
- 0x9f,0xff,0x45,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x62,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,
- 0xab,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,
- 0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,
- 0x99,0x52,0x6f,0xb1,0xff,0x09,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1c,
- 0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,
- 0x73,0xff,0x17,0x22,0x3b,0x74,0xff,0x22,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x78,0xff,0x25,0x3e,0x78,
- 0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,
- 0xff,0x2e,0x49,0x84,0xff,0x85,0x2f,0x4a,0x85,0xff,0x83,0x30,0x4a,0x86,0xff,
- 0x03,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x31,0x4c,0x87,0xff,0x82,0x32,
- 0x4c,0x88,0xff,0x05,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x05,
- 0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x82,0x3a,0x54,0x92,0xff,0x1c,0x3b,0x55,0x93,0xff,
- 0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,
- 0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,
- 0x5d,0x9c,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9f,0xff,0x45,0x61,0xa0,0xff,
- 0x46,0x61,0xa1,0xff,0x47,0x62,0xa2,0xff,0x48,0x63,0xa3,0xff,0x49,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x82,0x4e,0x6b,0xac,0xff,0x03,0x4f,0x6c,0xad,0xff,0x50,0x6d,
- 0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x98,0x52,0x6f,0xb1,
- 0xff,0x1c,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1c,0x35,0x6d,0xff,0x1c,
- 0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,
- 0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x73,0xff,0x2b,0x43,0x77,
- 0xff,0x37,0x4f,0x80,0xff,0x3c,0x54,0x82,0xff,0x39,0x4f,0x7d,0xff,0x23,0x3c,
- 0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,
- 0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x0f,
- 0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,
- 0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4b,
- 0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,
- 0x4e,0x89,0xff,0x33,0x4e,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x89,0xff,
- 0x83,0x33,0x4e,0x8a,0xff,0x03,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x34,
- 0x4f,0x8c,0xff,0x82,0x35,0x4f,0x8c,0xff,0x12,0x36,0x50,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x11,0x45,0x60,0xa0,0xff,0x46,0x61,0xa1,
- 0xff,0x46,0x62,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,
- 0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6e,0xb1,
- 0xff,0x97,0x52,0x6f,0xb1,0xff,0x1d,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x27,0x3f,
- 0x75,0xff,0x59,0x6a,0x8d,0xff,0x8a,0xa3,0xbb,0xff,0x9a,0xb4,0xc9,0xff,0x85,
- 0x94,0xaa,0xff,0x35,0x4a,0x7b,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,
- 0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x7a,
- 0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x06,0x2c,0x47,0x81,0xff,0x2d,0x48,
- 0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x82,0x30,0x4b,0x86,0xff,0x09,0x31,0x4c,0x87,0xff,0x31,0x4d,
- 0x88,0xff,0x32,0x4d,0x89,0xff,0x33,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,
- 0x84,0x36,0x51,0x8e,0xff,0x02,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x82,
- 0x37,0x52,0x8f,0xff,0x01,0x37,0x52,0x90,0xff,0x82,0x38,0x53,0x90,0xff,0x26,
- 0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,
- 0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,
- 0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,
- 0x41,0x5c,0x9b,0xff,0x42,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x60,
- 0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x69,0xab,
- 0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x83,0x51,0x6e,0xb0,0xff,0x94,0x52,0x6f,0xb1,0xff,0x2f,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,
- 0x1f,0x38,0x71,0xff,0x2c,0x43,0x76,0xff,0x77,0x87,0xa1,0xff,0x98,0xc4,0xe3,
- 0xff,0xac,0xc8,0xde,0xff,0xb6,0xbe,0xc7,0xff,0x6c,0x78,0x93,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,
- 0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2d,
- 0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,
- 0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x05,0x36,0x52,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x84,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,0xff,0x83,0x3b,0x56,
- 0x93,0xff,0x01,0x3c,0x56,0x94,0xff,0x82,0x3c,0x57,0x95,0xff,0x21,0x3c,0x58,
- 0x96,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,
- 0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,
- 0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,
- 0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,
- 0xab,0xff,0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x82,0x4f,0x6c,0xae,0xff,
- 0x82,0x50,0x6d,0xaf,0xff,0x85,0x51,0x6e,0xb0,0xff,0x8c,0x52,0x6f,0xb1,0xff,
- 0x35,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,
- 0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,
- 0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x2c,0x43,0x76,0xff,0x7f,0x8a,0x9d,0xff,
- 0xa4,0xb6,0xc5,0xff,0xa1,0xaa,0xb4,0xff,0xa2,0xa9,0xb2,0xff,0x66,0x73,0x8c,
- 0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x2f,0x4b,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,
- 0x31,0x4c,0x88,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,
- 0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,
- 0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x82,0x38,0x54,0x91,0xff,0x07,0x39,0x55,0x92,0xff,0x39,0x56,
- 0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,
- 0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x84,0x3d,0x59,0x97,0xff,0x83,0x3e,0x5a,
- 0x98,0xff,0x01,0x3f,0x5a,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,
- 0x9a,0xff,0x06,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,
- 0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,
- 0x9f,0xff,0x01,0x45,0x60,0xa0,0xff,0x82,0x45,0x61,0xa1,0xff,0x0d,0x45,0x62,
- 0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x49,0x66,0xa7,0xff,
- 0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,
- 0xff,0x4c,0x69,0xab,0xff,0x86,0x4d,0x6a,0xac,0xff,0x83,0x4e,0x6b,0xad,0xff,
- 0x01,0x4f,0x6c,0xae,0xff,0x83,0x50,0x6d,0xaf,0xff,0x85,0x51,0x6e,0xb0,0xff,
- 0x84,0x52,0x6f,0xb1,0xff,0x48,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x27,0x3e,0x73,
- 0xff,0x5c,0x69,0x86,0xff,0x6e,0x77,0x8b,0xff,0x49,0x58,0x79,0xff,0x4f,0x61,
- 0x87,0xff,0x3e,0x53,0x7b,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,
- 0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,
- 0x25,0x3f,0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,
- 0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,
- 0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,
- 0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,
- 0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,
- 0x50,0x8c,0xff,0x35,0x51,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,
- 0xff,0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,
- 0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,
- 0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x40,0x5d,0x9b,0xff,0x82,0x41,0x5d,0x9c,0xff,0x02,
- 0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x82,0x42,0x5e,0x9d,0xff,0x04,0x43,
- 0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x82,0x45,0x60,0xa0,0xff,0x0f,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,
- 0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x49,0x66,0xa8,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,
- 0xaa,0xff,0x4c,0x69,0xab,0xff,0x8d,0x4d,0x6a,0xac,0xff,0x83,0x4e,0x6b,0xad,
- 0xff,0x01,0x4f,0x6c,0xae,0xff,0x83,0x50,0x6d,0xaf,0xff,0x0e,0x51,0x6e,0xb0,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,
- 0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x36,0x6e,0xff,0x1f,0x38,0x70,0xff,0x29,0x3f,0x73,0xff,0x27,0x3e,0x73,0xff,
- 0x2b,0x41,0x75,0xff,0x2a,0x41,0x76,0xff,0x82,0x2b,0x42,0x77,0xff,0x10,0x28,
- 0x40,0x76,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x47,
- 0x82,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,
- 0x2f,0x4a,0x85,0xff,0x09,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,
- 0xff,0x05,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x05,0x3a,0x56,
- 0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,0xff,0x3c,
- 0x58,0x96,0xff,0x82,0x3d,0x59,0x97,0xff,0x0b,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x84,0x44,0x61,0xa0,0xff,0x82,0x45,
- 0x61,0xa1,0xff,0x82,0x46,0x61,0xa1,0xff,0x0e,0x46,0x62,0xa2,0xff,0x46,0x62,
- 0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,
- 0xff,0x4b,0x68,0xaa,0xff,0x82,0x4c,0x69,0xab,0xff,0x93,0x4d,0x6a,0xac,0xff,
- 0x1a,0x4e,0x6b,0xad,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x19,0x33,
- 0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x22,0x3a,0x70,0xff,0x3b,0x4e,0x78,0xff,
- 0x38,0x4b,0x77,0xff,0x40,0x51,0x79,0xff,0x41,0x53,0x7b,0xff,0x42,0x53,0x7c,
- 0xff,0x40,0x52,0x7b,0xff,0x34,0x48,0x77,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,
- 0x82,0x27,0x41,0x7b,0xff,0x1f,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2b,0x45,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,
- 0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,
- 0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x31,
- 0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,0xff,
- 0x0f,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x82,0x43,0x60,0x9f,0xff,0x07,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,
- 0xff,0x48,0x64,0xa4,0xff,0x82,0x48,0x64,0xa5,0xff,0x02,0x48,0x65,0xa5,0xff,
- 0x49,0x65,0xa5,0xff,0x83,0x49,0x65,0xa6,0xff,0x01,0x49,0x66,0xa7,0xff,0x82,
- 0x4a,0x66,0xa7,0xff,0x02,0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x82,0x4b,
- 0x68,0xa9,0xff,0x02,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x94,0x4d,0x6a,
- 0xac,0xff,0x34,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x19,0x33,0x6a,0xff,
- 0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,
- 0xff,0x1c,0x36,0x6d,0xff,0x1f,0x38,0x6f,0xff,0x2e,0x43,0x74,0xff,0x2f,0x44,
- 0x72,0xff,0x33,0x46,0x70,0xff,0x38,0x4b,0x75,0xff,0x39,0x4c,0x76,0xff,0x34,
- 0x47,0x74,0xff,0x2b,0x40,0x71,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,
- 0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,
- 0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,
- 0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,
- 0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x82,0x36,0x52,0x8e,0xff,0x03,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x18,0x3a,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x99,
- 0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,
- 0xff,0x82,0x48,0x64,0xa4,0xff,0x05,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x82,0x4c,0x68,
- 0xa9,0xff,0x01,0x4c,0x69,0xa9,0xff,0x84,0x4c,0x69,0xaa,0xff,0x82,0x4c,0x69,
- 0xab,0xff,0x03,0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,0x4e,0x6b,0xad,0xff,
- 0x92,0x4d,0x6a,0xac,0xff,0x0f,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x19,
- 0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,
- 0x1b,0x35,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,
- 0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,0x3b,0x74,
- 0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x82,0x2b,0x45,0x80,0xff,0x17,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,
- 0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,
- 0x36,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x25,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,
- 0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,
- 0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,
- 0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x83,0x4f,
- 0x6c,0xae,0xff,0x01,0x50,0x6d,0xae,0xff,0x82,0x50,0x6d,0xaf,0xff,0x83,0x4f,
- 0x6c,0xae,0xff,0x83,0x4e,0x6b,0xad,0xff,0x8b,0x4d,0x6a,0xac,0xff,0x0e,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,
- 0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,
- 0xff,0x1c,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x82,0x20,0x39,0x72,0xff,
- 0x01,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x26,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x45,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,
- 0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,
- 0x86,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x32,
- 0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x82,0x38,
- 0x54,0x91,0xff,0x12,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x82,0x43,0x60,0x9f,0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,
- 0xa4,0xff,0x10,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,
- 0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xa9,
- 0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,
- 0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x84,0x52,0x6f,0xb1,0xff,0x01,0x51,0x6e,
- 0xb0,0xff,0x83,0x50,0x6d,0xaf,0xff,0x83,0x4f,0x6c,0xae,0xff,0x83,0x4e,0x6b,
- 0xad,0xff,0x84,0x4d,0x6a,0xac,0xff,0x2b,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x36,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,
- 0x82,0x30,0x4b,0x86,0xff,0x09,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,
- 0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x82,0x36,0x52,
- 0x8e,0xff,0x03,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x82,0x39,0x55,0x92,0xff,0x2a,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,
- 0xa7,0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8a,0x52,0x6f,0xb1,0xff,0x01,
- 0x51,0x6e,0xb0,0xff,0x83,0x50,0x6d,0xaf,0xff,0x83,0x4f,0x6c,0xae,0xff,0x11,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,
- 0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,
- 0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,
- 0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x47,
- 0x82,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,
- 0x2f,0x4a,0x85,0xff,0x0b,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x82,0x36,0x52,0x8e,0xff,0x03,0x37,0x53,0x8f,0xff,0x38,
- 0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x28,0x3a,0x56,
- 0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,
- 0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,
- 0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,
- 0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,
- 0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,
- 0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,
- 0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x8f,0x52,
- 0x6f,0xb1,0xff,0x0d,0x51,0x6e,0xb0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,
- 0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,
- 0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,
- 0xff,0x02,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x82,0x20,0x39,0x72,0xff,
- 0x01,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x08,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x82,0x27,
- 0x41,0x7b,0xff,0x17,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x45,
- 0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,
- 0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,
- 0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x88,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x17,0x36,0x52,0x8e,
- 0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,
- 0x43,0x60,0x9f,0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,
- 0x09,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,
- 0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x82,0x4e,0x6b,0xac,0xff,0x05,0x4f,0x6c,
- 0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x90,0x52,0x6f,0xb1,0xff,0x04,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x82,0x18,0x31,0x68,0xff,
- 0x02,0x19,0x32,0x69,0xff,0x1a,0x32,0x69,0xff,0x82,0x1a,0x33,0x6a,0xff,0x33,
- 0x1b,0x34,0x6b,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x35,0x6d,
- 0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,
- 0x3a,0x73,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x75,0xff,
- 0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,
- 0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,
- 0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4b,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,
- 0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x82,0x39,0x55,0x92,0xff,0x0f,
- 0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x82,0x42,0x5f,0x9e,0xff,0x19,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,
- 0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,
- 0xff,0x8f,0x52,0x6f,0xb1,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x82,0x16,0x2e,0x64,0xff,0x0e,0x17,0x2f,0x64,0xff,0x17,0x2f,0x65,0xff,0x18,
- 0x30,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x21,0x37,0x68,0xff,
- 0x54,0x5b,0x6f,0xff,0x73,0x70,0x70,0xff,0x5f,0x60,0x6b,0xff,0x5e,0x5f,0x6a,
- 0xff,0x26,0x3b,0x69,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x18,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,
- 0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,
- 0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,
- 0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,
- 0x2f,0x4a,0x85,0xff,0x0b,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x8a,0xff,0x33,
- 0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x82,0x36,0x52,0x8e,0xff,0x2d,0x37,0x53,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x38,0x54,0x92,0xff,0x39,0x55,0x93,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,
- 0x4b,0x68,0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,
- 0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,
- 0xae,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,
- 0x8c,0x52,0x6f,0xb1,0xff,0x1c,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,
- 0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x18,0x30,0x65,0xff,0x28,0x3c,0x69,0xff,0x8d,0x83,0x77,0xff,0xd0,0xb1,
- 0x80,0xff,0xbb,0xa2,0x7d,0xff,0xb8,0xa0,0x7d,0xff,0x56,0x5c,0x6f,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x82,0x22,
- 0x3b,0x73,0xff,0x08,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,
- 0x78,0xff,0x26,0x40,0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x12,0x28,0x42,0x7b,
- 0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x46,
- 0x80,0xff,0x2c,0x47,0x80,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,
- 0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,
- 0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x05,
- 0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x10,0x3a,0x56,0x93,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x82,0x43,0x60,0x9f,0xff,0x04,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x82,0x47,0x63,0xa3,0xff,0x84,0x48,0x64,
- 0xa4,0xff,0x0d,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4e,0x6a,0xab,
- 0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,0x6f,0xb1,0xff,
- 0x82,0x51,0x6e,0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x82,0x4f,0x6c,0xae,0xff,
- 0x82,0x4e,0x6b,0xad,0xff,0x11,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x68,0xff,0x26,0x3b,0x6a,
- 0xff,0x87,0x7f,0x78,0xff,0xdc,0xbb,0x8a,0xff,0xa2,0x91,0x78,0xff,0x93,0x84,
- 0x72,0xff,0x58,0x5a,0x67,0xff,0x1d,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x82,
- 0x1e,0x37,0x6f,0xff,0x0c,0x1f,0x38,0x70,0xff,0x1f,0x39,0x71,0xff,0x20,0x39,
- 0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,
- 0x3c,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x76,0xff,
- 0x24,0x3e,0x77,0xff,0x25,0x3e,0x77,0xff,0x82,0x25,0x3f,0x78,0xff,0x82,0x26,
- 0x40,0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x01,0x28,0x41,0x7b,0xff,0x82,0x28,
- 0x42,0x7b,0xff,0x28,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x84,0xff,0x2f,0x4a,0x85,0xff,0x31,
- 0x4b,0x86,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,
- 0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,
- 0x55,0x93,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x82,
- 0x42,0x5f,0x9e,0xff,0x01,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,0xff,0x82,
- 0x44,0x61,0xa1,0xff,0x03,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,
- 0xa0,0xff,0x83,0x45,0x61,0xa1,0xff,0x0b,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,
- 0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,
- 0xa7,0xff,0x4b,0x67,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4e,0x6a,0xac,0xff,0x4f,
- 0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x82,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x83,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x85,0x4d,0x6a,0xac,0xff,0x15,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,
- 0x65,0xff,0x17,0x31,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x24,
- 0x3a,0x6c,0xff,0x74,0x71,0x75,0xff,0xb8,0x98,0x6f,0xff,0x89,0x68,0x51,0xff,
- 0x81,0x62,0x4e,0xff,0x51,0x46,0x51,0xff,0x1e,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,
- 0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x08,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,
- 0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x82,0x26,0x40,0x7a,0xff,
- 0x04,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,
- 0x7d,0xff,0x82,0x29,0x43,0x7d,0xff,0x82,0x2a,0x44,0x7e,0xff,0x02,0x2a,0x44,
- 0x7f,0xff,0x2a,0x45,0x7f,0xff,0x83,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,
- 0xff,0x0f,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,
- 0x49,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4d,0x89,0xff,0x33,0x4f,0x8a,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x82,0x38,0x54,0x91,0xff,0x10,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x82,0x42,0x5f,
- 0x9e,0xff,0x83,0x42,0x5e,0x9d,0xff,0x01,0x42,0x5e,0x9e,0xff,0x82,0x43,0x5e,
- 0x9e,0xff,0x03,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,
- 0x82,0x45,0x61,0xa1,0xff,0x0c,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,
- 0x63,0xa4,0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,
- 0xff,0x4d,0x6a,0xab,0xff,0x4d,0x6a,0xac,0xff,0x83,0x4e,0x6b,0xad,0xff,0x8b,
- 0x4d,0x6a,0xac,0xff,0x10,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x14,0x2b,
- 0x5f,0xff,0x14,0x2c,0x62,0xff,0x16,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,0x17,
- 0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x69,0xff,0x1d,0x35,0x6a,0xff,
- 0x39,0x48,0x6d,0xff,0x4f,0x51,0x64,0xff,0x55,0x49,0x54,0xff,0x5f,0x4f,0x54,
- 0xff,0x38,0x3c,0x5c,0xff,0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,0xff,0x05,
- 0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x0f,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,
- 0xff,0x01,0x2c,0x46,0x81,0xff,0x82,0x2c,0x47,0x81,0xff,0x01,0x2d,0x47,0x81,
- 0xff,0x83,0x2d,0x47,0x82,0xff,0x09,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x4a,0x85,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,
- 0x51,0x8d,0xff,0x05,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,
- 0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x0a,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x85,0x40,0x5c,0x9b,0xff,
- 0x82,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x0f,0x41,0x5c,0x9c,0xff,
- 0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,
- 0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa5,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x82,0x49,0x66,0xa7,
- 0xff,0x05,0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,
- 0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x8a,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x16,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2b,0x5f,0xff,
- 0x14,0x2c,0x61,0xff,0x16,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x18,0x32,0x68,0xff,0x24,0x3c,0x6e,0xff,0x2a,0x40,0x71,0xff,0x2e,0x43,
- 0x72,0xff,0x2a,0x3f,0x6f,0xff,0x32,0x43,0x6e,0xff,0x3c,0x4a,0x6f,0xff,0x2e,
- 0x44,0x73,0xff,0x2c,0x43,0x75,0xff,0x25,0x3d,0x72,0xff,0x1e,0x37,0x6f,0xff,
- 0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,
- 0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,
- 0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,
- 0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2d,
- 0x49,0x83,0xff,0x2e,0x49,0x83,0xff,0x83,0x2e,0x49,0x84,0xff,0x15,0x2e,0x48,
- 0x83,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x4a,0x85,0xff,0x32,0x4d,0x88,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,
- 0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x82,0x3c,0x58,0x96,0xff,0x01,0x3d,0x59,
- 0x97,0xff,0x83,0x3e,0x5a,0x98,0xff,0x84,0x3e,0x59,0x98,0xff,0x01,0x3f,0x59,
- 0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x01,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,
- 0x9b,0xff,0x02,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x82,0x43,0x5e,0x9e,
- 0xff,0x09,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,0x07,0x49,
- 0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,
- 0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,0x85,0x4d,0x6a,
- 0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,0x82,0x4f,0x6c,0xae,0xff,0x2b,0x50,0x6d,
- 0xaf,0xff,0x51,0x6e,0xb0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2e,0x63,0xff,0x16,0x2f,0x66,0xff,
- 0x16,0x30,0x66,0xff,0x1a,0x32,0x68,0xff,0x30,0x44,0x70,0xff,0x3d,0x4e,0x72,
- 0xff,0x3a,0x4b,0x72,0xff,0x34,0x47,0x72,0xff,0x2f,0x43,0x70,0xff,0x39,0x4c,
- 0x73,0xff,0x3b,0x4d,0x72,0xff,0x3a,0x4d,0x75,0xff,0x2d,0x42,0x70,0xff,0x1e,
- 0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,
- 0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,
- 0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,
- 0x2c,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,
- 0xff,0x83,0x2f,0x4a,0x85,0xff,0x01,0x2f,0x49,0x85,0xff,0x82,0x2e,0x48,0x83,
- 0xff,0x0b,0x2f,0x48,0x84,0xff,0x30,0x4a,0x86,0xff,0x32,0x4d,0x89,0xff,0x34,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,
- 0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x82,0x38,0x54,0x91,0xff,0x01,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,
- 0xff,0x01,0x3b,0x57,0x94,0xff,0x82,0x3b,0x57,0x95,0xff,0x04,0x3c,0x57,0x95,
- 0xff,0x3c,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x56,0x95,0xff,0x82,0x3c,
- 0x57,0x95,0xff,0x05,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x02,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x82,0x46,0x62,0xa2,0xff,0x0b,0x46,0x62,0xa3,0xff,0x46,
- 0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,
- 0x49,0x65,0xa7,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x82,0x4c,0x69,0xab,0xff,0x03,
- 0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x82,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x83,0x52,0x6f,0xb1,0xff,0x12,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x65,0xff,0x17,0x31,0x67,0xff,
- 0x20,0x37,0x6a,0xff,0x25,0x3b,0x6b,0xff,0x23,0x3a,0x6b,0xff,0x22,0x39,0x6c,
- 0xff,0x1f,0x37,0x6b,0xff,0x24,0x3b,0x6d,0xff,0x26,0x3c,0x6c,0xff,0x26,0x3d,
- 0x6e,0xff,0x22,0x3a,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,0xff,
- 0x05,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x20,0x3a,
- 0x72,0xff,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x21,0x23,0x3c,0x75,
- 0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,
- 0x4b,0x86,0xff,0x30,0x4b,0x86,0xff,0x2f,0x4a,0x85,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x31,0x4a,0x86,0xff,0x33,0x4e,0x8a,
- 0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x05,
- 0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x83,0x39,0x55,0x92,0xff,0x01,0x3a,0x55,0x92,0xff,
- 0x82,0x39,0x54,0x92,0xff,0x82,0x3a,0x54,0x92,0xff,0x0a,0x3a,0x54,0x93,0xff,
- 0x3b,0x55,0x94,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x08,0x41,0x5c,0x9b,
- 0xff,0x42,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,0x44,0x60,
- 0x9f,0xff,0x45,0x61,0xa1,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x83,
- 0x48,0x65,0xa5,0xff,0x02,0x48,0x64,0xa5,0xff,0x48,0x65,0xa5,0xff,0x83,0x48,
- 0x65,0xa6,0xff,0x08,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xac,0xff,0x4e,0x6b,
- 0xad,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x87,0x52,0x6f,0xb1,
- 0xff,0x18,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,0xff,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x61,0xff,0x15,0x2d,0x62,0xff,
- 0x15,0x2e,0x64,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,
- 0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,
- 0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x09,0x2c,0x46,0x81,0xff,0x2c,0x47,
- 0x82,0xff,0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4b,0x87,0xff,
- 0x82,0x2e,0x48,0x83,0xff,0x04,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x31,
- 0x4c,0x88,0xff,0x33,0x4f,0x8b,0xff,0x82,0x34,0x50,0x8c,0xff,0x03,0x35,0x51,
- 0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x82,0x37,0x53,0x8f,0xff,
- 0x01,0x37,0x53,0x90,0xff,0x83,0x37,0x52,0x8f,0xff,0x0e,0x38,0x52,0x8f,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,
- 0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,
- 0x59,0x97,0xff,0x3e,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x0c,0x40,0x5b,
- 0x9a,0xff,0x41,0x5b,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x43,0x5f,0x9e,0xff,0x44,
- 0x60,0xa0,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,
- 0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x66,0xa7,
- 0xff,0x82,0x4a,0x67,0xa7,0xff,0x01,0x4b,0x67,0xa8,0xff,0x82,0x4b,0x68,0xa9,
- 0xff,0x08,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,
- 0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,
- 0x51,0x6e,0xb0,0xff,0x89,0x52,0x6f,0xb1,0xff,0x03,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x12,0x29,0x5d,0xff,0x82,0x13,0x2a,0x5e,0xff,0x26,0x14,0x2b,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2e,0x62,0xff,0x16,
- 0x2e,0x64,0xff,0x17,0x30,0x66,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,
- 0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,
- 0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6e,0xff,0x1d,0x36,0x6f,0xff,0x1e,0x37,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x48,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,0x2f,0x4a,0x85,
- 0xff,0x0a,0x30,0x4b,0x86,0xff,0x2f,0x49,0x84,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x32,0x4e,0x89,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x82,0x35,0x50,
- 0x8d,0xff,0x1d,0x35,0x4f,0x8c,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x35,0x50,0x8d,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x55,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5f,0x9f,0xff,0x44,0x61,
- 0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,
- 0x48,0x64,0xa4,0xff,0x0f,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,
- 0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,
- 0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,
- 0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x88,0x52,0x6f,0xb1,0xff,
- 0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x10,
- 0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x17,0x30,0x65,0xff,0x18,0x30,0x67,0xff,0x19,0x32,0x68,0xff,0x1a,
- 0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,
- 0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,0xff,0x05,0x1f,0x38,0x70,0xff,0x1f,
- 0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,
- 0x82,0x22,0x3b,0x74,0xff,0x14,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,
- 0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,
- 0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,
- 0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x82,0x2e,0x49,0x84,
- 0xff,0x0a,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x2f,0x49,0x84,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x31,0x4c,0x87,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x83,0x33,0x4d,
- 0x89,0xff,0x05,0x33,0x4d,0x8a,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x29,0x37,
- 0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x54,0x93,0xff,0x3b,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,
- 0x96,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,
- 0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,
- 0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6b,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,
- 0x6f,0xb1,0xff,0x82,0x51,0x6e,0xb0,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x16,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,
- 0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x18,0x2f,0x62,0xff,0x26,0x3a,0x67,0xff,0x34,0x48,0x72,0xff,0x23,
- 0x39,0x68,0xff,0x18,0x30,0x66,0xff,0x18,0x31,0x66,0xff,0x19,0x32,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,
- 0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,0x3b,0x74,
- 0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x82,0x2b,0x45,0x80,0xff,0x2b,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,
- 0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x2e,0x49,0x84,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,
- 0x4a,0x86,0xff,0x30,0x4b,0x87,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,
- 0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x59,0x98,0xff,0x40,0x5c,0x9a,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,
- 0x44,0x61,0xa0,0xff,0x0d,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,
- 0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x82,0x4d,0x6a,
- 0xab,0xff,0x02,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x82,0x4f,0x6c,0xad,
- 0xff,0x83,0x4f,0x6c,0xae,0xff,0x01,0x50,0x6d,0xaf,0xff,0x82,0x4f,0x6c,0xae,
- 0xff,0x84,0x4e,0x6b,0xad,0xff,0x2d,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x13,0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x12,0x29,0x5d,0xff,0x13,0x2a,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x19,0x2f,
- 0x62,0xff,0x3d,0x4d,0x6f,0xff,0x87,0x8d,0x99,0xff,0xa7,0xae,0xb8,0xff,0x72,
- 0x7c,0x91,0xff,0x21,0x36,0x65,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x19,0x31,0x66,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,
- 0xff,0x1c,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,
- 0x3b,0x74,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,
- 0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,
- 0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x04,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x82,
- 0x2e,0x49,0x84,0xff,0x23,0x2d,0x48,0x83,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,
- 0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,0xff,0x3e,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,
- 0x05,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,0x06,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x68,0xa9,0xff,0x84,0x4c,0x68,0xa9,0xff,0x82,0x4b,0x68,0xa9,
- 0xff,0x02,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x82,0x4c,0x69,0xab,0xff,
- 0x87,0x4d,0x6a,0xac,0xff,0x19,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2c,0x62,0xff,0x13,0x2c,0x61,0xff,0x13,0x2b,0x5f,0xff,0x12,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x17,0x2f,0x61,
- 0xff,0x3d,0x50,0x74,0xff,0xa0,0xab,0xb7,0xff,0x9e,0xa8,0xb1,0xff,0x78,0x85,
- 0x96,0xff,0x1d,0x32,0x60,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x82,0x1d,0x36,0x6d,0xff,0x11,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,
- 0x82,0x2a,0x44,0x7f,0xff,0x02,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x83,
- 0x2c,0x47,0x81,0xff,0x82,0x2c,0x46,0x80,0xff,0x0b,0x2c,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,
- 0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,
- 0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x18,0x37,0x51,0x8e,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x56,0x93,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,
- 0xa4,0xff,0x82,0x49,0x65,0xa5,0xff,0x82,0x49,0x66,0xa6,0xff,0x03,0x49,0x65,
- 0xa6,0xff,0x48,0x65,0xa5,0xff,0x48,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,
- 0x08,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x49,0x66,0xa8,0xff,0x4a,0x67,
- 0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x4c,
- 0x69,0xab,0xff,0x86,0x4d,0x6a,0xac,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x83,0x13,0x2c,0x62,0xff,0x28,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,
- 0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,0xff,0x35,0x47,
- 0x70,0xff,0xbe,0xc0,0xc3,0xff,0xa1,0xa4,0xa6,0xff,0x7e,0x85,0x92,0xff,0x17,
- 0x2e,0x61,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,
- 0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,
- 0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x76,0xff,0x25,0x3e,0x77,
- 0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x83,0x2a,0x44,0x7f,0xff,0x83,0x2a,0x44,0x7e,0xff,0x02,0x2a,
- 0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x28,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,
- 0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,
- 0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,
- 0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9b,0xff,0x40,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x82,0x46,0x63,0xa3,0xff,0x85,0x46,
- 0x62,0xa2,0xff,0x04,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x63,0xa4,
- 0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,0x05,0x49,0x66,0xa7,0xff,
- 0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,
- 0xff,0x82,0x4c,0x69,0xab,0xff,0x02,0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,
- 0x83,0x4f,0x6c,0xae,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,
- 0x13,0x2c,0x62,0xff,0x01,0x14,0x2d,0x62,0xff,0x82,0x14,0x2c,0x61,0xff,0x21,
- 0x24,0x39,0x68,0xff,0x7a,0x81,0x92,0xff,0x7f,0x83,0x8c,0xff,0x4d,0x5a,0x75,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,
- 0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,
- 0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,
- 0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x25,0x3e,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x82,0x28,0x42,
- 0x7c,0xff,0x2f,0x28,0x42,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x36,0x51,0x8d,0xff,0x38,0x53,0x90,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5a,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,0x82,0x44,0x60,0xa0,
- 0xff,0x01,0x43,0x60,0x9f,0xff,0x82,0x43,0x5f,0x9f,0xff,0x14,0x44,0x5f,0x9f,
- 0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,
- 0x49,0x66,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xac,
- 0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6e,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x83,0x52,0x6f,0xb1,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x86,0x13,0x2c,0x62,0xff,0x24,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x17,0x2f,0x64,0xff,0x20,0x36,0x68,0xff,0x22,0x37,0x67,0xff,0x1c,0x32,0x64,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,
- 0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,
- 0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,
- 0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,
- 0xff,0x82,0x26,0x40,0x79,0xff,0x03,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,
- 0x28,0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x0b,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,
- 0x4e,0x8a,0xff,0x35,0x50,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x05,0x3a,0x56,0x93,0xff,0x3a,
- 0x57,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x82,0x3d,0x59,0x97,0xff,0x06,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,
- 0x82,0x41,0x5e,0x9d,0xff,0x01,0x41,0x5e,0x9c,0xff,0x82,0x41,0x5d,0x9c,0xff,
- 0x17,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,
- 0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,0xa6,0xff,0x4a,0x67,0xa8,
- 0xff,0x4b,0x68,0xa9,0xff,0x4d,0x69,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,
- 0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x83,0x52,0x6f,0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,0xff,0x07,0x13,0x2c,0x63,
- 0xff,0x18,0x30,0x65,0xff,0x2f,0x44,0x71,0xff,0x3b,0x4c,0x6f,0xff,0x3e,0x50,
- 0x75,0xff,0x41,0x51,0x75,0xff,0x25,0x3a,0x69,0xff,0x83,0x17,0x2f,0x64,0xff,
- 0x17,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,
- 0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x82,0x24,0x3e,0x76,0xff,0x05,0x25,0x3f,0x77,0xff,0x26,0x3f,
- 0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,
- 0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,
- 0x0f,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x30,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,0x50,0x8c,0xff,
- 0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x82,0x38,0x54,0x91,0xff,0x11,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,
- 0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x3f,
- 0x5b,0x9a,0xff,0x3f,0x5a,0x99,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x82,0x40,0x5b,0x9a,0xff,0x05,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,
- 0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,
- 0xff,0x0f,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x46,0x62,0xa2,0xff,0x47,
- 0x64,0xa4,0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,
- 0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,0xb1,0xff,0x03,0x4e,0x6b,
- 0xad,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,
- 0x08,0x15,0x2e,0x64,0xff,0x1c,0x34,0x67,0xff,0x25,0x39,0x65,0xff,0x30,0x42,
- 0x6c,0xff,0x29,0x3d,0x68,0xff,0x1d,0x34,0x67,0xff,0x17,0x30,0x67,0xff,0x17,
- 0x31,0x68,0xff,0x83,0x18,0x31,0x67,0xff,0x42,0x19,0x31,0x67,0xff,0x19,0x31,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,
- 0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,
- 0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x32,0x4d,0x89,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x59,0x97,0xff,0x82,0x3d,0x58,0x96,0xff,0x22,0x3e,0x58,0x97,0xff,0x3e,0x59,
- 0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,
- 0x5b,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,
- 0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x46,0x62,0xa2,
- 0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,
- 0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x51,0x6e,0xb0,0xff,0x52,0x6f,0xb1,0xff,0x4f,0x6c,0xae,0xff,0x4d,0x6a,
- 0xac,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,
- 0x0b,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x17,0x2f,0x65,0xff,0x16,0x30,
- 0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x30,0x67,0xff,0x18,
- 0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,
- 0x82,0x1a,0x33,0x6a,0xff,0x82,0x1b,0x33,0x6a,0xff,0x82,0x1b,0x33,0x69,0xff,
- 0x04,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x16,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,
- 0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,
- 0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x0b,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x32,
- 0x4d,0x88,0xff,0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,
- 0xff,0x05,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x04,0x3a,0x56,
- 0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x82,
- 0x3c,0x58,0x96,0xff,0x03,0x3c,0x57,0x95,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,
- 0x94,0xff,0x82,0x3c,0x57,0x95,0xff,0x06,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x16,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9e,
- 0xff,0x45,0x61,0xa1,0xff,0x46,0x63,0xa2,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,
- 0xa5,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,
- 0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,
- 0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4e,0x6b,0xad,
- 0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,
- 0xaf,0xff,0x4f,0x6c,0xae,0xff,0x82,0x4d,0x6a,0xac,0xff,0x02,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x12,0x13,0x2d,0x63,0xff,
- 0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,
- 0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x31,
- 0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1c,0x36,0x6d,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1c,0x35,0x6c,0xff,0x0d,0x1d,
- 0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,
- 0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x23,0x3d,0x75,0xff,0x82,0x24,0x3e,0x76,0xff,0x05,0x25,0x3f,0x77,
- 0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x16,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x4a,0x85,0xff,0x31,0x4c,0x88,0xff,0x34,0x4f,0x8b,0xff,0x35,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,
- 0x8f,0xff,0x37,0x53,0x90,0xff,0x82,0x38,0x54,0x91,0xff,0x11,0x39,0x55,0x92,
- 0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x56,
- 0x94,0xff,0x3a,0x55,0x92,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x16,0x41,0x5c,0x9c,0xff,
- 0x43,0x5f,0x9f,0xff,0x45,0x61,0xa0,0xff,0x45,0x63,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,
- 0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,
- 0x68,0xa9,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,
- 0xff,0x50,0x6d,0xae,0xff,0x4f,0x6c,0xae,0xff,0x82,0x4c,0x69,0xab,0xff,0x03,
- 0x4d,0x6a,0xac,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x89,0x13,0x2c,
- 0x62,0xff,0x11,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x64,0xff,
- 0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,
- 0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,
- 0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1c,0x35,0x6c,0xff,0x82,0x1c,0x34,0x6b,
- 0xff,0x27,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,
- 0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,
- 0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,
- 0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4c,0x88,0xff,0x33,0x4f,0x8b,0xff,0x82,0x35,0x51,0x8d,0xff,0x2b,0x36,
- 0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x54,0x91,
- 0xff,0x38,0x53,0x90,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,
- 0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5b,0x99,
- 0xff,0x41,0x5d,0x9c,0xff,0x43,0x5f,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,
- 0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,
- 0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,
- 0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,
- 0xac,0xff,0x4e,0x6b,0xac,0xff,0x82,0x4f,0x6c,0xad,0xff,0x06,0x4c,0x69,0xaa,
- 0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x4d,0x6a,0xac,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8a,0x13,0x2c,0x62,0xff,0x0d,0x14,0x2d,0x63,
- 0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,
- 0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6a,0xff,
- 0x1a,0x32,0x69,0xff,0x82,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x04,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x82,0x1e,0x37,0x6e,0xff,0x12,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,
- 0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,
- 0x28,0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x01,0x2c,0x45,0x80,0xff,0x82,0x2d,
- 0x46,0x81,0xff,0x08,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x33,0x4e,0x8a,0xff,0x82,0x35,0x51,0x8d,0xff,0x32,0x36,0x52,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x37,0x52,
- 0x8f,0xff,0x37,0x51,0x8e,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,
- 0x97,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,
- 0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6b,0xad,0xff,0x4b,0x68,0xaa,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,
- 0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x8a,0x13,0x2c,0x62,0xff,0x0a,0x13,0x2c,0x63,0xff,0x14,0x2d,0x63,
- 0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,0xff,0x16,0x2f,
- 0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x67,0xff,0x18,0x30,0x67,0xff,0x18,
- 0x30,0x66,0xff,0x82,0x18,0x30,0x65,0xff,0x05,0x19,0x31,0x66,0xff,0x19,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x82,
- 0x1b,0x34,0x6a,0xff,0x04,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,
- 0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,0x1f,0x38,0x6f,0xff,0x0f,0x20,0x39,0x70,
- 0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,
- 0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,
- 0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0e,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x36,0x52,0x8e,0xff,0x36,0x50,0x8d,0xff,0x83,0x35,0x4f,0x8c,0xff,
- 0x01,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x0e,0x38,0x52,0x8f,0xff,
- 0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,
- 0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3e,0x58,0x96,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x0c,0x44,0x61,
- 0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,
- 0xff,0x82,0x4c,0x68,0xa9,0xff,0x0b,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6a,0xab,0xff,0x4c,0x69,0xaa,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8b,0x13,0x2c,0x62,0xff,0x02,0x14,0x2d,0x63,
- 0xff,0x14,0x2d,0x64,0xff,0x82,0x15,0x2e,0x64,0xff,0x0b,0x15,0x2e,0x63,0xff,
- 0x16,0x2e,0x63,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,
- 0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,
- 0x30,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,
- 0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,
- 0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x27,
- 0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,
- 0x50,0x8d,0xff,0x22,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,
- 0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,
- 0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,0xff,0x3f,
- 0x5b,0x99,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,
- 0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,
- 0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,
- 0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,
- 0xff,0x4c,0x69,0xaa,0xff,0x82,0x49,0x66,0xa7,0xff,0x06,0x4a,0x67,0xa8,0xff,
- 0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x8b,0x13,0x2c,0x62,0xff,0x82,0x13,0x2c,0x61,0xff,
- 0x82,0x14,0x2b,0x60,0xff,0x0c,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,
- 0x2d,0x62,0xff,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,
- 0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1c,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,
- 0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,
- 0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x01,0x2c,0x45,
- 0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x0f,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x32,
- 0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x18,0x37,
- 0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x38,0x53,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x56,0x93,0xff,0x3c,0x58,0x95,
- 0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x82,0x49,0x65,0xa5,0xff,0x04,0x4a,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x82,0x4c,0x68,
- 0xa9,0xff,0x82,0x48,0x65,0xa6,0xff,0x07,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,0x2d,0x13,0x2c,0x61,
- 0xff,0x13,0x2b,0x60,0xff,0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x12,0x29,
- 0x5d,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,
- 0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,
- 0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1e,0x36,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,
- 0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0f,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,
- 0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,
- 0x35,0x4f,0x8c,0xff,0x01,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x0e,
- 0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x55,0x92,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,
- 0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,0x10,0x49,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,
- 0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x48,0x65,0xa6,0xff,0x48,0x64,0xa5,0xff,
- 0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x84,0x13,0x2c,0x62,0xff,0x03,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,
- 0xff,0x12,0x2a,0x5f,0xff,0x86,0x12,0x29,0x5d,0xff,0x21,0x13,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,
- 0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2e,
- 0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,
- 0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,
- 0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,
- 0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x82,0x25,0x3e,0x77,0xff,0x17,0x25,
- 0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,
- 0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,
- 0x8d,0xff,0x11,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,
- 0x39,0x54,0x91,0xff,0x3b,0x57,0x94,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,
- 0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,
- 0xff,0x15,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x48,0x65,0xa5,
- 0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,
- 0xa6,0xff,0x49,0x65,0xa7,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4a,
- 0x67,0xa9,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x61,
- 0xff,0x02,0x13,0x2b,0x5f,0xff,0x12,0x2a,0x5f,0xff,0x8a,0x12,0x29,0x5d,0xff,
- 0x05,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,
- 0x60,0xff,0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x09,0x17,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x03,0x1c,0x35,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x16,0x1f,0x38,0x6f,
- 0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x24,0x3e,0x77,0xff,0x26,
- 0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x26,0x40,0x7a,0xff,
- 0x26,0x40,0x79,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,
- 0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,
- 0x01,0x2c,0x45,0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x31,0x2e,0x47,0x82,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x93,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x49,0x65,0xa5,0xff,0x46,0x62,0xa3,0xff,
- 0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,
- 0xa6,0xff,0x06,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa8,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,0x2a,0x5e,0xff,0x8d,0x12,0x29,
- 0x5d,0xff,0x0f,0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x06,0x1b,0x34,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x82,0x1f,0x38,0x6f,0xff,0x0f,0x20,0x39,0x70,0xff,0x20,0x39,
- 0x71,0xff,0x21,0x3a,0x72,0xff,0x23,0x3c,0x75,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x27,0x41,0x7b,0xff,0x27,0x40,0x7a,
- 0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,
- 0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0f,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8c,
- 0xff,0x11,0x36,0x50,0x8d,0xff,0x38,0x52,0x8f,0xff,0x3a,0x55,0x92,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,
- 0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,0x0e,0x49,0x65,0xa5,
- 0xff,0x49,0x64,0xa4,0xff,0x46,0x62,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,
- 0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,
- 0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x29,0x13,
- 0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,
- 0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,
- 0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x21,0x3a,0x73,0xff,0x23,0x3c,
- 0x75,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7c,0xff,0x28,0x41,0x7b,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,
- 0x43,0x7c,0xff,0x0f,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,
- 0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x1e,0x33,0x4d,0x89,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x37,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,
- 0x97,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,
- 0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,
- 0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,
- 0x09,0x46,0x61,0xa1,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,
- 0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,
- 0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x82,0x49,0x66,0xa7,0xff,0x02,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x06,0x12,0x29,0x5e,
- 0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,
- 0x60,0xff,0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x09,0x17,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x06,0x1c,0x35,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x20,0x39,0x71,0xff,0x21,
- 0x3a,0x73,0xff,0x82,0x23,0x3c,0x75,0xff,0x13,0x24,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x27,0x41,0x7a,
- 0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,
- 0x12,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x36,0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x82,0x39,
- 0x55,0x92,0xff,0x15,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x82,0x46,
- 0x63,0xa3,0xff,0x01,0x46,0x61,0xa1,0xff,0x82,0x45,0x60,0xa0,0xff,0x06,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,0x03,0x49,
- 0x66,0xa7,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x90,0x12,0x29,0x5d,
- 0xff,0x04,0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,
- 0x2b,0x60,0xff,0x82,0x15,0x2c,0x61,0xff,0x09,0x16,0x2d,0x62,0xff,0x16,0x2e,
- 0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,
- 0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x82,0x1b,0x33,0x69,0xff,0x06,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,
- 0x35,0x6c,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x71,0xff,0x21,0x3a,0x73,0xff,
- 0x82,0x22,0x3b,0x74,0xff,0x08,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,
- 0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x82,0x27,0x41,0x7b,0xff,0x05,0x28,
- 0x41,0x7b,0xff,0x27,0x41,0x7b,0xff,0x27,0x41,0x7a,0xff,0x27,0x41,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x82,0x2c,0x45,0x80,0xff,0x0b,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,
- 0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x82,0x33,0x4d,0x89,0xff,0x05,0x35,0x4f,0x8b,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x54,0x91,0xff,0x39,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x82,0x3a,0x56,0x93,0xff,0x0e,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,
- 0xa1,0xff,0x45,0x62,0xa1,0xff,0x46,0x62,0xa2,0xff,0x45,0x61,0xa1,0xff,0x82,
- 0x44,0x5f,0x9f,0xff,0x0c,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,
- 0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x91,0x12,0x29,0x5d,0xff,0x17,0x13,
- 0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x35,0x6d,0xff,0x1e,0x37,0x6f,0xff,
- 0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,
- 0xff,0x82,0x22,0x3b,0x74,0xff,0x05,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x84,0x26,0x3f,
- 0x79,0xff,0x04,0x25,0x3f,0x78,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x01,0x28,0x42,0x7b,0xff,0x82,
- 0x29,0x43,0x7c,0xff,0x0f,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,
- 0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4e,0x8a,0xff,
- 0x35,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,
- 0xff,0x82,0x39,0x55,0x92,0xff,0x15,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,
- 0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x44,0x61,0xa0,
- 0xff,0x82,0x43,0x5e,0x9e,0xff,0x0d,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa3,
- 0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x64,
- 0xa5,0xff,0x48,0x65,0xa6,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x91,
- 0x12,0x29,0x5d,0xff,0x06,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x82,
- 0x16,0x2d,0x62,0xff,0x11,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x35,0x6d,0xff,0x1e,0x37,0x6f,0xff,
- 0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,
- 0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x82,0x23,
- 0x3c,0x75,0xff,0x02,0x24,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x83,0x24,0x3e,
- 0x77,0xff,0x47,0x24,0x3d,0x76,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,0x4e,0x8a,0xff,0x36,
- 0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x55,0x93,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x60,0x9f,0xff,0x42,0x5e,
- 0x9d,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,
- 0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,
- 0xff,0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x92,0x12,0x29,0x5d,0xff,0x04,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x82,0x15,0x2c,0x61,0xff,0x10,
- 0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x69,0xff,0x1b,0x33,
- 0x6b,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,
- 0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,
- 0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x02,0x22,0x3b,0x74,0xff,0x23,
- 0x3c,0x75,0xff,0x82,0x23,0x3c,0x76,0xff,0x0c,0x23,0x3c,0x75,0xff,0x23,0x3c,
- 0x74,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,
- 0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0f,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,
- 0x8c,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x82,
- 0x38,0x54,0x91,0xff,0x10,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,
- 0x59,0x97,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,
- 0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x82,0x42,0x5f,0x9e,0xff,0x06,
- 0x43,0x5f,0x9f,0xff,0x42,0x5e,0x9d,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x0a,
- 0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,
- 0xa5,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x93,0x12,0x29,0x5d,0xff,
- 0x16,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,
- 0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x16,
- 0x2e,0x64,0xff,0x17,0x2f,0x65,0xff,0x18,0x30,0x67,0xff,0x19,0x32,0x69,0xff,
- 0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6d,
- 0xff,0x1d,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,
- 0x21,0x3a,0x73,0xff,0x11,0x21,0x3b,0x74,0xff,0x22,0x3b,0x73,0xff,0x21,0x3b,
- 0x73,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,
- 0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,
- 0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,
- 0x7f,0xff,0x12,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,
- 0x2e,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,0x8d,0xff,0x37,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x82,0x39,0x55,0x92,0xff,0x11,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x41,0x5d,0x9c,0xff,0x82,
- 0x41,0x5c,0x9b,0xff,0x0f,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa2,0xff,
- 0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x93,0x12,0x29,0x5d,0xff,0x15,0x12,0x29,0x5e,0xff,
- 0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,
- 0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x65,0xff,0x17,0x30,
- 0x67,0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,
- 0xff,0x1f,0x38,0x71,0xff,0x83,0x20,0x39,0x72,0xff,0x01,0x20,0x39,0x71,0xff,
- 0x82,0x20,0x39,0x70,0xff,0x13,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x76,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,
- 0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x23,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,
- 0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4e,0x8a,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,
- 0x55,0x93,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x41,
- 0x5d,0x9c,0xff,0x83,0x40,0x5b,0x9a,0xff,0x0f,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,
- 0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x94,0x12,0x29,0x5d,0xff,0x13,
- 0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x61,
- 0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x65,0xff,0x17,0x30,0x67,0xff,0x17,0x31,
- 0x68,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,
- 0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,
- 0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,
- 0xff,0x82,0x1f,0x38,0x70,0xff,0x01,0x1e,0x38,0x6f,0xff,0x82,0x1e,0x37,0x6f,
- 0xff,0x10,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x70,0xff,0x21,
- 0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,
- 0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x12,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,0x4e,0x8a,0xff,0x36,0x51,0x8d,0xff,
- 0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x38,0x55,0x91,
- 0xff,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,0xff,0x0a,0x3b,0x57,0x94,0xff,
- 0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x59,0x97,
- 0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5c,0x9b,0xff,0x82,0x40,0x5d,0x9b,0xff,0x83,0x3f,0x5a,0x99,
- 0xff,0x01,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x03,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x08,
- 0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x94,0x12,0x29,0x5d,0xff,0x10,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x14,0x2c,0x61,0xff,0x14,0x2d,0x63,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,
- 0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,
- 0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x82,0x1d,0x36,
- 0x6e,0xff,0x02,0x1e,0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x83,0x1d,0x36,0x6d,
- 0xff,0x13,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,
- 0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,
- 0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,
- 0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x12,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,
- 0x34,0x4e,0x8b,0xff,0x36,0x51,0x8e,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x0a,0x3a,0x56,0x93,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5b,0x9a,0xff,0x82,0x3f,0x5c,0x9a,0xff,0x04,0x3f,0x5a,0x98,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,
- 0x5b,0x9a,0xff,0x0e,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,
- 0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,
- 0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x93,0x12,0x29,0x5d,0xff,0x13,0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,
- 0x2b,0x61,0xff,0x14,0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,
- 0x16,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x67,
- 0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x35,0x6d,0xff,0x1c,0x35,0x6c,0xff,0x83,0x1c,0x35,0x6b,0xff,0x04,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,
- 0x1f,0x38,0x6f,0xff,0x0e,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,
- 0xff,0x82,0x28,0x42,0x7b,0xff,0x0f,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x4a,0x85,0xff,0x30,0x4a,0x86,0xff,0x82,0x31,0x4b,0x87,0xff,0x11,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4f,0x8b,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x98,0xff,0x82,0x3f,0x5b,0x99,0xff,0x01,0x3e,0x5a,0x98,
- 0xff,0x82,0x3e,0x58,0x97,0xff,0x12,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9b,
- 0xff,0x42,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x01,0x02,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x91,0x12,0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,
- 0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x82,0x13,0x2c,0x62,0xff,0x0f,0x13,0x2d,
- 0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,
- 0x2f,0x66,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,
- 0x18,0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,
- 0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6b,0xff,0x1b,0x33,0x6a,0xff,0x82,0x1b,
- 0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6b,
- 0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x30,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,
- 0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4f,
- 0x8b,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,
- 0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x82,0x3d,0x59,
- 0x97,0xff,0x82,0x3e,0x5a,0x98,0xff,0x01,0x3e,0x59,0x97,0xff,0x82,0x3d,0x57,
- 0x96,0xff,0x06,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,
- 0x9b,0xff,0x03,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,
- 0x82,0x44,0x5f,0x9f,0xff,0x06,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x61,0xa2,0xff,0x45,0x62,0xa2,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x8f,0x12,0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,0x2a,0x5f,0xff,0x13,
- 0x2b,0x60,0xff,0x85,0x13,0x2c,0x62,0xff,0x09,0x14,0x2d,0x63,0xff,0x14,0x2d,
- 0x64,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x16,
- 0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,
- 0x82,0x19,0x32,0x69,0xff,0x83,0x1a,0x32,0x68,0xff,0x18,0x1b,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,
- 0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x01,0x28,0x42,0x7b,0xff,0x82,0x29,0x43,
- 0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,
- 0xff,0x0b,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x82,0x32,0x4c,0x88,0xff,0x17,0x33,0x4d,0x89,0xff,0x34,0x4f,0x8b,0xff,
- 0x36,0x51,0x8d,0xff,0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,
- 0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,
- 0x5a,0x97,0xff,0x3d,0x59,0x97,0xff,0x3c,0x57,0x95,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x05,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x8d,0x12,0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,0x2a,0x5f,0xff,
- 0x13,0x2b,0x60,0xff,0x87,0x13,0x2c,0x62,0xff,0x08,0x13,0x2c,0x63,0xff,0x14,
- 0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x82,0x18,0x31,
- 0x67,0xff,0x01,0x18,0x31,0x66,0xff,0x82,0x19,0x31,0x66,0xff,0x1b,0x1a,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,
- 0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x26,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,
- 0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,
- 0x80,0xff,0x19,0x2d,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8b,0xff,0x36,
- 0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3c,0x58,0x96,0xff,0x82,0x3b,
- 0x56,0x94,0xff,0x15,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,
- 0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,
- 0xff,0x45,0x61,0xa1,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,
- 0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,0x2a,0x5f,0xff,0x13,0x2b,0x60,
- 0xff,0x8a,0x13,0x2c,0x62,0xff,0x04,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x15,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x82,0x16,0x2f,0x66,0xff,0x01,0x17,
- 0x2f,0x65,0xff,0x82,0x17,0x2f,0x64,0xff,0x06,0x18,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x34,
- 0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,
- 0x1e,0x37,0x6e,0xff,0x31,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,
- 0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,
- 0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,
- 0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x50,0x8c,0xff,
- 0x37,0x52,0x8e,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,
- 0x95,0xff,0x3b,0x56,0x94,0xff,0x82,0x3b,0x55,0x93,0xff,0x07,0x3b,0x56,0x94,
- 0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,
- 0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,
- 0x01,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x09,0x42,0x5d,0x9c,0xff,
- 0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,
- 0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x89,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x8c,0x13,0x2c,0x62,0xff,0x02,
- 0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x82,0x15,0x2e,0x64,0xff,0x25,0x15,
- 0x2d,0x63,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,
- 0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,
- 0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,
- 0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,
- 0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,0x43,
- 0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,
- 0xff,0x15,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x32,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,
- 0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x82,0x3b,0x57,0x94,
- 0xff,0x01,0x3a,0x55,0x93,0xff,0x82,0x3a,0x54,0x92,0xff,0x0a,0x3a,0x55,0x93,
- 0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,0x41,0x5c,
- 0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x03,0x45,0x60,0xa0,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x90,0x13,
- 0x2c,0x62,0xff,0x82,0x14,0x2c,0x61,0xff,0x24,0x15,0x2c,0x61,0xff,0x15,0x2d,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x18,
- 0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,
- 0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,
- 0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x27,0x40,0x79,0xff,0x27,
- 0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,
- 0x2c,0x45,0x80,0xff,0x13,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x52,
- 0x8e,0xff,0x38,0x53,0x90,0xff,0x82,0x39,0x55,0x92,0xff,0x19,0x39,0x54,0x91,
- 0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,
- 0x93,0xff,0x3b,0x55,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,
- 0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x8f,
- 0x13,0x2c,0x62,0xff,0x11,0x13,0x2c,0x61,0xff,0x12,0x2b,0x60,0xff,0x13,0x2a,
- 0x5f,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,
- 0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x29,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,
- 0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,
- 0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,
- 0x36,0x50,0x8d,0xff,0x05,0x37,0x52,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,
- 0x90,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x82,0x3a,0x54,0x92,0xff,
- 0x14,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x83,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x90,0x13,
- 0x2c,0x62,0xff,0x02,0x12,0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x82,0x12,0x29,
- 0x5d,0xff,0x03,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x82,0x15,0x2c,0x61,0xff,0x0b,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,
- 0x19,0x31,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x17,0x1c,0x35,0x6b,0xff,
- 0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,
- 0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x39,
- 0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,
- 0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,
- 0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,
- 0x7f,0xff,0x01,0x2c,0x45,0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x08,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x82,0x32,0x4c,0x88,0xff,0x03,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8c,0xff,0x12,0x36,0x50,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x0d,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,
- 0x29,0x5d,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,
- 0x13,0x2c,0x61,0xff,0x90,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x60,0xff,0x12,
- 0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x83,0x12,0x29,0x5d,0xff,0x0f,0x12,0x29,
- 0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2e,0x64,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,
- 0x33,0x69,0xff,0x1e,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,
- 0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,
- 0x22,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x27,0x40,0x79,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x2f,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,
- 0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,
- 0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x92,
- 0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,
- 0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,
- 0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x61,0xff,0x13,
- 0x2c,0x61,0xff,0x90,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x61,0xff,0x12,0x2a,
- 0x5f,0xff,0x12,0x29,0x5e,0xff,0x86,0x12,0x29,0x5d,0xff,0x05,0x13,0x2a,0x5e,
- 0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x08,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,
- 0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,
- 0x05,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x29,0x1f,0x38,0x6f,
- 0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x78,0xff,
- 0x28,0x41,0x7b,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x43,0x7e,
- 0xff,0x29,0x43,0x7c,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,
- 0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,
- 0xff,0x1a,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x8f,0xff,0x39,
- 0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2c,0x61,
- 0xff,0x90,0x13,0x2c,0x62,0xff,0x03,0x13,0x2c,0x61,0xff,0x12,0x2a,0x60,0xff,
- 0x12,0x2a,0x5e,0xff,0x88,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,0xff,0x13,
- 0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x82,0x15,0x2c,0x61,
- 0xff,0x0b,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,
- 0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,
- 0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1e,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,0x1f,0x38,
- 0x6f,0xff,0x14,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,0x7a,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x29,
- 0x43,0x7e,0xff,0x29,0x43,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x01,0x2c,
- 0x45,0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x08,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,
- 0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,
- 0xff,0x03,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,
- 0x35,0x4f,0x8c,0xff,0x12,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,
- 0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,
- 0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x06,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,
- 0xff,0x42,0x5d,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x90,0x13,0x2c,0x62,0xff,0x02,0x12,0x2b,0x60,0xff,0x12,0x2a,0x5e,
- 0xff,0x8b,0x12,0x29,0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1e,0x1b,0x34,
- 0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x25,0x3f,0x78,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,
- 0x29,0x43,0x7e,0xff,0x29,0x43,0x7c,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,
- 0x45,0x80,0xff,0x21,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,
- 0xff,0x82,0x3f,0x5a,0x99,0xff,0x07,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,
- 0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x8e,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x60,0xff,
- 0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x8d,0x12,0x29,0x5d,0xff,0x05,0x13,
- 0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x08,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,
- 0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x11,0x1f,
- 0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x24,0x3e,0x76,
- 0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x2a,0x43,0x7e,0xff,0x82,0x29,0x43,0x7c,0xff,0x16,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x32,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,
- 0xff,0x17,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x01,0x02,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x8c,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x61,0xff,0x12,
- 0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x8f,0x12,0x29,0x5d,0xff,0x11,0x12,0x2a,
- 0x5e,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1d,0x37,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x82,0x1f,0x38,0x6f,0xff,0x10,0x20,0x39,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x23,0x3c,0x75,0xff,0x25,0x3f,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2a,0x44,0x7e,0xff,0x82,0x29,0x43,
- 0x7c,0xff,0x10,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x82,0x33,0x4d,0x89,0xff,0x02,0x34,0x4e,
- 0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8c,0xff,0x01,0x36,0x50,0x8d,
- 0xff,0x82,0x37,0x51,0x8e,0xff,0x0f,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,
- 0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,
- 0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x04,0x41,0x5c,
- 0x9b,0xff,0x41,0x5c,0x9c,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8b,
- 0x13,0x2c,0x62,0xff,0x02,0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x92,0x12,
- 0x29,0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,
- 0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,
- 0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x31,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1e,0x1b,0x34,0x6a,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,
- 0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,
- 0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x22,0x3b,0x73,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,
- 0x09,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4d,
- 0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x0f,0x37,0x51,0x8e,0xff,0x37,0x51,
- 0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,
- 0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,
- 0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x05,
- 0x40,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x89,0x13,0x2c,0x62,0xff,0x02,0x12,0x2b,0x60,0xff,
- 0x12,0x2a,0x5e,0xff,0x94,0x12,0x29,0x5d,0xff,0x06,0x12,0x29,0x5e,0xff,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x08,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,
- 0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x40,0x1f,
- 0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2a,0x44,0x7f,0xff,0x2a,0x44,0x7e,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8d,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,
- 0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,
- 0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x99,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x87,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5f,0xff,0x12,
- 0x29,0x5e,0xff,0x96,0x12,0x29,0x5d,0xff,0x11,0x12,0x2a,0x5e,0xff,0x13,0x2a,
- 0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,
- 0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,0x1f,
- 0x38,0x6f,0xff,0x0f,0x22,0x3b,0x73,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,
- 0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,
- 0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x01,0x2a,0x45,0x7f,0xff,0x82,
- 0x2a,0x44,0x7e,0xff,0x03,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x09,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x82,
- 0x33,0x4d,0x89,0xff,0x02,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,0x35,
- 0x4f,0x8c,0xff,0x01,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x0f,0x38,
- 0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,
- 0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,
- 0x40,0x5b,0x9a,0xff,0x02,0x01,0x01,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x13,
- 0x2c,0x62,0xff,0x03,0x13,0x2c,0x61,0xff,0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,
- 0xff,0x99,0x12,0x29,0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1d,0x1b,0x34,
- 0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x21,0x3a,0x71,0xff,
- 0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,
- 0xff,0x25,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2b,0x46,0x80,
- 0xff,0x2b,0x45,0x7f,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x22,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,
- 0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,
- 0xff,0x82,0x3f,0x5a,0x99,0xff,0x03,0x40,0x5b,0x9a,0xff,0x01,0x01,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x84,0x13,0x2c,0x62,0xff,0x02,0x12,0x2a,0x5f,0xff,0x12,
- 0x29,0x5e,0xff,0x9b,0x12,0x29,0x5d,0xff,0x2c,0x12,0x29,0x5e,0xff,0x13,0x2a,
- 0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,
- 0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x38,0x70,0xff,
- 0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x76,
- 0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x82,0x2c,0x47,0x81,0xff,0x29,0x2b,0x46,0x80,0xff,
- 0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,
- 0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,
- 0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,
- 0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,
- 0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x01,0x01,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x62,0xff,
- 0x02,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x9e,0x12,0x29,0x5d,0xff,0x11,
- 0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,
- 0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,
- 0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,
- 0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1e,0x37,0x6e,0xff,0x21,0x3a,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x0f,0x23,0x3c,0x75,0xff,0x23,
- 0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,
- 0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,
- 0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,
- 0x11,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2c,0x47,
- 0x81,0xff,0x2c,0x46,0x80,0xff,0x2c,0x45,0x80,0xff,0x2c,0x45,0x81,0xff,0x2d,
- 0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x82,0x33,0x4d,0x89,0xff,0x05,
- 0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x35,0x50,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x13,0x38,0x52,0x8f,0xff,
- 0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,
- 0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x01,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5e,0xff,0xa1,0x12,0x29,
- 0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,
- 0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x72,0xff,0x82,
- 0x21,0x3a,0x73,0xff,0x0f,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x82,0x2a,0x44,0x7f,0xff,0x04,0x2b,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x82,0x2d,0x48,
- 0x83,0xff,0x0b,0x2d,0x47,0x82,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,
- 0x50,0x8d,0xff,0x12,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,
- 0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,
- 0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,
- 0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x01,0x03,0xff,0x00,0x01,0x02,
- 0xff,0xa4,0x12,0x29,0x5d,0xff,0x05,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,
- 0x62,0xff,0x3a,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,
- 0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x22,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3d,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,
- 0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,
- 0xff,0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2d,0x48,0x83,0xff,0x2c,0x46,
- 0x81,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,
- 0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,
- 0x16,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x01,0x01,0x02,0xff,0x03,0x03,0x03,0xff,0xb4,0xb7,0xbf,0xff,0xbd,0xbf,
- 0xc8,0xff,0xb8,0xbc,0xc3,0xff,0xb6,0xba,0xc2,0xff,0xc5,0xc9,0xd1,0xff,0xa0,
- 0xc9,0xcc,0xd4,0xff,0x82,0xc9,0xcd,0xd4,0xff,0x88,0xc9,0xcd,0xd5,0xff,0x83,
- 0xca,0xcd,0xd5,0xff,0x84,0xca,0xcd,0xd6,0xff,0x01,0xcb,0xce,0xd7,0xff,0x85,
- 0xcb,0xcf,0xd7,0xff,0x89,0xcb,0xcf,0xd8,0xff,0x82,0xcc,0xcf,0xd8,0xff,0x01,
- 0xcc,0xd0,0xd8,0xff,0x83,0xcc,0xd0,0xd9,0xff,0x82,0xcd,0xd1,0xd9,0xff,0x95,
- 0xcd,0xd1,0xda,0xff,0x01,0xcd,0xd1,0xdb,0xff,0x82,0xcd,0xd2,0xdb,0xff,0x02,
- 0xce,0xd2,0xdb,0xff,0xce,0xd2,0xdc,0xff,0x82,0xcf,0xd2,0xdc,0xff,0x0d,0x8f,
- 0x98,0xac,0xff,0x6f,0x7b,0x96,0xff,0x6b,0x78,0x94,0xff,0x8f,0x97,0xa8,0xff,
- 0xa0,0xa5,0xaf,0xff,0xa2,0xa6,0xaf,0xff,0xa6,0xaa,0xb3,0xff,0xa3,0xa7,0xb0,
- 0xff,0xa2,0xa6,0xaf,0xff,0xa7,0xab,0xb4,0xff,0xa3,0xa7,0xb0,0xff,0xa2,0xa7,
- 0xb0,0xff,0xa7,0xab,0xb5,0xff,0x82,0x03,0x03,0x03,0xff,0x05,0xce,0xcd,0xcb,
- 0xff,0x9d,0xa2,0x9e,0xff,0x96,0xaa,0x9c,0xff,0xd3,0xd3,0xd4,0xff,0xe1,0xe1,
- 0xe1,0xff,0xe3,0xe5,0xe5,0xe6,0xff,0x0e,0xe5,0xe6,0xe6,0xff,0x7b,0x84,0x98,
- 0xff,0x44,0x53,0x73,0xff,0x3e,0x4d,0x70,0xff,0x80,0x86,0x94,0xff,0x9f,0x9f,
- 0xa1,0xff,0xa2,0xa2,0xa2,0xff,0xa8,0xa9,0xa9,0xff,0xa3,0xa3,0xa3,0xff,0xa2,
- 0xa2,0xa2,0xff,0xa9,0xa9,0xa9,0xff,0xa2,0xa2,0xa3,0xff,0xa2,0xa2,0xa2,0xff,
- 0xa8,0xa8,0xa9,0xff,0x82,0x03,0x03,0x03,0xff,0x05,0xc7,0xc7,0xc7,0xff,0xc1,
- 0xc1,0xc0,0xff,0xc0,0xbf,0xbb,0xff,0xcc,0xcc,0xcc,0xff,0xe3,0xe3,0xe3,0xff,
- 0xe4,0xe6,0xe6,0xe6,0xff,0x07,0x8b,0x93,0xa2,0xff,0x5d,0x69,0x82,0xff,0x58,
- 0x65,0x7f,0xff,0x8d,0x92,0x9c,0xff,0xa5,0xa6,0xa7,0xff,0xa8,0xa8,0xa8,0xff,
- 0xad,0xad,0xad,0xff,0x82,0xa8,0xa8,0xa8,0xff,0x01,0xad,0xad,0xad,0xff,0x82,
- 0xa8,0xa8,0xa8,0xff,0x03,0xae,0xae,0xae,0xff,0x03,0x03,0x03,0xff,0x00,0x00,
- 0x00,0xff,0x84,0x04,0x04,0x04,0xff,0xe5,0x05,0x05,0x05,0xff,0x01,0x03,0x03,
- 0x04,0xff,0x82,0x02,0x02,0x03,0xff,0x01,0x03,0x03,0x03,0xff,0x89,0x04,0x04,
- 0x04,0xff,0x01,0x00,0x00,0x00,0xff
-};
-
-static const GdkPixdata rotation_orientation_horz_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 34342, /* header length + pixel_data length */
- 0x2010002, /* pixdata_type */
- 480, /* rowstride */
- 120, /* width */
- 90, /* height */
- rotation_orientation_horz_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotation_orientation_vert.png b/src/image_data/rotation_orientation_vert.png
deleted file mode 100644
index 11c163d..0000000
--- a/src/image_data/rotation_orientation_vert.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotation_orientation_vert_pixdata.h b/src/image_data/rotation_orientation_vert_pixdata.h
deleted file mode 100644
index 7af1900..0000000
--- a/src/image_data/rotation_orientation_vert_pixdata.h
+++ /dev/null
@@ -1,2425 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotation_orientation_vert_pixdata_pixel_data[] = {
- 0x03,0x00,0x00,0x00,0xff,0x04,0x04,0x04,0xff,0x04,0x03,0x03,0xff,0x91,0x04,
- 0x04,0x04,0xff,0x82,0x03,0x03,0x03,0xff,0x01,0x03,0x03,0x04,0xff,0x82,0x03,
- 0x03,0x03,0xff,0x04,0x04,0x04,0x04,0xff,0x03,0x03,0x03,0xff,0x04,0x04,0x04,
- 0xff,0x03,0x03,0x04,0xff,0x82,0x03,0x03,0x03,0xff,0x82,0x03,0x03,0x04,0xff,
- 0xb5,0x04,0x04,0x04,0xff,0x82,0x03,0x03,0x03,0xff,0x0e,0x04,0x04,0x04,0xff,
- 0x00,0x00,0x00,0xff,0x05,0x05,0x05,0xff,0xe5,0xe4,0xe4,0xff,0xdc,0xc8,0xc7,
- 0xff,0xde,0xd5,0xd4,0xff,0xe5,0xe5,0xe5,0xff,0xe1,0xe1,0xe1,0xff,0xe3,0xe3,
- 0xe3,0xff,0xdf,0xdf,0xdf,0xff,0xe4,0xe4,0xe4,0xff,0xe3,0xe3,0xe3,0xff,0xe2,
- 0xe2,0xe2,0xff,0xe4,0xe4,0xe4,0xff,0x82,0xe5,0xe5,0xe5,0xff,0x01,0xe2,0xe2,
- 0xe2,0xff,0x82,0xe3,0xe3,0xe3,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x04,0xdc,0xdd,
- 0xdd,0xff,0xbf,0xce,0xce,0xff,0xb1,0xc7,0xce,0xff,0xca,0xd0,0xd7,0xff,0x82,
- 0xcd,0xd1,0xd1,0xff,0x0a,0xd8,0xd8,0xd8,0xff,0xcf,0xcf,0xcf,0xff,0xd8,0xd8,
- 0xd8,0xff,0xd1,0xd1,0xd6,0xff,0xb4,0xb9,0xbf,0xff,0xc4,0xc7,0xcd,0xff,0xd3,
- 0xd5,0xd8,0xff,0xd0,0xd3,0xd5,0xff,0xdd,0xdd,0xde,0xff,0xe5,0xe5,0xe5,0xff,
- 0xa1,0xe6,0xe6,0xe6,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x0d,0xde,0xde,0xde,0xff,
- 0xdf,0xdf,0xdf,0xff,0xe4,0xe4,0xe4,0xff,0xe2,0xe2,0xe2,0xff,0xe3,0xe3,0xe3,
- 0xff,0xe4,0xe4,0xe4,0xff,0xe0,0xe0,0xe0,0xff,0xdf,0xdf,0xdf,0xff,0xe4,0xe4,
- 0xe4,0xff,0xde,0xde,0xde,0xff,0xe1,0xe1,0xe1,0xff,0xde,0xde,0xde,0xff,0xe2,
- 0xe2,0xe2,0xff,0x82,0xdf,0xdf,0xdf,0xff,0x04,0xe5,0xe5,0xe5,0xff,0xca,0xca,
- 0xca,0xff,0xc7,0xc7,0xc7,0xff,0xe5,0xe5,0xe5,0xff,0x82,0x05,0x05,0x05,0xff,
- 0x0e,0xdd,0xd5,0xd4,0xff,0xb8,0x45,0x40,0xff,0xb7,0x65,0x63,0xff,0xc9,0xc9,
- 0xc9,0xff,0x9a,0x9a,0x9a,0xff,0xa2,0xa2,0xa2,0xff,0x98,0x98,0x98,0xff,0xb6,
- 0xb6,0xb6,0xff,0x9d,0x9d,0x9d,0xff,0xa9,0xa9,0xa9,0xff,0xa3,0xa3,0xa3,0xff,
- 0xc3,0xc3,0xc3,0xff,0xd7,0xd7,0xd7,0xff,0xb1,0xb1,0xb1,0xff,0x82,0xa9,0xa9,
- 0xa9,0xff,0x12,0xaa,0xaa,0xaa,0xff,0xb3,0xb3,0xb3,0xff,0xc3,0xc7,0xc9,0xff,
- 0x9c,0xb1,0xb2,0xff,0x80,0x97,0x9c,0xff,0xad,0xa9,0xa6,0xff,0xc3,0xb6,0x98,
- 0xff,0xbd,0xb6,0x9f,0xff,0xc2,0xc0,0xba,0xff,0xc7,0xc6,0xc7,0xff,0xcf,0xcf,
- 0xd0,0xff,0xc3,0xc3,0xc7,0xff,0x9c,0xa9,0xb4,0xff,0xb0,0xb8,0xc2,0xff,0xa6,
- 0xbb,0xd1,0xff,0xa6,0xa9,0xae,0xff,0xcd,0xcb,0xca,0xff,0xe3,0xe3,0xe3,0xff,
- 0xa1,0xe6,0xe6,0xe6,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x13,0xcd,0xcd,0xcd,0xff,
- 0xac,0xac,0xac,0xff,0xb6,0xb6,0xb6,0xff,0xa9,0xa9,0xa9,0xff,0xaa,0xaa,0xaa,
- 0xff,0xaf,0xaf,0xaf,0xff,0xb6,0xb6,0xb6,0xff,0xba,0xba,0xba,0xff,0xd8,0xd8,
- 0xd8,0xff,0xc7,0xc7,0xc7,0xff,0xbf,0xbf,0xbf,0xff,0x99,0x99,0x99,0xff,0xb1,
- 0xb1,0xb1,0xff,0x96,0x96,0x96,0xff,0x8a,0x8a,0x8a,0xff,0xda,0xda,0xda,0xff,
- 0xa5,0xa5,0xa5,0xff,0xb6,0xb6,0xb6,0xff,0xe4,0xe4,0xe4,0xff,0x82,0x05,0x05,
- 0x05,0xff,0x0f,0xd4,0xd6,0xd9,0xff,0xcd,0xcb,0xcf,0xff,0xc8,0xc3,0xc7,0xff,
- 0xd0,0xd2,0xd5,0xff,0xc3,0xc4,0xc8,0xff,0xbe,0xbf,0xc3,0xff,0xca,0xcc,0xd0,
- 0xff,0xca,0xcb,0xcf,0xff,0xc7,0xc8,0xcc,0xff,0xca,0xcc,0xcf,0xff,0xcb,0xcd,
- 0xd0,0xff,0xcd,0xcf,0xd2,0xff,0xd4,0xd6,0xd9,0xff,0xd0,0xd1,0xd5,0xff,0xca,
- 0xcc,0xcf,0xff,0x82,0xcb,0xcd,0xd0,0xff,0x10,0xcc,0xce,0xd1,0xff,0xd1,0xd3,
- 0xd6,0xff,0xc7,0xca,0xcf,0xff,0xb8,0xbb,0xc3,0xff,0xc5,0xc6,0xcb,0xff,0xcb,
- 0xc7,0xc2,0xff,0xc8,0xc3,0xbc,0xff,0xce,0xcd,0xcd,0xff,0xc6,0xc6,0xc9,0xff,
- 0xbf,0xc1,0xc6,0xff,0xc9,0xcb,0xcf,0xff,0xb9,0xc3,0xcf,0xff,0xc3,0xc9,0xd0,
- 0xff,0xbf,0xc4,0xcd,0xff,0xaa,0xae,0xbe,0xff,0xc9,0xcb,0xd3,0xff,0x86,0xd6,
- 0xd8,0xdc,0xff,0x86,0xd7,0xd8,0xdc,0xff,0x82,0xd7,0xd9,0xdc,0xff,0x8d,0xd7,
- 0xd9,0xdd,0xff,0x83,0xd8,0xd9,0xdd,0xff,0x82,0xd8,0xd9,0xde,0xff,0x82,0xd8,
- 0xda,0xde,0xff,0x83,0xd6,0xd8,0xdc,0xff,0x15,0xd0,0xd2,0xd6,0xff,0xce,0xcf,
- 0xd4,0xff,0xd0,0xd2,0xd6,0xff,0xce,0xcf,0xd4,0xff,0xbf,0xc1,0xc5,0xff,0xc4,
- 0xc6,0xca,0xff,0xc8,0xca,0xce,0xff,0xce,0xcf,0xd3,0xff,0xd3,0xd5,0xd9,0xff,
- 0xd4,0xd6,0xda,0xff,0xce,0xd0,0xd4,0xff,0xd2,0xd4,0xd8,0xff,0xd2,0xd3,0xd8,
- 0xff,0xd3,0xd5,0xd9,0xff,0xd7,0xd9,0xdd,0xff,0xc3,0xc4,0xc8,0xff,0xc6,0xc8,
- 0xcc,0xff,0xd7,0xd9,0xdd,0xff,0x05,0x05,0x05,0xff,0x01,0x01,0x02,0xff,0x24,
- 0x3c,0x72,0xff,0x83,0x24,0x3c,0x71,0xff,0x40,0x25,0x3d,0x71,0xff,0x25,0x3d,
- 0x72,0xff,0x26,0x3e,0x73,0xff,0x27,0x3f,0x74,0xff,0x27,0x40,0x75,0xff,0x28,
- 0x40,0x76,0xff,0x29,0x41,0x76,0xff,0x2a,0x42,0x77,0xff,0x2a,0x43,0x78,0xff,
- 0x2b,0x44,0x79,0xff,0x2c,0x44,0x7a,0xff,0x2c,0x45,0x7b,0xff,0x2d,0x46,0x7c,
- 0xff,0x2e,0x46,0x7d,0xff,0x2f,0x47,0x7e,0xff,0x2f,0x48,0x80,0xff,0x31,0x4a,
- 0x82,0xff,0x32,0x4b,0x83,0xff,0x33,0x4c,0x85,0xff,0x34,0x4e,0x87,0xff,0x35,
- 0x4f,0x88,0xff,0x36,0x50,0x89,0xff,0x36,0x51,0x8a,0xff,0x37,0x52,0x8b,0xff,
- 0x38,0x53,0x8b,0xff,0x39,0x53,0x8d,0xff,0x3a,0x54,0x8e,0xff,0x3a,0x55,0x8f,
- 0xff,0x3b,0x56,0x90,0xff,0x3c,0x56,0x91,0xff,0x3c,0x57,0x92,0xff,0x3d,0x58,
- 0x93,0xff,0x3e,0x59,0x93,0xff,0x3f,0x5a,0x94,0xff,0x3f,0x5b,0x95,0xff,0x40,
- 0x5c,0x96,0xff,0x41,0x5c,0x97,0xff,0x42,0x5d,0x98,0xff,0x43,0x5e,0x99,0xff,
- 0x43,0x5e,0x9a,0xff,0x44,0x5f,0x9b,0xff,0x45,0x60,0x9c,0xff,0x45,0x61,0x9c,
- 0xff,0x46,0x62,0x9d,0xff,0x47,0x62,0x9e,0xff,0x47,0x63,0x9f,0xff,0x48,0x64,
- 0xa0,0xff,0x49,0x64,0xa1,0xff,0x4a,0x65,0xa2,0xff,0x4b,0x66,0xa3,0xff,0x4c,
- 0x67,0xa4,0xff,0x4d,0x67,0xa5,0xff,0x4d,0x68,0xa5,0xff,0x4e,0x69,0xa6,0xff,
- 0x4f,0x6a,0xa7,0xff,0x4f,0x6b,0xa8,0xff,0x50,0x6b,0xa9,0xff,0x51,0x6c,0xaa,
- 0xff,0x51,0x6d,0xab,0xff,0x52,0x6d,0xac,0xff,0x53,0x6e,0xad,0xff,0x54,0x6f,
- 0xae,0xff,0x54,0x70,0xaf,0xff,0x55,0x70,0xb0,0xff,0x94,0x56,0x71,0xb0,0xff,
- 0x07,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,
- 0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x83,
- 0x21,0x3a,0x72,0xff,0x1b,0x21,0x3b,0x73,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,
- 0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x49,
- 0x84,0xff,0x30,0x4a,0x86,0xff,0x31,0x4c,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x1f,0x3a,
- 0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,
- 0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x94,0x52,0x6f,0xb1,0xff,0x09,0x02,0x02,0x04,0xff,0x01,0x01,
- 0x02,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,
- 0x82,0x23,0x3d,0x76,0xff,0x04,0x24,0x3d,0x76,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x82,0x25,0x3f,0x78,0xff,0x35,0x26,0x40,
- 0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,0x51,0x8d,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,
- 0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,
- 0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,0xff,0x51,0x6e,0xb0,0xff,
- 0x94,0x52,0x6f,0xb1,0xff,0x0e,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1e,
- 0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x83,0x26,0x40,0x79,0xff,0x03,0x27,0x40,0x7a,0xff,0x27,0x41,0x7a,
- 0xff,0x28,0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x31,0x29,0x43,0x7d,0xff,
- 0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x50,0x8c,0xff,
- 0x37,0x51,0x8d,0xff,0x38,0x52,0x8f,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x61,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,
- 0xa7,0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6c,0xae,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6e,0xb0,0xff,0x93,0x52,0x6f,
- 0xb1,0xff,0x14,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1e,0x37,0x6f,0xff,
- 0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x27,0x40,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,0x42,0x7d,0xff,
- 0x29,0x43,0x7d,0xff,0x29,0x43,0x7c,0xff,0x82,0x29,0x43,0x7d,0xff,0x31,0x2a,
- 0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8b,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,
- 0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x3a,0x54,0x92,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x58,0x95,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5b,
- 0x9a,0xff,0x41,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,
- 0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,
- 0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,
- 0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,
- 0x93,0x52,0x6f,0xb1,0xff,0x16,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3d,0x76,
- 0xff,0x2b,0x44,0x7a,0xff,0x35,0x4c,0x7f,0xff,0x39,0x50,0x80,0xff,0x36,0x4c,
- 0x7d,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x83,0x2b,0x46,0x80,0xff,0x2e,0x2c,0x46,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,
- 0xff,0x3e,0x59,0x97,0xff,0x3f,0x5b,0x9a,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,
- 0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,
- 0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x93,
- 0x52,0x6f,0xb1,0xff,0x18,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1d,0x36,
- 0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,0xff,0x2b,0x42,0x78,0xff,
- 0x5b,0x6d,0x8f,0xff,0x8b,0xa2,0xb9,0xff,0x99,0xb1,0xc6,0xff,0x7c,0x8b,0xa6,
- 0xff,0x32,0x49,0x7d,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x83,0x2e,0x49,0x83,
- 0xff,0x2d,0x2e,0x48,0x83,0xff,0x2e,0x48,0x84,0xff,0x2f,0x48,0x84,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,
- 0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5b,0x9a,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5f,0x9f,0xff,0x44,0x61,
- 0xa0,0xff,0x46,0x62,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,
- 0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,
- 0x4c,0x68,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x92,0x52,0x6f,0xb1,0xff,0x1d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x1c,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x31,
- 0x48,0x7b,0xff,0x78,0x8b,0xa7,0xff,0x97,0xc4,0xe3,0xff,0xad,0xc9,0xdf,0xff,
- 0xb1,0xba,0xc4,0xff,0x66,0x73,0x93,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x46,0x80,0xff,0x2d,0x47,0x81,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,
- 0x30,0x4c,0x87,0xff,0x83,0x31,0x4c,0x87,0xff,0x82,0x31,0x4b,0x87,0xff,0x26,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5b,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x43,0x5e,0x9d,0xff,0x44,0x60,0x9f,0xff,0x46,0x61,0xa1,0xff,0x47,
- 0x63,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa8,0xff,
- 0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4e,0x6b,0xad,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x92,0x52,0x6f,0xb1,0xff,0x21,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x33,
- 0x49,0x7b,0xff,0x83,0x8f,0xa3,0xff,0xa6,0xb9,0xc8,0xff,0xa9,0xb1,0xba,0xff,
- 0xa5,0xab,0xb3,0xff,0x64,0x71,0x8d,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,
- 0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,
- 0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,
- 0xff,0x33,0x4f,0x8a,0xff,0x82,0x33,0x4e,0x8a,0xff,0x25,0x33,0x4f,0x8b,0xff,
- 0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x56,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x46,
- 0x62,0xa2,0xff,0x47,0x64,0xa4,0xff,0x49,0x66,0xa6,0xff,0x4b,0x67,0xa8,0xff,
- 0x4c,0x68,0xa9,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,
- 0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x92,0x52,0x6f,0xb1,0xff,0x24,
- 0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,
- 0x72,0xff,0x21,0x3a,0x73,0xff,0x2d,0x44,0x78,0xff,0x66,0x71,0x8b,0xff,0x74,
- 0x7c,0x8d,0xff,0x50,0x5e,0x7d,0xff,0x54,0x66,0x8b,0xff,0x41,0x56,0x7f,0xff,
- 0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,
- 0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,
- 0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,
- 0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,
- 0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x85,0x36,0x51,0x8e,0xff,0x20,
- 0x36,0x51,0x8f,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,
- 0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,
- 0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9e,
- 0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x49,0x65,0xa6,0xff,0x4a,
- 0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x6a,0xac,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x91,0x52,0x6f,0xb1,0xff,0x28,0x02,
- 0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6e,0xff,
- 0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x73,0xff,0x28,0x40,0x75,0xff,0x28,0x40,0x76,0xff,0x2a,0x43,
- 0x78,0xff,0x2b,0x43,0x79,0xff,0x2b,0x43,0x7a,0xff,0x2d,0x44,0x7a,0xff,0x2a,
- 0x43,0x7b,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,
- 0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,
- 0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x33,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,
- 0x34,0x50,0x8b,0xff,0x35,0x51,0x8d,0xff,0x35,0x51,0x8e,0xff,0x36,0x52,0x8e,
- 0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x84,0x38,0x54,0x91,0xff,0x02,
- 0x39,0x54,0x91,0xff,0x39,0x54,0x92,0xff,0x82,0x3a,0x55,0x93,0xff,0x1b,0x3b,
- 0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,
- 0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,
- 0xff,0x4d,0x69,0xab,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x8d,0x52,0x6f,0xb1,0xff,0x2c,0x02,0x02,
- 0x04,0xff,0x01,0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x25,0x3d,0x74,0xff,0x3d,0x50,0x7b,0xff,0x3a,0x4e,0x7a,0xff,0x43,0x55,0x7e,
- 0xff,0x43,0x55,0x7f,0xff,0x43,0x56,0x80,0xff,0x42,0x55,0x7e,0xff,0x36,0x4b,
- 0x7c,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,
- 0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x82,0x3b,0x57,0x94,0xff,0x01,
- 0x3b,0x58,0x95,0xff,0x82,0x3c,0x57,0x95,0xff,0x01,0x3d,0x57,0x95,0xff,0x82,
- 0x3d,0x58,0x96,0xff,0x15,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,
- 0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x45,0x60,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x4a,0x66,
- 0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x83,
- 0x4d,0x6a,0xac,0xff,0x01,0x4e,0x6b,0xad,0xff,0x82,0x50,0x6d,0xaf,0xff,0x83,
- 0x51,0x6e,0xb0,0xff,0x88,0x52,0x6f,0xb1,0xff,0x29,0x02,0x02,0x04,0xff,0x01,
- 0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,
- 0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x23,0x3c,0x73,
- 0xff,0x33,0x48,0x78,0xff,0x34,0x48,0x76,0xff,0x39,0x4a,0x73,0xff,0x3e,0x50,
- 0x79,0xff,0x3f,0x51,0x7a,0xff,0x39,0x4b,0x77,0xff,0x2e,0x44,0x76,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,
- 0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,
- 0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x50,0x8b,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8f,
- 0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x05,
- 0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x82,0x3e,0x5a,0x98,0xff,0x01,0x3e,0x5a,0x99,0xff,
- 0x82,0x3f,0x5a,0x98,0xff,0x15,0x3f,0x5a,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5b,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,
- 0x43,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,
- 0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,
- 0xa4,0xff,0x48,0x64,0xa5,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,
- 0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,
- 0x85,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,0x02,0x4f,0x6c,0xae,0xff,
- 0x50,0x6d,0xaf,0xff,0x83,0x51,0x6e,0xb0,0xff,0x84,0x52,0x6f,0xb1,0xff,0x34,
- 0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6c,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,
- 0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,
- 0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x85,0xff,
- 0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x33,0x4e,0x89,
- 0xff,0x33,0x4f,0x8a,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,
- 0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,
- 0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x82,0x40,
- 0x5d,0x9b,0xff,0x05,0x40,0x5d,0x9c,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5d,0x9c,
- 0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x82,0x43,0x5e,0x9e,0xff,0x0d,
- 0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,
- 0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,
- 0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x89,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x01,0x4f,0x6c,0xae,0xff,0x82,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x3e,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1a,0x34,0x6b,0xff,
- 0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,
- 0x73,0xff,0x21,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,
- 0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,
- 0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x5f,0x9f,0xff,0x43,0x60,0x9f,0xff,0x44,
- 0x5f,0x9f,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,0xff,0x83,0x45,0x61,0xa1,
- 0xff,0x0a,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,
- 0x64,0xa5,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,
- 0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x4d,0x69,0xab,0xff,0x8d,0x4d,0x6a,
- 0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,0x40,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,
- 0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,
- 0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,
- 0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,
- 0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x8a,0xff,0x33,0x4f,
- 0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x51,0x8c,0xff,0x36,0x51,0x8d,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x39,0x55,0x91,0xff,
- 0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,
- 0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x46,0x62,0xa2,
- 0xff,0x47,0x63,0xa3,0xff,0x47,0x62,0xa2,0xff,0x82,0x46,0x63,0xa3,0xff,0x01,
- 0x47,0x63,0xa4,0xff,0x82,0x47,0x64,0xa5,0xff,0x06,0x49,0x65,0xa6,0xff,0x49,
- 0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x8f,0x4d,0x6a,0xac,0xff,0x42,0x02,0x02,0x04,0xff,0x01,
- 0x01,0x02,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x35,0x6c,0xff,
- 0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,
- 0xff,0x1f,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,
- 0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x83,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4b,0x85,0xff,0x30,
- 0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,
- 0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,
- 0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x49,0x65,0xa5,0xff,0x83,0x49,0x65,0xa6,0xff,0x06,0x49,0x66,0xa7,0xff,0x4a,
- 0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x8f,0x4d,0x6a,0xac,0xff,0x44,0x02,0x02,0x04,0xff,0x01,
- 0x01,0x02,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,
- 0x1b,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,
- 0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,
- 0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,
- 0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,
- 0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x83,0x4c,0x68,
- 0xa9,0xff,0x05,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x4d,0x6a,0xab,0xff,0x8e,0x4d,0x6a,0xac,0xff,0x39,0x02,
- 0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,
- 0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,
- 0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,
- 0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,
- 0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,0x50,0x8b,
- 0xff,0x35,0x50,0x8c,0xff,0x36,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,
- 0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x0c,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,
- 0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,
- 0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4e,0x6a,0xab,0xff,0x82,0x4e,0x6b,0xac,
- 0xff,0x85,0x4e,0x6b,0xad,0xff,0x8c,0x4d,0x6a,0xac,0xff,0x4b,0x02,0x02,0x04,
- 0xff,0x01,0x01,0x02,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,
- 0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,
- 0x37,0x6f,0xff,0x26,0x3d,0x71,0xff,0x4b,0x57,0x74,0xff,0x60,0x64,0x74,0xff,
- 0x53,0x5a,0x71,0xff,0x4f,0x57,0x70,0xff,0x29,0x3f,0x73,0xff,0x23,0x3c,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x46,0x81,0xff,
- 0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,
- 0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,
- 0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,
- 0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa7,0xff,0x4c,
- 0x68,0xa8,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x01,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x88,0x4d,0x6a,0xac,0xff,0x4d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1b,0x34,
- 0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x32,
- 0x44,0x71,0xff,0x92,0x88,0x7a,0xff,0xcb,0xae,0x7e,0xff,0xb6,0x9e,0x7a,0xff,
- 0xab,0x96,0x79,0xff,0x4d,0x57,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,
- 0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,
- 0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,
- 0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,
- 0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x55,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,
- 0xff,0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,
- 0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4c,0x68,0xa8,0xff,0x4c,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,
- 0xff,0x83,0x52,0x6f,0xb1,0xff,0x01,0x51,0x6e,0xb0,0xff,0x82,0x50,0x6d,0xaf,
- 0xff,0x01,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,0xad,0xff,0x84,0x4d,0x6a,0xac,
- 0xff,0x4d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x18,0x32,0x69,0xff,0x19,
- 0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,
- 0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x30,0x43,0x71,0xff,0x91,0x85,0x7b,
- 0xff,0xd8,0xb8,0x89,0xff,0xae,0x9a,0x7d,0xff,0x9e,0x8e,0x79,0xff,0x5d,0x5f,
- 0x70,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x85,0xff,0x30,
- 0x4c,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,
- 0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,
- 0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,
- 0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,
- 0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x87,0x52,0x6f,0xb1,0xff,
- 0x01,0x51,0x6e,0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x01,0x4f,0x6c,0xae,0xff,
- 0x82,0x4e,0x6b,0xad,0xff,0x4d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x18,
- 0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,
- 0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x2d,0x41,0x71,
- 0xff,0x7f,0x78,0x78,0xff,0xbd,0x9d,0x75,0xff,0x85,0x6b,0x57,0xff,0x78,0x5f,
- 0x52,0xff,0x4b,0x47,0x5a,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,
- 0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,
- 0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa7,0xff,0x4c,0x68,0xa9,
- 0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,
- 0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8b,
- 0x52,0x6f,0xb1,0xff,0x50,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x02,0x02,
- 0x04,0xff,0x01,0x01,0x02,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,
- 0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,
- 0x1c,0x36,0x6e,0xff,0x25,0x3c,0x70,0xff,0x4b,0x55,0x71,0xff,0x65,0x5e,0x63,
- 0xff,0x67,0x52,0x52,0xff,0x6c,0x54,0x53,0xff,0x42,0x41,0x5e,0xff,0x22,0x3b,
- 0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,
- 0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x8a,0xff,
- 0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x39,0x55,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,
- 0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,
- 0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,
- 0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,
- 0x4a,0x67,0xa7,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,
- 0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,
- 0xae,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8c,0x52,0x6f,0xb1,0xff,
- 0x4e,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x17,0x31,0x68,0xff,0x18,0x31,
- 0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1c,
- 0x36,0x6d,0xff,0x25,0x3d,0x71,0xff,0x2a,0x41,0x74,0xff,0x2d,0x42,0x74,0xff,
- 0x2c,0x41,0x72,0xff,0x36,0x45,0x6f,0xff,0x3f,0x4b,0x70,0xff,0x30,0x44,0x76,
- 0xff,0x2d,0x44,0x79,0xff,0x28,0x40,0x77,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x40,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,
- 0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4b,
- 0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x32,
- 0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x62,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,
- 0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8c,0x52,
- 0x6f,0xb1,0xff,0x0d,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x17,0x30,0x67,
- 0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,
- 0x6b,0xff,0x1e,0x36,0x6d,0xff,0x33,0x47,0x74,0xff,0x3e,0x4f,0x76,0xff,0x3d,
- 0x4e,0x76,0xff,0x36,0x4a,0x76,0xff,0x35,0x49,0x75,0xff,0x82,0x3e,0x50,0x78,
- 0xff,0x40,0x3d,0x4f,0x7a,0xff,0x30,0x45,0x76,0xff,0x23,0x3c,0x75,0xff,0x23,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x28,0x41,0x7b,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,
- 0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,
- 0x8f,0xff,0x38,0x54,0x90,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,
- 0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,
- 0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4f,0x6b,
- 0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x8b,0x52,0x6f,0xb1,0xff,0x02,0x02,0x02,0x04,0xff,0x00,0x01,
- 0x02,0xff,0x82,0x17,0x30,0x66,0xff,0x4b,0x18,0x30,0x67,0xff,0x19,0x31,0x67,
- 0xff,0x19,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x28,0x3d,0x6c,0xff,0x2f,0x41,
- 0x6d,0xff,0x2c,0x40,0x6d,0xff,0x29,0x3f,0x6f,0xff,0x26,0x3c,0x6d,0xff,0x2c,
- 0x41,0x6f,0xff,0x2f,0x43,0x6f,0xff,0x2f,0x44,0x72,0xff,0x28,0x3f,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x44,0x7f,0xff,0x2c,0x46,0x80,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,
- 0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,
- 0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,
- 0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,
- 0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x55,0x91,0xff,
- 0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9f,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4e,
- 0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,
- 0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8b,0x52,0x6f,0xb1,0xff,0x4f,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,
- 0xff,0x24,0x3d,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x4a,0x84,0xff,
- 0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,
- 0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,
- 0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,
- 0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,
- 0x89,0x52,0x6f,0xb1,0xff,0x45,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,
- 0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,
- 0xff,0x23,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,
- 0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x46,0x7f,0xff,0x2c,0x47,0x81,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,
- 0xff,0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,
- 0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x92,0xff,0x39,0x55,0x93,0xff,
- 0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x82,0x48,0x64,
- 0xa4,0xff,0x0b,0x48,0x64,0xa5,0xff,0x48,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x67,0xa8,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x85,0x52,0x6f,0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,
- 0xff,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,0xad,0xff,0x40,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x68,0xff,0x1a,0x32,
- 0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6c,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,
- 0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x47,0x82,0xff,0x2f,0x49,0x84,0xff,0x30,0x4b,0x86,0xff,0x32,0x4d,
- 0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,
- 0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,
- 0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,
- 0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x82,0x45,0x62,
- 0xa1,0xff,0x02,0x46,0x62,0xa1,0xff,0x46,0x61,0xa1,0xff,0x82,0x45,0x61,0xa2,
- 0xff,0x0a,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa5,0xff,0x49,
- 0x66,0xa6,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,
- 0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x4f,0x6c,0xae,0xff,
- 0x82,0x4e,0x6b,0xad,0xff,0x83,0x4d,0x6a,0xac,0xff,0x1c,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x14,0x2c,0x60,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x64,
- 0xff,0x18,0x30,0x66,0xff,0x18,0x32,0x68,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x29,0x3f,0x70,0xff,0x32,
- 0x48,0x76,0xff,0x26,0x3d,0x71,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x41,0x7b,0xff,0x82,0x28,0x42,0x7c,0xff,0x21,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2d,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4d,0x88,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x55,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,
- 0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x60,0x9f,0xff,0x0d,0x44,0x5f,0x9f,
- 0xff,0x44,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x61,
- 0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,
- 0x64,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4b,0x67,0xa8,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6b,0xad,0xff,0x84,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,0xad,0xff,0x86,
- 0x4d,0x6a,0xac,0xff,0x1b,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x14,0x2b,
- 0x60,0xff,0x15,0x2d,0x62,0xff,0x17,0x30,0x66,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1e,0x37,0x6d,0xff,
- 0x3b,0x4e,0x75,0xff,0x75,0x7f,0x93,0xff,0x8d,0x96,0xa9,0xff,0x5d,0x6b,0x8a,
- 0xff,0x25,0x3c,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,
- 0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x82,0x29,0x43,0x7d,0xff,0x82,0x2a,
- 0x44,0x7e,0xff,0x84,0x2b,0x45,0x7f,0xff,0x1a,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x30,0x4a,0x85,0xff,0x32,
- 0x4d,0x88,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8d,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,
- 0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x82,0x42,0x5e,0x9d,0xff,0x10,0x41,
- 0x5d,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,
- 0xa6,0xff,0x49,0x65,0xa6,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x82,0x4d,0x6a,0xab,0xff,0x89,0x4d,0x6a,0xac,0xff,0x1f,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x14,0x2b,0x60,0xff,0x15,0x2e,0x63,0xff,
- 0x16,0x30,0x66,0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x6a,
- 0xff,0x19,0x33,0x6b,0xff,0x1f,0x37,0x6c,0xff,0x49,0x5b,0x7d,0xff,0xa1,0xaa,
- 0xb3,0xff,0xa6,0xae,0xb6,0xff,0x76,0x82,0x96,0xff,0x25,0x3b,0x6d,0xff,0x20,
- 0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x22,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x82,0x2c,0x46,0x81,0xff,0x03,0x2c,0x47,0x82,0xff,0x2d,0x47,
- 0x82,0xff,0x2d,0x47,0x81,0xff,0x82,0x2d,0x46,0x81,0xff,0x17,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x30,0x4a,0x86,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,
- 0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5c,0x9b,0xff,0x82,
- 0x40,0x5b,0x9a,0xff,0x12,0x40,0x5c,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,
- 0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,
- 0xab,0xff,0x88,0x4d,0x6a,0xac,0xff,0x23,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x14,0x2b,0x60,0xff,0x15,0x2e,0x64,0xff,0x16,0x2f,
- 0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,
- 0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x43,0x56,0x7e,0xff,0xb5,0xba,0xc0,0xff,
- 0x9e,0xa2,0xa7,0xff,0x75,0x7f,0x92,0xff,0x20,0x37,0x6d,0xff,0x1f,0x38,0x71,
- 0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x83,0x2e,
- 0x49,0x83,0xff,0x0c,0x2e,0x47,0x83,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x31,0x4c,0x87,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x82,0x39,0x55,0x92,0xff,0x06,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x96,0xff,0x3c,0x58,0x96,0xff,0x3d,
- 0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x82,0x3e,0x5b,0x99,0xff,0x02,0x3e,0x5a,
- 0x98,0xff,0x3e,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x13,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,
- 0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x4c,0x6a,0xab,0xff,0x85,0x4d,
- 0x6a,0xac,0xff,0x27,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2b,0x5f,0xff,0x15,0x2d,
- 0x63,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6a,0xff,0x33,0x49,0x76,0xff,
- 0x8e,0x93,0xa1,0xff,0x87,0x8a,0x93,0xff,0x58,0x64,0x80,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,
- 0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x48,
- 0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,0x2f,0x4a,0x85,0xff,
- 0x11,0x2f,0x49,0x84,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x33,0x4e,0x8a,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,
- 0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,
- 0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x82,0x3d,0x59,0x97,0xff,0x19,
- 0x3d,0x58,0x96,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,
- 0x9b,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,
- 0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x64,0xa5,
- 0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,
- 0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x83,0x4d,0x6a,0xac,0xff,
- 0x3a,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x52,0x6f,0xb1,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2c,0x61,0xff,0x16,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,
- 0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,
- 0xff,0x20,0x38,0x6e,0xff,0x39,0x4c,0x78,0xff,0x3b,0x4e,0x77,0xff,0x2b,0x41,
- 0x71,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x38,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,
- 0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,
- 0x2f,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4a,0x85,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x31,0x4c,0x88,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x39,0x55,0x93,0xff,0x3a,0x56,0x94,0xff,0x82,0x3b,0x57,0x95,0xff,0x10,0x3b,
- 0x56,0x94,0xff,0x3b,0x56,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x82,0x46,0x62,0xa3,0xff,0x0d,0x46,0x63,0xa3,0xff,0x47,0x63,
- 0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,
- 0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,
- 0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x84,0x52,0x6f,0xb1,0xff,0x36,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x13,0x2a,0x5e,0xff,0x14,0x2b,0x60,0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x66,
- 0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x1d,0x35,
- 0x6c,0xff,0x2e,0x44,0x74,0xff,0x36,0x49,0x72,0xff,0x39,0x4d,0x78,0xff,0x3a,
- 0x4d,0x78,0xff,0x27,0x3e,0x71,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,0xff,0x22,0x3b,0x74,
- 0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,
- 0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x2f,0x4a,
- 0x85,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x4a,0x86,0xff,0x33,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,
- 0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x55,0x91,
- 0xff,0x39,0x55,0x92,0xff,0x3a,0x55,0x93,0xff,0x3a,0x55,0x92,0xff,0x82,0x39,
- 0x54,0x92,0xff,0x12,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,
- 0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5f,0x9f,0xff,0x45,0x61,0xa1,0xff,
- 0x47,0x63,0xa3,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x48,0x64,0xa5,
- 0xff,0x82,0x47,0x64,0xa5,0xff,0x08,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,
- 0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4d,0x6a,0xac,
- 0xff,0x4f,0x6c,0xae,0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,0x6f,0xb1,0xff,0x48,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x14,0x2c,0x61,0xff,0x15,0x2e,0x64,0xff,0x16,0x2f,0x67,0xff,0x17,0x30,
- 0x68,0xff,0x18,0x31,0x69,0xff,0x1b,0x34,0x6b,0xff,0x27,0x3e,0x70,0xff,0x30,
- 0x43,0x6e,0xff,0x38,0x4b,0x75,0xff,0x33,0x47,0x72,0xff,0x24,0x3b,0x6f,0xff,
- 0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x25,0x3d,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,
- 0x40,0x7a,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,
- 0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4b,0x87,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x32,0x4d,0x89,0xff,0x34,0x4f,0x8b,0xff,
- 0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,
- 0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x38,0x53,0x90,0xff,0x38,0x52,
- 0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5a,0x9a,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x43,0x5e,
- 0x9d,0xff,0x44,0x61,0xa1,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,
- 0x65,0xa6,0xff,0x82,0x4a,0x66,0xa7,0xff,0x01,0x4a,0x67,0xa7,0xff,0x82,0x4a,
- 0x67,0xa8,0xff,0x06,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,0x4d,0x69,0xab,
- 0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x51,0x6e,0xb0,0xff,0x87,0x52,
- 0x6f,0xb1,0xff,0x53,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,
- 0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x61,0xff,0x16,0x2e,
- 0x64,0xff,0x17,0x30,0x66,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x1b,
- 0x34,0x6b,0xff,0x1e,0x36,0x6b,0xff,0x22,0x39,0x6e,0xff,0x20,0x38,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,
- 0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x45,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,
- 0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x2e,
- 0x48,0x84,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x31,0x4b,0x87,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,
- 0xff,0x36,0x52,0x8f,0xff,0x36,0x51,0x8e,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,
- 0x53,0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,
- 0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5c,0x9b,0xff,0x42,0x5e,
- 0x9d,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,
- 0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,
- 0x4b,0x68,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,
- 0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x51,0x6e,0xb0,0xff,0x87,0x52,0x6f,0xb1,0xff,0x2e,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,
- 0x2f,0x66,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,
- 0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,
- 0x3d,0x76,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x2f,0x49,0x84,0xff,0x2e,0x47,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x33,0x4f,0x8a,0xff,0x34,0x50,0x8c,
- 0xff,0x82,0x35,0x50,0x8c,0xff,0x01,0x34,0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8b,
- 0xff,0x21,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,
- 0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5e,
- 0x9d,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,
- 0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,
- 0xae,0xff,0x50,0x6d,0xae,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x86,
- 0x52,0x6f,0xb1,0xff,0x2e,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x12,0x29,
- 0x5d,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x30,0x67,0xff,0x19,0x32,0x69,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,
- 0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,
- 0x2e,0x49,0x84,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x83,0x33,0x4d,0x89,0xff,0x23,
- 0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x94,0xff,0x3c,
- 0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3f,0x5a,0x99,0xff,
- 0x41,0x5d,0x9c,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,
- 0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa7,0xff,0x4b,
- 0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,0x6f,0xb1,0xff,0x02,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x29,0x13,0x2a,0x5e,0xff,0x14,
- 0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x1a,0x31,0x68,
- 0xff,0x1a,0x33,0x6a,0xff,0x1b,0x35,0x6c,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,
- 0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,
- 0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,
- 0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2c,
- 0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,
- 0x2f,0x4a,0x85,0xff,0x2e,0x49,0x84,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x4b,0x86,0xff,0x82,0x31,0x4b,0x87,0xff,0x24,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8b,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x5a,0x98,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,
- 0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,
- 0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x84,0x51,0x6e,0xb0,0xff,0x05,
- 0x50,0x6d,0xaf,0xff,0x4f,0x6c,0xae,0xff,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x4c,0x13,0x2a,0x5e,0xff,
- 0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,
- 0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x33,0x69,0xff,0x1c,0x33,0x6b,0xff,0x1d,
- 0x35,0x6d,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3d,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x40,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x2e,0x48,0x83,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,
- 0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3c,0x57,0x95,0xff,0x3e,
- 0x5a,0x98,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,0x44,0x61,0xa0,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,
- 0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4e,0x6a,0xab,0xff,
- 0x83,0x4e,0x6b,0xac,0xff,0x82,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,
- 0x83,0x4d,0x6a,0xac,0xff,0x26,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2b,0x60,0xff,0x12,0x29,0x5d,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,0x32,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6f,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,
- 0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,
- 0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x82,0x2e,0x49,0x84,0xff,0x25,0x2d,
- 0x47,0x82,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,
- 0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x92,0xff,
- 0x3b,0x56,0x94,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5b,0x99,0xff,0x40,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x82,0x4c,0x68,
- 0xa9,0xff,0x02,0x4b,0x68,0xa9,0xff,0x4a,0x67,0xa8,0xff,0x82,0x4b,0x68,0xa9,
- 0xff,0x02,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x85,0x4d,0x6a,0xac,0xff,
- 0x4b,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2c,0x62,0xff,0x13,0x2b,
- 0x60,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x70,0xff,0x20,
- 0x39,0x72,0xff,0x22,0x3b,0x74,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,
- 0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,
- 0x48,0x82,0xff,0x2c,0x47,0x81,0xff,0x2c,0x46,0x80,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,
- 0x38,0x52,0x8f,0xff,0x39,0x53,0x91,0xff,0x3b,0x56,0x94,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,
- 0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,
- 0xff,0x82,0x49,0x66,0xa6,0xff,0x82,0x48,0x65,0xa5,0xff,0x07,0x48,0x65,0xa6,
- 0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,
- 0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xac,0xff,0x84,0x4d,0x6a,0xac,0xff,
- 0x02,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x62,0xff,0x47,
- 0x13,0x2b,0x60,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,
- 0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,
- 0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x72,0xff,0x22,0x3c,0x75,0xff,0x24,0x3d,
- 0x76,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x7e,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x53,
- 0x90,0xff,0x3a,0x56,0x93,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9f,
- 0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x47,0x63,0xa3,0xff,0x82,
- 0x46,0x62,0xa3,0xff,0x09,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,
- 0xa5,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,
- 0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x83,0x4d,0x6a,0xac,
- 0xff,0x03,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x83,
- 0x13,0x2c,0x62,0xff,0x1e,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,0xff,0x14,0x2b,
- 0x5f,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x22,
- 0x3b,0x73,0xff,0x23,0x3c,0x75,0xff,0x24,0x3e,0x77,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x43,0x7e,0xff,0x83,0x29,0x43,0x7d,0xff,0x20,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x51,0x8e,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x61,0xa1,0xff,0x82,0x45,0x62,0xa2,0xff,0x01,0x45,0x61,0xa1,0xff,0x82,
- 0x45,0x60,0xa0,0xff,0x0d,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,
- 0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x02,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x84,0x13,0x2c,0x62,
- 0xff,0x1a,0x14,0x2d,0x62,0xff,0x14,0x2c,0x61,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6e,0xff,0x20,
- 0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,
- 0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x25,0x3e,0x77,0xff,0x26,0x40,0x79,
- 0xff,0x83,0x28,0x41,0x7b,0xff,0x21,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,
- 0x34,0x4e,0x8a,0xff,0x35,0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x82,0x43,0x5f,0x9e,0xff,0x0f,
- 0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,
- 0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,
- 0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,
- 0x68,0xaa,0xff,0x4e,0x6b,0xac,0xff,0x50,0x6c,0xae,0xff,0x51,0x6e,0xaf,0xff,
- 0x83,0x52,0x6f,0xb1,0xff,0x02,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x84,
- 0x13,0x2c,0x62,0xff,0x03,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2d,
- 0x63,0xff,0x82,0x15,0x2d,0x62,0xff,0x4c,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,
- 0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,
- 0x67,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x37,0x6e,0xff,
- 0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x72,
- 0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,
- 0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,
- 0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,
- 0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,0x8d,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9b,0xff,0x40,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5d,0x9c,0xff,
- 0x41,0x5d,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,
- 0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa5,0xff,0x49,
- 0x65,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xad,0xff,
- 0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,
- 0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x85,0x13,0x2c,0x62,0xff,0x30,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,
- 0x2f,0x65,0xff,0x16,0x2e,0x64,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x35,0x50,0x8d,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x1e,0x3a,0x56,0x93,0xff,0x3b,0x57,
- 0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x40,0x5c,0x9a,0xff,0x3f,0x5b,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5f,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x46,
- 0x62,0xa2,0xff,0x48,0x64,0xa5,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,0xb1,0xff,0x03,
- 0x4f,0x6c,0xae,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,
- 0x62,0xff,0x55,0x14,0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x30,0x66,0xff,0x17,0x30,0x65,0xff,0x17,0x2f,0x65,
- 0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,
- 0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1f,0x38,0x6f,0xff,
- 0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,
- 0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,
- 0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,
- 0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x34,0x50,0x8c,0xff,0x35,
- 0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,
- 0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5a,0x98,0xff,0x3e,
- 0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,
- 0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x46,0x62,0xa2,0xff,0x49,0x65,
- 0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xae,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6f,0xb1,
- 0xff,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x85,0x13,
- 0x2c,0x62,0xff,0x39,0x13,0x2c,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x65,
- 0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,
- 0x68,0xff,0x18,0x31,0x67,0xff,0x19,0x31,0x67,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,
- 0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x38,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,
- 0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x33,0x4e,0x8a,0xff,0x34,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,
- 0x5a,0x97,0xff,0x3e,0x59,0x98,0xff,0x82,0x3d,0x58,0x96,0xff,0x1a,0x3e,0x58,
- 0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,
- 0x44,0x5f,0x9f,0xff,0x47,0x62,0xa2,0xff,0x48,0x64,0xa5,0xff,0x4a,0x66,0xa6,
- 0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4d,0x69,
- 0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,
- 0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,
- 0x4d,0x6a,0xac,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,
- 0x62,0xff,0x09,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,
- 0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6a,0xff,0x82,0x1a,0x33,0x69,0xff,0x32,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,
- 0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,
- 0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,
- 0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,
- 0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,
- 0x33,0x4e,0x8a,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,
- 0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x39,0x55,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,
- 0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3c,0x58,0x95,0xff,0x3b,0x56,0x94,0xff,
- 0x3b,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x82,0x40,0x5b,0x9a,0xff,0x15,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x43,0x5f,0x9e,0xff,0x46,0x62,0xa2,0xff,0x48,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,
- 0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,
- 0x51,0x6e,0xb0,0xff,0x4e,0x6b,0xad,0xff,0x4d,0x6a,0xac,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,0xff,0x36,0x14,0x2d,0x63,0xff,
- 0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x19,0x33,
- 0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6c,0xff,0x1c,
- 0x35,0x6b,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,
- 0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,
- 0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x84,0xff,0x30,0x4b,0x87,0xff,0x34,
- 0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x56,
- 0x94,0xff,0x82,0x3a,0x55,0x93,0xff,0x16,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,
- 0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5e,0x9d,0xff,0x44,
- 0x61,0xa1,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,
- 0xff,0x4c,0x69,0xa9,0xff,0x4d,0x6a,0xaa,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6c,0xad,0xff,0x82,0x50,0x6d,0xae,0xff,0x04,0x4c,0x69,0xab,
- 0xff,0x4d,0x6a,0xac,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x86,0x13,
- 0x2c,0x62,0xff,0x0c,0x13,0x2d,0x63,0xff,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,
- 0xff,0x15,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,
- 0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,
- 0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x82,0x1d,0x36,0x6e,0xff,0x46,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x81,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x32,0x4d,0x89,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,
- 0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,
- 0x3a,0x54,0x92,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,
- 0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,
- 0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5d,0x9c,0xff,0x43,0x60,0xa0,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x65,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,
- 0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4d,0x69,
- 0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,
- 0x6c,0xae,0xff,0x4d,0x6a,0xac,0xff,0x4c,0x69,0xab,0xff,0x4d,0x6a,0xac,0xff,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,0x53,0x14,
- 0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,
- 0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,
- 0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,
- 0x6b,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,
- 0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,
- 0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x28,0x42,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x35,0x51,0x8e,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x39,0x54,0x91,0xff,0x38,0x53,0x90,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,
- 0x5a,0x99,0xff,0x40,0x5c,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,
- 0x6b,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x4b,0x68,0xaa,0xff,
- 0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,
- 0xff,0x87,0x13,0x2c,0x62,0xff,0x31,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x31,0x68,
- 0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6a,0xff,0x1a,0x32,0x69,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x87,0xff,0x34,
- 0x4f,0x8b,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,
- 0x38,0x53,0x90,0xff,0x38,0x53,0x8f,0xff,0x82,0x37,0x51,0x8e,0xff,0x20,0x37,
- 0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,
- 0xff,0x3e,0x59,0x97,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9d,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,
- 0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4d,0x6a,
- 0xab,0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x05,0x14,0x2d,
- 0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,
- 0x30,0x67,0xff,0x82,0x18,0x31,0x68,0xff,0x29,0x18,0x31,0x67,0xff,0x19,0x30,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1b,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,
- 0x1e,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x32,
- 0x4d,0x89,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,
- 0x36,0x51,0x8d,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x20,0x37,
- 0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,
- 0xff,0x3e,0x59,0x98,0xff,0x40,0x5c,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,
- 0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x52,0x14,0x2d,
- 0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,
- 0x30,0x66,0xff,0x17,0x2f,0x65,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,
- 0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x35,0x6a,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,
- 0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,
- 0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,
- 0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,
- 0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x35,0x4f,
- 0x8b,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3d,0x57,0x96,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,
- 0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,
- 0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,
- 0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4c,0x69,
- 0xaa,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,
- 0xff,0x52,0x13,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x64,0xff,0x15,
- 0x2e,0x63,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1f,0x38,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x33,0x4e,
- 0x8a,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,
- 0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,
- 0xff,0x3b,0x56,0x94,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5c,0x9a,0xff,0x41,0x5d,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,
- 0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa7,
- 0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,
- 0xaa,0xff,0x4a,0x66,0xa7,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,
- 0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x89,0x13,0x2c,0x62,0xff,0x30,0x14,0x2c,0x61,0xff,0x14,0x2b,0x60,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x16,0x37,0x51,0x8e,0xff,0x38,0x52,
- 0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x55,0x93,0xff,0x3c,
- 0x57,0x95,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,
- 0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x64,
- 0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,
- 0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x82,0x4c,0x68,0xa9,0xff,0x07,0x48,0x65,
- 0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,
- 0x68,0xaa,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,
- 0xff,0x54,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,
- 0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,
- 0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x3b,0x55,0x93,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x68,0xa9,0xff,0x49,0x66,0xa7,0xff,0x48,0x64,0xa6,0xff,0x49,
- 0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,0x62,0xff,0x02,0x13,
- 0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x82,0x12,0x29,0x5d,0xff,0x49,0x12,0x29,
- 0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,
- 0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,
- 0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,
- 0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x38,0x6e,0xff,0x1f,0x38,0x70,0xff,0x20,
- 0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,
- 0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,
- 0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,
- 0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,
- 0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,
- 0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,
- 0x39,0x54,0x91,0xff,0x3b,0x57,0x94,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,
- 0xff,0x3f,0x5c,0x99,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa3,0xff,
- 0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,
- 0xff,0x4b,0x67,0xa8,0xff,0x82,0x48,0x64,0xa5,0xff,0x06,0x48,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x83,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,
- 0x12,0x2a,0x5f,0xff,0x85,0x12,0x29,0x5d,0xff,0x18,0x13,0x2a,0x5e,0xff,0x14,
- 0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,
- 0xff,0x82,0x25,0x3e,0x77,0xff,0x39,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x3a,0x55,0x92,0xff,0x3c,0x58,0x96,0xff,0x3d,
- 0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,
- 0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x49,0x65,0xa6,0xff,0x47,0x63,0xa4,0xff,
- 0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa9,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2c,
- 0x62,0xff,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5f,0xff,0x87,0x12,0x29,0x5d,0xff,
- 0x18,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,
- 0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6e,0xff,0x1f,0x39,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,
- 0x3c,0x74,0xff,0x24,0x3e,0x77,0xff,0x82,0x27,0x40,0x7a,0xff,0x37,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x94,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x47,0x63,
- 0xa4,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x12,0x2b,0x5f,0xff,0x89,0x12,0x29,0x5d,0xff,0x50,0x12,
- 0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,0xff,
- 0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,
- 0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x73,0xff,0x23,0x3d,0x76,
- 0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x27,0x40,0x7a,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3b,0x57,0x94,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0x9f,0xff,
- 0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x48,0x64,0xa5,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,
- 0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,0xff,0x4f,0x13,0x2a,0x5e,0xff,0x13,
- 0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,
- 0x23,0x3c,0x75,0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,
- 0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x27,0x41,
- 0x7b,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,
- 0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x37,0x52,0x8f,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x46,0x62,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,
- 0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x4a,
- 0x66,0xa7,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,
- 0xff,0x4f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,
- 0x39,0x70,0xff,0x22,0x3b,0x74,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x28,0x41,0x7b,
- 0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x27,0x41,0x7b,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x47,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x36,
- 0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,
- 0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x5a,0x97,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,
- 0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x64,0xa3,0xff,0x46,0x61,0xa1,0xff,0x45,0x61,0xa2,
- 0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,
- 0xa5,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x02,0x02,0x04,0xff,0x00,
- 0x01,0x02,0xff,0x8c,0x12,0x29,0x5d,0xff,0x4e,0x13,0x2a,0x5e,0xff,0x14,0x2b,
- 0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1f,0x38,
- 0x6f,0xff,0x21,0x3a,0x73,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x28,0x42,0x7c,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,
- 0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x36,0x51,0x8d,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x60,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,
- 0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x46,0x61,0xa1,0xff,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,
- 0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x02,0x02,
- 0x04,0xff,0x00,0x01,0x02,0xff,0x8c,0x12,0x29,0x5d,0xff,0x1a,0x13,0x2a,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1e,0x37,0x6e,
- 0xff,0x20,0x39,0x72,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x28,0x41,0x7c,0xff,0x82,0x28,0x42,0x7c,
- 0xff,0x25,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,
- 0x4f,0x8b,0xff,0x37,0x52,0x8f,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x82,0x45,0x63,0xa2,0xff,0x0b,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,
- 0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x8c,0x12,0x29,0x5d,0xff,0x19,0x12,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x33,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x27,0x40,0x7a,0xff,0x82,0x27,0x41,0x7b,0xff,0x33,0x26,0x40,0x79,
- 0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,
- 0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,
- 0x8c,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa1,0xff,0x44,0x61,0xa0,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x45,0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x02,0x02,
- 0x04,0xff,0x00,0x01,0x02,0xff,0x8d,0x12,0x29,0x5d,0xff,0x17,0x13,0x2a,0x5e,
- 0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,
- 0x30,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x6a,0xff,
- 0x1c,0x35,0x6c,0xff,0x1e,0x37,0x6f,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x82,
- 0x26,0x40,0x79,0xff,0x26,0x25,0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8d,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x40,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,0xff,0x0c,0x43,0x5f,
- 0x9e,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,
- 0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,
- 0xff,0x8d,0x12,0x29,0x5d,0xff,0x15,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x1a,0x31,
- 0x67,0xff,0x1b,0x32,0x68,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x36,0x6e,0xff,0x1f,
- 0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,
- 0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,
- 0xff,0x82,0x25,0x3e,0x78,0xff,0x36,0x24,0x3e,0x77,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x33,0x4d,0x89,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x43,0x60,0x9f,0xff,0x42,0x5e,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,
- 0xff,0x48,0x64,0xa6,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8d,0x12,
- 0x29,0x5d,0xff,0x4d,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,
- 0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,
- 0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,
- 0x33,0x6a,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,
- 0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x23,0x3d,
- 0x76,0xff,0x23,0x3d,0x75,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x46,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x33,0x4d,0x89,0xff,0x35,0x50,0x8d,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,0xff,0x3d,0x59,0x97,0xff,0x3e,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9f,
- 0xff,0x44,0x60,0x9f,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,
- 0x48,0x64,0xa5,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8e,0x12,0x29,
- 0x5d,0xff,0x3d,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x30,0x66,0xff,0x1a,0x32,0x69,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,
- 0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,
- 0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x23,0x3c,0x75,0xff,0x22,0x3c,0x75,0xff,0x22,0x3c,0x74,0xff,0x22,0x3b,0x73,
- 0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,
- 0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x28,
- 0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,
- 0x4e,0x8b,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,
- 0xff,0x3b,0x58,0x95,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,
- 0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x82,0x42,0x5f,0x9e,0xff,0x0d,0x41,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,
- 0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,
- 0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x8e,0x12,0x29,0x5d,0xff,0x4c,0x13,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x65,0xff,0x18,0x31,0x68,0xff,0x1a,0x33,
- 0x6a,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x21,0x3b,0x74,0xff,0x21,0x3b,0x72,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3d,
- 0x74,0xff,0x24,0x3d,0x75,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,
- 0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x33,0x4d,0x89,0xff,0x35,0x51,0x8d,0xff,
- 0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5e,0x9d,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5c,0x9c,
- 0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9e,0xff,0x44,0x60,
- 0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x8f,0x12,0x29,0x5d,0xff,0x30,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x15,
- 0x2c,0x60,0xff,0x15,0x2c,0x62,0xff,0x16,0x2e,0x64,0xff,0x17,0x30,0x67,0xff,
- 0x18,0x32,0x69,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x72,0xff,0x20,
- 0x3a,0x71,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x34,0x4f,0x8b,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x09,0x3a,0x56,0x93,0xff,0x3b,0x57,
- 0x94,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,
- 0x82,0x41,0x5e,0x9d,0xff,0x82,0x40,0x5b,0x9a,0xff,0x0c,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,
- 0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x63,0xa4,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8f,
- 0x12,0x29,0x5d,0xff,0x4b,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2c,
- 0x61,0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x65,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x35,0x6c,0xff,
- 0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,
- 0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x1f,0x39,0x70,0xff,0x1f,0x38,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,
- 0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,
- 0xff,0x33,0x4d,0x89,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x0f,0x12,0x2a,0x5e,0xff,
- 0x13,0x2b,0x5f,0xff,0x14,0x2c,0x62,0xff,0x15,0x2e,0x64,0xff,0x16,0x2f,0x66,
- 0xff,0x17,0x30,0x67,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x36,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x83,0x1e,0x37,0x6e,
- 0xff,0x28,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x33,0x4c,0x89,0xff,0x35,0x4f,0x8b,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x82,0x40,0x5c,
- 0x9b,0xff,0x82,0x3f,0x5a,0x99,0xff,0x0d,0x40,0x5b,0x9a,0xff,0x41,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x44,0x5f,
- 0x9e,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,
- 0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x8f,0x12,0x29,0x5d,0xff,0x1e,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x60,0xff,0x14,
- 0x2d,0x63,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,
- 0x18,0x31,0x68,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6b,0xff,0x1a,0x34,0x6b,
- 0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x36,
- 0x6f,0xff,0x1d,0x36,0x6d,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x11,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x34,0x4d,0x8a,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x18,0x3a,0x56,0x93,0xff,
- 0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x3f,0x5b,
- 0x99,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x02,0x02,0x04,0xff,0x00,0x01,
- 0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x4b,0x12,0x2a,0x5f,0xff,0x13,0x2c,0x62,
- 0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,
- 0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1c,0x35,0x6c,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,
- 0x70,0xff,0x21,0x3a,0x71,0xff,0x22,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,
- 0x3d,0x74,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,
- 0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,0x8b,
- 0xff,0x37,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,
- 0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,
- 0x59,0x96,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,
- 0x3f,0x5b,0x9a,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8e,0x12,0x29,0x5d,0xff,0x3c,0x12,
- 0x2a,0x5f,0xff,0x13,0x2b,0x61,0xff,0x13,0x2c,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,
- 0x6c,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x34,0x6b,0xff,0x1b,0x34,0x6a,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8d,0xff,
- 0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3e,0x5a,0x98,0xff,0x82,
- 0x3d,0x58,0x97,0xff,0x0e,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,
- 0x9a,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,
- 0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x01,0x02,0x04,0xff,0x00,0x01,0x02,
- 0xff,0x8d,0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5f,0xff,0x13,0x2c,0x61,0xff,
- 0x82,0x13,0x2c,0x62,0xff,0x0a,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,
- 0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x69,0xff,
- 0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x33,0x6a,
- 0xff,0x82,0x1b,0x33,0x69,0xff,0x3d,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,
- 0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x75,0xff,0x25,
- 0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,
- 0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,
- 0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,
- 0x33,0x4c,0x89,0xff,0x34,0x4f,0x8b,0xff,0x37,0x52,0x8e,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x55,0x91,0xff,0x39,0x56,0x92,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,
- 0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,
- 0x5a,0x98,0xff,0x3d,0x58,0x96,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,
- 0xff,0x03,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2c,0x61,0xff,0x83,
- 0x13,0x2c,0x62,0xff,0x36,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,
- 0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x32,0x68,0xff,0x1a,0x32,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,
- 0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8c,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x82,0x3d,0x59,0x97,
- 0xff,0x82,0x3c,0x57,0x95,0xff,0x0f,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,
- 0x9f,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x01,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,0xff,0x01,0x13,0x2a,
- 0x60,0xff,0x85,0x13,0x2c,0x62,0xff,0x49,0x13,0x2c,0x63,0xff,0x14,0x2d,0x63,
- 0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x17,0x30,0x66,0xff,0x17,0x31,
- 0x68,0xff,0x18,0x31,0x68,0xff,0x18,0x31,0x67,0xff,0x19,0x30,0x66,0xff,0x19,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,
- 0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,
- 0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x36,0x51,0x8e,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,
- 0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,
- 0x59,0x97,0xff,0x3c,0x57,0x95,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,
- 0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x02,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x89,0x12,0x29,0x5d,0xff,0x02,0x12,0x29,0x5e,0xff,0x13,0x2a,0x60,0xff,0x87,
- 0x13,0x2c,0x62,0xff,0x34,0x14,0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,
- 0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x30,0x66,0xff,0x18,
- 0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,
- 0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,
- 0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,0x8b,0xff,0x36,0x52,
- 0x8f,0xff,0x38,0x54,0x91,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,
- 0x57,0x95,0xff,0x82,0x3c,0x58,0x96,0xff,0x12,0x3b,0x56,0x94,0xff,0x3b,0x55,
- 0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,
- 0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,
- 0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x88,0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5e,
- 0xff,0x13,0x2b,0x60,0xff,0x88,0x13,0x2c,0x62,0xff,0x03,0x13,0x2d,0x63,0xff,
- 0x14,0x2d,0x64,0xff,0x15,0x2e,0x65,0xff,0x82,0x16,0x2f,0x65,0xff,0x0b,0x17,
- 0x2e,0x64,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x82,0x1e,
- 0x37,0x6e,0xff,0x36,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x50,0x8c,0xff,0x37,0x52,0x8f,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3b,0x56,0x94,0xff,0x3a,0x55,
- 0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x40,0x5b,0x9a,0xff,0x41,0x5b,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,
- 0xa0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x12,0x29,0x5d,0xff,
- 0x02,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x60,0xff,0x8a,0x13,0x2c,0x62,0xff,0x32,
- 0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2e,0x63,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,
- 0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,
- 0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,
- 0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x36,0x50,0x8d,0xff,0x37,0x52,0x8f,
- 0xff,0x39,0x55,0x92,0xff,0x82,0x3b,0x57,0x94,0xff,0x13,0x3a,0x55,0x92,0xff,
- 0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,
- 0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,
- 0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,
- 0x45,0x60,0xa0,0xff,0x02,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x86,0x12,0x29,
- 0x5d,0xff,0x02,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x61,0xff,0x8b,0x13,0x2c,0x62,
- 0xff,0x34,0x14,0x2d,0x63,0xff,0x14,0x2c,0x62,0xff,0x15,0x2c,0x61,0xff,0x15,
- 0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,
- 0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,
- 0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,
- 0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x92,0xff,0x3a,0x56,0x93,0xff,
- 0x82,0x39,0x54,0x91,0xff,0x11,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,
- 0x9f,0xff,0x44,0x60,0xa0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,
- 0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5f,0xff,0x13,0x2b,0x61,0xff,0x8c,0x13,
- 0x2c,0x62,0xff,0x01,0x13,0x2b,0x61,0xff,0x82,0x14,0x2b,0x60,0xff,0x30,0x15,
- 0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,
- 0x50,0x8c,0xff,0x36,0x51,0x8d,0xff,0x38,0x52,0x90,0xff,0x82,0x38,0x53,0x90,
- 0xff,0x12,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x84,
- 0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x61,0xff,0x8c,0x13,
- 0x2c,0x62,0xff,0x01,0x13,0x2b,0x60,0xff,0x82,0x13,0x2a,0x5f,0xff,0x1c,0x14,
- 0x2b,0x5f,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,
- 0xff,0x24,0x3d,0x75,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x27,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x35,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,
- 0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3d,0x57,0x95,0xff,
- 0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,
- 0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x83,0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5f,0xff,0x13,0x2b,
- 0x61,0xff,0x8c,0x13,0x2c,0x62,0xff,0x49,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,
- 0xff,0x12,0x29,0x5d,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x15,0x2c,
- 0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,
- 0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,
- 0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,
- 0x52,0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x43,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x82,0x12,0x29,0x5d,0xff,0x02,0x13,0x2a,0x5f,0xff,0x13,0x2c,0x61,0xff,0x8c,
- 0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x82,0x12,
- 0x29,0x5d,0xff,0x0b,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x3c,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x78,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,
- 0x7e,0xff,0x29,0x42,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,
- 0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,
- 0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,
- 0xff,0x13,0x2a,0x60,0xff,0x13,0x2c,0x61,0xff,0x8c,0x13,0x2c,0x62,0xff,0x02,
- 0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x84,0x12,0x29,0x5d,0xff,0x46,0x13,
- 0x2a,0x5e,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,
- 0x78,0xff,0x28,0x42,0x7c,0xff,0x2a,0x43,0x7e,0xff,0x29,0x43,0x7d,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,
- 0xff,0x39,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x60,0xff,0x8d,0x13,0x2c,0x62,0xff,0x02,
- 0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x85,0x12,0x29,0x5d,0xff,0x45,0x13,
- 0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,
- 0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,
- 0x79,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x29,
- 0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x82,
- 0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,0x53,0x90,
- 0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,
- 0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x8d,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,
- 0x12,0x29,0x5e,0xff,0x86,0x12,0x29,0x5d,0xff,0x45,0x13,0x29,0x5e,0xff,0x14,
- 0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,
- 0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,0x7d,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x34,
- 0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,
- 0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,
- 0x5a,0x98,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x8c,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,
- 0x88,0x12,0x29,0x5d,0xff,0x1e,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,
- 0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3e,0x77,
- 0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,
- 0x7e,0xff,0x2a,0x44,0x7e,0xff,0x82,0x29,0x43,0x7c,0xff,0x24,0x29,0x44,0x7d,
- 0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,
- 0x33,0x4c,0x88,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,0xff,0x3b,
- 0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8b,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x61,
- 0xff,0x12,0x29,0x5e,0xff,0x89,0x12,0x29,0x5d,0xff,0x44,0x13,0x2a,0x5e,0xff,
- 0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,
- 0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x25,0x3f,0x79,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x29,0x43,0x7d,0xff,
- 0x28,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,
- 0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x54,
- 0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,
- 0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9c,
- 0xff,0x42,0x5d,0x9c,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8a,0x13,
- 0x2c,0x62,0xff,0x02,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5e,0xff,0x8a,0x12,0x29,
- 0x5d,0xff,0x1d,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,
- 0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,
- 0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x22,0x3b,0x73,0xff,0x23,0x3d,0x75,0xff,0x26,0x40,0x79,0xff,0x27,0x40,
- 0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x82,
- 0x2a,0x44,0x7e,0xff,0x82,0x29,0x43,0x7c,0xff,0x23,0x2a,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,
- 0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,
- 0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x89,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5e,0xff,0x8b,
- 0x12,0x29,0x5d,0xff,0x44,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,
- 0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x21,
- 0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x24,0x3e,0x77,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,
- 0xff,0x32,0x4c,0x87,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x02,0x13,0x2c,
- 0x61,0xff,0x12,0x2a,0x5e,0xff,0x8d,0x12,0x29,0x5d,0xff,0x1d,0x13,0x2a,0x5e,
- 0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,
- 0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,
- 0x70,0xff,0x20,0x3a,0x71,0xff,0x22,0x3b,0x73,0xff,0x25,0x3e,0x78,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x82,0x2a,0x44,0x7f,0xff,0x82,0x29,
- 0x43,0x7d,0xff,0x22,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,
- 0x4c,0x87,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,
- 0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,0x02,0x13,0x2c,0x61,0xff,
- 0x12,0x2a,0x5e,0xff,0x8e,0x12,0x29,0x5d,0xff,0x1e,0x13,0x2a,0x5e,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x23,0x3c,0x75,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x82,0x2a,0x44,0x7f,0xff,
- 0x23,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,0xff,0x02,0x13,0x2c,0x61,
- 0xff,0x12,0x2a,0x5e,0xff,0x8f,0x12,0x29,0x5d,0xff,0x43,0x12,0x29,0x5e,0xff,
- 0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x20,0x39,0x71,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2a,0x44,0x7f,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,
- 0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,0x62,0xff,0x02,
- 0x13,0x2c,0x61,0xff,0x12,0x2a,0x5e,0xff,0x91,0x12,0x29,0x5d,0xff,0x42,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,
- 0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,
- 0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x21,0x3a,0x72,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7d,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x89,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,0x62,0xff,0x01,0x12,
- 0x2a,0x5f,0xff,0x92,0x12,0x29,0x5d,0xff,0x42,0x12,0x2a,0x5e,0xff,0x13,0x2a,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,
- 0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,
- 0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,
- 0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x22,0x3b,0x74,0xff,0x23,
- 0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,
- 0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x80,0xff,0x2b,0x45,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,
- 0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,
- 0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,
- 0x39,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,0x94,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x84,0x13,0x2c,0x62,0xff,0x01,0x12,0x2a,0x5f,0xff,0x94,0x12,
- 0x29,0x5d,0xff,0x21,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,
- 0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,
- 0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x20,0x39,0x70,
- 0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x46,0x80,0xff,0x2c,0x46,0x80,
- 0xff,0x82,0x2b,0x45,0x7f,0xff,0x1e,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,
- 0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,
- 0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,
- 0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x83,0x13,0x2c,0x62,0xff,0x01,0x12,0x2a,
- 0x5e,0xff,0x95,0x12,0x29,0x5d,0xff,0x20,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,
- 0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,
- 0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,
- 0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x82,0x2c,0x47,0x81,0xff,0x1f,0x2c,0x46,0x7f,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,
- 0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,
- 0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,
- 0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x3f,
- 0x5a,0x99,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x62,
- 0xff,0x01,0x12,0x2a,0x5e,0xff,0x96,0x12,0x29,0x5d,0xff,0x43,0x12,0x2a,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,
- 0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1e,0x37,0x6f,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x47,
- 0x82,0xff,0x2c,0x46,0x80,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,
- 0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,
- 0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,
- 0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x13,0x2c,0x62,0xff,0x12,0x2a,0x5e,0xff,0x98,0x12,0x29,0x5d,0xff,
- 0x21,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,
- 0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,
- 0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2b,0x46,0x80,0xff,0x2c,0x47,0x81,0xff,0x82,0x2d,
- 0x48,0x82,0xff,0x1e,0x2d,0x46,0x81,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,0x50,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x12,0x2a,0x5e,0xff,0x99,0x12,0x29,0x5d,0xff,0x22,0x13,0x2a,0x5e,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x82,0x2d,0x48,0x83,
- 0xff,0x1c,0x2d,0x46,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,0xff,
- 0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x9a,0x12,0x29,0x5d,0xff,0x40,
- 0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,
- 0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1e,0x37,0x6e,0xff,
- 0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,
- 0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,
- 0xff,0x2d,0x48,0x83,0xff,0x2d,0x48,0x82,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,
- 0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,
- 0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,
- 0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x9b,0x12,0x29,0x5d,0xff,0x44,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1c,0x34,0x6b,0xff,0x1e,
- 0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2c,0x46,0x81,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,
- 0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x01,0x02,0x03,0xff,
- 0x04,0x04,0x04,0xff,0xb8,0xba,0xc1,0xff,0xc0,0xc3,0xca,0xff,0xbc,0xbf,0xc5,
- 0xff,0xba,0xbe,0xc5,0xff,0xca,0xcd,0xd4,0xff,0x96,0xcd,0xd0,0xd6,0xff,0x84,
- 0xcd,0xd0,0xd7,0xff,0x85,0xcd,0xd1,0xd8,0xff,0x84,0xce,0xd1,0xd8,0xff,0x01,
- 0xcf,0xd2,0xd9,0xff,0x86,0xcf,0xd2,0xda,0xff,0x86,0xcf,0xd3,0xda,0xff,0x83,
- 0xd0,0xd3,0xdb,0xff,0x01,0xd0,0xd4,0xdb,0xff,0x83,0xd0,0xd4,0xdc,0xff,0x01,
- 0xd1,0xd4,0xdc,0xff,0x83,0xd0,0xd4,0xdc,0xff,0x89,0xd1,0xd4,0xdc,0xff,0x01,
- 0xd1,0xd5,0xdc,0xff,0x82,0xd1,0xd5,0xdd,0xff,0x82,0xd2,0xd5,0xdd,0xff,0x11,
- 0xd2,0xd6,0xdd,0xff,0xd2,0xd6,0xde,0xff,0x9b,0xa3,0xb4,0xff,0x72,0x7e,0x98,
- 0xff,0x99,0x9f,0xac,0xff,0xa4,0xa8,0xb0,0xff,0xa9,0xac,0xb4,0xff,0xa9,0xac,
- 0xb5,0xff,0xa5,0xa9,0xb1,0xff,0xa9,0xad,0xb6,0xff,0x04,0x04,0x04,0xff,0x05,
- 0x04,0x04,0xff,0xcd,0xcc,0xcb,0xff,0x9c,0xa2,0x9d,0xff,0x97,0xab,0x9c,0xff,
- 0xd4,0xd4,0xd4,0xff,0xe1,0xe1,0xe1,0xff,0xb0,0xe5,0xe6,0xe6,0xff,0x9b,0xe6,
- 0xe6,0xe6,0xff,0x08,0x8b,0x93,0xa3,0xff,0x46,0x55,0x75,0xff,0x8d,0x91,0x9b,
- 0xff,0xa1,0xa1,0xa2,0xff,0xa9,0xa9,0xa9,0xff,0xa9,0xa9,0xaa,0xff,0xa3,0xa3,
- 0xa3,0xff,0xa8,0xa8,0xa9,0xff,0x82,0x04,0x04,0x04,0xff,0x05,0xc7,0xc7,0xc7,
- 0xff,0xc2,0xc2,0xc0,0xff,0xc0,0xbf,0xbc,0xff,0xcd,0xcd,0xcd,0xff,0xe3,0xe3,
- 0xe3,0xff,0xcb,0xe6,0xe6,0xe6,0xff,0x0a,0x99,0xa0,0xad,0xff,0x60,0x6c,0x85,
- 0xff,0x97,0x9b,0xa2,0xff,0xa7,0xa7,0xa8,0xff,0xad,0xad,0xad,0xff,0xae,0xae,
- 0xae,0xff,0xa9,0xa9,0xa9,0xff,0xaf,0xaf,0xaf,0xff,0x04,0x04,0x04,0xff,0x00,
- 0x00,0x00,0xff,0x84,0x03,0x03,0x03,0xff,0xcc,0x04,0x04,0x04,0xff,0x03,0x03,
- 0x03,0x03,0xff,0x02,0x02,0x02,0xff,0x02,0x03,0x03,0xff,0x85,0x03,0x03,0x03,
- 0xff,0x01,0x00,0x00,0x00,0xff
-};
-
-static const GdkPixdata rotation_orientation_vert_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 36156, /* header length + pixel_data length */
- 0x2010002, /* pixdata_type */
- 360, /* rowstride */
- 90, /* width */
- 120, /* height */
- rotation_orientation_vert_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotation_pixdata.h b/src/image_data/rotation_pixdata.h
deleted file mode 100644
index 333fc70..0000000
--- a/src/image_data/rotation_pixdata.h
+++ /dev/null
@@ -1,1347 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotation_pixdata_pixel_data[] = {
- 0xa6,0xff,0xff,0xff,0x00,0x92,0xea,0xeb,0xf1,0x00,0x82,0xea,0xea,0xf1,0x00,
- 0x06,0xeb,0xeb,0xf2,0x0e,0xe9,0xe9,0xf2,0x1d,0xea,0xea,0xf1,0x00,0xeb,0xeb,
- 0xf2,0x00,0xea,0xe9,0xf1,0x00,0xe9,0xe8,0xf0,0x00,0x82,0xe8,0xe8,0xef,0x00,
- 0x03,0xe8,0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,0x82,0xe5,
- 0xe4,0xec,0x00,0x15,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,
- 0x00,0xe2,0xe2,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe1,0xe1,0xe7,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,
- 0xdd,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,
- 0xd9,0xd9,0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdb,0xda,0xde,0x00,0xd8,0xd8,0xdc,
- 0x00,0xd8,0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,0x00,0xc6,0xff,
- 0xff,0xff,0x00,0x92,0xea,0xeb,0xf1,0x00,0x82,0xea,0xea,0xf1,0x00,0x06,0xec,
- 0xec,0xf2,0x23,0xeb,0xeb,0xf2,0x82,0xe9,0xe9,0xf1,0x58,0xeb,0xeb,0xf2,0x00,
- 0xea,0xe9,0xf1,0x00,0xe9,0xe8,0xf0,0x00,0x82,0xe8,0xe8,0xef,0x00,0x03,0xe9,
- 0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,0x82,0xe5,0xe4,0xec,
- 0x00,0x15,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,
- 0xe2,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe1,0xe1,0xe7,0x00,0xe2,0xe2,0xe8,0x00,
- 0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdd,0xe2,
- 0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xd9,0xd9,
- 0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdb,0xda,0xde,0x00,0xd8,0xd8,0xdc,0x00,0xd8,
- 0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,0x00,0xc6,0xff,0xff,0xff,
- 0x00,0x92,0xea,0xeb,0xf1,0x00,0x24,0xea,0xea,0xf1,0x00,0xe9,0xe9,0xf0,0x25,
- 0xeb,0xeb,0xf2,0x7f,0xf6,0xf6,0xf9,0x99,0xf3,0xf3,0xf7,0x99,0xe9,0xe9,0xf0,
- 0x6f,0xea,0xe9,0xf1,0x10,0xe9,0xe8,0xf0,0x00,0xe8,0xe8,0xef,0x00,0xe8,0xe8,
- 0xee,0x00,0xe9,0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,0xe5,
- 0xe4,0xec,0x00,0xe5,0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,
- 0xe3,0xe3,0xe9,0x00,0xe2,0xe2,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe1,0xe1,0xe7,
- 0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,
- 0xe3,0x00,0xde,0xdd,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,
- 0xd9,0xdf,0x00,0xd9,0xd9,0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdc,0xda,0xde,0x00,
- 0xd8,0xd8,0xdc,0x00,0xd8,0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,
- 0x00,0xc6,0xff,0xff,0xff,0x00,0x91,0xea,0xeb,0xf1,0x00,0x25,0xe9,0xea,0xf0,
- 0x00,0xe7,0xe9,0xef,0x10,0xec,0xeb,0xf2,0x65,0xf5,0xf5,0xf9,0x99,0xff,0xff,
- 0xff,0x99,0xfe,0xfe,0xfe,0x99,0xf5,0xf5,0xf8,0x99,0xea,0xe9,0xf0,0x83,0xe8,
- 0xe8,0xf0,0x23,0xe8,0xe8,0xef,0x00,0xe8,0xe7,0xee,0x00,0xe9,0xe9,0xf0,0x00,
- 0xe7,0xe8,0xee,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe4,0xec,0x00,0xe5,0xe4,0xeb,
- 0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe1,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,
- 0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdc,0xe2,0x00,
- 0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xd9,0xd9,0xdd,
- 0x00,0xda,0xd9,0xdc,0x00,0xdc,0xda,0xde,0x00,0xd8,0xd8,0xdc,0x00,0xd8,0xd7,
- 0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,0x00,0xc6,0xff,0xff,0xff,0x00,
- 0x91,0xea,0xeb,0xf1,0x00,0x05,0xe9,0xea,0xf0,0x0d,0xe7,0xe9,0xef,0x5b,0xf1,
- 0xf1,0xf6,0x99,0xfd,0xfa,0xfb,0x79,0xf9,0xf3,0xf2,0x53,0x82,0xff,0xff,0xff,
- 0x99,0x1e,0xf8,0xf8,0xfa,0x99,0xeb,0xea,0xf1,0x8b,0xe7,0xe7,0xef,0x38,0xe8,
- 0xe7,0xee,0x00,0xe9,0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,
- 0xe5,0xe4,0xec,0x00,0xe5,0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,
- 0x00,0xe3,0xe3,0xe9,0x00,0xe2,0xe2,0xe7,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe1,
- 0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,
- 0xdc,0xe3,0x00,0xde,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,
- 0xda,0xd9,0xdf,0x00,0xd9,0xd9,0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdc,0xda,0xde,
- 0x00,0xd8,0xd8,0xdc,0x00,0xd8,0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,
- 0xda,0x00,0xc6,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x83,0xe8,0xe9,
- 0xf0,0x00,0x24,0xe8,0xe9,0xf0,0x02,0xea,0xea,0xf1,0x38,0xef,0xf0,0xf4,0x99,
- 0xfb,0xfb,0xfc,0x8b,0x8e,0x97,0xb1,0x8a,0xc4,0xb3,0xb7,0x99,0xe9,0xe8,0xe6,
- 0x5b,0xff,0xff,0xff,0x8c,0xff,0xff,0xff,0x99,0xfc,0xfa,0xfd,0x99,0xec,0xed,
- 0xf2,0x93,0xe7,0xe6,0xee,0x52,0xe9,0xe9,0xf0,0x00,0xe7,0xe8,0xee,0x00,0xe7,
- 0xe6,0xed,0x00,0xe5,0xe4,0xec,0x00,0xe5,0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,
- 0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,
- 0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,
- 0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,
- 0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xda,0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,
- 0xe7,0xe6,0xe9,0xff,0xef,0xee,0xf1,0xff,0xee,0xee,0xf0,0xff,0x82,0xee,0xee,
- 0xf1,0xff,0x02,0xef,0xee,0xf1,0xff,0xef,0xee,0xf2,0xff,0x82,0xf0,0xef,0xf2,
- 0xff,0x02,0xf0,0xf0,0xf3,0xff,0xf1,0xf0,0xf3,0xff,0x82,0xf1,0xf0,0xf4,0xff,
- 0x82,0xf2,0xf1,0xf4,0xff,0x04,0xf1,0xf2,0xf5,0xff,0xf2,0xf2,0xf5,0xff,0xf3,
- 0xf2,0xf6,0xff,0xf3,0xf3,0xf6,0xff,0x82,0xf3,0xf3,0xf5,0xff,0x07,0xf3,0xf3,
- 0xf6,0xff,0xf3,0xf3,0xf7,0xff,0xf4,0xf4,0xf7,0xff,0xf4,0xf4,0xf8,0xff,0xf5,
- 0xf4,0xf8,0xff,0xf5,0xf5,0xf8,0xff,0xf4,0xf5,0xf8,0xff,0x83,0xf5,0xf5,0xf8,
- 0xff,0x82,0xf5,0xf5,0xf9,0xff,0x03,0xf6,0xf6,0xfa,0xff,0xf0,0xf0,0xf6,0xff,
- 0x5d,0x5b,0x61,0x2d,0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x82,
- 0xe8,0xe9,0xf0,0x00,0x24,0xe8,0xe9,0xf0,0x03,0xe7,0xe8,0xef,0x36,0xeb,0xeb,
- 0xf1,0x94,0xfa,0xfa,0xfc,0x90,0x91,0x9d,0xb9,0x7e,0x13,0x2e,0x6a,0x98,0x35,
- 0x4b,0x7b,0x99,0x9a,0xa1,0xaf,0x99,0xe9,0xe7,0xe1,0x69,0xff,0xff,0xff,0x79,
- 0xff,0xff,0xff,0x99,0xfd,0xfd,0xfd,0x99,0xf0,0xf0,0xf4,0x98,0xe6,0xe6,0xee,
- 0x6e,0xe7,0xe8,0xee,0x0d,0xe7,0xe6,0xed,0x00,0xe5,0xe4,0xec,0x00,0xe5,0xe4,
- 0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,
- 0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,
- 0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdc,0xe2,
- 0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xda,0xd9,
- 0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xed,0xed,0xef,0xff,0xff,0xff,0xfe,0xff,0x9f,
- 0xeb,0xeb,0xeb,0xff,0x03,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf9,0xff,0x7a,0x79,
- 0x7f,0x45,0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x26,0xe8,0xe9,
- 0xf0,0x00,0xe7,0xe8,0xef,0x00,0xe6,0xe6,0xee,0x16,0xeb,0xeb,0xf2,0x7d,0xf7,
- 0xf7,0xf9,0x99,0xc1,0xc8,0xd7,0x7e,0x1c,0x36,0x6d,0x91,0x1f,0x37,0x70,0x99,
- 0x11,0x2c,0x6a,0x99,0x26,0x3e,0x75,0x99,0x83,0x8e,0xa5,0x99,0xe4,0xe2,0xde,
- 0x83,0xfb,0xfc,0xfc,0x69,0xff,0xff,0xff,0x99,0xfe,0xfe,0xfe,0x99,0xf3,0xf3,
- 0xf7,0x99,0xe6,0xe7,0xed,0x85,0xe7,0xe6,0xed,0x20,0xe5,0xe4,0xec,0x00,0xe5,
- 0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe6,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,
- 0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,
- 0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe4,0x00,0xdd,0xdc,
- 0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xda,
- 0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xec,0xeb,0xed,0xff,0xfc,0xfc,0xfc,0xff,
- 0x9f,0x00,0x00,0x00,0xff,0x03,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf9,0xff,0x6d,
- 0x6e,0x72,0x3f,0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x36,0xe8,
- 0xe9,0xf0,0x00,0xe7,0xe8,0xef,0x17,0xe7,0xe7,0xef,0x6a,0xf4,0xf3,0xf8,0x99,
- 0xdf,0xe2,0xea,0x77,0x2f,0x46,0x79,0x8c,0x1b,0x35,0x6d,0x99,0x18,0x31,0x6b,
- 0x99,0x4d,0x64,0x8e,0x99,0x1f,0x3a,0x74,0x99,0x23,0x3d,0x76,0x99,0x61,0x71,
- 0x94,0x99,0xc4,0xc9,0xcc,0x98,0xef,0xef,0xed,0x67,0xff,0xff,0xfe,0x99,0xfe,
- 0xff,0xff,0x99,0xf6,0xf7,0xf8,0x99,0xe8,0xe8,0xee,0x8c,0xe5,0xe4,0xec,0x38,
- 0xe4,0xe3,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe6,0xe5,0xeb,0x00,0xe3,0xe4,0xea,
- 0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,
- 0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xdb,0xd9,0xdf,0x00,
- 0xda,0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xeb,0xeb,0xee,0xff,0xfc,0xfc,0xfb,
- 0xff,0x00,0x00,0x00,0xff,0xa7,0xa4,0xbd,0xff,0xa7,0xae,0xbe,0xff,0xa6,0xb1,
- 0xc2,0xff,0xad,0xb7,0xc8,0xff,0xb0,0xbb,0xcc,0xff,0xad,0xb6,0xc7,0xff,0xa0,
- 0xb2,0xc5,0xff,0xa7,0xb0,0xb9,0xff,0xb4,0xbc,0xc8,0xff,0xa5,0xb3,0xc7,0xff,
- 0xa4,0xb3,0xca,0xff,0xc0,0xc9,0xdb,0xff,0xc2,0xcc,0xdd,0xff,0xc1,0xcc,0xdd,
- 0xff,0xc3,0xcd,0xdd,0xff,0x82,0xc2,0xcd,0xde,0xff,0x10,0xc4,0xce,0xdf,0xff,
- 0xc4,0xcf,0xdf,0xff,0xc4,0xce,0xe0,0xff,0xc7,0xd0,0xe0,0xff,0xc7,0xd1,0xe0,
- 0xff,0xc6,0xd1,0xe1,0xff,0xb9,0xc3,0xd3,0xff,0xb1,0xba,0xcb,0xff,0xb3,0xbe,
- 0xcf,0xff,0xb9,0xc2,0xd3,0xff,0xae,0xb9,0xca,0xff,0xb9,0xc0,0xc8,0xff,0x11,
- 0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf9,0xff,0x59,0x5a,0x61,0x3a,
- 0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x27,0xe6,0xe6,0xed,0x09,
- 0xe8,0xe9,0xf0,0x53,0xf0,0xf0,0xf5,0x99,0xf2,0xf4,0xf6,0x8b,0x42,0x56,0x83,
- 0x82,0x1a,0x33,0x6b,0x99,0x1e,0x38,0x6e,0x99,0x44,0x56,0x7f,0x99,0xa2,0xb3,
- 0xc1,0x99,0x43,0x5a,0x88,0x99,0x1e,0x38,0x75,0x99,0x20,0x3a,0x77,0x99,0x47,
- 0x5c,0x89,0x99,0xa4,0xaa,0xb0,0x9a,0xed,0xeb,0xe7,0x6d,0xfe,0xfe,0xfe,0x8f,
- 0xff,0xff,0xff,0x99,0xfa,0xfa,0xfb,0x99,0xea,0xe9,0xef,0x92,0xe4,0xe3,0xeb,
- 0x4f,0xe7,0xe6,0xed,0x00,0xe6,0xe5,0xeb,0x00,0xe3,0xe4,0xea,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,
- 0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,
- 0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xdd,
- 0x00,0xb7,0xb7,0xb7,0xff,0xec,0xeb,0xed,0xff,0xfb,0xfc,0xfb,0xff,0x00,0x00,
- 0x00,0xff,0x82,0x25,0x3d,0x74,0xff,0x16,0x25,0x3d,0x75,0xff,0x22,0x3b,0x73,
- 0xff,0x29,0x42,0x79,0xff,0x2b,0x44,0x7c,0xff,0x2e,0x47,0x7f,0xff,0x31,0x4a,
- 0x82,0xff,0x33,0x4b,0x85,0xff,0x36,0x50,0x8a,0xff,0x38,0x52,0x8d,0xff,0x3a,
- 0x55,0x90,0xff,0x3d,0x58,0x93,0xff,0x3f,0x5b,0x97,0xff,0x41,0x5d,0x9a,0xff,
- 0x44,0x60,0x9d,0xff,0x46,0x62,0xa0,0xff,0x48,0x64,0xa2,0xff,0x4b,0x67,0xa5,
- 0xff,0x4d,0x69,0xa8,0xff,0x4f,0x6b,0xaa,0xff,0x52,0x6d,0xad,0xff,0x54,0x70,
- 0xb0,0xff,0x55,0x71,0xb1,0xff,0x82,0x54,0x71,0xb1,0xff,0x82,0x55,0x71,0xb2,
- 0xff,0x05,0x56,0x72,0xb2,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,
- 0xf5,0xf8,0xff,0x5a,0x5b,0x62,0x3a,0x83,0xff,0xff,0xff,0x00,0x84,0xeb,0xeb,
- 0xf2,0x66,0x0a,0xea,0xea,0xf1,0x66,0xeb,0xea,0xf1,0x66,0xea,0xea,0xf1,0x66,
- 0xea,0xe9,0xf0,0x66,0xe9,0xe9,0xf0,0x66,0xe9,0xe9,0xef,0x66,0xe8,0xe9,0xee,
- 0x66,0xe8,0xe8,0xee,0x66,0xe8,0xe7,0xee,0x66,0xe7,0xe7,0xed,0x66,0x82,0xe7,
- 0xe6,0xed,0x66,0x1a,0xe6,0xe5,0xeb,0x66,0xe5,0xe5,0xeb,0x66,0xe5,0xe4,0xea,
- 0x66,0xe4,0xe4,0xea,0x66,0xe4,0xe4,0xe9,0x66,0xe3,0xe3,0xe9,0x66,0xe3,0xe3,
- 0xe8,0x66,0xe2,0xe2,0xe8,0x66,0xe2,0xe1,0xe7,0x66,0xe2,0xe1,0xe6,0x66,0xe1,
- 0xe0,0xe6,0x66,0xe0,0xe0,0xe5,0x66,0xe0,0xdf,0xe4,0x66,0xdf,0xde,0xe3,0x66,
- 0xdf,0xde,0xe2,0x66,0xde,0xdd,0xe2,0x66,0xdd,0xdc,0xe1,0x66,0xdd,0xdc,0xe0,
- 0x66,0xdc,0xdc,0xdf,0x66,0xdc,0xdb,0xde,0x66,0xdb,0xda,0xde,0x66,0xda,0xd9,
- 0xde,0x66,0xda,0xd9,0xdc,0x66,0xd9,0xd8,0xdc,0x66,0xd9,0xd8,0xdb,0x66,0xd8,
- 0xd7,0xda,0x66,0x86,0xe8,0xe8,0xee,0x00,0x28,0xe8,0xe8,0xee,0x07,0xe6,0xe6,
- 0xed,0x40,0xec,0xec,0xf2,0x95,0xfb,0xfb,0xfd,0x86,0x6c,0x7c,0x9d,0x7c,0x19,
- 0x32,0x68,0x99,0x19,0x32,0x6c,0x99,0x1d,0x37,0x6e,0x99,0x2e,0x42,0x71,0x99,
- 0x3d,0x4f,0x79,0x99,0x32,0x49,0x7d,0x99,0x25,0x3f,0x79,0x99,0x27,0x40,0x7c,
- 0x99,0x1d,0x38,0x77,0x99,0x39,0x4f,0x81,0x99,0x92,0x9c,0xb1,0x99,0xd7,0xd9,
- 0xdd,0x7b,0xfe,0xfe,0xfe,0x7c,0xff,0xff,0xff,0x99,0xfd,0xfd,0xfc,0x99,0xed,
- 0xed,0xf2,0x97,0xe4,0xe3,0xeb,0x6b,0xe6,0xe5,0xeb,0x09,0xe3,0xe4,0xea,0x00,
- 0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,
- 0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,
- 0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xdb,0xda,0xdf,0x00,0xda,
- 0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xec,0xeb,0xed,0xff,0xfb,0xfc,0xfb,0xff,
- 0x00,0x00,0x00,0xff,0x82,0x1d,0x37,0x70,0xff,0x16,0x28,0x41,0x79,0xff,0x4a,
- 0x62,0x90,0xff,0x29,0x42,0x7b,0xff,0x26,0x40,0x7b,0xff,0x28,0x43,0x7e,0xff,
- 0x2a,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2d,0x47,0x83,0xff,0x2f,0x49,0x86,
- 0xff,0x32,0x4c,0x89,0xff,0x34,0x4e,0x8c,0xff,0x36,0x51,0x90,0xff,0x39,0x54,
- 0x93,0xff,0x3c,0x58,0x97,0xff,0x3f,0x5b,0x9a,0xff,0x41,0x5e,0x9e,0xff,0x45,
- 0x61,0xa2,0xff,0x48,0x65,0xa5,0xff,0x4a,0x67,0xa9,0xff,0x4c,0x69,0xab,0xff,
- 0x4f,0x6c,0xaf,0xff,0x51,0x6e,0xb1,0xff,0x85,0x50,0x6e,0xb1,0xff,0x04,0x11,
- 0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf8,0xff,0x57,0x59,0x5e,0x3a,
- 0x83,0xff,0xff,0xff,0x00,0x01,0xeb,0xeb,0xf2,0x66,0x85,0xff,0xff,0xff,0x66,
- 0x02,0xff,0xfe,0xff,0x66,0xfe,0xff,0xfe,0x66,0x82,0xfe,0xff,0xff,0x66,0x03,
- 0xff,0xfe,0xfe,0x66,0xfe,0xff,0xfe,0x66,0xfe,0xfe,0xfe,0x66,0x82,0xfe,0xfe,
- 0xfd,0x66,0x01,0xfd,0xfd,0xfe,0x66,0x84,0xfd,0xfd,0xfd,0x66,0x0a,0xfc,0xfc,
- 0xfc,0x66,0xfc,0xfb,0xfc,0x66,0xfc,0xfc,0xfc,0x66,0xfc,0xfb,0xfc,0x66,0xfb,
- 0xfb,0xfb,0x66,0xfb,0xfa,0xfa,0x66,0xfb,0xfa,0xfb,0x66,0xfa,0xfa,0xfa,0x66,
- 0xfa,0xf9,0xfa,0x66,0xfa,0xf9,0xf9,0x66,0x82,0xf9,0xf9,0xf9,0x66,0x04,0xf8,
- 0xf9,0xf9,0x66,0xf8,0xf8,0xf9,0x66,0xf8,0xf8,0xf8,0x66,0xf8,0xf8,0xf7,0x66,
- 0x82,0xf7,0xf7,0xf7,0x66,0x04,0xf7,0xf6,0xf6,0x66,0xf7,0xf6,0xf7,0x66,0xf6,
- 0xf6,0xf6,0x66,0xd8,0xd6,0xda,0x66,0x85,0xe6,0xe7,0xec,0x00,0x14,0xe6,0xe7,
- 0xec,0x01,0xe7,0xe7,0xed,0x27,0xea,0xea,0xef,0x94,0xfa,0xfa,0xfb,0x92,0x9a,
- 0xa4,0xba,0x74,0x15,0x2d,0x62,0x99,0x0a,0x26,0x63,0x99,0x19,0x31,0x69,0x99,
- 0x10,0x2e,0x6d,0x99,0x1c,0x36,0x70,0x99,0x26,0x3e,0x73,0x99,0x1f,0x39,0x73,
- 0x99,0x26,0x3f,0x79,0x99,0x27,0x41,0x7b,0x99,0x2b,0x45,0x7f,0x99,0x1f,0x3b,
- 0x7a,0x99,0x2e,0x48,0x80,0x99,0x71,0x82,0xa3,0x99,0xeb,0xe8,0xe5,0x90,0xfc,
- 0xfb,0xfc,0x74,0x82,0xfe,0xfe,0xfe,0x99,0x13,0xf0,0xf0,0xf4,0x99,0xe3,0xe3,
- 0xe9,0x83,0xe4,0xe4,0xea,0x1e,0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,
- 0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,
- 0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,
- 0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xeb,0xe9,
- 0xed,0xff,0xfb,0xfa,0xfb,0xff,0x00,0x00,0x00,0xff,0x82,0x1a,0x34,0x6f,0xff,
- 0x16,0x40,0x57,0x84,0xff,0x95,0xa5,0xb7,0xff,0x3a,0x4f,0x81,0xff,0x25,0x3f,
- 0x7b,0xff,0x2b,0x45,0x80,0xff,0x2d,0x48,0x83,0xff,0x2f,0x4a,0x85,0xff,0x31,
- 0x4c,0x88,0xff,0x33,0x4e,0x89,0xff,0x34,0x4f,0x8b,0xff,0x36,0x50,0x8d,0xff,
- 0x38,0x52,0x8f,0xff,0x39,0x53,0x91,0xff,0x3c,0x56,0x94,0xff,0x3e,0x58,0x96,
- 0xff,0x40,0x5b,0x9a,0xff,0x42,0x5d,0x9d,0xff,0x45,0x61,0xa1,0xff,0x47,0x64,
- 0xa5,0xff,0x4b,0x68,0xa9,0xff,0x4e,0x6b,0xad,0xff,0x51,0x6e,0xb0,0xff,0x85,
- 0x52,0x6f,0xb1,0xff,0x04,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf4,
- 0xf8,0xff,0x57,0x58,0x5c,0x3a,0x83,0xff,0xff,0xff,0x00,0x01,0xeb,0xeb,0xf2,
- 0x66,0x86,0xff,0xff,0xff,0x66,0x03,0xfe,0xff,0xff,0x66,0xff,0xff,0xff,0x66,
- 0xff,0xff,0xfe,0x66,0x82,0xfe,0xfe,0xfe,0x66,0x01,0xfe,0xfe,0xfd,0x66,0x82,
- 0xfd,0xfd,0xfe,0x66,0x08,0xfd,0xfd,0xfd,0x66,0xfd,0xfc,0xfd,0x66,0xfc,0xfd,
- 0xfd,0x66,0xfc,0xfc,0xfd,0x66,0xfc,0xfc,0xfc,0x66,0xfc,0xfb,0xfc,0x66,0xfb,
- 0xfb,0xfc,0x66,0xfc,0xfc,0xfb,0x66,0x82,0xfb,0xfb,0xfb,0x66,0x01,0xfb,0xfa,
- 0xfa,0x66,0x82,0xfa,0xfa,0xfa,0x66,0x0a,0xfa,0xf9,0xf9,0x66,0xf9,0xf9,0xf9,
- 0x66,0xfa,0xf9,0xf9,0x66,0xf9,0xf8,0xf8,0x66,0xf8,0xf8,0xf9,0x66,0xf8,0xf7,
- 0xf8,0x66,0xf8,0xf8,0xf8,0x66,0xf7,0xf7,0xf7,0x66,0xf7,0xf6,0xf7,0x66,0xf7,
- 0xf7,0xf6,0x66,0x82,0xf6,0xf6,0xf6,0x66,0x02,0xf6,0xf5,0xf6,0x66,0xd7,0xd6,
- 0xda,0x66,0x84,0xe6,0xe7,0xec,0x00,0x2a,0xe6,0xe7,0xec,0x01,0xe6,0xe7,0xec,
- 0x20,0xe8,0xe8,0xee,0x7f,0xf6,0xf6,0xf9,0x98,0xcd,0xd2,0xdd,0x77,0x1e,0x34,
- 0x66,0x95,0x19,0x32,0x66,0x99,0x14,0x2f,0x68,0x99,0xa2,0x91,0x7b,0x99,0x4f,
- 0x59,0x72,0x99,0x1b,0x36,0x71,0x99,0x20,0x39,0x73,0x99,0x24,0x3d,0x77,0x99,
- 0x26,0x3f,0x79,0x99,0x28,0x41,0x7b,0x99,0x2a,0x43,0x7e,0x99,0x2d,0x48,0x83,
- 0x99,0x26,0x42,0x7f,0x99,0x29,0x43,0x7f,0x99,0x61,0x72,0x9d,0x99,0xd7,0xd9,
- 0xde,0x9c,0xfb,0xfa,0xf8,0x75,0xfd,0xfd,0xfd,0x99,0xfe,0xfe,0xfe,0x99,0xf5,
- 0xf4,0xf7,0x99,0xe5,0xe5,0xeb,0x8e,0xe1,0xe1,0xe7,0x35,0xe1,0xe1,0xe7,0x00,
- 0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,
- 0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,
- 0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xea,
- 0xe9,0xeb,0xff,0xfb,0xfa,0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1e,0x37,0x70,
- 0xff,0x1f,0x2d,0x43,0x75,0xff,0x36,0x49,0x76,0xff,0x2e,0x45,0x7a,0xff,0x27,
- 0x40,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2c,0x47,0x82,0xff,0x2f,0x4a,0x84,0xff,
- 0x31,0x4c,0x87,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x37,0x53,0x90,
- 0xff,0x39,0x55,0x92,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x96,0xff,0x3e,0x59,
- 0x97,0xff,0x40,0x5b,0x99,0xff,0x41,0x5c,0x9c,0xff,0x43,0x5e,0x9e,0xff,0x44,
- 0x60,0xa1,0xff,0x47,0x63,0xa4,0xff,0x49,0x66,0xa7,0xff,0x4c,0x69,0xab,0xff,
- 0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,
- 0xff,0x52,0x6f,0xb1,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf4,
- 0xf7,0xff,0x56,0x58,0x5b,0x3a,0x83,0xff,0xff,0xff,0x00,0x02,0xeb,0xeb,0xf2,
- 0x66,0xff,0xff,0xff,0x66,0xa6,0x00,0x00,0x00,0x66,0x02,0xf6,0xf5,0xf6,0x66,
- 0xd7,0xd5,0xd8,0x66,0x84,0xe6,0xe7,0xec,0x00,0x2a,0xe5,0xe5,0xeb,0x0d,0xe7,
- 0xe6,0xec,0x6d,0xf2,0xf2,0xf5,0x99,0xe9,0xeb,0xf1,0x78,0x17,0x2d,0x61,0x83,
- 0x13,0x2a,0x5f,0x98,0x17,0x30,0x65,0x99,0x2c,0x41,0x70,0x99,0x77,0x64,0x62,
- 0x99,0x5f,0x5c,0x68,0x99,0x19,0x33,0x6d,0x99,0x21,0x3a,0x73,0x99,0x24,0x3e,
- 0x77,0x99,0x26,0x40,0x79,0x99,0x28,0x42,0x7c,0x99,0x2a,0x43,0x7e,0x99,0x2c,
- 0x47,0x82,0x99,0x30,0x4a,0x85,0x99,0x2d,0x48,0x84,0x99,0x24,0x3f,0x7f,0x99,
- 0x49,0x60,0x93,0x99,0xb7,0xbe,0xce,0x9a,0xfc,0xfa,0xf5,0x7d,0xfc,0xfd,0xfd,
- 0x93,0xff,0xff,0xff,0x99,0xf8,0xf8,0xf9,0x99,0xe6,0xe7,0xec,0x92,0xe0,0xe0,
- 0xe6,0x4d,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe6,0x00,0xdf,
- 0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,
- 0xdd,0xdc,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,
- 0xff,0xe9,0xe9,0xec,0xff,0xfb,0xfb,0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1e,
- 0x37,0x6f,0xff,0x16,0x1e,0x38,0x71,0xff,0x1e,0x38,0x74,0xff,0x24,0x3e,0x77,
- 0xff,0x27,0x41,0x7a,0xff,0x29,0x43,0x7d,0xff,0x2b,0x45,0x80,0xff,0x2d,0x48,
- 0x83,0xff,0x30,0x4b,0x86,0xff,0x32,0x4d,0x89,0xff,0x34,0x50,0x8c,0xff,0x36,
- 0x52,0x8f,0xff,0x38,0x55,0x91,0xff,0x3b,0x57,0x95,0xff,0x3d,0x5a,0x97,0xff,
- 0x3f,0x5c,0x9a,0xff,0x41,0x5e,0x9c,0xff,0x43,0x60,0x9f,0xff,0x45,0x61,0xa1,
- 0xff,0x46,0x62,0xa2,0xff,0x47,0x63,0xa4,0xff,0x49,0x65,0xa6,0xff,0x4a,0x67,
- 0xa9,0xff,0x82,0x4c,0x69,0xab,0xff,0x82,0x4d,0x6a,0xac,0xff,0x05,0x4e,0x6b,
- 0xad,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf4,0xf4,0xf7,0xff,0x50,
- 0x52,0x56,0x3a,0x83,0xff,0xff,0xff,0x00,0x11,0xea,0xeb,0xf1,0x66,0xff,0xff,
- 0xff,0x66,0x00,0x00,0x00,0x66,0xc1,0xaf,0xb5,0x4d,0xb2,0xb0,0xb7,0x5e,0xb1,
- 0xb5,0xbc,0x5d,0xbd,0xbf,0xc6,0x5d,0xba,0xbd,0xc3,0x5d,0xb5,0xbb,0xc3,0x5d,
- 0xa5,0xae,0xb5,0x5d,0xbb,0xba,0xba,0x5d,0xb2,0xb7,0xc2,0x5d,0xab,0xb2,0xc1,
- 0x5d,0xcb,0xce,0xd5,0x5d,0xcf,0xd2,0xda,0x5d,0xce,0xd2,0xd9,0x5d,0xcf,0xd2,
- 0xd9,0x5d,0x82,0xcf,0xd3,0xda,0x5d,0x83,0xd0,0xd3,0xdb,0x5d,0x03,0xd0,0xd4,
- 0xdb,0x5d,0xd1,0xd4,0xdb,0x5d,0xd1,0xd4,0xdc,0x5d,0x82,0xd1,0xd5,0xdc,0x5d,
- 0x01,0xd1,0xd5,0xdd,0x5d,0x82,0xd2,0xd5,0xdd,0x5d,0x0c,0xd2,0xd5,0xde,0x5d,
- 0xd2,0xd6,0xde,0x5d,0xd2,0xd5,0xdd,0x5d,0xc2,0xc5,0xcd,0x5d,0xbb,0xbe,0xc6,
- 0x5d,0xc2,0xc6,0xce,0x5d,0xbd,0xc1,0xc9,0x5d,0xb8,0xbc,0xc4,0x5e,0xc3,0xc6,
- 0xce,0x4a,0x00,0x00,0x00,0x66,0xf5,0xf5,0xf5,0x66,0xd7,0xd6,0xd8,0x66,0x83,
- 0xe6,0xe7,0xec,0x00,0x2b,0xe6,0xe7,0xec,0x0a,0xe6,0xe5,0xeb,0x51,0xf0,0xee,
- 0xf2,0x99,0xf8,0xf8,0xfa,0x83,0x4c,0x5f,0x88,0x7c,0x13,0x2b,0x61,0x97,0x12,
- 0x29,0x5d,0x99,0x19,0x31,0x65,0x99,0x13,0x2d,0x66,0x99,0x2f,0x42,0x6e,0x99,
- 0x20,0x3a,0x72,0x99,0x20,0x39,0x71,0x99,0x20,0x39,0x70,0x99,0x23,0x3d,0x75,
- 0x99,0x27,0x40,0x7a,0x99,0x28,0x42,0x7c,0x99,0x2a,0x44,0x7f,0x99,0x2c,0x47,
- 0x82,0x99,0x2e,0x49,0x84,0x99,0x31,0x4c,0x87,0x99,0x31,0x4c,0x88,0x99,0x24,
- 0x40,0x80,0x99,0x3c,0x56,0x8e,0x99,0x97,0xa4,0xbe,0x99,0xf6,0xf5,0xf0,0x8b,
- 0xfb,0xfb,0xfc,0x86,0xfe,0xfe,0xfd,0x99,0xfb,0xfc,0xfa,0x99,0xea,0xea,0xee,
- 0x96,0xdf,0xdf,0xe6,0x68,0xe2,0xe2,0xe8,0x07,0xe1,0xe0,0xe6,0x00,0xdf,0xdf,
- 0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xde,
- 0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,
- 0xea,0xe9,0xeb,0xff,0xfb,0xfb,0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1b,0x35,
- 0x6e,0xff,0x18,0x26,0x3d,0x71,0xff,0x38,0x4b,0x76,0xff,0x26,0x3f,0x77,0xff,
- 0x25,0x3f,0x79,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2c,0x47,0x82,
- 0xff,0x2e,0x4a,0x84,0xff,0x31,0x4c,0x88,0xff,0x33,0x4f,0x8a,0xff,0x35,0x51,
- 0x8d,0xff,0x37,0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3c,0x58,0x96,0xff,0x3e,
- 0x5b,0x98,0xff,0x41,0x5d,0x9b,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa1,0xff,
- 0x48,0x65,0xa4,0xff,0x4a,0x67,0xa7,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x6a,0xab,
- 0xff,0x4e,0x6b,0xad,0xff,0x4e,0x6b,0xae,0xff,0x83,0x4d,0x6a,0xac,0xff,0x04,
- 0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf3,0xf4,0xf8,0xff,0x50,0x51,0x58,
- 0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xea,0xeb,0xf1,0x66,0xff,0xff,0xff,0x66,
- 0x00,0x00,0x00,0x66,0x82,0x24,0x3c,0x73,0x66,0x1a,0x23,0x3c,0x74,0x66,0x22,
- 0x3a,0x73,0x66,0x28,0x41,0x79,0x66,0x2a,0x43,0x7b,0x66,0x2d,0x45,0x7d,0x66,
- 0x2d,0x46,0x7d,0x66,0x2f,0x49,0x80,0x66,0x30,0x49,0x81,0x66,0x32,0x4a,0x83,
- 0x66,0x34,0x4c,0x86,0x66,0x35,0x4e,0x88,0x66,0x38,0x51,0x8c,0x66,0x39,0x53,
- 0x8e,0x66,0x3c,0x56,0x91,0x66,0x3e,0x58,0x94,0x66,0x40,0x5b,0x97,0x66,0x42,
- 0x5d,0x9a,0x66,0x44,0x60,0x9c,0x66,0x46,0x62,0x9f,0x66,0x48,0x64,0xa2,0x66,
- 0x4a,0x67,0xa4,0x66,0x4d,0x68,0xa7,0x66,0x4f,0x6a,0xa9,0x66,0x51,0x6c,0xab,
- 0x66,0x52,0x6e,0xae,0x66,0x54,0x70,0xb0,0x66,0x83,0x55,0x71,0xb1,0x66,0x01,
- 0x54,0x70,0xb0,0x66,0x83,0x55,0x71,0xb1,0x66,0x32,0x55,0x71,0xb1,0x52,0x00,
- 0x00,0x00,0x66,0xf5,0xf4,0xf5,0x66,0xd7,0xd4,0xd7,0x66,0xe5,0xe4,0xea,0x00,
- 0xe4,0xe3,0xea,0x00,0xe4,0xe4,0xea,0x05,0xe4,0xe4,0xeb,0x41,0xea,0xeb,0xef,
- 0x99,0xfb,0xfb,0xfd,0x8e,0x6b,0x7b,0x9c,0x6b,0x13,0x2c,0x62,0x95,0x11,0x2a,
- 0x61,0x99,0x26,0x3b,0x6a,0x99,0x66,0x72,0x89,0x99,0x2c,0x42,0x72,0x99,0x1c,
- 0x36,0x6e,0x99,0x1e,0x37,0x6f,0x99,0x20,0x39,0x72,0x99,0x21,0x3a,0x73,0x99,
- 0x22,0x3c,0x74,0x99,0x24,0x3d,0x77,0x99,0x29,0x43,0x7d,0x99,0x2a,0x44,0x7f,
- 0x99,0x2d,0x47,0x81,0x99,0x2f,0x4a,0x84,0x99,0x30,0x4c,0x87,0x99,0x33,0x4f,
- 0x8a,0x99,0x34,0x4f,0x8a,0x99,0x29,0x45,0x84,0x99,0x36,0x51,0x8d,0x99,0x78,
- 0x89,0xb0,0x99,0xe2,0xe3,0xe5,0x9a,0xfa,0xf9,0xf9,0x81,0xfd,0xfc,0xfc,0x99,
- 0xfd,0xfc,0xfd,0x99,0xee,0xee,0xf1,0x99,0xe0,0xe0,0xe6,0x81,0xe1,0xe0,0xe6,
- 0x1a,0xe0,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,
- 0xe3,0x00,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,
- 0xb7,0xb7,0xff,0xea,0xe9,0xea,0xff,0xfb,0xf9,0xfa,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x14,0x30,0x6c,0xff,0x17,0x48,0x54,0x74,0xff,0xaf,0x93,0x6f,0xff,0x33,
- 0x44,0x70,0xff,0x21,0x3c,0x79,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,0x7e,0xff,
- 0x2c,0x46,0x81,0xff,0x2e,0x49,0x83,0xff,0x30,0x4b,0x86,0xff,0x32,0x4e,0x89,
- 0xff,0x34,0x50,0x8c,0xff,0x37,0x52,0x8f,0xff,0x39,0x55,0x92,0xff,0x3b,0x57,
- 0x95,0xff,0x3d,0x5a,0x97,0xff,0x40,0x5c,0x9a,0xff,0x42,0x5e,0x9e,0xff,0x44,
- 0x61,0xa0,0xff,0x47,0x64,0xa3,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x68,0xa9,0xff,
- 0x4e,0x6b,0xac,0xff,0x50,0x6d,0xaf,0xff,0x82,0x52,0x6f,0xb1,0xff,0x06,0x51,
- 0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,
- 0xf4,0xf3,0xf7,0xff,0x52,0x54,0x5a,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xea,
- 0xea,0xf1,0x66,0xff,0xff,0xff,0x66,0x00,0x00,0x00,0x66,0x82,0x1b,0x34,0x6e,
- 0x66,0x1b,0x2a,0x44,0x7a,0x66,0x43,0x5b,0x8a,0x66,0x22,0x3b,0x75,0x66,0x24,
- 0x3e,0x79,0x66,0x26,0x40,0x7b,0x66,0x28,0x42,0x7e,0x66,0x29,0x44,0x80,0x66,
- 0x2b,0x46,0x81,0x66,0x2d,0x48,0x83,0x66,0x2e,0x49,0x85,0x66,0x2f,0x4a,0x87,
- 0x66,0x31,0x4c,0x89,0x66,0x33,0x4d,0x8a,0x66,0x34,0x4e,0x8c,0x66,0x35,0x50,
- 0x8e,0x66,0x37,0x52,0x90,0x66,0x39,0x54,0x93,0x66,0x3b,0x56,0x95,0x66,0x3d,
- 0x58,0x98,0x66,0x3f,0x5a,0x9b,0x66,0x41,0x5d,0x9d,0x66,0x44,0x5f,0xa0,0x66,
- 0x46,0x62,0xa4,0x66,0x48,0x65,0xa7,0x66,0x4a,0x68,0xaa,0x66,0x4d,0x6a,0xad,
- 0x66,0x4f,0x6d,0xaf,0x66,0x82,0x50,0x6e,0xb1,0x66,0x84,0x51,0x6e,0xb1,0x66,
- 0x32,0x51,0x6e,0xb1,0x50,0x00,0x00,0x00,0x66,0xf5,0xf4,0xf5,0x66,0xd6,0xd4,
- 0xd7,0x66,0xe5,0xe4,0xea,0x00,0xe4,0xe3,0xea,0x02,0xe4,0xe4,0xea,0x25,0xe7,
- 0xe7,0xed,0x88,0xf8,0xf8,0xfa,0x94,0xaa,0xb3,0xc6,0x6c,0x15,0x2e,0x63,0x91,
- 0x13,0x2c,0x62,0x99,0x14,0x2d,0x63,0x99,0x2b,0x3f,0x6d,0x99,0x79,0x81,0x92,
- 0x99,0x23,0x39,0x6b,0x99,0x1a,0x33,0x69,0x99,0x1e,0x37,0x70,0x99,0x20,0x39,
- 0x72,0x99,0x23,0x3c,0x75,0x99,0x24,0x3e,0x77,0x99,0x58,0x6b,0x97,0xa9,0xa7,
- 0xb2,0xc9,0xc9,0xda,0xde,0xe9,0xe5,0xf4,0xf6,0xf9,0xf7,0xf8,0xf9,0xfb,0xf9,
- 0xe6,0xe9,0xf0,0xeb,0xbc,0xc5,0xd8,0xd1,0x79,0x8c,0xb4,0xb1,0x39,0x54,0x8e,
- 0x9a,0x30,0x4b,0x8a,0x99,0x33,0x4f,0x8e,0x99,0x5d,0x73,0xa3,0x99,0xc9,0xce,
- 0xd8,0x9b,0xfb,0xf9,0xf7,0x83,0xfc,0xfc,0xfb,0x99,0xfd,0xfd,0xfd,0x99,0xf2,
- 0xf1,0xf4,0x99,0xe1,0xe0,0xe7,0x90,0xdf,0xdf,0xe4,0x32,0xdd,0xdd,0xe4,0x00,
- 0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,
- 0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xe8,0xe8,0xea,0xff,0xfa,0xf9,
- 0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1a,0x34,0x6b,0xff,0x18,0x2f,0x44,0x73,
- 0xff,0x42,0x4a,0x6b,0xff,0x33,0x45,0x73,0xff,0x22,0x3c,0x76,0xff,0x26,0x3f,
- 0x79,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2d,0x48,0x83,0xff,0x2f,
- 0x4b,0x86,0xff,0x32,0x4d,0x88,0xff,0x33,0x4f,0x8b,0xff,0x36,0x51,0x8d,0xff,
- 0x38,0x54,0x91,0xff,0x3a,0x56,0x93,0xff,0x3c,0x59,0x96,0xff,0x3f,0x5b,0x99,
- 0xff,0x41,0x5d,0x9c,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa2,0xff,0x48,0x65,
- 0xa5,0xff,0x4b,0x67,0xa8,0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6c,0xad,0xff,0x52,
- 0x6f,0xb0,0xff,0x82,0x52,0x6f,0xb1,0xff,0x05,0x53,0x70,0xb2,0xff,0x11,0x11,
- 0x11,0xff,0xff,0xff,0xff,0xff,0xf4,0xf4,0xf6,0xff,0x4c,0x4e,0x54,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xea,0xea,0xf0,0x66,0xff,0xff,0xff,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x17,0x30,0x6b,0x66,0x1e,0x4c,0x61,0x8a,0x66,0x89,0x99,0xae,
- 0x66,0x26,0x3e,0x75,0x66,0x24,0x3d,0x77,0x66,0x27,0x40,0x7b,0x66,0x29,0x42,
- 0x7d,0x66,0x2b,0x44,0x7f,0x66,0x2d,0x47,0x82,0x66,0x2f,0x4a,0x84,0x66,0x30,
- 0x4c,0x86,0x66,0x32,0x4e,0x89,0x66,0x34,0x50,0x8c,0x66,0x36,0x52,0x8e,0x66,
- 0x37,0x53,0x90,0x66,0x39,0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3c,0x58,0x95,
- 0x66,0x3e,0x59,0x97,0x66,0x3f,0x5a,0x99,0x66,0x40,0x5b,0x9a,0x66,0x41,0x5d,
- 0x9c,0x66,0x43,0x5e,0x9e,0x66,0x45,0x60,0xa0,0x66,0x45,0x62,0xa2,0x66,0x47,
- 0x64,0xa5,0x66,0x49,0x66,0xa7,0x66,0x4b,0x68,0xaa,0x66,0x4d,0x6a,0xad,0x66,
- 0x4e,0x6b,0xad,0x66,0x4f,0x6c,0xae,0x66,0x82,0x50,0x6d,0xaf,0x66,0x0b,0x51,
- 0x6e,0xb0,0x66,0x51,0x6e,0xb0,0x50,0x00,0x00,0x00,0x66,0xf4,0xf4,0xf5,0x66,
- 0xd5,0xd4,0xd6,0x66,0xe5,0xe4,0xea,0x01,0xe4,0xe3,0xea,0x1a,0xe5,0xe4,0xea,
- 0x85,0xf4,0xf3,0xf6,0x97,0xd1,0xd5,0xe0,0x67,0x13,0x2c,0x62,0x88,0x82,0x13,
- 0x2c,0x62,0x99,0x0a,0x12,0x2b,0x62,0x99,0x20,0x37,0x68,0x99,0x1b,0x31,0x63,
- 0x99,0x11,0x29,0x61,0x99,0x1b,0x32,0x68,0x99,0x1d,0x37,0x6e,0x99,0x21,0x39,
- 0x72,0x99,0x63,0x75,0x9e,0xad,0xcc,0xd2,0xdf,0xdc,0xfb,0xfb,0xfc,0xfb,0x87,
- 0xff,0xff,0xff,0xff,0x15,0xe0,0xe4,0xee,0xe7,0x92,0xa1,0xc2,0xbb,0x37,0x51,
- 0x90,0x99,0x2d,0x4b,0x8e,0x99,0x4c,0x66,0x9f,0x99,0xad,0xb6,0xcc,0x9a,0xfa,
- 0xf8,0xf3,0x8c,0xfb,0xfb,0xfb,0x95,0xfe,0xfe,0xfe,0x99,0xf6,0xf4,0xf5,0x99,
- 0xe5,0xe3,0xe8,0x94,0xdc,0xdc,0xe3,0x4c,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,
- 0x00,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,
- 0xb7,0xff,0xe9,0xe8,0xe9,0xff,0xfa,0xf9,0xf9,0xff,0x00,0x00,0x00,0xff,0x82,
- 0x19,0x31,0x66,0xff,0x1f,0x1c,0x33,0x69,0xff,0x14,0x2f,0x6a,0xff,0x21,0x39,
- 0x6f,0xff,0x21,0x3a,0x71,0xff,0x23,0x3c,0x74,0xff,0x25,0x3f,0x77,0xff,0x27,
- 0x41,0x7a,0xff,0x2a,0x44,0x7e,0xff,0x2d,0x47,0x82,0xff,0x30,0x4b,0x86,0xff,
- 0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x37,0x53,0x90,0xff,0x39,0x56,0x93,
- 0xff,0x3c,0x58,0x95,0xff,0x3e,0x5a,0x98,0xff,0x40,0x5d,0x9b,0xff,0x42,0x5f,
- 0x9e,0xff,0x44,0x62,0xa1,0xff,0x47,0x63,0xa3,0xff,0x48,0x65,0xa5,0xff,0x4a,
- 0x67,0xa8,0xff,0x4e,0x6b,0xac,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6f,0xb1,0xff,
- 0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,
- 0xff,0xf3,0xf3,0xf6,0xff,0x49,0x4b,0x51,0x3b,0x83,0xff,0xff,0xff,0x00,0x03,
- 0xea,0xea,0xf1,0x66,0xfe,0xff,0xff,0x66,0x00,0x00,0x00,0x66,0x82,0x1b,0x34,
- 0x6d,0x66,0x1c,0x2b,0x40,0x72,0x66,0x34,0x47,0x73,0x66,0x27,0x3f,0x75,0x66,
- 0x23,0x3d,0x76,0x66,0x26,0x3f,0x79,0x66,0x27,0x41,0x7b,0x66,0x29,0x43,0x7e,
- 0x66,0x2b,0x45,0x80,0x66,0x2d,0x48,0x82,0x66,0x2f,0x4a,0x85,0x66,0x31,0x4c,
- 0x87,0x66,0x33,0x4e,0x8a,0x66,0x34,0x50,0x8c,0x66,0x36,0x52,0x8e,0x66,0x38,
- 0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3c,0x58,0x95,0x66,0x3e,0x5a,0x98,0x66,
- 0x3f,0x5c,0x9b,0x66,0x41,0x5e,0x9d,0x66,0x43,0x60,0x9f,0x66,0x44,0x61,0xa1,
- 0x66,0x46,0x63,0xa3,0x66,0x48,0x64,0xa5,0x66,0x49,0x66,0xa6,0x66,0x4a,0x67,
- 0xa8,0x66,0x4b,0x68,0xa9,0x66,0x4d,0x6a,0xab,0x66,0x82,0x4d,0x6a,0xac,0x66,
- 0x01,0x4c,0x69,0xab,0x66,0x82,0x4d,0x6a,0xac,0x66,0x1d,0x4d,0x6a,0xac,0x50,
- 0x00,0x00,0x00,0x66,0xf4,0xf4,0xf4,0x66,0xd4,0xd4,0xd5,0x66,0xe5,0xe4,0xea,
- 0x0b,0xe5,0xe4,0xeb,0x66,0xf1,0xf0,0xf4,0x99,0xf8,0xf8,0xfa,0x7a,0x32,0x45,
- 0x72,0x81,0x13,0x2b,0x5f,0x99,0x12,0x2a,0x5f,0x99,0x13,0x2c,0x61,0x99,0x13,
- 0x2c,0x63,0x99,0x12,0x2c,0x65,0x99,0x14,0x2f,0x68,0x99,0x1a,0x30,0x67,0x99,
- 0x1a,0x33,0x68,0x99,0x1b,0x34,0x6b,0x99,0x8c,0x99,0xb5,0xbd,0xfc,0xfc,0xfd,
- 0xfc,0xff,0xff,0xff,0xff,0xf9,0xfa,0xfb,0xfb,0xc2,0xc8,0xd4,0xe0,0x80,0x85,
- 0x92,0xdf,0x58,0x5b,0x62,0xed,0x4c,0x4e,0x50,0xf9,0x60,0x61,0x62,0xfb,0x95,
- 0x96,0x99,0xf6,0xe8,0xe9,0xeb,0xfa,0x82,0xff,0xff,0xff,0xff,0x13,0xcb,0xd3,
- 0xe3,0xd9,0x47,0x61,0x99,0x9d,0x32,0x4e,0x92,0x99,0x45,0x60,0x9d,0x99,0x8e,
- 0x9d,0xbe,0x99,0xef,0xed,0xea,0x98,0xfa,0xfa,0xf9,0x8f,0xfc,0xfc,0xfb,0x99,
- 0xf9,0xf8,0xfa,0x99,0xe7,0xe7,0xeb,0x97,0xdc,0xdb,0xe1,0x67,0xdf,0xde,0xe3,
- 0x04,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,
- 0xb7,0xff,0xe8,0xe7,0xe8,0xff,0xfa,0xf8,0xf9,0xff,0x00,0x00,0x00,0xff,0x82,
- 0x16,0x30,0x68,0xff,0x19,0x27,0x3f,0x71,0xff,0x69,0x77,0x92,0xff,0x23,0x3b,
- 0x72,0xff,0x21,0x3b,0x74,0xff,0x25,0x3e,0x77,0xff,0x27,0x40,0x7a,0xff,0x28,
- 0x42,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2c,0x45,0x7f,0xff,0x2d,0x46,0x81,0xff,
- 0x30,0x4a,0x86,0xff,0x34,0x50,0x8c,0xff,0x36,0x52,0x8f,0xff,0x38,0x54,0x91,
- 0xff,0x3a,0x57,0x94,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5c,0x9a,0xff,0x41,0x5d,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x60,0xa0,0xff,0x46,
- 0x62,0xa3,0xff,0x49,0x66,0xa7,0xff,0x4d,0x69,0xab,0xff,0x4e,0x6b,0xad,0xff,
- 0x82,0x4d,0x6a,0xac,0xff,0x04,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf3,
- 0xf3,0xf6,0xff,0x4e,0x4e,0x54,0x3c,0x83,0xff,0xff,0xff,0x00,0x03,0xea,0xe9,
- 0xf0,0x66,0xff,0xff,0xff,0x66,0x00,0x00,0x00,0x66,0x82,0x1b,0x34,0x6c,0x66,
- 0x1c,0x1a,0x34,0x6d,0x66,0x1a,0x34,0x70,0x66,0x21,0x3a,0x72,0x66,0x22,0x3c,
- 0x75,0x66,0x25,0x3e,0x78,0x66,0x26,0x40,0x7a,0x66,0x28,0x42,0x7c,0x66,0x2a,
- 0x44,0x7e,0x66,0x2c,0x46,0x81,0x66,0x2e,0x49,0x83,0x66,0x2f,0x4b,0x86,0x66,
- 0x31,0x4c,0x88,0x66,0x33,0x4f,0x8a,0x66,0x35,0x51,0x8d,0x66,0x37,0x53,0x8f,
- 0x66,0x39,0x54,0x91,0x66,0x3a,0x57,0x94,0x66,0x3c,0x59,0x96,0x66,0x3e,0x5b,
- 0x99,0x66,0x40,0x5d,0x9b,0x66,0x42,0x5f,0x9d,0x66,0x44,0x60,0xa0,0x66,0x45,
- 0x63,0xa2,0x66,0x48,0x65,0xa5,0x66,0x4a,0x67,0xa7,0x66,0x4c,0x69,0xaa,0x66,
- 0x4e,0x6a,0xac,0x66,0x50,0x6c,0xae,0x66,0x82,0x51,0x6e,0xb0,0x66,0x82,0x50,
- 0x6d,0xaf,0x66,0x09,0x4f,0x6c,0xae,0x66,0x4f,0x6c,0xae,0x50,0x00,0x00,0x00,
- 0x66,0xf5,0xf3,0xf4,0x66,0xd5,0xd4,0xd7,0x69,0xe1,0xe0,0xe7,0x58,0xec,0xeb,
- 0xef,0x99,0xfc,0xfc,0xfd,0x7b,0x37,0x4a,0x76,0x6c,0x84,0x12,0x29,0x5d,0x99,
- 0x0b,0x13,0x2b,0x60,0x99,0x15,0x2f,0x64,0x99,0x18,0x31,0x68,0x99,0x1a,0x33,
- 0x6b,0x99,0x1b,0x33,0x69,0x99,0x1c,0x35,0x6b,0x99,0x5a,0x6c,0x94,0xab,0xe5,
- 0xe8,0xef,0xed,0xb5,0xbb,0xc9,0xde,0x33,0x38,0x44,0xe1,0x01,0x01,0x02,0xfb,
- 0x85,0x00,0x00,0x00,0xff,0x16,0x15,0x15,0x15,0xff,0x6f,0x6f,0x6f,0xff,0xe9,
- 0xe9,0xea,0xfd,0xff,0xff,0xff,0xff,0xd9,0xde,0xea,0xe1,0x55,0x6c,0xa2,0xa1,
- 0x37,0x54,0x96,0x99,0x41,0x5e,0x9e,0x99,0x71,0x86,0xb3,0x99,0xd7,0xda,0xdf,
- 0x9c,0xf9,0xf8,0xf6,0x8e,0xfb,0xfb,0xfb,0x99,0xfb,0xfb,0xfa,0x99,0xeb,0xea,
- 0xed,0x98,0xdc,0xdb,0xe0,0x7f,0xde,0xdd,0xe1,0x18,0xdb,0xda,0xdf,0x00,0xda,
- 0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xe8,0xe6,0xe7,0xff,0xf9,0xf8,0xf8,0xff,
- 0x00,0x00,0x00,0xff,0x82,0x15,0x2f,0x68,0xff,0x1f,0x29,0x40,0x72,0xff,0x6d,
- 0x78,0x90,0xff,0x22,0x3a,0x71,0xff,0x20,0x3a,0x73,0xff,0x24,0x3d,0x77,0xff,
- 0x26,0x40,0x79,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2d,0x48,0x82,
- 0xff,0x2e,0x4a,0x84,0xff,0x2f,0x48,0x83,0xff,0x32,0x4c,0x88,0xff,0x36,0x52,
- 0x8e,0xff,0x38,0x54,0x90,0xff,0x3a,0x56,0x93,0xff,0x3c,0x58,0x95,0xff,0x3d,
- 0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5b,0x99,0xff,0x42,0x5c,0x9b,0xff,
- 0x44,0x5f,0x9f,0xff,0x46,0x62,0xa3,0xff,0x47,0x64,0xa5,0xff,0x49,0x66,0xa7,
- 0xff,0x4c,0x68,0xab,0xff,0x4e,0x6b,0xad,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,
- 0x11,0xff,0xff,0xff,0xff,0xff,0xf3,0xf3,0xf5,0xff,0x53,0x54,0x57,0x3f,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe9,0xe9,0xf0,0x66,0xfe,0xfe,0xff,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x17,0x30,0x68,0x66,0x1e,0x26,0x3b,0x6c,0x66,0x34,0x46,0x70,
- 0x66,0x1e,0x37,0x6f,0x66,0x20,0x39,0x71,0x66,0x22,0x3c,0x74,0x66,0x24,0x3d,
- 0x77,0x66,0x26,0x3f,0x79,0x66,0x28,0x41,0x7b,0x66,0x2a,0x44,0x7e,0x66,0x2c,
- 0x47,0x81,0x66,0x2e,0x49,0x83,0x66,0x30,0x4b,0x87,0x66,0x32,0x4e,0x89,0x66,
- 0x34,0x4f,0x8b,0x66,0x35,0x51,0x8d,0x66,0x37,0x53,0x90,0x66,0x39,0x55,0x92,
- 0x66,0x3b,0x58,0x95,0x66,0x3d,0x59,0x97,0x66,0x3f,0x5b,0x9a,0x66,0x41,0x5d,
- 0x9c,0x66,0x42,0x5f,0x9e,0x66,0x44,0x61,0xa0,0x66,0x47,0x64,0xa3,0x66,0x49,
- 0x65,0xa6,0x66,0x4b,0x67,0xa8,0x66,0x4d,0x69,0xaa,0x66,0x4f,0x6b,0xad,0x66,
- 0x51,0x6d,0xaf,0x66,0x52,0x6f,0xb1,0x66,0x82,0x53,0x70,0xb2,0x66,0x08,0x52,
- 0x6f,0xb1,0x66,0x52,0x6f,0xb1,0x50,0x00,0x00,0x00,0x66,0xf3,0xf3,0xf4,0x68,
- 0xda,0xd9,0xdd,0x88,0xe9,0xe8,0xed,0x95,0xfb,0xfa,0xfb,0x94,0x82,0x8e,0xa9,
- 0x6a,0x85,0x12,0x29,0x5d,0x99,0x04,0x13,0x2a,0x5e,0x99,0x15,0x2c,0x61,0x99,
- 0x18,0x2f,0x64,0x99,0x19,0x32,0x68,0x99,0x82,0x1c,0x35,0x6c,0x99,0x20,0x1e,
- 0x37,0x6e,0x99,0x1e,0x29,0x45,0xc0,0x01,0x01,0x02,0xfc,0x00,0x00,0x00,0xff,
- 0x01,0x02,0x03,0xfb,0x0b,0x12,0x20,0xda,0x15,0x22,0x3d,0xc3,0x1b,0x29,0x4b,
- 0xb8,0x1d,0x2e,0x51,0xb6,0x1b,0x29,0x47,0xbf,0x12,0x1b,0x2e,0xd1,0x04,0x06,
- 0x0b,0xf3,0x28,0x28,0x28,0xff,0xcf,0xcf,0xcf,0xff,0xff,0xff,0xff,0xff,0xd2,
- 0xd8,0xe5,0xdf,0x44,0x5f,0x9b,0x9b,0x3f,0x5b,0x9c,0x99,0x3d,0x5b,0xa0,0x99,
- 0x5d,0x75,0xad,0x99,0xbd,0xc5,0xd5,0x9b,0xfa,0xf8,0xf4,0x92,0xfa,0xf9,0xf9,
- 0x99,0xfc,0xfb,0xfb,0x99,0xee,0xee,0xf0,0x99,0xde,0xdd,0xe1,0x92,0xdb,0xda,
- 0xdf,0x2f,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xe6,0xe6,0xe8,0xff,0xf8,
- 0xf8,0xf9,0xff,0x00,0x00,0x00,0xff,0x82,0x16,0x2e,0x65,0xff,0x1f,0x1a,0x33,
- 0x6a,0xff,0x24,0x3b,0x6d,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x72,0xff,0x23,
- 0x3c,0x75,0xff,0x25,0x3e,0x78,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,0x7e,0xff,
- 0x2c,0x46,0x81,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x49,0x85,
- 0xff,0x34,0x50,0x8c,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x3a,0x54,0x92,0xff,0x3d,0x57,0x95,0xff,0x3e,0x59,0x98,0xff,0x41,
- 0x5d,0x9c,0xff,0x46,0x62,0xa2,0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,
- 0x4c,0x69,0xaa,0xff,0x4f,0x6c,0xae,0xff,0x52,0x6f,0xb1,0xff,0x53,0x70,0xb2,
- 0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf3,0xf2,0xf6,0xff,0x4b,0x4c,
- 0x52,0x41,0x83,0xff,0xff,0xff,0x00,0x03,0xe9,0xe9,0xf0,0x66,0xff,0xfe,0xfe,
- 0x66,0x00,0x00,0x00,0x66,0x82,0x0e,0x29,0x64,0x66,0x28,0x54,0x5b,0x6f,0x66,
- 0x9a,0x83,0x6a,0x66,0x1d,0x35,0x6b,0x66,0x1d,0x37,0x70,0x66,0x21,0x3a,0x72,
- 0x66,0x22,0x3c,0x74,0x66,0x24,0x3e,0x77,0x66,0x26,0x3f,0x79,0x66,0x27,0x41,
- 0x7a,0x66,0x29,0x43,0x7c,0x66,0x2b,0x45,0x7f,0x66,0x2d,0x47,0x81,0x66,0x2f,
- 0x49,0x85,0x66,0x32,0x4d,0x88,0x66,0x34,0x50,0x8c,0x66,0x36,0x52,0x8e,0x66,
- 0x38,0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3c,0x58,0x96,0x66,0x3e,0x5a,0x99,
- 0x66,0x40,0x5c,0x9b,0x66,0x41,0x5e,0x9c,0x66,0x43,0x5f,0x9e,0x66,0x44,0x60,
- 0xa0,0x66,0x45,0x61,0xa1,0x66,0x46,0x62,0xa2,0x66,0x47,0x63,0xa4,0x66,0x4a,
- 0x67,0xa8,0x66,0x4d,0x6b,0xac,0x66,0x4f,0x6d,0xae,0x66,0x50,0x6d,0xaf,0x66,
- 0x4f,0x6c,0xae,0x66,0x4e,0x6b,0xad,0x66,0x4d,0x6a,0xac,0x50,0x04,0x04,0x05,
- 0x67,0xed,0xed,0xee,0x82,0xe0,0xdf,0xe5,0xc2,0xf7,0xf6,0xf8,0x95,0xab,0xb4,
- 0xc5,0x5f,0x12,0x29,0x5d,0x91,0x85,0x12,0x29,0x5d,0x99,0x26,0x13,0x2a,0x5f,
- 0x99,0x15,0x2c,0x61,0x99,0x17,0x2e,0x63,0x99,0x19,0x31,0x67,0x99,0x1b,0x33,
- 0x69,0x99,0x1c,0x35,0x6b,0x99,0x1f,0x38,0x6f,0x99,0x18,0x2a,0x53,0xab,0x04,
- 0x07,0x0e,0xed,0x0c,0x13,0x24,0xd5,0x20,0x34,0x61,0xa9,0x2b,0x45,0x81,0x99,
- 0x2e,0x49,0x83,0x99,0x2f,0x49,0x84,0x99,0x30,0x49,0x84,0x99,0x34,0x50,0x8c,
- 0x99,0x36,0x52,0x8d,0x99,0x30,0x48,0x7d,0xa1,0x19,0x26,0x40,0xc5,0x27,0x29,
- 0x2c,0xf6,0xe8,0xe8,0xe8,0xff,0xff,0xff,0xff,0xff,0x9b,0xa8,0xc4,0xc5,0x41,
- 0x5c,0x9b,0x99,0x45,0x60,0xa0,0x99,0x3d,0x5c,0xa1,0x99,0x53,0x6e,0xab,0x99,
- 0xa0,0xad,0xca,0x9a,0xf5,0xf3,0xf0,0x9a,0xf9,0xf8,0xf8,0x9d,0xfc,0xfb,0xfb,
- 0x99,0xf3,0xf3,0xf4,0x99,0xe0,0xdf,0xe3,0x95,0xda,0xd9,0xde,0x4a,0xb7,0xb7,
- 0xb7,0xff,0xe6,0xe5,0xe8,0xff,0xf8,0xf8,0xf8,0xff,0x00,0x00,0x00,0xff,0x82,
- 0x14,0x2c,0x60,0xff,0x1f,0x16,0x2e,0x64,0xff,0x18,0x30,0x68,0xff,0x1d,0x35,
- 0x6d,0xff,0x20,0x39,0x71,0xff,0x22,0x3b,0x75,0xff,0x24,0x3e,0x77,0xff,0x26,
- 0x40,0x7a,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x80,0xff,0x2d,0x48,0x83,0xff,
- 0x2f,0x4a,0x85,0xff,0x2e,0x48,0x83,0xff,0x31,0x4c,0x88,0xff,0x33,0x4d,0x89,
- 0xff,0x35,0x4f,0x8b,0xff,0x37,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3b,0x56,
- 0x94,0xff,0x3f,0x5b,0x9a,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa2,0xff,0x49,
- 0x65,0xa5,0xff,0x4b,0x68,0xa8,0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6c,0xad,0xff,
- 0x51,0x6d,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,
- 0xff,0xf2,0xf2,0xf5,0xff,0x4f,0x4f,0x54,0x43,0x83,0xff,0xff,0xff,0x00,0x03,
- 0xe8,0xe8,0xef,0x66,0xfe,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x17,0x31,
- 0x67,0x66,0x0c,0x2c,0x41,0x6f,0x66,0x3a,0x46,0x69,0x66,0x27,0x3d,0x70,0x66,
- 0x1e,0x37,0x70,0x66,0x21,0x3a,0x73,0x66,0x23,0x3c,0x75,0x66,0x25,0x3e,0x78,
- 0x66,0x27,0x40,0x7a,0x66,0x28,0x42,0x7c,0x66,0x2a,0x44,0x7f,0x66,0x2c,0x46,
- 0x81,0x66,0x2d,0x48,0x82,0x66,0x82,0x2e,0x48,0x83,0x66,0x19,0x32,0x4d,0x89,
- 0x66,0x35,0x51,0x8d,0x66,0x37,0x53,0x8f,0x66,0x39,0x55,0x92,0x66,0x3b,0x57,
- 0x94,0x66,0x3c,0x58,0x96,0x66,0x3d,0x58,0x96,0x66,0x3e,0x59,0x98,0x66,0x3f,
- 0x5a,0x99,0x66,0x40,0x5b,0x9a,0x66,0x42,0x5d,0x9d,0x66,0x45,0x60,0xa0,0x66,
- 0x46,0x62,0xa2,0x66,0x46,0x63,0xa4,0x66,0x48,0x65,0xa6,0x66,0x4b,0x67,0xa9,
- 0x66,0x4d,0x6a,0xab,0x66,0x4e,0x6b,0xad,0x66,0x4f,0x6c,0xae,0x66,0x50,0x6d,
- 0xaf,0x50,0x15,0x15,0x16,0x6c,0xe8,0xe9,0xeb,0xaf,0xec,0xeb,0xed,0xc1,0xdd,
- 0xe0,0xe7,0x6f,0x19,0x30,0x62,0x84,0x86,0x12,0x29,0x5d,0x99,0x26,0x13,0x2a,
- 0x5f,0x99,0x15,0x2d,0x61,0x99,0x17,0x2f,0x64,0x99,0x58,0x69,0x90,0xab,0x22,
- 0x39,0x6e,0x9b,0x1c,0x35,0x6c,0x99,0x1f,0x38,0x6f,0x99,0x20,0x39,0x71,0x99,
- 0x20,0x38,0x6d,0x9d,0x26,0x3f,0x78,0x99,0x29,0x43,0x7e,0x99,0x2c,0x46,0x81,
- 0x99,0x2e,0x49,0x84,0x99,0x2f,0x4b,0x86,0x99,0x2f,0x49,0x85,0x99,0x33,0x50,
- 0x8b,0x99,0x36,0x52,0x8e,0x99,0x39,0x55,0x92,0x99,0x39,0x57,0x94,0x99,0x2e,
- 0x43,0x73,0xa9,0x6a,0x6c,0x70,0xf3,0xff,0xff,0xff,0xff,0xe6,0xe6,0xe8,0xfb,
- 0x56,0x6d,0xa5,0xa2,0x44,0x5e,0x9e,0x99,0x47,0x63,0xa2,0x99,0x42,0x61,0xa5,
- 0x99,0x4e,0x6a,0xab,0x99,0x85,0x97,0xbf,0x98,0xe5,0xe5,0xe7,0xa3,0xf8,0xf7,
- 0xf6,0x9a,0xfa,0xfb,0xfb,0x99,0xf6,0xf7,0xf7,0x99,0xe4,0xe3,0xe6,0x97,0xc4,
- 0xc4,0xc6,0xff,0xe6,0xe5,0xe6,0xff,0xf8,0xf7,0xf8,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x14,0x2b,0x5f,0xff,0x1f,0x16,0x2d,0x62,0xff,0x18,0x30,0x65,0xff,0x1a,
- 0x32,0x68,0xff,0x1d,0x35,0x6c,0xff,0x1f,0x38,0x70,0xff,0x22,0x3c,0x75,0xff,
- 0x25,0x3f,0x78,0xff,0x28,0x41,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x46,0x81,
- 0xff,0x2c,0x47,0x81,0xff,0x2d,0x46,0x82,0xff,0x2f,0x49,0x85,0xff,0x32,0x4c,
- 0x88,0xff,0x34,0x4e,0x8a,0xff,0x36,0x50,0x8d,0xff,0x3a,0x54,0x91,0xff,0x3d,
- 0x59,0x97,0xff,0x40,0x5d,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x45,0x62,0xa1,0xff,
- 0x47,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x49,0x66,0xa7,
- 0xff,0x4b,0x68,0xaa,0xff,0x4d,0x6a,0xac,0xff,0x11,0x11,0x11,0xff,0xff,0xff,
- 0xff,0xff,0xf1,0xf1,0xf4,0xff,0x50,0x50,0x56,0x44,0x83,0xff,0xff,0xff,0x00,
- 0x03,0xe8,0xe8,0xee,0x66,0xfe,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x16,
- 0x2d,0x62,0x66,0x0c,0x16,0x2f,0x65,0x66,0x12,0x2d,0x67,0x66,0x1d,0x36,0x6d,
- 0x66,0x1e,0x36,0x6f,0x66,0x20,0x39,0x71,0x66,0x22,0x3b,0x74,0x66,0x24,0x3d,
- 0x76,0x66,0x25,0x3f,0x78,0x66,0x27,0x41,0x7b,0x66,0x29,0x43,0x7d,0x66,0x2b,
- 0x45,0x7f,0x66,0x2d,0x47,0x82,0x66,0x82,0x2f,0x4a,0x85,0x66,0x1a,0x2f,0x49,
- 0x84,0x66,0x33,0x4e,0x8a,0x66,0x35,0x50,0x8c,0x66,0x36,0x51,0x8e,0x66,0x37,
- 0x51,0x8e,0x66,0x38,0x52,0x90,0x66,0x3a,0x54,0x91,0x66,0x3b,0x55,0x94,0x66,
- 0x3d,0x58,0x97,0x66,0x40,0x5b,0x9a,0x66,0x43,0x5f,0x9f,0x66,0x46,0x63,0xa3,
- 0x66,0x49,0x65,0xa5,0x66,0x4a,0x66,0xa7,0x66,0x4b,0x68,0xa9,0x66,0x4e,0x6b,
- 0xac,0x66,0x50,0x6d,0xaf,0x66,0x52,0x6f,0xb1,0x66,0x53,0x70,0xb1,0x67,0x6c,
- 0x84,0xbb,0x5c,0x92,0x92,0x95,0xa9,0xef,0xef,0xf1,0xc2,0xe6,0xe6,0xe9,0xa9,
- 0x1b,0x32,0x66,0x72,0x12,0x2b,0x5f,0x98,0x12,0x29,0x5d,0x99,0x82,0x12,0x29,
- 0x5e,0x99,0x01,0x12,0x29,0x5c,0x99,0x82,0x12,0x29,0x5d,0x99,0x26,0x13,0x2b,
- 0x5f,0x99,0x15,0x2c,0x61,0x99,0x4d,0x5e,0x87,0xa8,0xf2,0xf3,0xf6,0xf6,0x80,
- 0x8d,0xab,0xba,0x1d,0x36,0x6d,0x99,0x1e,0x38,0x6f,0x99,0x21,0x3a,0x71,0x99,
- 0x24,0x3d,0x75,0x99,0x25,0x3e,0x77,0x99,0x27,0x41,0x7a,0x99,0x2a,0x44,0x7e,
- 0x99,0x2c,0x47,0x81,0x99,0x2e,0x48,0x83,0x99,0x2f,0x48,0x84,0x99,0x34,0x4f,
- 0x8b,0x99,0x36,0x52,0x8f,0x99,0x39,0x55,0x91,0x99,0x3a,0x56,0x94,0x99,0x3c,
- 0x58,0x96,0x99,0x32,0x47,0x79,0xa7,0xc8,0xc8,0xc9,0xfd,0xff,0xff,0xff,0xff,
- 0x80,0x89,0x9a,0xd7,0x45,0x60,0x9f,0x99,0x45,0x61,0xa1,0x99,0x49,0x66,0xa6,
- 0x99,0x49,0x67,0xaa,0x99,0x4a,0x68,0xad,0x99,0x6e,0x85,0xb8,0x99,0xcc,0xd1,
- 0xdb,0x9c,0xf7,0xf7,0xf5,0x9a,0xf9,0xf9,0xf9,0x99,0xf8,0xf9,0xf8,0x99,0xd4,
- 0xd4,0xd5,0xff,0xe0,0xdd,0xe1,0xff,0xf5,0xf4,0xf6,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x14,0x2c,0x62,0xff,0x1f,0x15,0x2d,0x62,0xff,0x17,0x2e,0x64,0xff,0x19,
- 0x31,0x66,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x39,0x70,0xff,
- 0x21,0x3b,0x73,0xff,0x25,0x3e,0x77,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,
- 0xff,0x2a,0x44,0x7e,0xff,0x2c,0x46,0x80,0xff,0x2e,0x48,0x84,0xff,0x31,0x4b,
- 0x86,0xff,0x34,0x4d,0x8a,0xff,0x37,0x53,0x8f,0xff,0x3b,0x57,0x94,0xff,0x3d,
- 0x59,0x97,0xff,0x3f,0x5b,0x9a,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x44,0x5f,0x9e,0xff,0x44,0x60,0xa0,0xff,0x46,0x62,0xa3,0xff,0x49,0x66,0xa8,
- 0xff,0x4d,0x6a,0xac,0xff,0x51,0x6e,0xb0,0xff,0x11,0x11,0x11,0xff,0xff,0xff,
- 0xff,0xff,0xf1,0xf1,0xf4,0xff,0x51,0x51,0x57,0x44,0x83,0xff,0xff,0xff,0x00,
- 0x03,0xe8,0xe8,0xee,0x66,0xfe,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x0e,
- 0x26,0x5c,0x66,0x26,0x31,0x44,0x6f,0x66,0x61,0x6f,0x8b,0x66,0x14,0x2d,0x63,
- 0x66,0x1b,0x33,0x6a,0x66,0x1d,0x36,0x6d,0x66,0x20,0x38,0x70,0x66,0x22,0x3b,
- 0x74,0x66,0x24,0x3d,0x77,0x66,0x26,0x3f,0x79,0x66,0x28,0x41,0x7b,0x66,0x2a,
- 0x43,0x7e,0x66,0x2b,0x45,0x80,0x66,0x2d,0x48,0x82,0x66,0x2e,0x48,0x83,0x66,
- 0x2e,0x47,0x82,0x66,0x30,0x49,0x85,0x66,0x31,0x4b,0x87,0x66,0x33,0x4d,0x89,
- 0x66,0x35,0x4e,0x8c,0x66,0x37,0x51,0x8e,0x66,0x39,0x53,0x91,0x66,0x3c,0x56,
- 0x95,0x66,0x3f,0x5b,0x99,0x66,0x41,0x5e,0x9d,0x66,0x43,0x61,0xa0,0x66,0x45,
- 0x62,0xa2,0x66,0x48,0x64,0xa4,0x66,0x4a,0x66,0xa6,0x66,0x4a,0x67,0xa8,0x66,
- 0x4b,0x68,0xa9,0x66,0x4c,0x69,0xaa,0x66,0x4d,0x6a,0xac,0x66,0x51,0x6d,0xae,
- 0x67,0xa3,0xb0,0xce,0x86,0xb9,0xb8,0xbc,0xc2,0xf8,0xf7,0xf8,0xbc,0xa4,0xaa,
- 0xba,0xa6,0x13,0x2c,0x62,0x98,0x82,0x13,0x2c,0x62,0x99,0x2b,0x13,0x2b,0x62,
- 0x99,0x12,0x2b,0x60,0x99,0x13,0x2a,0x60,0x99,0x12,0x2b,0x5f,0x99,0x12,0x29,
- 0x5e,0x99,0x13,0x2a,0x5f,0x99,0x16,0x2d,0x63,0x99,0xb9,0xc0,0xd0,0xd4,0xff,
- 0xff,0xff,0xff,0xe0,0xe2,0xe7,0xef,0x26,0x3d,0x6f,0x9e,0x1f,0x38,0x6f,0x99,
- 0x21,0x3b,0x73,0x99,0x23,0x3c,0x74,0x99,0x25,0x3f,0x77,0x99,0x27,0x41,0x7a,
- 0x99,0x29,0x43,0x7c,0x99,0x2b,0x45,0x7e,0x99,0x2e,0x46,0x82,0x99,0x30,0x49,
- 0x85,0x99,0x34,0x4e,0x8b,0x99,0x37,0x52,0x8e,0x99,0x39,0x55,0x92,0x99,0x3a,
- 0x57,0x94,0x99,0x3c,0x58,0x96,0x99,0x3e,0x5b,0x99,0x99,0x8c,0x94,0xa4,0xda,
- 0xff,0xff,0xff,0xff,0x9c,0x9d,0x9f,0xfa,0x3f,0x58,0x90,0xa0,0x46,0x63,0xa3,
- 0x99,0x47,0x62,0xa3,0x99,0x4a,0x67,0xa7,0x99,0x4f,0x6d,0xae,0x99,0x47,0x67,
- 0xad,0x99,0x5e,0x78,0xb3,0x99,0xad,0xb8,0xcf,0x9a,0xeb,0xe9,0xe6,0x9e,0xf7,
- 0xf9,0xf7,0x9a,0xe0,0xdf,0xdf,0xff,0xe9,0xe8,0xea,0xff,0xe6,0xe5,0xe8,0xff,
- 0x27,0x27,0x27,0xff,0x82,0x13,0x2c,0x63,0xff,0x1f,0x15,0x2f,0x65,0xff,0x17,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1b,0x32,0x69,0xff,0x1c,0x35,0x6c,0xff,
- 0x1f,0x38,0x6e,0xff,0x21,0x3a,0x71,0xff,0x23,0x3c,0x74,0xff,0x25,0x3e,0x77,
- 0xff,0x27,0x41,0x7a,0xff,0x29,0x44,0x7d,0xff,0x2c,0x45,0x7f,0xff,0x2e,0x47,
- 0x83,0xff,0x30,0x4a,0x86,0xff,0x35,0x51,0x8d,0xff,0x38,0x54,0x90,0xff,0x3a,
- 0x56,0x93,0xff,0x3c,0x59,0x96,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x41,0x5c,0x9c,0xff,0x45,0x61,0xa1,0xff,0x49,0x66,0xa6,
- 0xff,0x4c,0x69,0xaa,0xff,0x4f,0x6c,0xad,0xff,0x51,0x6e,0xb0,0xff,0x11,0x11,
- 0x11,0xff,0xff,0xff,0xff,0xff,0xf1,0xf1,0xf4,0xff,0x50,0x50,0x55,0x44,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe7,0xe8,0xed,0x66,0xfe,0xfe,0xfd,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x0f,0x28,0x5f,0x66,0x25,0x2f,0x42,0x6f,0x66,0x59,0x65,0x81,
- 0x66,0x14,0x2b,0x62,0x66,0x19,0x30,0x66,0x66,0x1b,0x33,0x68,0x66,0x1c,0x35,
- 0x6b,0x66,0x1e,0x37,0x6e,0x66,0x20,0x39,0x70,0x66,0x22,0x3c,0x74,0x66,0x25,
- 0x3e,0x77,0x66,0x27,0x40,0x7a,0x66,0x28,0x42,0x7b,0x66,0x29,0x43,0x7d,0x66,
- 0x2b,0x45,0x7e,0x66,0x2d,0x46,0x80,0x66,0x2e,0x48,0x83,0x66,0x30,0x4a,0x86,
- 0x66,0x32,0x4c,0x88,0x66,0x34,0x4f,0x8c,0x66,0x37,0x53,0x90,0x66,0x3a,0x56,
- 0x94,0x66,0x3c,0x59,0x96,0x66,0x3f,0x5b,0x99,0x66,0x40,0x5d,0x9b,0x66,0x41,
- 0x5e,0x9d,0x66,0x42,0x5f,0x9e,0x66,0x43,0x5f,0x9f,0x66,0x45,0x60,0xa0,0x66,
- 0x45,0x62,0xa2,0x66,0x48,0x64,0xa5,0x66,0x4a,0x67,0xa8,0x66,0x51,0x6d,0xae,
- 0x68,0x93,0xa2,0xc7,0x8e,0xcb,0xd0,0xde,0xb9,0xb0,0xb0,0xb1,0xb2,0xc6,0xca,
- 0xd6,0x9e,0x79,0x84,0x9e,0xc0,0x88,0x13,0x2c,0x62,0x99,0x03,0x14,0x2d,0x64,
- 0x99,0x56,0x68,0x90,0xac,0xf9,0xf9,0xfb,0xfa,0x82,0xff,0xff,0xff,0xff,0x33,
- 0x8d,0x93,0xa2,0xd9,0x20,0x39,0x71,0x99,0x21,0x3b,0x72,0x99,0x23,0x3d,0x74,
- 0x99,0x25,0x3f,0x78,0x99,0x27,0x41,0x7a,0x99,0x29,0x43,0x7c,0x99,0x2b,0x46,
- 0x80,0x99,0x2d,0x46,0x82,0x99,0x2f,0x49,0x84,0x99,0x32,0x4b,0x87,0x99,0x34,
- 0x4f,0x8b,0x99,0x37,0x52,0x8f,0x99,0x3a,0x56,0x93,0x99,0xa2,0xaf,0xcd,0xc1,
- 0xca,0xd2,0xe3,0xd8,0xda,0xe0,0xec,0xe2,0xff,0xff,0xff,0xff,0xe4,0xe4,0xe4,
- 0xff,0xb9,0xbe,0xc8,0xe6,0xcb,0xd3,0xe5,0xd5,0x49,0x65,0xa6,0x99,0x49,0x66,
- 0xa5,0x99,0x4c,0x69,0xab,0x99,0x52,0x6f,0xb1,0x99,0x47,0x67,0xae,0x99,0x55,
- 0x71,0xb0,0x99,0x88,0x97,0xb9,0x99,0xdc,0xdc,0xdb,0xa6,0xdd,0xdd,0xdd,0xff,
- 0xf1,0xf1,0xf1,0xff,0xf3,0xf2,0xf3,0xff,0x84,0x83,0x85,0xff,0x4a,0x5b,0x83,
- 0xff,0x13,0x2c,0x62,0xff,0x14,0x2d,0x64,0xff,0x17,0x30,0x67,0xff,0x19,0x33,
- 0x6a,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x20,
- 0x39,0x70,0xff,0x22,0x3b,0x73,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,0x79,0xff,
- 0x28,0x43,0x7b,0xff,0x2b,0x45,0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,0x49,0x84,
- 0xff,0x33,0x4e,0x8a,0xff,0x37,0x53,0x8f,0xff,0x82,0x39,0x55,0x92,0xff,0x0d,
- 0x3a,0x55,0x93,0xff,0x3c,0x56,0x95,0xff,0x3e,0x59,0x98,0xff,0x42,0x5e,0x9e,
- 0xff,0x47,0x63,0xa3,0xff,0x4a,0x66,0xa6,0xff,0x4c,0x68,0xa9,0xff,0x4e,0x6b,
- 0xac,0xff,0x4e,0x6b,0xad,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xfe,0xff,0xf1,
- 0xf1,0xf4,0xff,0x4f,0x4f,0x54,0x44,0x83,0xff,0xff,0xff,0x00,0x03,0xe8,0xe7,
- 0xed,0x66,0xfd,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x13,0x2c,0x62,0x66,
- 0x29,0x16,0x2e,0x63,0x66,0x1d,0x34,0x65,0x66,0x18,0x30,0x67,0x66,0x19,0x31,
- 0x68,0x66,0x1a,0x33,0x6a,0x66,0x1b,0x35,0x6b,0x66,0x1d,0x36,0x6c,0x66,0x1f,
- 0x38,0x6e,0x66,0x20,0x3a,0x71,0x66,0x22,0x3b,0x73,0x66,0x24,0x3e,0x75,0x66,
- 0x26,0x3f,0x78,0x66,0x28,0x42,0x7b,0x66,0x29,0x44,0x7d,0x66,0x2b,0x45,0x7f,
- 0x66,0x2d,0x46,0x81,0x66,0x2f,0x48,0x84,0x66,0x33,0x4d,0x89,0x66,0x36,0x52,
- 0x8f,0x66,0x38,0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3b,0x58,0x95,0x66,0x3c,
- 0x58,0x96,0x66,0x3d,0x58,0x96,0x66,0x3e,0x58,0x97,0x66,0x40,0x5a,0x99,0x66,
- 0x41,0x5c,0x9b,0x66,0x44,0x61,0xa0,0x66,0x48,0x64,0xa4,0x66,0x4b,0x67,0xa8,
- 0x66,0x4d,0x6a,0xab,0x66,0x75,0x8a,0xbb,0x79,0xbf,0xc6,0xda,0xb8,0xd9,0xdd,
- 0xe9,0xb9,0x98,0x99,0x9b,0xa9,0x94,0x9e,0xb4,0xbe,0x6e,0x79,0x96,0xc2,0x15,
- 0x2c,0x61,0x99,0x13,0x2c,0x61,0x99,0x13,0x2c,0x62,0x99,0x13,0x2c,0x61,0x99,
- 0x84,0x13,0x2c,0x62,0x99,0x02,0x17,0x30,0x66,0x99,0xd4,0xd8,0xe3,0xe3,0x83,
- 0xff,0xff,0xff,0xff,0x0f,0xe9,0xea,0xea,0xfd,0x40,0x54,0x82,0xa5,0x23,0x3c,
- 0x75,0x99,0x24,0x3f,0x77,0x99,0x26,0x3f,0x78,0x99,0x27,0x41,0x7a,0x99,0x29,
- 0x43,0x7e,0x99,0x2c,0x46,0x7f,0x99,0x2e,0x47,0x82,0x99,0x30,0x49,0x85,0x99,
- 0x33,0x4b,0x88,0x99,0x33,0x4d,0x8a,0x99,0x36,0x50,0x8d,0x99,0x38,0x52,0x90,
- 0x99,0x89,0x98,0xbe,0xb6,0x85,0xff,0xff,0xff,0xff,0x2e,0xec,0xef,0xf6,0xee,
- 0x4b,0x69,0xa9,0x99,0x4a,0x67,0xa8,0x99,0x4a,0x67,0xaa,0x99,0x4f,0x6c,0xae,
- 0x99,0x53,0x70,0xb1,0x99,0x4c,0x6a,0xaf,0x99,0x50,0x6d,0xb0,0x99,0x75,0x89,
- 0xb9,0x99,0xbf,0xbf,0xbf,0xff,0xee,0xee,0xee,0xff,0xf8,0xf8,0xf8,0xff,0x92,
- 0x92,0x92,0xff,0x8e,0x97,0xaf,0xff,0x65,0x73,0x94,0xff,0x13,0x2d,0x63,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x31,0x67,0xff,0x1a,0x31,0x68,0xff,0x1b,0x33,0x69,
- 0xff,0x1d,0x36,0x6c,0xff,0x1f,0x38,0x6f,0xff,0x21,0x3b,0x72,0xff,0x23,0x3d,
- 0x75,0xff,0x26,0x3f,0x78,0xff,0x27,0x41,0x7a,0xff,0x2a,0x44,0x7d,0xff,0x2c,
- 0x46,0x80,0xff,0x2e,0x48,0x83,0xff,0x31,0x4b,0x86,0xff,0x35,0x51,0x8d,0xff,
- 0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3b,0x56,0x94,
- 0xff,0x3f,0x5b,0x99,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa2,0xff,0x48,0x65,
- 0xa5,0xff,0x4b,0x67,0xa8,0xff,0x4d,0x6a,0xab,0xff,0x4c,0x68,0xaa,0xff,0x11,
- 0x11,0x11,0xff,0xfe,0xfd,0xfe,0xff,0xf0,0xf0,0xf3,0xff,0x50,0x50,0x55,0x44,
- 0x83,0xff,0xff,0xff,0x00,0x03,0xe7,0xe6,0xed,0x66,0xfe,0xfe,0xfe,0x66,0x00,
- 0x00,0x00,0x66,0x82,0x13,0x2c,0x62,0x66,0x2e,0x12,0x2c,0x62,0x66,0x13,0x2c,
- 0x63,0x66,0x16,0x30,0x66,0x66,0x18,0x32,0x69,0x66,0x1a,0x32,0x69,0x66,0x1b,
- 0x33,0x6a,0x66,0x1c,0x34,0x6b,0x66,0x1d,0x36,0x6d,0x66,0x1f,0x38,0x6f,0x66,
- 0x21,0x3a,0x71,0x66,0x23,0x3c,0x74,0x66,0x25,0x3e,0x77,0x66,0x26,0x40,0x79,
- 0x66,0x28,0x42,0x7b,0x66,0x2a,0x44,0x7d,0x66,0x2c,0x45,0x80,0x66,0x2e,0x47,
- 0x82,0x66,0x30,0x4a,0x85,0x66,0x33,0x4e,0x8a,0x66,0x36,0x52,0x8f,0x66,0x37,
- 0x52,0x8f,0x66,0x38,0x52,0x8f,0x66,0x39,0x53,0x91,0x66,0x3b,0x55,0x93,0x66,
- 0x3c,0x57,0x95,0x66,0x3f,0x5b,0x99,0x66,0x43,0x5f,0x9e,0x66,0x45,0x63,0xa2,
- 0x66,0x48,0x64,0xa4,0x66,0x4a,0x66,0xa7,0x66,0x4b,0x68,0xa8,0x66,0xbe,0xc4,
- 0xd7,0xbd,0xca,0xd0,0xe0,0xc2,0xe0,0xe4,0xef,0xb9,0xd0,0xcf,0xce,0xd2,0xd8,
- 0xdb,0xdd,0xc9,0x91,0x97,0xab,0xc2,0x00,0x13,0x4d,0x99,0x13,0x2a,0x5e,0x99,
- 0x12,0x29,0x5e,0x99,0x13,0x2a,0x5d,0x99,0x13,0x2b,0x5f,0x99,0x13,0x2a,0x5f,
- 0x99,0x13,0x2b,0x5f,0x99,0x13,0x2c,0x61,0x99,0x8f,0x9b,0xb5,0xc1,0x85,0xff,
- 0xff,0xff,0xff,0x0f,0xaa,0xae,0xb7,0xe8,0x28,0x40,0x7a,0x9a,0x27,0x40,0x7a,
- 0x99,0x26,0x40,0x79,0x99,0x28,0x42,0x7b,0x99,0x2a,0x44,0x7e,0x99,0x2c,0x45,
- 0x80,0x99,0x2e,0x47,0x83,0x99,0x31,0x4a,0x86,0x99,0x32,0x4d,0x89,0x99,0x35,
- 0x4f,0x8b,0x99,0x36,0x50,0x8d,0x99,0x38,0x52,0x90,0x99,0x3b,0x55,0x93,0x99,
- 0xbf,0xc3,0xcb,0xea,0x83,0xff,0xff,0xff,0xff,0x2f,0xfa,0xfa,0xfa,0xff,0x59,
- 0x5f,0x6b,0xe1,0x16,0x1f,0x32,0xd5,0x4e,0x6a,0xac,0x99,0x4d,0x6a,0xab,0x99,
- 0x4d,0x6a,0xac,0x99,0x4f,0x6c,0xae,0x99,0x52,0x6f,0xb1,0x99,0x50,0x6d,0xb1,
- 0x99,0x4a,0x69,0xaf,0x99,0xb7,0xb7,0xb7,0xff,0xe5,0xe4,0xe5,0xff,0xf7,0xf6,
- 0xf6,0xff,0x97,0x97,0x97,0xff,0x98,0xa2,0xb8,0xff,0x83,0x8d,0xa6,0xff,0x13,
- 0x2b,0x61,0xff,0x14,0x2c,0x60,0xff,0x16,0x2d,0x62,0xff,0x18,0x30,0x65,0xff,
- 0x1a,0x32,0x68,0xff,0x1c,0x35,0x6b,0xff,0x1e,0x37,0x6e,0xff,0x20,0x39,0x70,
- 0xff,0x22,0x3c,0x74,0xff,0x25,0x3e,0x76,0xff,0x27,0x40,0x79,0xff,0x29,0x43,
- 0x7c,0xff,0x2b,0x45,0x7f,0xff,0x2d,0x47,0x82,0xff,0x2f,0x49,0x85,0xff,0x32,
- 0x4c,0x87,0xff,0x34,0x4e,0x8a,0xff,0x36,0x50,0x8d,0xff,0x38,0x53,0x90,0xff,
- 0x3c,0x57,0x95,0xff,0x40,0x5d,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x44,0x61,0xa1,
- 0xff,0x47,0x64,0xa3,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x49,0x66,
- 0xa7,0xff,0x11,0x11,0x11,0xff,0xfe,0xfe,0xfe,0xff,0xf0,0xf0,0xf3,0xff,0x4f,
- 0x4f,0x55,0x44,0x83,0xff,0xff,0xff,0x00,0x03,0xe6,0xe7,0xec,0x66,0xfd,0xfd,
- 0xfd,0x66,0x00,0x00,0x00,0x66,0x82,0x13,0x2c,0x62,0x66,0x29,0x13,0x2c,0x61,
- 0x66,0x13,0x2b,0x60,0x66,0x14,0x2c,0x60,0x66,0x16,0x2d,0x62,0x66,0x18,0x2f,
- 0x64,0x66,0x19,0x31,0x67,0x66,0x1b,0x33,0x69,0x66,0x1c,0x35,0x6b,0x66,0x1e,
- 0x37,0x6e,0x66,0x20,0x39,0x70,0x66,0x21,0x3b,0x73,0x66,0x23,0x3d,0x75,0x66,
- 0x25,0x3f,0x77,0x66,0x27,0x41,0x79,0x66,0x29,0x43,0x7c,0x66,0x2b,0x45,0x7e,
- 0x66,0x2c,0x46,0x81,0x66,0x2e,0x48,0x83,0x66,0x30,0x4a,0x86,0x66,0x33,0x4c,
- 0x89,0x66,0x34,0x4e,0x8a,0x66,0x35,0x50,0x8c,0x66,0x37,0x51,0x8f,0x66,0x3a,
- 0x54,0x92,0x66,0x3d,0x59,0x97,0x66,0x40,0x5d,0x9c,0x66,0x42,0x5f,0x9e,0x66,
- 0x43,0x61,0xa0,0x66,0x46,0x62,0xa2,0x66,0x48,0x65,0xa5,0x66,0x4a,0x67,0xa7,
- 0x66,0x93,0xa1,0xc5,0x8f,0xc0,0xc6,0xd6,0xc1,0xd5,0xda,0xe6,0xb9,0xc7,0xc7,
- 0xc7,0xc2,0xf7,0xf6,0xf5,0xd2,0xe0,0xdf,0xe1,0xcb,0x69,0x77,0x96,0x99,0x00,
- 0x19,0x51,0x99,0x0f,0x27,0x5b,0x99,0x13,0x29,0x5d,0x99,0x84,0x12,0x29,0x5d,
- 0x99,0x16,0xb7,0xbe,0xce,0xd3,0xd4,0xd9,0xe2,0xe3,0xe1,0xe1,0xe2,0xfb,0xff,
- 0xff,0xff,0xff,0xdd,0xdd,0xdd,0xff,0xb8,0xb8,0xb8,0xff,0xb3,0xb3,0xb4,0xfc,
- 0x3e,0x50,0x7a,0xaa,0x27,0x40,0x7a,0x99,0x28,0x42,0x7c,0x99,0x29,0x42,0x7b,
- 0x99,0x2a,0x44,0x7d,0x99,0x2c,0x45,0x80,0x99,0x2e,0x48,0x84,0x99,0x30,0x4a,
- 0x86,0x99,0x35,0x51,0x8d,0x99,0x37,0x53,0x8e,0x99,0x38,0x54,0x91,0x99,0x3a,
- 0x55,0x93,0x99,0x3b,0x55,0x93,0x99,0x4f,0x5d,0x7b,0xc1,0xef,0xef,0xef,0xff,
- 0x82,0xff,0xff,0xff,0xff,0x2f,0xa5,0xa5,0xa5,0xff,0x00,0x00,0x00,0xff,0x08,
- 0x0b,0x12,0xee,0x50,0x6c,0xae,0x99,0x51,0x6e,0xb0,0x99,0x4e,0x6b,0xad,0x99,
- 0x4c,0x69,0xab,0x99,0x4f,0x6c,0xae,0x99,0x53,0x6f,0xb1,0x99,0x52,0x6f,0xb1,
- 0x99,0xb7,0xb7,0xb7,0xff,0xe4,0xe2,0xe4,0xff,0xf7,0xf6,0xf6,0xff,0x90,0x90,
- 0x90,0xff,0x8b,0x94,0xab,0xff,0x40,0x52,0x7a,0xff,0x12,0x29,0x5d,0xff,0x13,
- 0x2a,0x5e,0xff,0x15,0x2c,0x61,0xff,0x18,0x2f,0x64,0xff,0x1a,0x31,0x67,0xff,
- 0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x38,0x6f,0xff,0x21,0x3b,0x73,
- 0xff,0x25,0x3f,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x42,0x7a,0xff,0x2a,0x44,
- 0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,0x48,0x84,0xff,0x31,0x4a,0x86,0xff,0x33,
- 0x4d,0x8a,0xff,0x35,0x4f,0x8c,0xff,0x38,0x52,0x90,0xff,0x3d,0x59,0x97,0xff,
- 0x3f,0x5c,0x9a,0xff,0x41,0x5e,0x9d,0xff,0x44,0x61,0xa0,0xff,0x46,0x63,0xa2,
- 0xff,0x49,0x65,0xa6,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa6,0xff,0x11,0x11,
- 0x11,0xff,0xfe,0xfe,0xfd,0xff,0xf0,0xf0,0xf2,0xff,0x4e,0x4d,0x52,0x44,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe6,0xe6,0xec,0x66,0xfd,0xfd,0xfd,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x12,0x2a,0x5e,0x66,0x82,0x12,0x29,0x5d,0x66,0x28,0x12,0x29,
- 0x5e,0x66,0x14,0x2b,0x60,0x66,0x17,0x2e,0x63,0x66,0x18,0x30,0x66,0x66,0x1a,
- 0x32,0x68,0x66,0x1c,0x34,0x6a,0x66,0x1c,0x36,0x6c,0x66,0x1e,0x38,0x6e,0x66,
- 0x21,0x3a,0x72,0x66,0x24,0x3d,0x77,0x66,0x27,0x40,0x7a,0x66,0x27,0x41,0x7a,
- 0x66,0x28,0x42,0x7b,0x66,0x29,0x44,0x7d,0x66,0x2b,0x45,0x7f,0x66,0x2d,0x47,
- 0x82,0x66,0x2f,0x48,0x84,0x66,0x31,0x4b,0x86,0x66,0x33,0x4d,0x89,0x66,0x34,
- 0x4e,0x8b,0x66,0x37,0x51,0x8e,0x66,0x3b,0x56,0x94,0x66,0x3d,0x5a,0x98,0x66,
- 0x3f,0x5b,0x9a,0x66,0x41,0x5d,0x9c,0x66,0x42,0x5f,0x9e,0x66,0x44,0x61,0xa1,
- 0x66,0x47,0x64,0xa3,0x66,0x49,0x64,0xa5,0x66,0x46,0x63,0xa3,0x66,0x73,0x87,
- 0xb7,0x7b,0xbd,0xc3,0xd5,0xae,0xb9,0xb8,0xbb,0xc2,0xfa,0xfa,0xf9,0xc2,0xf1,
- 0xf0,0xf1,0xcb,0xef,0xef,0xf0,0xaf,0x8c,0x96,0xad,0x9a,0x14,0x2b,0x5f,0x99,
- 0x06,0x1f,0x56,0x99,0x13,0x2a,0x5e,0x99,0x82,0x12,0x29,0x5d,0x99,0x29,0x13,
- 0x2a,0x5e,0x99,0x1a,0x30,0x64,0x9a,0x0b,0x16,0x30,0xc1,0x66,0x66,0x66,0xff,
- 0xff,0xff,0xff,0xff,0xa8,0xa8,0xa8,0xff,0x00,0x00,0x00,0xff,0x01,0x01,0x01,
- 0xff,0x0e,0x15,0x25,0xd5,0x24,0x3d,0x76,0x9a,0x27,0x40,0x7a,0x99,0x28,0x42,
- 0x7b,0x99,0x2a,0x45,0x7d,0x99,0x2d,0x46,0x81,0x99,0x2e,0x48,0x83,0x99,0x30,
- 0x4a,0x85,0x99,0x35,0x51,0x8d,0x99,0x38,0x55,0x91,0x99,0x3a,0x56,0x93,0x99,
- 0x3b,0x58,0x95,0x99,0x3e,0x5b,0x99,0x99,0x3f,0x5b,0x99,0x99,0x93,0x96,0x9c,
- 0xee,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x23,0x23,0x23,0xff,0x01,0x01,
- 0x02,0xfd,0x30,0x42,0x6a,0xb3,0x50,0x6c,0xae,0x99,0x51,0x6e,0xb1,0x99,0x51,
- 0x6e,0xb0,0x99,0x4e,0x6b,0xad,0x99,0x4d,0x6a,0xac,0x99,0x4f,0x6c,0xae,0x99,
- 0x52,0x6f,0xb1,0x99,0xb7,0xb7,0xb7,0xff,0xe5,0xe5,0xe7,0xff,0xf7,0xf7,0xf7,
- 0xff,0x81,0x81,0x82,0xff,0x4e,0x5d,0x82,0xff,0x15,0x2c,0x5f,0xff,0x82,0x12,
- 0x29,0x5d,0xff,0x1d,0x14,0x2b,0x60,0xff,0x17,0x2e,0x63,0xff,0x19,0x30,0x66,
- 0xff,0x1b,0x33,0x69,0xff,0x1c,0x35,0x6b,0xff,0x1f,0x38,0x6e,0xff,0x23,0x3c,
- 0x75,0xff,0x26,0x40,0x7a,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x44,0x7d,0xff,0x2c,0x45,0x80,0xff,0x2e,0x47,0x82,0xff,0x30,0x4a,0x85,0xff,
- 0x32,0x4c,0x88,0xff,0x34,0x4e,0x8b,0xff,0x39,0x55,0x92,0xff,0x3c,0x58,0x96,
- 0xff,0x3e,0x5b,0x99,0xff,0x40,0x5d,0x9c,0xff,0x42,0x60,0x9e,0xff,0x45,0x62,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x46,0x62,0xa2,0xff,0x47,0x64,0xa5,0xff,0x11,
- 0x11,0x11,0xff,0xfe,0xfd,0xfd,0xff,0xef,0xee,0xf2,0xff,0x52,0x52,0x57,0x3d,
- 0x83,0xff,0xff,0xff,0x00,0x03,0xe5,0xe5,0xeb,0x66,0xfd,0xfd,0xfd,0x66,0x00,
- 0x00,0x00,0x66,0x85,0x12,0x29,0x5d,0x66,0x51,0x13,0x2a,0x5f,0x66,0x15,0x2c,
- 0x61,0x66,0x17,0x2e,0x64,0x66,0x19,0x31,0x66,0x66,0x1a,0x32,0x68,0x66,0x1c,
- 0x34,0x6b,0x66,0x1f,0x38,0x70,0x66,0x22,0x3b,0x74,0x66,0x24,0x3e,0x78,0x66,
- 0x26,0x40,0x7a,0x66,0x27,0x41,0x7b,0x66,0x27,0x41,0x7a,0x66,0x28,0x42,0x7b,
- 0x66,0x2a,0x45,0x7e,0x66,0x2c,0x46,0x80,0x66,0x2e,0x47,0x83,0x66,0x30,0x49,
- 0x85,0x66,0x32,0x4b,0x87,0x66,0x33,0x4d,0x8a,0x66,0x38,0x53,0x90,0x66,0x3a,
- 0x56,0x94,0x66,0x3c,0x58,0x96,0x66,0x3e,0x5a,0x98,0x66,0x40,0x5c,0x9a,0x66,
- 0x41,0x5e,0x9d,0x66,0x43,0x60,0x9f,0x66,0x45,0x62,0xa2,0x66,0x45,0x60,0xa0,
- 0x66,0x45,0x61,0xa1,0x66,0x47,0x63,0xa4,0x66,0x5e,0x77,0xaf,0x59,0x93,0x92,
- 0x95,0xab,0xe9,0xe8,0xeb,0xc1,0xef,0xee,0xf0,0xc2,0xfa,0xf9,0xfa,0xa1,0xf7,
- 0xf6,0xf4,0xb3,0xb6,0xbb,0xc7,0x9b,0x2d,0x42,0x6f,0x99,0x00,0x16,0x4f,0x99,
- 0x13,0x2a,0x5e,0x99,0x12,0x29,0x5d,0x99,0x13,0x2a,0x5f,0x99,0x15,0x2d,0x61,
- 0x99,0x07,0x0e,0x1f,0xd3,0x30,0x33,0x3c,0xe7,0xfc,0xfc,0xfc,0xff,0xee,0xee,
- 0xee,0xff,0x1c,0x1e,0x22,0xf2,0x06,0x0b,0x15,0xe3,0x07,0x0d,0x19,0xdf,0x20,
- 0x35,0x66,0xa2,0x27,0x40,0x79,0x99,0x28,0x42,0x7b,0x99,0x2a,0x44,0x7e,0x99,
- 0x2d,0x46,0x81,0x99,0x2f,0x48,0x83,0x99,0x31,0x4a,0x86,0x99,0x34,0x4f,0x8c,
- 0x99,0x37,0x52,0x8f,0x99,0x3a,0x56,0x93,0x99,0x3c,0x58,0x96,0x99,0x3e,0x5a,
- 0x99,0x99,0x40,0x5d,0x9b,0x99,0x41,0x57,0x84,0xac,0xe0,0xe0,0xe1,0xfe,0x88,
- 0x88,0x88,0xff,0x00,0x00,0x00,0xff,0x11,0x18,0x28,0xdb,0x49,0x65,0xa6,0x99,
- 0x50,0x6d,0xae,0x99,0x52,0x6e,0xb0,0x99,0x52,0x6f,0xb1,0x99,0x50,0x6d,0xaf,
- 0x99,0x4e,0x6b,0xad,0x99,0x4d,0x6a,0xac,0x99,0x50,0x6d,0xaf,0x98,0xb7,0xb7,
- 0xb7,0xff,0xeb,0xea,0xeb,0xff,0xec,0xea,0xec,0xff,0x58,0x58,0x59,0xff,0x15,
- 0x2c,0x5f,0xff,0x83,0x12,0x29,0x5d,0xff,0x1d,0x13,0x2a,0x5f,0xff,0x16,0x2d,
- 0x61,0xff,0x18,0x2f,0x65,0xff,0x1a,0x31,0x67,0xff,0x1c,0x35,0x6c,0xff,0x20,
- 0x39,0x72,0xff,0x23,0x3c,0x76,0xff,0x25,0x3e,0x78,0xff,0x26,0x40,0x7a,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7c,0xff,0x2b,0x45,0x7e,0xff,0x2d,0x46,0x81,
- 0xff,0x2f,0x48,0x84,0xff,0x31,0x4b,0x87,0xff,0x35,0x4f,0x8c,0xff,0x39,0x55,
- 0x92,0xff,0x3b,0x57,0x95,0xff,0x3d,0x5a,0x98,0xff,0x3f,0x5c,0x9b,0xff,0x42,
- 0x5f,0x9d,0xff,0x44,0x61,0xa0,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa1,0xff,
- 0x46,0x63,0xa4,0xff,0x11,0x11,0x11,0xff,0xfd,0xfd,0xfc,0xff,0xef,0xee,0xf0,
- 0xff,0x54,0x54,0x5a,0x39,0x83,0xff,0xff,0xff,0x00,0x03,0xe6,0xe5,0xeb,0x66,
- 0xfd,0xfc,0xfc,0x66,0x00,0x00,0x00,0x66,0x86,0x12,0x29,0x5d,0x66,0x07,0x14,
- 0x2b,0x60,0x66,0x16,0x2d,0x62,0x66,0x18,0x2f,0x65,0x66,0x1a,0x33,0x69,0x66,
- 0x1d,0x36,0x6e,0x66,0x1f,0x38,0x71,0x66,0x21,0x3a,0x74,0x66,0x82,0x23,0x3c,
- 0x75,0x66,0x47,0x24,0x3d,0x75,0x66,0x26,0x3f,0x77,0x66,0x27,0x41,0x7a,0x66,
- 0x29,0x43,0x7c,0x66,0x2b,0x45,0x7f,0x66,0x2d,0x46,0x81,0x66,0x2f,0x48,0x84,
- 0x66,0x30,0x4a,0x86,0x66,0x33,0x4d,0x89,0x66,0x37,0x53,0x8f,0x66,0x39,0x55,
- 0x92,0x66,0x3b,0x57,0x94,0x66,0x3d,0x59,0x97,0x66,0x3e,0x5b,0x99,0x66,0x40,
- 0x5d,0x9b,0x66,0x42,0x5f,0x9e,0x66,0x42,0x5e,0x9d,0x66,0x43,0x5e,0x9d,0x66,
- 0x45,0x60,0xa0,0x66,0x45,0x62,0xa2,0x66,0x47,0x64,0xa4,0x50,0x00,0x00,0x00,
- 0x66,0xe4,0xe3,0xe6,0x9b,0xde,0xdd,0xe0,0xc1,0xf4,0xf3,0xf3,0x99,0xfb,0xfb,
- 0xfa,0x99,0xf9,0xf8,0xf7,0xb3,0xd2,0xd4,0xda,0xa2,0x4c,0x5d,0x83,0x99,0x00,
- 0x13,0x4d,0x99,0x13,0x2a,0x5d,0x99,0x13,0x2a,0x5f,0x99,0x15,0x2c,0x61,0x99,
- 0x18,0x2d,0x62,0x9a,0x1c,0x33,0x68,0x99,0xc0,0xc3,0xca,0xec,0xff,0xff,0xff,
- 0xff,0x9d,0x9f,0xa4,0xf0,0x20,0x3a,0x71,0x99,0x23,0x3c,0x73,0x99,0x24,0x3d,
- 0x75,0x9a,0x27,0x40,0x79,0x99,0x29,0x43,0x7c,0x99,0x2b,0x45,0x7f,0x99,0x2c,
- 0x46,0x81,0x99,0x2f,0x48,0x84,0x99,0x31,0x4a,0x86,0x99,0x33,0x4d,0x89,0x99,
- 0x35,0x4f,0x8c,0x99,0x38,0x52,0x8f,0x99,0x39,0x55,0x93,0x99,0x3d,0x58,0x96,
- 0x99,0x3f,0x5c,0x9a,0x99,0x42,0x5e,0x9d,0x99,0x5c,0x63,0x73,0xd9,0x1c,0x1c,
- 0x1c,0xff,0x03,0x04,0x07,0xf8,0x3a,0x50,0x84,0xa7,0x48,0x64,0xa5,0x99,0x4b,
- 0x68,0xaa,0x99,0x50,0x6d,0xaf,0x99,0x52,0x6f,0xb1,0x99,0x53,0x70,0xb2,0x99,
- 0x51,0x6e,0xb0,0x99,0x4d,0x6a,0xac,0x99,0x5c,0x77,0xb3,0x7a,0xd0,0xd0,0xd0,
- 0xff,0xe7,0xe6,0xe7,0xff,0xe7,0xe5,0xe7,0xff,0x14,0x14,0x14,0xff,0x13,0x2a,
- 0x5d,0xff,0x83,0x12,0x29,0x5d,0xff,0x07,0x12,0x29,0x5e,0xff,0x15,0x2c,0x60,
- 0xff,0x17,0x2e,0x63,0xff,0x19,0x32,0x68,0xff,0x1d,0x36,0x6e,0xff,0x20,0x39,
- 0x71,0xff,0x22,0x3b,0x74,0xff,0x82,0x23,0x3d,0x75,0xff,0x14,0x25,0x3f,0x77,
- 0xff,0x28,0x41,0x7b,0xff,0x2a,0x44,0x7d,0xff,0x2c,0x46,0x80,0xff,0x2e,0x48,
- 0x83,0xff,0x30,0x4a,0x85,0xff,0x34,0x4f,0x8b,0xff,0x38,0x54,0x91,0xff,0x3a,
- 0x56,0x93,0xff,0x3c,0x59,0x97,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9c,0xff,
- 0x43,0x5f,0x9e,0xff,0x43,0x5d,0x9d,0xff,0x44,0x60,0xa0,0xff,0x46,0x62,0xa2,
- 0xff,0x11,0x11,0x11,0xff,0xfd,0xfc,0xfc,0xff,0xef,0xee,0xf1,0xff,0x53,0x53,
- 0x58,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe5,0xe4,0xeb,0x66,0xfc,0xfc,0xfc,
- 0x66,0x00,0x00,0x00,0x66,0x86,0x12,0x29,0x5d,0x66,0x05,0x13,0x2a,0x5f,0x66,
- 0x15,0x2e,0x63,0x66,0x17,0x31,0x67,0x66,0x19,0x33,0x6b,0x66,0x1b,0x35,0x6d,
- 0x66,0x82,0x1e,0x37,0x6f,0x66,0x48,0x1f,0x38,0x6f,0x66,0x21,0x3a,0x71,0x66,
- 0x22,0x3c,0x73,0x66,0x24,0x3e,0x76,0x66,0x26,0x40,0x78,0x66,0x28,0x42,0x7b,
- 0x66,0x2a,0x44,0x7d,0x66,0x2c,0x45,0x80,0x66,0x2e,0x47,0x82,0x66,0x2f,0x49,
- 0x84,0x66,0x31,0x4a,0x86,0x66,0x34,0x4e,0x8a,0x66,0x38,0x54,0x90,0x66,0x39,
- 0x55,0x93,0x66,0x3b,0x58,0x95,0x66,0x3d,0x5a,0x97,0x66,0x3f,0x5c,0x9a,0x66,
- 0x40,0x5c,0x9a,0x66,0x3f,0x5a,0x99,0x66,0x41,0x5c,0x9c,0x66,0x43,0x5f,0x9e,
- 0x66,0x45,0x60,0xa0,0x66,0x46,0x62,0xa3,0x50,0x00,0x00,0x00,0x66,0xf2,0xf1,
- 0xf1,0x66,0xd4,0xd3,0xd6,0x8b,0xdc,0xdb,0xdf,0x95,0xef,0xee,0xf0,0x99,0xfb,
- 0xfa,0xfa,0x99,0xf9,0xf7,0xf7,0xb2,0xe4,0xe3,0xe7,0xa8,0x6e,0x7a,0x99,0x9a,
- 0x01,0x1a,0x52,0x99,0x10,0x27,0x5d,0x99,0x16,0x2d,0x62,0x99,0x18,0x2f,0x64,
- 0x99,0x19,0x31,0x67,0x99,0x5b,0x67,0x84,0xbc,0xfd,0xfd,0xfd,0xff,0xf8,0xf8,
- 0xf8,0xff,0x66,0x74,0x94,0xb9,0x23,0x3d,0x74,0x99,0x24,0x3f,0x76,0x99,0x27,
- 0x41,0x79,0x99,0x29,0x43,0x7c,0x99,0x2b,0x44,0x7f,0x99,0x2d,0x47,0x82,0x99,
- 0x2f,0x49,0x84,0x99,0x31,0x4b,0x87,0x99,0x33,0x4d,0x89,0x99,0x35,0x4f,0x8c,
- 0x99,0x37,0x51,0x8e,0x99,0x39,0x54,0x92,0x99,0x3b,0x56,0x94,0x99,0x3d,0x57,
- 0x95,0x99,0x40,0x5b,0x9a,0x99,0x3e,0x58,0x92,0x9e,0x06,0x08,0x0d,0xf2,0x1a,
- 0x23,0x39,0xcf,0x4c,0x69,0xaa,0x99,0x4c,0x68,0xa9,0x99,0x4b,0x68,0xa9,0x99,
- 0x4d,0x6a,0xac,0x99,0x4f,0x6c,0xae,0x99,0x51,0x6e,0xb0,0x99,0x53,0x70,0xb2,
- 0x99,0x51,0x6e,0xb0,0x8a,0xdf,0xe3,0xed,0x50,0xd7,0xd7,0xd7,0xff,0xdb,0xda,
- 0xdc,0xff,0xf1,0xf0,0xf1,0xff,0x01,0x01,0x01,0xff,0x85,0x12,0x29,0x5d,0xff,
- 0x1c,0x13,0x2b,0x5f,0xff,0x16,0x2f,0x65,0xff,0x19,0x33,0x6a,0xff,0x1c,0x36,
- 0x6d,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x71,0xff,0x22,
- 0x3c,0x73,0xff,0x25,0x3e,0x76,0xff,0x27,0x40,0x79,0xff,0x29,0x43,0x7c,0xff,
- 0x2b,0x45,0x7f,0xff,0x2d,0x46,0x82,0xff,0x2f,0x49,0x85,0xff,0x32,0x4c,0x88,
- 0xff,0x37,0x52,0x8f,0xff,0x39,0x55,0x93,0xff,0x3b,0x57,0x95,0xff,0x3e,0x5a,
- 0x98,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x43,
- 0x5f,0x9e,0xff,0x45,0x61,0xa1,0xff,0x11,0x11,0x11,0xff,0xfd,0xfc,0xfc,0xff,
- 0xee,0xed,0xf1,0xff,0x53,0x54,0x5a,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe5,
- 0xe4,0xea,0x66,0xfc,0xfc,0xfd,0x66,0x00,0x00,0x00,0x66,0x84,0x12,0x29,0x5d,
- 0x66,0x48,0x12,0x29,0x5e,0x66,0x12,0x2b,0x5f,0x66,0x13,0x2c,0x61,0x66,0x15,
- 0x2e,0x64,0x66,0x16,0x30,0x67,0x66,0x18,0x32,0x69,0x66,0x1a,0x32,0x69,0x66,
- 0x1b,0x33,0x69,0x66,0x1b,0x34,0x6a,0x66,0x1e,0x37,0x6d,0x66,0x1f,0x38,0x70,
- 0x66,0x21,0x3a,0x72,0x66,0x23,0x3c,0x74,0x66,0x24,0x3e,0x76,0x66,0x26,0x40,
- 0x79,0x66,0x28,0x42,0x7b,0x66,0x2a,0x44,0x7e,0x66,0x2c,0x46,0x80,0x66,0x2e,
- 0x47,0x83,0x66,0x30,0x49,0x85,0x66,0x32,0x4b,0x87,0x66,0x34,0x4f,0x8b,0x66,
- 0x38,0x54,0x91,0x66,0x3b,0x57,0x94,0x66,0x3c,0x59,0x96,0x66,0x3d,0x5a,0x97,
- 0x66,0x3c,0x57,0x96,0x66,0x3e,0x59,0x98,0x66,0x40,0x5b,0x9a,0x66,0x42,0x5d,
- 0x9d,0x66,0x44,0x5f,0x9f,0x66,0x45,0x61,0xa1,0x50,0x00,0x00,0x00,0x66,0xf1,
- 0xf1,0xf1,0x66,0xcf,0xcd,0xcf,0x66,0xda,0xd9,0xdd,0x25,0xd9,0xd8,0xdb,0x8c,
- 0xe9,0xe9,0xea,0x99,0xf9,0xf8,0xf8,0x99,0xf7,0xf7,0xf7,0xa9,0xee,0xed,0xee,
- 0xae,0x92,0x9b,0xb0,0x9b,0x16,0x2e,0x62,0x99,0x0a,0x22,0x5a,0x99,0x19,0x30,
- 0x65,0x99,0x19,0x31,0x67,0x99,0x1b,0x34,0x69,0x99,0x89,0x8c,0x91,0xef,0xff,
- 0xff,0xff,0xff,0xe9,0xea,0xeb,0xfa,0x74,0x85,0xa8,0xb4,0x25,0x3f,0x77,0x99,
- 0x27,0x41,0x7a,0x99,0x29,0x43,0x7c,0x99,0x2b,0x44,0x7e,0x99,0x2d,0x47,0x82,
- 0x99,0x2f,0x49,0x84,0x99,0x31,0x4b,0x87,0x99,0x34,0x4d,0x8a,0x99,0x35,0x4f,
- 0x8d,0x99,0x37,0x52,0x8f,0x99,0x4c,0x65,0x9c,0x9f,0x3b,0x55,0x94,0x99,0x3e,
- 0x58,0x97,0x99,0x40,0x5a,0x99,0x99,0x42,0x5c,0x9b,0x99,0x2b,0x3d,0x66,0xb2,
- 0x3a,0x52,0x87,0xa4,0x4a,0x67,0xa7,0x99,0x4e,0x6b,0xac,0x99,0x50,0x6d,0xae,
- 0x99,0x4f,0x6c,0xae,0x99,0x82,0x4d,0x6a,0xac,0x99,0x07,0x4f,0x6c,0xae,0x96,
- 0xb3,0xbf,0xdb,0x54,0xf2,0xf1,0xf2,0x8b,0xca,0xca,0xca,0xff,0xdd,0xdd,0xde,
- 0xff,0xf5,0xf4,0xf5,0xff,0x00,0x00,0x00,0xff,0x85,0x12,0x29,0x5d,0xff,0x1c,
- 0x13,0x2c,0x62,0xff,0x16,0x30,0x67,0xff,0x18,0x32,0x69,0xff,0x1b,0x34,0x6c,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6c,0xff,0x1f,0x39,0x70,0xff,0x22,0x3b,
- 0x72,0xff,0x24,0x3d,0x75,0xff,0x26,0x3f,0x78,0xff,0x28,0x42,0x7b,0xff,0x2a,
- 0x44,0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,0x48,0x84,0xff,0x31,0x4a,0x86,0xff,
- 0x34,0x4e,0x8b,0xff,0x38,0x54,0x92,0xff,0x3a,0x57,0x94,0xff,0x3d,0x5a,0x97,
- 0xff,0x3f,0x5b,0x99,0xff,0x3f,0x59,0x98,0xff,0x40,0x5b,0x9b,0xff,0x43,0x5d,
- 0x9d,0xff,0x45,0x60,0xa0,0xff,0x11,0x11,0x11,0xff,0xfc,0xfc,0xfc,0xff,0xed,
- 0xed,0xf0,0xff,0x52,0x52,0x58,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe5,0xe4,
- 0xea,0x66,0xfc,0xfc,0xfc,0x66,0x00,0x00,0x00,0x66,0x83,0x12,0x29,0x5d,0x66,
- 0x01,0x13,0x2a,0x5f,0x66,0x83,0x13,0x2c,0x62,0x66,0x4e,0x13,0x2c,0x63,0x66,
- 0x15,0x2e,0x64,0x66,0x16,0x2e,0x63,0x66,0x18,0x2f,0x64,0x66,0x19,0x31,0x67,
- 0x66,0x1b,0x33,0x69,0x66,0x1c,0x35,0x6c,0x66,0x1e,0x37,0x6e,0x66,0x20,0x39,
- 0x70,0x66,0x22,0x3b,0x72,0x66,0x23,0x3d,0x75,0x66,0x25,0x3f,0x77,0x66,0x27,
- 0x41,0x7a,0x66,0x29,0x43,0x7c,0x66,0x2b,0x45,0x7e,0x66,0x2d,0x46,0x81,0x66,
- 0x2e,0x48,0x83,0x66,0x30,0x4a,0x86,0x66,0x32,0x4c,0x88,0x66,0x34,0x4e,0x8b,
- 0x66,0x38,0x53,0x90,0x66,0x3a,0x57,0x94,0x66,0x3a,0x55,0x93,0x66,0x3b,0x56,
- 0x94,0x66,0x3d,0x58,0x96,0x66,0x3f,0x5a,0x99,0x66,0x41,0x5c,0x9b,0x66,0x43,
- 0x5e,0x9d,0x66,0x44,0x60,0xa0,0x50,0x00,0x00,0x00,0x66,0xf1,0xf1,0xf1,0x66,
- 0xcf,0xcd,0xce,0x66,0xda,0xd9,0xdd,0x00,0xda,0xd9,0xdd,0x0f,0xd6,0xd5,0xd9,
- 0x74,0xe4,0xe3,0xe4,0x98,0xf7,0xf6,0xf6,0x99,0xf8,0xf6,0xf7,0xa0,0xf5,0xf4,
- 0xf4,0xb0,0xb6,0xbc,0xc8,0x99,0x33,0x47,0x75,0x99,0x02,0x1c,0x57,0x99,0x1c,
- 0x32,0x68,0x99,0x1c,0x34,0x6a,0x99,0x15,0x26,0x4b,0xaf,0x98,0x98,0x98,0xff,
- 0xff,0xff,0xff,0xff,0xfb,0xfc,0xfc,0xfd,0xa9,0xb3,0xca,0xc9,0x40,0x58,0x8b,
- 0xa1,0x29,0x43,0x7c,0x99,0x2c,0x45,0x80,0x99,0x2e,0x47,0x82,0x99,0x30,0x49,
- 0x84,0x99,0x32,0x4c,0x88,0x99,0x35,0x4f,0x8c,0x99,0x3d,0x57,0x93,0x9b,0x94,
- 0xa3,0xc5,0xbb,0xea,0xee,0xf4,0xee,0xad,0xb9,0xd3,0xc7,0x43,0x5e,0x9c,0x9a,
- 0x42,0x5e,0x9d,0x99,0x44,0x61,0xa0,0x99,0x46,0x62,0xa2,0x99,0x45,0x61,0xa1,
- 0x99,0x47,0x64,0xa4,0x99,0x4a,0x67,0xa8,0x99,0x4f,0x6c,0xad,0x99,0x52,0x6f,
- 0xb1,0x99,0x53,0x70,0xb2,0x99,0x50,0x6d,0xaf,0x99,0x7b,0x90,0xc0,0x59,0xf2,
- 0xf3,0xf2,0x89,0xde,0xdb,0xde,0x99,0xbf,0xbf,0xc0,0xff,0xe2,0xe0,0xe2,0xff,
- 0xf5,0xf5,0xf5,0xff,0x00,0x00,0x00,0xff,0x83,0x12,0x29,0x5d,0xff,0x1e,0x12,
- 0x29,0x5e,0xff,0x13,0x2b,0x61,0xff,0x13,0x2d,0x63,0xff,0x15,0x2e,0x65,0xff,
- 0x18,0x31,0x68,0xff,0x19,0x31,0x68,0xff,0x1b,0x33,0x68,0xff,0x1c,0x35,0x6b,
- 0xff,0x1e,0x38,0x6e,0xff,0x20,0x3a,0x71,0xff,0x23,0x3c,0x74,0xff,0x25,0x3f,
- 0x77,0xff,0x27,0x41,0x7a,0xff,0x29,0x43,0x7c,0xff,0x2b,0x45,0x7f,0xff,0x2e,
- 0x47,0x82,0xff,0x30,0x49,0x85,0xff,0x32,0x4c,0x88,0xff,0x36,0x51,0x8e,0xff,
- 0x3a,0x56,0x93,0xff,0x3c,0x59,0x96,0xff,0x3c,0x58,0x96,0xff,0x3d,0x58,0x96,
- 0xff,0x40,0x5a,0x99,0xff,0x42,0x5d,0x9c,0xff,0x44,0x5f,0x9f,0xff,0x11,0x11,
- 0x11,0xff,0xfc,0xfc,0xfc,0xff,0xed,0xec,0xef,0xff,0x50,0x4f,0x54,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe4,0xe3,0xe9,0x66,0xfc,0xfc,0xfc,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x13,0x2a,0x60,0x66,0x84,0x13,0x2c,0x62,0x66,0x21,0x13,0x2c,
- 0x61,0x66,0x12,0x2a,0x5f,0x66,0x13,0x2a,0x5e,0x66,0x14,0x2c,0x60,0x66,0x17,
- 0x2e,0x63,0x66,0x18,0x30,0x65,0x66,0x1a,0x32,0x68,0x66,0x1b,0x34,0x6a,0x66,
- 0x1d,0x36,0x6d,0x66,0x1f,0x38,0x6f,0x66,0x20,0x3a,0x71,0x66,0x22,0x3c,0x74,
- 0x66,0x24,0x3e,0x76,0x66,0x26,0x40,0x79,0x66,0x29,0x42,0x7c,0x66,0x29,0x43,
- 0x7d,0x66,0x2c,0x45,0x80,0x66,0x2d,0x46,0x82,0x66,0x2f,0x49,0x84,0x66,0x31,
- 0x4b,0x87,0x66,0x33,0x4c,0x89,0x66,0x34,0x4e,0x8b,0x66,0x37,0x51,0x8e,0x66,
- 0x38,0x52,0x90,0x66,0x3a,0x55,0x92,0x66,0x3c,0x57,0x95,0x66,0x3e,0x58,0x97,
- 0x66,0x40,0x5b,0x9a,0x66,0x42,0x5d,0x9c,0x66,0x43,0x5f,0x9e,0x50,0x00,0x00,
- 0x00,0x66,0xf1,0xf0,0xf1,0x66,0xcf,0xcd,0xce,0x66,0x82,0xda,0xd9,0xdd,0x00,
- 0x0d,0xda,0xd9,0xdc,0x00,0xd6,0xd5,0xd8,0x5c,0xde,0xdd,0xdf,0x95,0xf3,0xf1,
- 0xf2,0x99,0xf8,0xf8,0xf8,0x99,0xf8,0xf7,0xf5,0xb2,0xd2,0xd4,0xdb,0xa0,0x52,
- 0x63,0x89,0x99,0x03,0x1d,0x59,0x99,0x1b,0x35,0x6b,0x99,0x1e,0x37,0x6d,0x99,
- 0x0f,0x18,0x2d,0xcb,0x90,0x90,0x90,0xff,0x82,0xff,0xff,0xff,0xff,0x08,0xed,
- 0xef,0xf4,0xf1,0xaf,0xb9,0xcf,0xcd,0x84,0x92,0xb5,0xb7,0x69,0x7b,0xa5,0xad,
- 0x66,0x79,0xa5,0xab,0x7e,0x8e,0xb3,0xb3,0xa6,0xb2,0xcd,0xc5,0xe1,0xe5,0xee,
- 0xe7,0x82,0xff,0xff,0xff,0xff,0x07,0xd7,0xdc,0xe8,0xe3,0x48,0x64,0xa1,0x9b,
- 0x43,0x60,0x9f,0x99,0x45,0x62,0xa2,0x99,0x48,0x64,0xa4,0x99,0x4a,0x66,0xa7,
- 0x99,0x4a,0x68,0xa8,0x99,0x82,0x4b,0x68,0xa9,0x99,0x0a,0x4f,0x6c,0xae,0x99,
- 0x51,0x6e,0xb0,0x99,0x6c,0x84,0xbc,0x6e,0xf1,0xf2,0xf4,0x73,0xe2,0xe1,0xe2,
- 0x99,0xd2,0xd0,0xd2,0x68,0xb9,0xb9,0xb9,0xff,0xe2,0xe0,0xe1,0xff,0xf5,0xf4,
- 0xf5,0xff,0x00,0x00,0x00,0xff,0x82,0x12,0x29,0x5d,0xff,0x01,0x12,0x2a,0x5f,
- 0xff,0x83,0x13,0x2c,0x62,0xff,0x1b,0x15,0x2d,0x64,0xff,0x16,0x2e,0x64,0xff,
- 0x18,0x2f,0x64,0xff,0x1a,0x32,0x67,0xff,0x1b,0x34,0x6b,0xff,0x1e,0x37,0x6d,
- 0xff,0x20,0x39,0x70,0xff,0x22,0x3c,0x73,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,
- 0x79,0xff,0x28,0x43,0x7b,0xff,0x2b,0x45,0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,
- 0x49,0x84,0xff,0x31,0x4b,0x87,0xff,0x33,0x4d,0x8a,0xff,0x38,0x53,0x90,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x55,0x93,0xff,0x3c,0x57,0x95,0xff,0x3f,0x5a,0x98,
- 0xff,0x41,0x5c,0x9b,0xff,0x43,0x5e,0x9e,0xff,0x11,0x11,0x11,0xff,0xfd,0xfc,
- 0xfb,0xff,0xed,0xec,0xee,0xff,0x4c,0x4c,0x52,0x3a,0x83,0xff,0xff,0xff,0x00,
- 0x03,0xe3,0xe3,0xe8,0x66,0xfc,0xfb,0xfc,0x66,0x00,0x00,0x00,0x66,0x85,0x13,
- 0x2c,0x62,0x66,0x01,0x13,0x2b,0x60,0x66,0x83,0x12,0x29,0x5d,0x66,0x1e,0x14,
- 0x2b,0x5f,0x66,0x16,0x2d,0x61,0x66,0x17,0x2f,0x64,0x66,0x19,0x31,0x66,0x66,
- 0x1b,0x33,0x69,0x66,0x1c,0x35,0x6b,0x66,0x1e,0x36,0x6d,0x66,0x1f,0x39,0x70,
- 0x66,0x21,0x3a,0x72,0x66,0x23,0x3d,0x74,0x66,0x27,0x41,0x7b,0x66,0x2a,0x44,
- 0x7e,0x66,0x29,0x43,0x7c,0x66,0x2a,0x44,0x7e,0x66,0x2c,0x45,0x80,0x66,0x2e,
- 0x48,0x83,0x66,0x30,0x4a,0x85,0x66,0x32,0x4b,0x88,0x66,0x34,0x4e,0x8a,0x66,
- 0x35,0x4f,0x8c,0x66,0x37,0x51,0x8e,0x66,0x39,0x54,0x91,0x66,0x3b,0x55,0x93,
- 0x66,0x3d,0x57,0x96,0x66,0x3e,0x5a,0x98,0x66,0x41,0x5c,0x9a,0x66,0x42,0x5d,
- 0x9d,0x50,0x00,0x00,0x00,0x66,0xf0,0xf0,0xf0,0x66,0xcf,0xcc,0xce,0x66,0x82,
- 0xda,0xd9,0xdd,0x00,0x0f,0xda,0xd9,0xdc,0x00,0xd6,0xd5,0xd8,0x00,0xd5,0xd4,
- 0xd7,0x41,0xd9,0xd8,0xdb,0x92,0xec,0xeb,0xee,0x99,0xf8,0xf7,0xf8,0x99,0xf6,
- 0xf5,0xf5,0xb1,0xe4,0xe4,0xe7,0xa7,0x77,0x84,0xa1,0x9b,0x0d,0x28,0x62,0x99,
- 0x19,0x33,0x6a,0x99,0x21,0x3b,0x70,0x99,0x0a,0x11,0x22,0xd6,0x4f,0x4f,0x4f,
- 0xff,0xc5,0xc5,0xc5,0xff,0x84,0xff,0xff,0xff,0xff,0x01,0xfe,0xfe,0xff,0xfe,
- 0x83,0xff,0xff,0xff,0xff,0x15,0xee,0xf0,0xf5,0xf1,0x98,0xa0,0xaf,0xda,0x10,
- 0x13,0x18,0xef,0x1c,0x28,0x42,0xc7,0x43,0x60,0x9e,0x9a,0x45,0x62,0xa2,0x99,
- 0x48,0x64,0xa4,0x99,0x4a,0x67,0xa8,0x99,0x4d,0x6a,0xab,0x99,0x4f,0x6b,0xac,
- 0x99,0x50,0x6d,0xae,0x99,0x4e,0x6b,0xad,0x99,0x4e,0x6b,0xad,0x7d,0xea,0xec,
- 0xf0,0x67,0xe8,0xe6,0xe8,0x98,0xd3,0xd2,0xd5,0x7c,0xd4,0xd2,0xd4,0x0b,0xb7,
- 0xb7,0xb7,0xff,0xe1,0xdf,0xe0,0xff,0xf5,0xf4,0xf5,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x12,0x2a,0x5f,0xff,0x84,0x13,0x2c,0x62,0xff,0x1b,0x13,0x2b,0x60,0xff,
- 0x14,0x2c,0x60,0xff,0x17,0x2e,0x63,0xff,0x19,0x31,0x66,0xff,0x1b,0x33,0x69,
- 0xff,0x1c,0x36,0x6c,0xff,0x1f,0x38,0x6f,0xff,0x21,0x3a,0x72,0xff,0x23,0x3d,
- 0x75,0xff,0x25,0x3f,0x78,0xff,0x28,0x41,0x7a,0xff,0x2a,0x44,0x7d,0xff,0x2c,
- 0x45,0x80,0xff,0x2e,0x48,0x83,0xff,0x30,0x4a,0x86,0xff,0x33,0x4c,0x88,0xff,
- 0x35,0x4f,0x8c,0xff,0x37,0x52,0x8f,0xff,0x39,0x54,0x91,0xff,0x3b,0x56,0x94,
- 0xff,0x3e,0x58,0x97,0xff,0x40,0x5b,0x9a,0xff,0x42,0x5d,0x9d,0xff,0x11,0x11,
- 0x11,0xff,0xfc,0xfc,0xfb,0xff,0xec,0xec,0xee,0xff,0x58,0x59,0x5f,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe3,0xe3,0xe8,0x66,0xfc,0xfb,0xfb,0x66,0x00,0x00,
- 0x00,0x66,0x83,0x13,0x2c,0x62,0x66,0x02,0x13,0x2b,0x60,0x66,0x12,0x29,0x5e,
- 0x66,0x84,0x12,0x29,0x5d,0x66,0x1e,0x12,0x29,0x5e,0x66,0x14,0x2b,0x60,0x66,
- 0x16,0x2d,0x62,0x66,0x18,0x2f,0x65,0x66,0x1a,0x31,0x67,0x66,0x1b,0x33,0x6a,
- 0x66,0x1c,0x35,0x6c,0x66,0x1e,0x37,0x6e,0x66,0x20,0x39,0x70,0x66,0x24,0x3d,
- 0x76,0x66,0x27,0x40,0x7b,0x66,0x29,0x43,0x7d,0x66,0x2a,0x44,0x7f,0x66,0x29,
- 0x44,0x7d,0x66,0x2a,0x45,0x7e,0x66,0x2d,0x46,0x81,0x66,0x2f,0x48,0x84,0x66,
- 0x30,0x4a,0x86,0x66,0x32,0x4c,0x88,0x66,0x34,0x4e,0x8b,0x66,0x36,0x50,0x8d,
- 0x66,0x38,0x52,0x8f,0x66,0x3a,0x54,0x92,0x66,0x3b,0x56,0x94,0x66,0x3d,0x58,
- 0x97,0x66,0x3f,0x5a,0x99,0x66,0x41,0x5c,0x9b,0x50,0x00,0x00,0x00,0x66,0xf0,
- 0xf0,0xf0,0x66,0xce,0xcc,0xcd,0x66,0x82,0xda,0xd9,0xdd,0x00,0x18,0xda,0xd9,
- 0xdc,0x00,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0xd6,0xd5,0xd8,0x28,0xd5,
- 0xd5,0xd8,0x8d,0xe7,0xe5,0xe7,0x99,0xf7,0xf6,0xf7,0x99,0xf5,0xf5,0xf5,0xa8,
- 0xee,0xee,0xed,0xac,0x9b,0xa5,0xba,0x9c,0x26,0x3f,0x75,0x99,0x16,0x32,0x6f,
- 0x99,0x26,0x3e,0x78,0x9a,0x0c,0x14,0x27,0xd3,0x03,0x03,0x03,0xff,0x39,0x39,
- 0x39,0xff,0x80,0x81,0x83,0xf8,0xcb,0xce,0xd2,0xf2,0xf2,0xf3,0xf5,0xf9,0xf7,
- 0xf8,0xf9,0xfb,0xe2,0xe4,0xea,0xef,0xaf,0xb6,0xc3,0xdd,0x6b,0x73,0x85,0xd6,
- 0x17,0x1b,0x25,0xe8,0x82,0x00,0x00,0x00,0xff,0x12,0x0d,0x12,0x1f,0xe1,0x41,
- 0x5d,0x9a,0x9b,0x45,0x63,0xa2,0x99,0x48,0x65,0xa5,0x99,0x4b,0x67,0xa8,0x99,
- 0x4d,0x69,0xaa,0x99,0x4f,0x6d,0xad,0x99,0x52,0x6f,0xb0,0x99,0x51,0x6e,0xb0,
- 0x92,0xd0,0xd6,0xe5,0x5d,0xeb,0xeb,0xeb,0x92,0xd3,0xd2,0xd5,0x8e,0xd0,0xce,
- 0xd2,0x2e,0xd3,0xd2,0xd4,0x03,0xb7,0xb7,0xb7,0xff,0xe0,0xdf,0xe0,0xff,0xf5,
- 0xf4,0xf4,0xff,0x00,0x00,0x00,0xff,0x85,0x13,0x2c,0x62,0xff,0x1c,0x13,0x2a,
- 0x5f,0xff,0x12,0x29,0x5d,0xff,0x13,0x2b,0x5f,0xff,0x16,0x2d,0x62,0xff,0x18,
- 0x30,0x65,0xff,0x1a,0x32,0x68,0xff,0x1b,0x34,0x6b,0xff,0x1e,0x37,0x6e,0xff,
- 0x20,0x39,0x71,0xff,0x22,0x3c,0x73,0xff,0x24,0x3e,0x76,0xff,0x29,0x43,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2b,0x45,0x7f,0xff,0x2d,0x47,0x82,0xff,0x30,0x49,
- 0x85,0xff,0x32,0x4c,0x87,0xff,0x34,0x4e,0x8a,0xff,0x36,0x50,0x8d,0xff,0x38,
- 0x53,0x90,0xff,0x3b,0x55,0x93,0xff,0x3d,0x58,0x96,0xff,0x3f,0x5a,0x99,0xff,
- 0x42,0x5c,0x9c,0xff,0x11,0x11,0x11,0xff,0xfb,0xfb,0xfb,0xff,0xeb,0xeb,0xee,
- 0xff,0x4c,0x4c,0x50,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe2,0xe2,0xe8,0x66,
- 0xfb,0xfa,0xfb,0x66,0x00,0x00,0x00,0x66,0x82,0x0d,0x26,0x5d,0x66,0x01,0x0c,
- 0x25,0x5b,0x66,0x87,0x0c,0x24,0x59,0x66,0x1d,0x0d,0x24,0x5a,0x66,0x0f,0x27,
- 0x5d,0x66,0x10,0x29,0x5f,0x66,0x13,0x2b,0x62,0x66,0x14,0x2d,0x64,0x66,0x16,
- 0x2f,0x66,0x66,0x17,0x31,0x69,0x66,0x1a,0x34,0x6e,0x66,0x1e,0x38,0x74,0x66,
- 0x20,0x3a,0x76,0x66,0x22,0x3c,0x78,0x66,0x24,0x3e,0x7b,0x66,0x26,0x40,0x7d,
- 0x66,0x26,0x41,0x7d,0x66,0x27,0x41,0x7d,0x66,0x28,0x42,0x7f,0x66,0x2a,0x44,
- 0x82,0x66,0x2c,0x46,0x84,0x66,0x2e,0x48,0x86,0x66,0x30,0x4a,0x89,0x66,0x32,
- 0x4c,0x8b,0x66,0x34,0x4f,0x8e,0x66,0x38,0x53,0x92,0x66,0x39,0x54,0x94,0x66,
- 0x3b,0x56,0x96,0x66,0x3c,0x58,0x99,0x50,0x00,0x00,0x00,0x66,0xf0,0xf0,0xf0,
- 0x66,0xcd,0xcc,0xcd,0x66,0x82,0xda,0xd9,0xdd,0x00,0x10,0xda,0xd9,0xdc,0x00,
- 0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0xd6,0xd5,0xd8,0x00,0xd6,0xd5,0xd8,
- 0x11,0xd3,0xd1,0xd3,0x77,0xe2,0xe0,0xe2,0x98,0xf4,0xf3,0xf4,0x99,0xf5,0xf5,
- 0xf5,0x9f,0xf5,0xf3,0xf2,0xae,0xba,0xbf,0xcd,0x99,0x41,0x57,0x88,0x99,0x10,
- 0x2d,0x6d,0x99,0x28,0x42,0x7b,0x99,0x18,0x26,0x48,0xb9,0x06,0x0a,0x13,0xe8,
- 0x84,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x01,0xfe,0x83,0x00,0x00,0x00,0xff,
- 0x14,0x05,0x08,0x0d,0xf1,0x1b,0x26,0x40,0xc8,0x3f,0x5a,0x96,0x9c,0x44,0x61,
- 0xa1,0x99,0x46,0x63,0xa3,0x99,0x49,0x65,0xa5,0x99,0x4a,0x68,0xa7,0x99,0x4c,
- 0x68,0xaa,0x99,0x4c,0x69,0xab,0x99,0x4d,0x6a,0xac,0x99,0xa9,0xb6,0xd5,0x5d,
- 0xf1,0xf0,0xf0,0x90,0xd7,0xd6,0xd8,0x99,0xd1,0xcf,0xd2,0x34,0xd0,0xcf,0xd2,
- 0x03,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xe0,0xde,0xdf,0xff,0xf5,0xf4,
- 0xf4,0xff,0x00,0x00,0x00,0xff,0x84,0x13,0x2c,0x62,0xff,0x01,0x12,0x2a,0x5e,
- 0xff,0x82,0x12,0x29,0x5d,0xff,0x1a,0x13,0x2a,0x5e,0xff,0x15,0x2c,0x61,0xff,
- 0x17,0x2f,0x64,0xff,0x1a,0x31,0x67,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,
- 0xff,0x1f,0x38,0x6f,0xff,0x21,0x3b,0x72,0xff,0x25,0x3e,0x77,0xff,0x29,0x43,
- 0x7e,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2d,0x46,0x81,0xff,0x2e,
- 0x48,0x83,0xff,0x31,0x4a,0x86,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,0x8c,0xff,
- 0x38,0x52,0x8f,0xff,0x3a,0x54,0x92,0xff,0x3c,0x57,0x95,0xff,0x3e,0x59,0x98,
- 0xff,0x40,0x5b,0x9a,0xff,0x11,0x11,0x11,0xff,0xfb,0xfb,0xfb,0xff,0xeb,0xeb,
- 0xed,0xff,0x4c,0x4c,0x52,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe2,0xe2,0xe7,
- 0x66,0xfb,0xfa,0xfb,0x66,0x00,0x00,0x00,0x66,0x82,0x2a,0x3e,0x6c,0x66,0x89,
- 0x2b,0x3f,0x6d,0x66,0x1c,0x2c,0x41,0x6f,0x66,0x2e,0x43,0x71,0x66,0x30,0x44,
- 0x73,0x66,0x31,0x46,0x75,0x66,0x32,0x47,0x77,0x66,0x35,0x4a,0x7b,0x66,0x38,
- 0x4e,0x81,0x66,0x39,0x50,0x82,0x66,0x3b,0x52,0x84,0x66,0x3d,0x53,0x87,0x66,
- 0x3e,0x55,0x89,0x66,0x40,0x57,0x8b,0x66,0x42,0x59,0x8d,0x66,0x43,0x5a,0x8e,
- 0x66,0x43,0x59,0x8d,0x66,0x44,0x5a,0x8e,0x66,0x45,0x5c,0x91,0x66,0x47,0x5e,
- 0x93,0x66,0x49,0x5f,0x95,0x66,0x4b,0x61,0x97,0x66,0x4b,0x62,0x99,0x66,0x42,
- 0x5a,0x93,0x66,0x49,0x61,0x98,0x66,0x4b,0x63,0x9a,0x66,0x4d,0x65,0x9c,0x54,
- 0x00,0x00,0x00,0x66,0xf0,0xef,0xef,0x66,0xce,0xcb,0xcd,0x66,0x82,0xda,0xd9,
- 0xdd,0x00,0x03,0xda,0xd9,0xdc,0x00,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,
- 0x82,0xd6,0xd5,0xd8,0x00,0x27,0xd7,0xd5,0xd7,0x00,0xd3,0xcf,0xd3,0x5d,0xdc,
- 0xda,0xdd,0x95,0xf0,0xf0,0xf0,0x99,0xf7,0xf6,0xf6,0x99,0xf6,0xf4,0xf4,0xaf,
- 0xd4,0xd7,0xdd,0x9f,0x5e,0x70,0x99,0x99,0x11,0x2d,0x6e,0x99,0x29,0x43,0x7e,
- 0x99,0x2a,0x43,0x7d,0x9a,0x1d,0x2f,0x55,0xb0,0x12,0x1b,0x33,0xca,0x08,0x0c,
- 0x16,0xe5,0x02,0x03,0x06,0xf7,0x02,0x02,0x04,0xfa,0x06,0x09,0x11,0xec,0x13,
- 0x1c,0x30,0xd1,0x23,0x33,0x57,0xb7,0x39,0x53,0x8b,0x9f,0x40,0x5c,0x9c,0x99,
- 0x41,0x5f,0x9d,0x99,0x44,0x60,0xa0,0x99,0x44,0x61,0xa0,0x99,0x46,0x61,0xa1,
- 0x99,0x47,0x64,0xa4,0x99,0x48,0x65,0xa6,0x99,0x4b,0x67,0xa9,0x99,0x73,0x89,
- 0xbb,0x62,0xf1,0xf1,0xf1,0x7a,0xdb,0xd9,0xdb,0x99,0xce,0xcc,0xce,0x54,0xd1,
- 0xd0,0xd1,0x0b,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,
- 0xe0,0xde,0xe0,0xff,0xf4,0xf3,0xf4,0xff,0x00,0x00,0x00,0xff,0x83,0x13,0x2c,
- 0x62,0xff,0x01,0x12,0x2a,0x5e,0xff,0x84,0x12,0x29,0x5d,0xff,0x19,0x14,0x2c,
- 0x60,0xff,0x16,0x2e,0x62,0xff,0x18,0x30,0x66,0xff,0x1b,0x33,0x69,0xff,0x1c,
- 0x35,0x6b,0xff,0x1e,0x37,0x6e,0xff,0x20,0x3a,0x71,0xff,0x25,0x3f,0x78,0xff,
- 0x28,0x42,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7f,
- 0xff,0x2d,0x47,0x82,0xff,0x30,0x49,0x85,0xff,0x32,0x4c,0x88,0xff,0x34,0x4e,
- 0x8b,0xff,0x37,0x51,0x8e,0xff,0x39,0x53,0x90,0xff,0x3b,0x55,0x94,0xff,0x3d,
- 0x58,0x96,0xff,0x40,0x5a,0x99,0xff,0x11,0x11,0x11,0xff,0xfb,0xfb,0xfb,0xff,
- 0xeb,0xea,0xed,0xff,0x4e,0x4f,0x54,0x3a,0x83,0xff,0xff,0xff,0x00,0x06,0xe1,
- 0xe1,0xe6,0x66,0xfb,0xfa,0xfb,0x66,0x00,0x00,0x00,0x66,0xce,0xd0,0xd0,0x5d,
- 0xd3,0xd5,0xd5,0x4e,0xe1,0xe2,0xe4,0x4c,0x8a,0xdf,0xe0,0xe2,0x4c,0x01,0xe0,
- 0xe0,0xe2,0x4c,0x82,0xdf,0xe0,0xe2,0x4c,0x04,0xe0,0xe1,0xe2,0x4c,0xe0,0xe1,
- 0xe3,0x4c,0xe0,0xe1,0xe2,0x4c,0xe0,0xe0,0xe2,0x4c,0x8a,0xe0,0xe1,0xe3,0x4c,
- 0x09,0xe3,0xe4,0xe5,0x4c,0xd4,0xd6,0xdb,0x4c,0x64,0x70,0x89,0x4c,0x9f,0xa1,
- 0xa4,0x4c,0xa5,0xa5,0xa7,0x4e,0xa7,0xa8,0xaa,0x3c,0x00,0x00,0x00,0x66,0xf0,
- 0xef,0xf0,0x66,0xcd,0xcc,0xcc,0x66,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,
- 0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x27,0xd7,0xd5,0xd7,
- 0x00,0xd4,0xd1,0xd4,0x00,0xd1,0xd0,0xd3,0x42,0xd6,0xd5,0xd7,0x91,0xeb,0xea,
- 0xea,0x99,0xf6,0xf5,0xf6,0x99,0xf6,0xf5,0xf4,0xb1,0xe4,0xe4,0xe6,0xa5,0x7f,
- 0x8d,0xad,0x9b,0x1d,0x38,0x77,0x99,0x28,0x43,0x7f,0x99,0x2c,0x45,0x7f,0x99,
- 0x2c,0x46,0x80,0x99,0x2f,0x49,0x84,0x99,0x31,0x4b,0x86,0x99,0x32,0x4c,0x89,
- 0x99,0x34,0x4e,0x8b,0x99,0x39,0x54,0x91,0x99,0x3b,0x57,0x94,0x99,0x3d,0x59,
- 0x97,0x99,0x3f,0x5b,0x98,0x99,0x40,0x5c,0x9a,0x99,0x42,0x5d,0x9d,0x99,0x44,
- 0x5f,0x9e,0x99,0x45,0x60,0xa1,0x99,0x47,0x63,0xa4,0x99,0x48,0x65,0xa6,0x99,
- 0x5e,0x77,0xb1,0x73,0xf1,0xf1,0xf4,0x7d,0xe1,0xdf,0xe1,0x99,0xd2,0xd0,0xd2,
- 0x63,0xcd,0xcc,0xce,0x0b,0xd1,0xd0,0xd1,0x00,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,
- 0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xe0,0xde,0xe0,0xff,0xf4,0xf2,0xf4,0xff,0x00,
- 0x00,0x00,0xff,0x82,0x13,0x2c,0x62,0xff,0x01,0x12,0x29,0x5e,0xff,0x85,0x12,
- 0x29,0x5d,0xff,0x19,0x13,0x2a,0x5f,0xff,0x16,0x2d,0x62,0xff,0x18,0x2f,0x64,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x21,0x3a,
- 0x72,0xff,0x25,0x3e,0x78,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,0x7e,0xff,0x2b,
- 0x45,0x80,0xff,0x2b,0x45,0x7f,0xff,0x2d,0x46,0x81,0xff,0x2f,0x48,0x84,0xff,
- 0x31,0x4b,0x87,0xff,0x34,0x4d,0x8a,0xff,0x36,0x50,0x8d,0xff,0x38,0x52,0x8f,
- 0xff,0x3a,0x55,0x93,0xff,0x3c,0x57,0x95,0xff,0x3f,0x59,0x98,0xff,0x11,0x11,
- 0x11,0xff,0xfb,0xfb,0xfa,0xff,0xea,0xea,0xea,0xff,0x4a,0x4a,0x50,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x02,0xe2,0xe1,0xe5,0x66,0xfa,0xfa,0xfb,0x66,0xa6,0x00,
- 0x00,0x00,0x66,0x02,0xf0,0xef,0xf0,0x66,0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,
- 0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,
- 0x00,0x20,0xd7,0xd5,0xd7,0x00,0xd4,0xd1,0xd4,0x00,0xd2,0xd1,0xd4,0x00,0xd2,
- 0xd1,0xd3,0x2b,0xd3,0xd1,0xd4,0x8c,0xe6,0xe3,0xe5,0x99,0xf6,0xf5,0xf6,0x99,
- 0xf5,0xf4,0xf4,0xa8,0xed,0xed,0xed,0xaa,0xa3,0xac,0xc2,0x9d,0x33,0x4d,0x85,
- 0x99,0x20,0x3b,0x79,0x99,0x2e,0x48,0x81,0x99,0x2f,0x49,0x84,0x99,0x31,0x4b,
- 0x87,0x99,0x33,0x4c,0x89,0x99,0x35,0x50,0x8c,0x99,0x38,0x51,0x8e,0x99,0x3a,
- 0x54,0x92,0x99,0x3c,0x56,0x93,0x99,0x3d,0x58,0x96,0x99,0x40,0x5a,0x99,0x99,
- 0x42,0x5c,0x9c,0x99,0x44,0x5f,0x9e,0x99,0x45,0x60,0xa1,0x99,0x47,0x63,0xa4,
- 0x99,0x49,0x66,0xa6,0x81,0xde,0xe2,0xe9,0x62,0xe5,0xe4,0xe5,0x97,0xcf,0xcd,
- 0xd0,0x80,0xcf,0xcd,0xcf,0x20,0xd0,0xce,0xd0,0x01,0x82,0xd2,0xd1,0xd2,0x00,
- 0x05,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xdf,0xde,0xdf,0xff,0xf4,0xf3,
- 0xf3,0xff,0x00,0x00,0x00,0xff,0x82,0x10,0x28,0x5c,0xff,0x01,0x10,0x27,0x5b,
- 0xff,0x86,0x10,0x27,0x5c,0xff,0x18,0x13,0x2a,0x5f,0xff,0x15,0x2d,0x62,0xff,
- 0x17,0x2f,0x65,0xff,0x19,0x31,0x68,0xff,0x1a,0x34,0x6b,0xff,0x1f,0x38,0x72,
- 0xff,0x22,0x3c,0x76,0xff,0x24,0x3e,0x78,0xff,0x27,0x40,0x7b,0xff,0x29,0x43,
- 0x7f,0xff,0x2a,0x45,0x80,0xff,0x2a,0x44,0x7f,0xff,0x2c,0x46,0x82,0xff,0x2f,
- 0x48,0x85,0xff,0x31,0x4b,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8d,0xff,
- 0x38,0x52,0x91,0xff,0x3a,0x55,0x94,0xff,0x3d,0x57,0x96,0xff,0x11,0x11,0x11,
- 0xff,0xfa,0xfa,0xf9,0xff,0xea,0xea,0xeb,0xff,0x49,0x4a,0x4f,0x3a,0x83,0xff,
- 0xff,0xff,0x00,0x05,0xe1,0xe0,0xe5,0x66,0xfb,0xfa,0xfa,0x66,0xfa,0xfa,0xfa,
- 0x66,0xfa,0xf9,0xf9,0x66,0xf9,0xf9,0xf9,0x66,0x82,0xf8,0xf8,0xf9,0x66,0x0e,
- 0xf9,0xf8,0xf8,0x66,0xf8,0xf8,0xf7,0x66,0xf8,0xf7,0xf7,0x66,0xf8,0xf6,0xf7,
- 0x66,0xf7,0xf6,0xf7,0x66,0xf7,0xf6,0xf6,0x66,0xf6,0xf5,0xf6,0x66,0xf6,0xf6,
- 0xf6,0x66,0xf6,0xf6,0xf5,0x66,0xf5,0xf5,0xf5,0x66,0xf5,0xf4,0xf5,0x66,0xf5,
- 0xf4,0xf4,0x66,0xf4,0xf4,0xf4,0x66,0xf5,0xf4,0xf4,0x66,0x82,0xf4,0xf3,0xf4,
- 0x66,0x82,0xf4,0xf3,0xf3,0x66,0x01,0xf3,0xf2,0xf3,0x66,0x82,0xf3,0xf2,0xf2,
- 0x66,0x01,0xf2,0xf2,0xf2,0x66,0x82,0xf2,0xf1,0xf2,0x66,0x02,0xf1,0xf1,0xf1,
- 0x66,0xf2,0xf1,0xf1,0x66,0x82,0xf1,0xf0,0xf1,0x66,0x07,0xf1,0xef,0xf0,0x66,
- 0xf1,0xf0,0xf0,0x66,0xf0,0xef,0xf0,0x66,0xf0,0xf0,0xef,0x66,0xf0,0xef,0xef,
- 0x66,0xf0,0xef,0xf0,0x66,0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,0xdd,0x00,0x02,
- 0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1e,0xd7,
- 0xd5,0xd7,0x00,0xd4,0xd1,0xd4,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,
- 0xd3,0xd1,0xd4,0x14,0xd0,0xce,0xd1,0x79,0xde,0xdd,0xde,0x99,0xf3,0xf2,0xf2,
- 0x99,0xf5,0xf4,0xf5,0x9f,0xf3,0xf2,0xf1,0xab,0xbe,0xc5,0xd1,0x9a,0x4c,0x62,
- 0x93,0x99,0x19,0x36,0x76,0x99,0x30,0x4a,0x86,0x99,0x31,0x4b,0x86,0x99,0x34,
- 0x4e,0x8a,0x99,0x36,0x50,0x8c,0x99,0x38,0x52,0x8f,0x99,0x3a,0x54,0x91,0x99,
- 0x3b,0x56,0x94,0x99,0x3e,0x58,0x97,0x99,0x40,0x5a,0x99,0x99,0x41,0x5d,0x9c,
- 0x99,0x43,0x5e,0x9f,0x99,0x45,0x61,0xa2,0x99,0x47,0x64,0xa5,0x8f,0xca,0xd1,
- 0xe2,0x65,0xeb,0xea,0xea,0x95,0xd3,0xd1,0xd4,0x89,0xcf,0xce,0xd1,0x1d,0x82,
- 0xd0,0xce,0xd0,0x00,0x07,0xd2,0xd0,0xd2,0x00,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,
- 0xd4,0x00,0xb7,0xb7,0xb7,0xff,0x00,0xff,0x00,0xff,0xf4,0xf3,0xf3,0xff,0x00,
- 0x00,0x00,0xff,0x89,0x14,0x2b,0x5e,0xff,0x18,0x15,0x2d,0x60,0xff,0x18,0x2f,
- 0x64,0xff,0x1a,0x31,0x66,0xff,0x1c,0x34,0x69,0xff,0x1f,0x38,0x6e,0xff,0x23,
- 0x3b,0x74,0xff,0x25,0x3e,0x77,0xff,0x27,0x40,0x79,0xff,0x29,0x43,0x7c,0xff,
- 0x2b,0x45,0x7f,0xff,0x2e,0x48,0x82,0xff,0x2f,0x49,0x83,0xff,0x2f,0x48,0x82,
- 0xff,0x31,0x4a,0x86,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,0x8b,0xff,0x37,0x52,
- 0x8e,0xff,0x3a,0x54,0x91,0xff,0x3f,0x58,0x96,0xff,0x40,0x5a,0x98,0xff,0x11,
- 0x11,0x11,0xff,0xfa,0xfa,0xf9,0xff,0xe9,0xe8,0xeb,0xff,0x49,0x49,0x4e,0x3a,
- 0x83,0xff,0xff,0xff,0x00,0x02,0xe1,0xe0,0xe4,0x66,0xfa,0xfa,0xfa,0x66,0x83,
- 0xf9,0xf9,0xf9,0x66,0x06,0xf8,0xf8,0xf9,0x66,0xf8,0xf7,0xf8,0x66,0xf8,0xf7,
- 0xf7,0x66,0xf8,0xf8,0xf8,0x66,0xf8,0xf7,0xf7,0x66,0xf7,0xf7,0xf7,0x66,0x82,
- 0xf7,0xf6,0xf6,0x66,0x03,0xf7,0xf5,0xf6,0x66,0xf6,0xf5,0xf5,0x66,0xf5,0xf5,
- 0xf6,0x66,0x83,0xf5,0xf4,0xf5,0x66,0x02,0xf4,0xf3,0xf4,0x66,0xf4,0xf4,0xf4,
- 0x66,0x82,0xf4,0xf3,0xf3,0x66,0x08,0xf3,0xf3,0xf3,0x66,0xf3,0xf2,0xf3,0x66,
- 0xf3,0xf2,0xf2,0x66,0xf2,0xf2,0xf3,0x66,0xf2,0xf2,0xf2,0x66,0xf2,0xf1,0xf2,
- 0x66,0xf2,0xf1,0xf1,0x66,0xf2,0xf0,0xf1,0x66,0x82,0xf1,0xf0,0xf1,0x66,0x04,
- 0xf1,0xf0,0xf0,0x66,0xf1,0xef,0xf1,0x66,0xf1,0xf0,0xf0,0x66,0xf0,0xf0,0xf0,
- 0x66,0x82,0x00,0xff,0x00,0x66,0x03,0xf0,0xef,0xef,0x66,0xf0,0xef,0xf0,0x66,
- 0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,
- 0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1e,0xd7,0xd5,0xd7,0x00,0xd4,0xd1,
- 0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,
- 0xd1,0xd5,0x01,0xcd,0xcc,0xce,0x5f,0xd9,0xd7,0xd8,0x95,0xef,0xee,0xef,0x99,
- 0xf5,0xf4,0xf5,0x99,0xf5,0xf3,0xf2,0xad,0xd6,0xd8,0xde,0x9d,0x65,0x77,0xa1,
- 0x99,0x1a,0x37,0x79,0x99,0x31,0x4c,0x88,0x99,0x34,0x4e,0x8a,0x99,0x36,0x4f,
- 0x8d,0x99,0x38,0x52,0x8f,0x99,0x39,0x54,0x92,0x99,0x3b,0x57,0x95,0x99,0x3e,
- 0x59,0x98,0x99,0x40,0x5b,0x9a,0x99,0x41,0x5d,0x9c,0x99,0x44,0x60,0xa0,0x99,
- 0x45,0x61,0xa1,0x99,0x9a,0xa9,0xcb,0x5f,0xed,0xed,0xed,0x89,0xd4,0xd2,0xd5,
- 0x99,0xcc,0xc9,0xcd,0x44,0xcf,0xce,0xd0,0x05,0x82,0xd0,0xce,0xd0,0x00,0x14,
- 0xd2,0xd0,0xd2,0x00,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,
- 0xff,0x00,0xff,0x00,0xff,0xf3,0xf3,0xf3,0xff,0x00,0x00,0x00,0xff,0x9b,0xbc,
- 0xa4,0xff,0xb3,0xc7,0xbf,0xff,0xc3,0xcb,0xcb,0xff,0xc9,0xcd,0xd4,0xff,0xba,
- 0xce,0xc5,0xff,0xb5,0xca,0xbe,0xff,0xc3,0xc6,0xcd,0xff,0xb9,0xbd,0xc2,0xff,
- 0xcb,0xcf,0xd6,0xff,0xc9,0xcd,0xd4,0xff,0xb5,0xba,0xc1,0xff,0xc5,0xc9,0xd0,
- 0xff,0xc6,0xc9,0xd0,0xff,0x82,0xc6,0xc9,0xd1,0xff,0x82,0xc7,0xca,0xd2,0xff,
- 0x10,0xc7,0xcb,0xd3,0xff,0xc8,0xcb,0xd3,0xff,0xcb,0xcf,0xd8,0xff,0xcd,0xd1,
- 0xd9,0xff,0xc8,0xcb,0xd4,0xff,0xc9,0xcd,0xd5,0xff,0xcf,0xd3,0xdc,0xff,0xce,
- 0xd1,0xda,0xff,0xc9,0xcc,0xd4,0xff,0xc0,0xc5,0xd1,0xff,0x7d,0x85,0x9a,0xff,
- 0x9b,0x9f,0xa7,0xff,0x11,0x11,0x11,0xff,0xfa,0xfa,0xf8,0xff,0xe9,0xe8,0xea,
- 0xff,0x4a,0x49,0x4c,0x3a,0x83,0xff,0xff,0xff,0x00,0x0a,0xe0,0xdf,0xe4,0x66,
- 0xdf,0xdf,0xe3,0x66,0xdf,0xde,0xe2,0x66,0xde,0xde,0xe2,0x66,0xde,0xdc,0xe1,
- 0x66,0xdd,0xdc,0xe1,0x66,0xdd,0xdc,0xe0,0x66,0xdc,0xdb,0xdf,0x66,0xdb,0xda,
- 0xde,0x66,0xdb,0xda,0xdd,0x66,0x82,0xda,0xd9,0xdc,0x66,0x01,0xd9,0xd8,0xdb,
- 0x66,0x82,0xd8,0xd7,0xda,0x66,0x0a,0xd7,0xd6,0xd9,0x66,0xd7,0xd6,0xd8,0x66,
- 0xd7,0xd5,0xd7,0x66,0xd6,0xd4,0xd7,0x66,0xd5,0xd4,0xd7,0x66,0xd5,0xd4,0xd6,
- 0x66,0xd4,0xd3,0xd5,0x66,0xd4,0xd2,0xd5,0x66,0xd3,0xd1,0xd4,0x66,0xd2,0xd1,
- 0xd3,0x66,0x82,0xd2,0xd0,0xd2,0x66,0x06,0xd1,0xd0,0xd1,0x66,0xd1,0xcf,0xd0,
- 0x66,0xd1,0xcf,0xd1,0x66,0xd0,0xce,0xd0,0x66,0xcf,0xce,0xcf,0x66,0xd0,0xcd,
- 0xcf,0x66,0x82,0xcf,0xcd,0xce,0x66,0x02,0xce,0xcc,0xce,0x66,0xcd,0xcb,0xcd,
- 0x66,0x82,0xcd,0xcc,0xcd,0x66,0x83,0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,0xdd,
- 0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,
- 0x1e,0xd7,0xd6,0xd7,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,
- 0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0xcd,
- 0xcb,0xce,0x44,0xd4,0xd3,0xd4,0x90,0xe9,0xe8,0xe9,0x99,0xf5,0xf4,0xf5,0x99,
- 0xf4,0xf3,0xf3,0xaf,0xe4,0xe4,0xe7,0xa4,0x87,0x95,0xb5,0x9b,0x28,0x43,0x82,
- 0x99,0x2e,0x49,0x88,0x99,0x37,0x51,0x8d,0x99,0x38,0x52,0x90,0x99,0x39,0x54,
- 0x92,0x99,0x3d,0x57,0x95,0x99,0x3e,0x59,0x97,0x99,0x40,0x5b,0x9a,0x99,0x43,
- 0x5e,0x9d,0x99,0x44,0x60,0x9f,0x99,0x7a,0x8e,0xbb,0x6d,0xf3,0xf2,0xf2,0x88,
- 0xdb,0xd9,0xda,0x99,0xcf,0xcd,0xcf,0x4b,0xcd,0xca,0xcd,0x07,0xcf,0xce,0xd0,
- 0x00,0x82,0xd0,0xce,0xd0,0x00,0x06,0xd2,0xd0,0xd2,0x00,0xd2,0xd1,0xd2,0x00,
- 0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xdf,0xdd,0xde,0xff,0xf3,0xf3,0xf2,
- 0xff,0x9e,0x00,0x00,0x00,0xff,0x04,0x11,0x11,0x11,0xff,0xf9,0xf9,0xf9,0xff,
- 0xe9,0xe8,0xea,0xff,0x47,0x49,0x4d,0x3a,0x90,0xff,0xff,0xff,0x00,0x01,0x89,
- 0x89,0x89,0x66,0x82,0x89,0x88,0x89,0x66,0x04,0x88,0x88,0x89,0x66,0x89,0x89,
- 0x89,0x66,0x89,0x89,0x88,0x66,0x88,0x89,0x88,0x66,0x82,0x89,0x89,0x88,0x66,
- 0x05,0x88,0x89,0x89,0x66,0x89,0x89,0x89,0x66,0x89,0x89,0x88,0x66,0x89,0x89,
- 0x89,0x66,0x89,0x89,0x88,0x66,0x82,0x88,0x89,0x89,0x66,0x87,0xff,0xff,0xff,
- 0x00,0x01,0xe0,0xdf,0xe4,0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,0xda,0xdf,
- 0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,
- 0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1c,0xd7,
- 0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,
- 0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0x89,0x89,0x89,
- 0x99,0x9b,0x9a,0x9b,0xab,0xb8,0xb6,0xb7,0xd0,0xc9,0xc8,0xc9,0xd6,0xe1,0xe0,
- 0xe0,0xba,0xf2,0xf2,0xf1,0xa8,0xed,0xec,0xec,0xa8,0xa8,0xb1,0xc6,0x9c,0x3d,
- 0x56,0x8f,0x99,0x29,0x45,0x86,0x99,0x39,0x52,0x90,0x99,0x3b,0x55,0x93,0x99,
- 0x3d,0x57,0x95,0x99,0x3e,0x59,0x98,0x99,0x40,0x5b,0x9a,0x99,0x43,0x5e,0x9d,
- 0x99,0x4b,0x65,0xa3,0x74,0xf3,0xf3,0xf3,0x67,0xdf,0xde,0xdf,0x99,0xcc,0xca,
- 0xcb,0x6a,0xcd,0xcb,0xcd,0x11,0x87,0xce,0xcd,0xcf,0x00,0x03,0xb7,0xb7,0xb7,
- 0xff,0xe0,0xdf,0xe0,0xff,0xf7,0xf6,0xf7,0xff,0x9f,0xeb,0xeb,0xeb,0xff,0x03,
- 0xfc,0xfc,0xfc,0xff,0xe9,0xe9,0xeb,0xff,0x43,0x45,0x49,0x3b,0x90,0xff,0xff,
- 0xff,0x00,0x03,0x88,0x89,0x88,0x66,0x89,0x89,0x89,0x66,0x89,0x88,0x88,0x66,
- 0x82,0x89,0x89,0x88,0x66,0x84,0x89,0x89,0x89,0x66,0x07,0x88,0x89,0x89,0x66,
- 0x89,0x88,0x89,0x66,0x89,0x89,0x89,0x66,0x89,0x89,0x88,0x66,0x88,0x88,0x89,
- 0x66,0x88,0x89,0x89,0x66,0x89,0x89,0x89,0x66,0x87,0xff,0xff,0xff,0x00,0x01,
- 0xe0,0xdf,0xe4,0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,0xda,0xdf,0x00,0xda,
- 0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,
- 0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1b,0xd7,0xd6,0xd8,
- 0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,
- 0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0x88,0x89,0x88,0x99,0x89,
- 0x89,0x89,0x99,0x93,0x92,0x92,0xa2,0xb2,0xb1,0xb3,0xca,0xc5,0xc4,0xc4,0xd6,
- 0xd9,0xd8,0xd9,0xc8,0xf0,0xee,0xee,0xa4,0xf2,0xf1,0xf0,0xaa,0xc3,0xc8,0xd5,
- 0x9b,0x5a,0x6f,0xa0,0x99,0x30,0x4c,0x8f,0x99,0x3b,0x55,0x93,0x99,0x3c,0x57,
- 0x96,0x99,0x3e,0x59,0x98,0x99,0x41,0x5c,0x9b,0x99,0x4b,0x66,0xa1,0x85,0xe7,
- 0xe9,0xef,0x6d,0xe5,0xe3,0xe5,0x99,0xd0,0xce,0xcf,0x75,0xce,0xcc,0xcd,0x14,
- 0x88,0xce,0xcd,0xcf,0x00,0x04,0xb7,0xb7,0xb7,0xff,0xd6,0xd4,0xd5,0xff,0xe1,
- 0xdf,0xe0,0xff,0xdf,0xdd,0xde,0xff,0x83,0xdf,0xde,0xde,0xff,0x03,0xdf,0xdd,
- 0xdf,0xff,0xdf,0xde,0xdf,0xff,0xe0,0xde,0xdf,0xff,0x83,0xe0,0xdf,0xe0,0xff,
- 0x01,0xe1,0xe0,0xe0,0xff,0x83,0xe1,0xe0,0xe1,0xff,0x83,0xe2,0xe0,0xe2,0xff,
- 0x82,0xe3,0xe2,0xe2,0xff,0x01,0xe3,0xe1,0xe4,0xff,0x82,0xe4,0xe3,0xe4,0xff,
- 0x04,0xe4,0xe4,0xe5,0xff,0xe5,0xe4,0xe5,0xff,0xe5,0xe3,0xe5,0xff,0xe4,0xe4,
- 0xe6,0xff,0x82,0xe6,0xe4,0xe6,0xff,0x06,0xe6,0xe5,0xe7,0xff,0xe7,0xe6,0xe7,
- 0xff,0xe7,0xe5,0xe8,0xff,0xe8,0xe7,0xe9,0xff,0xe0,0xdf,0xe1,0xff,0x50,0x50,
- 0x55,0x36,0x90,0xff,0xff,0xff,0x00,0x02,0x9e,0x9e,0x9e,0x66,0x9e,0x9d,0x9d,
- 0x66,0x82,0x9e,0x9d,0x9e,0x66,0x04,0x9d,0x9d,0x9e,0x66,0x9d,0x9e,0x9e,0x66,
- 0x9e,0x9e,0x9d,0x66,0x9d,0x9e,0x9d,0x66,0x82,0x9e,0x9e,0x9e,0x66,0x03,0x9e,
- 0x9e,0x9d,0x66,0x9e,0x9e,0x9e,0x66,0x9e,0x9d,0x9e,0x66,0x82,0x9e,0x9e,0x9e,
- 0x66,0x01,0x9e,0x9d,0x9e,0x66,0x87,0xff,0xff,0xff,0x00,0x01,0xe0,0xdf,0xe4,
- 0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,
- 0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,
- 0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1b,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,
- 0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,
- 0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0x9e,0x9e,0x9e,0x99,0x9e,0x9d,0x9d,0x99,
- 0x9e,0x9d,0x9e,0x99,0xa0,0x9f,0xa0,0x9b,0xb4,0xb4,0xb5,0xc0,0xc6,0xc5,0xc6,
- 0xd5,0xd9,0xd7,0xd8,0xd1,0xec,0xea,0xeb,0xa8,0xf5,0xf2,0xf3,0xaa,0xbd,0xc1,
- 0xcd,0x9d,0x4a,0x5f,0x91,0x99,0x33,0x4f,0x93,0x99,0x3c,0x57,0x95,0x99,0x3f,
- 0x59,0x99,0x99,0x41,0x5c,0x9b,0x8e,0xbc,0xc0,0xcc,0x79,0xe8,0xe7,0xe8,0x91,
- 0xd0,0xce,0xd0,0x92,0xcc,0xc9,0xcb,0x2e,0xcf,0xcd,0xcd,0x01,0x8e,0xce,0xcd,
- 0xcf,0x00,0x84,0xff,0xff,0xff,0x00,0x01,0x89,0x89,0x89,0xff,0x82,0x89,0x88,
- 0x89,0xff,0x04,0x88,0x88,0x89,0xff,0x89,0x89,0x89,0xff,0x89,0x89,0x88,0xff,
- 0x88,0x89,0x88,0xff,0x82,0x89,0x89,0x88,0xff,0x05,0x88,0x89,0x89,0xff,0x89,
- 0x89,0x89,0xff,0x89,0x89,0x88,0xff,0x89,0x89,0x89,0xff,0x89,0x89,0x88,0xff,
- 0x82,0x88,0x89,0x89,0xff,0x9b,0xff,0xff,0xff,0x00,0x08,0xbd,0xbc,0xbc,0x66,
- 0xbc,0xbc,0xbd,0x66,0xbc,0xbb,0xbc,0x66,0xbc,0xbc,0xbc,0x66,0xbc,0xbb,0xbc,
- 0x66,0xbd,0xbc,0xbc,0x66,0xbc,0xbc,0xbc,0x66,0xbd,0xbc,0xbc,0x66,0x83,0xbc,
- 0xbc,0xbc,0x66,0x01,0xbd,0xbc,0xbc,0x66,0x84,0xbc,0xbc,0xbc,0x66,0x87,0xff,
- 0xff,0xff,0x00,0x01,0xe0,0xdf,0xe4,0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,
- 0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,
- 0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,
- 0x1b,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,
- 0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0xbd,
- 0xbc,0xbc,0x99,0xbc,0xbc,0xbd,0x99,0xbc,0xbb,0xbc,0x99,0xbc,0xbc,0xbc,0x99,
- 0xbc,0xbb,0xbc,0x99,0xc3,0xc1,0xc2,0xb5,0xcb,0xca,0xca,0xd3,0xec,0xd9,0xec,
- 0xd5,0x3c,0xf3,0x3c,0xb6,0xab,0xeb,0xac,0xac,0x9e,0xa0,0xb2,0xa3,0x73,0x81,
- 0xa1,0x9a,0x38,0x54,0x95,0x99,0x3c,0x57,0x98,0x94,0xae,0xb6,0xc9,0x87,0xdd,
- 0xde,0xdd,0xcf,0xd4,0xd3,0xd4,0x94,0xcc,0xca,0xcb,0x33,0xcd,0xcb,0xcc,0x02,
- 0xcf,0xcc,0xcd,0x00,0x8e,0xce,0xcd,0xcf,0x00,0x84,0xff,0xff,0xff,0x00,0x03,
- 0x88,0x89,0x88,0xff,0x89,0x89,0x89,0xff,0x89,0x88,0x88,0xff,0x82,0x89,0x89,
- 0x88,0xff,0x84,0x89,0x89,0x89,0xff,0x07,0x88,0x89,0x89,0xff,0x89,0x88,0x89,
- 0xff,0x89,0x89,0x89,0xff,0x89,0x89,0x88,0xff,0x88,0x88,0x89,0xff,0x88,0x89,
- 0x89,0xff,0x89,0x89,0x89,0xff,0x9b,0xff,0xff,0xff,0x00,0x82,0xdb,0xdb,0xda,
- 0x66,0x82,0xdb,0xda,0xdb,0x66,0x01,0xdb,0xdb,0xdb,0x66,0x82,0xdb,0xda,0xdb,
- 0x66,0x03,0xdb,0xdb,0xdb,0x66,0xdc,0xda,0xda,0x66,0xdb,0xdb,0xda,0x66,0x82,
- 0xdb,0xda,0xdb,0x66,0x82,0xdb,0xdb,0xdb,0x66,0x82,0xdb,0xda,0xdb,0x66,0x87,
- 0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xde,
- 0xe3,0x00,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,
- 0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,
- 0xd5,0xd8,0x00,0x07,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,
- 0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,
- 0xcf,0x00,0x82,0xdb,0xdb,0xda,0x99,0x82,0xdb,0xda,0xdb,0x99,0x10,0xdb,0xdb,
- 0xdb,0x99,0xdb,0xda,0xdb,0x99,0xd7,0xd5,0xd6,0xac,0xd2,0xd1,0xd2,0xcf,0xf4,
- 0xde,0xf2,0xd6,0x4b,0xf5,0x4a,0xc3,0xa5,0xea,0xa7,0xaa,0xd3,0xce,0xd1,0xa8,
- 0x87,0x91,0xa7,0x99,0x9d,0xa7,0xc3,0x89,0xe7,0xe6,0xe8,0xca,0xd9,0xd7,0xd8,
- 0xd6,0xca,0xc8,0xc9,0x55,0xcc,0xca,0xcb,0x0a,0xcd,0xcb,0xcc,0x00,0xcf,0xcc,
- 0xcd,0x00,0x8e,0xce,0xcd,0xcf,0x00,0x84,0xff,0xff,0xff,0x00,0x02,0x9e,0x9e,
- 0x9e,0xff,0x9e,0x9d,0x9d,0xff,0x82,0x9e,0x9d,0x9e,0xff,0x04,0x9d,0x9d,0x9e,
- 0xff,0x9d,0x9e,0x9e,0xff,0x9e,0x9e,0x9d,0xff,0x9d,0x9e,0x9d,0xff,0x82,0x9e,
- 0x9e,0x9e,0xff,0x03,0x9e,0x9e,0x9d,0xff,0x9e,0x9e,0x9e,0xff,0x9e,0x9d,0x9e,
- 0xff,0x82,0x9e,0x9e,0x9e,0xff,0x01,0x9e,0x9d,0x9e,0xff,0x97,0xff,0xff,0xff,
- 0x00,0x01,0xac,0xac,0xac,0x66,0x96,0xf0,0xef,0xf0,0x66,0x01,0xac,0xac,0xac,
- 0x66,0x83,0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,
- 0xde,0xdf,0xe3,0x00,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,
- 0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,
- 0x82,0xd6,0xd5,0xd8,0x00,0x04,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,
- 0xd0,0xd4,0x00,0xac,0xac,0xac,0x99,0x8a,0xf0,0xef,0xf0,0x99,0x0a,0xea,0xe9,
- 0xea,0xa3,0xd8,0xd7,0xd9,0xcb,0xe1,0xe0,0xe1,0xd6,0xf1,0xf0,0xf1,0xcd,0xef,
- 0xef,0xef,0xa9,0xe3,0xe2,0xe1,0xaa,0xf3,0xf1,0xf3,0xc9,0xe3,0xe2,0xe3,0xd6,
- 0xdd,0xdc,0xdd,0xc1,0xec,0xeb,0xec,0x9f,0x82,0xf0,0xef,0xf0,0x99,0x01,0xac,
- 0xac,0xac,0x99,0x8e,0xce,0xcb,0xcd,0x00,0x84,0xff,0xff,0xff,0x00,0x08,0xbd,
- 0xbc,0xbc,0xff,0xbc,0xbc,0xbd,0xff,0xbc,0xbb,0xbc,0xff,0xbc,0xbc,0xbc,0xff,
- 0xbc,0xbb,0xbc,0xff,0xbd,0xbc,0xbc,0xff,0xbc,0xbc,0xbc,0xff,0xbd,0xbc,0xbc,
- 0xff,0x83,0xbc,0xbc,0xbc,0xff,0x01,0xbd,0xbc,0xbc,0xff,0x84,0xbc,0xbc,0xbc,
- 0xff,0x97,0xff,0xff,0xff,0x00,0x02,0xac,0xac,0xac,0x66,0xd7,0xd7,0xd7,0x66,
- 0x94,0xff,0xff,0xff,0x66,0x02,0xd7,0xd7,0xd7,0x66,0xac,0xac,0xac,0x66,0x83,
- 0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xdf,
- 0xe3,0x00,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,
- 0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,
- 0xd5,0xd8,0x00,0x05,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd0,0xd4,
- 0x00,0xac,0xac,0xac,0x99,0xd7,0xd7,0xd7,0x99,0x8a,0xff,0xff,0xff,0x99,0x08,
- 0xfc,0xfc,0xfc,0x9c,0xe3,0xe2,0xe3,0xc1,0xe1,0xe0,0xe0,0xd5,0xf2,0xf1,0xf1,
- 0xd5,0xf8,0xf6,0xf8,0xd6,0xea,0xe9,0xeb,0xd6,0xe1,0xdf,0xe0,0xca,0xf7,0xf6,
- 0xf6,0xa3,0x82,0xff,0xff,0xff,0x99,0x02,0xd7,0xd7,0xd7,0x99,0xac,0xac,0xac,
- 0x99,0x8e,0xce,0xcb,0xcd,0x00,0x84,0xff,0xff,0xff,0x00,0x82,0xdb,0xdb,0xda,
- 0xff,0x82,0xdb,0xda,0xdb,0xff,0x01,0xdb,0xdb,0xdb,0xff,0x82,0xdb,0xda,0xdb,
- 0xff,0x03,0xdb,0xdb,0xdb,0xff,0xdc,0xda,0xda,0xff,0xdb,0xdb,0xda,0xff,0x82,
- 0xdb,0xda,0xdb,0xff,0x82,0xdb,0xdb,0xdb,0xff,0x82,0xdb,0xda,0xdb,0xff,0xb2,
- 0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xdf,
- 0xe3,0x00,0xdc,0xdb,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,
- 0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,
- 0xd5,0xd8,0x00,0x0e,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd0,0xd4,
- 0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xd0,0xce,
- 0xd0,0x00,0xce,0xcc,0xce,0x00,0xce,0xcd,0xce,0x00,0xcf,0xcd,0xce,0x00,0xcf,
- 0xcd,0xd0,0x00,0xcf,0xce,0xd0,0x00,0xcd,0xca,0xcc,0x00,0xcc,0xc9,0xcb,0x00,
- 0x82,0xcc,0xca,0xcc,0x00,0x08,0xcd,0xcc,0xcd,0x00,0xc9,0xc7,0xc8,0x49,0xd2,
- 0xd0,0xd0,0x91,0xe0,0xde,0xe0,0x99,0xd2,0xd0,0xd1,0x85,0xcb,0xc9,0xca,0x2c,
- 0xcc,0xca,0xcb,0x00,0xcd,0xcb,0xcc,0x00,0x91,0xce,0xcb,0xcd,0x00,0x01,0xac,
- 0xac,0xac,0xff,0x96,0xf0,0xef,0xf0,0xff,0x01,0xac,0xac,0xac,0xff,0xae,0xff,
- 0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xde,0xe3,
- 0x00,0xdc,0xdb,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,
- 0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,
- 0xd8,0x00,0x0e,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd0,0xd4,0x00,
- 0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xd0,0xce,0xd0,
- 0x00,0xce,0xcc,0xce,0x00,0xce,0xcd,0xce,0x00,0xcf,0xcd,0xce,0x00,0xcf,0xcd,
- 0xd0,0x00,0xcf,0xce,0xd0,0x00,0xcd,0xcb,0xcc,0x00,0xcc,0xc9,0xcb,0x00,0x82,
- 0xcc,0xca,0xcc,0x00,0x08,0xcd,0xcc,0xcd,0x00,0xca,0xc9,0xca,0x00,0xc8,0xc6,
- 0xc7,0x33,0xce,0xcc,0xcd,0x89,0xcd,0xcb,0xcc,0x41,0xcb,0xc9,0xca,0x01,0xcc,
- 0xca,0xcb,0x00,0xcd,0xcb,0xcc,0x00,0x91,0xce,0xcb,0xcd,0x00,0x02,0xac,0xac,
- 0xac,0xff,0xd7,0xd7,0xd7,0xff,0x94,0xff,0xff,0xff,0xff,0x02,0xd7,0xd7,0xd7,
- 0xff,0xac,0xac,0xac,0xff,0xae,0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,
- 0xdf,0xde,0xe3,0x00,0xde,0xde,0xe3,0x00,0xdc,0xdb,0xdf,0x00,0xda,0xd9,0xde,
- 0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,
- 0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x0e,0xd7,0xd6,0xd8,0x00,0xd4,
- 0xd2,0xd5,0x00,0xd2,0xd0,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,
- 0xd4,0xd1,0xd5,0x00,0xd0,0xce,0xd0,0x00,0xce,0xcc,0xce,0x00,0xce,0xcd,0xce,
- 0x00,0xcf,0xcd,0xce,0x00,0xcf,0xcd,0xd0,0x00,0xcf,0xce,0xd0,0x00,0xcd,0xcb,
- 0xcc,0x00,0xcc,0xc9,0xcb,0x00,0x82,0xcc,0xca,0xcc,0x00,0x05,0xcd,0xcc,0xcd,
- 0x00,0xca,0xc9,0xca,0x00,0xc8,0xc6,0xc7,0x00,0xcb,0xc9,0xc9,0x22,0xcd,0xcb,
- 0xcb,0x11,0x94,0xcd,0xcb,0xcc,0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
- 0xff,0x00,0x91,0xff,0xff,0xff,0x00
-};
-
-static const GdkPixdata rotation_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 19987, /* header length + pixel_data length */
- 0x2010002, /* pixdata_type */
- 496, /* rowstride */
- 124, /* width */
- 60, /* height */
- rotation_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/src.mk b/src/image_data/src.mk
deleted file mode 100644
index 52c10e1..0000000
--- a/src/image_data/src.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# files in the src/image_data directory of nvidia-settings
-#
-
-IMAGE_DATA_SRC +=
-
-IMAGE_DATA_EXTRA_DIST += HOWTO-ADD-IMAGES
-IMAGE_DATA_EXTRA_DIST += antialias.png
-IMAGE_DATA_EXTRA_DIST += antialias_pixdata.h
-IMAGE_DATA_EXTRA_DIST += background.png
-IMAGE_DATA_EXTRA_DIST += background_pixdata.h
-IMAGE_DATA_EXTRA_DIST += background_tall.png
-IMAGE_DATA_EXTRA_DIST += background_tall_pixdata.h
-IMAGE_DATA_EXTRA_DIST += bnc_cable.png
-IMAGE_DATA_EXTRA_DIST += bnc_cable_pixdata.h
-IMAGE_DATA_EXTRA_DIST += bsd.png
-IMAGE_DATA_EXTRA_DIST += bsd_pixdata.h
-IMAGE_DATA_EXTRA_DIST += clock.png
-IMAGE_DATA_EXTRA_DIST += clock_pixdata.h
-IMAGE_DATA_EXTRA_DIST += color.png
-IMAGE_DATA_EXTRA_DIST += color_pixdata.h
-IMAGE_DATA_EXTRA_DIST += config.png
-IMAGE_DATA_EXTRA_DIST += config_pixdata.h
-IMAGE_DATA_EXTRA_DIST += crt.png
-IMAGE_DATA_EXTRA_DIST += crt_pixdata.h
-IMAGE_DATA_EXTRA_DIST += cursor_shadow.png
-IMAGE_DATA_EXTRA_DIST += cursor_shadow_pixdata.h
-IMAGE_DATA_EXTRA_DIST += dfp.png
-IMAGE_DATA_EXTRA_DIST += dfp_pixdata.h
-IMAGE_DATA_EXTRA_DIST += display_config.png
-IMAGE_DATA_EXTRA_DIST += display_config_pixdata.h
-IMAGE_DATA_EXTRA_DIST += framelock.png
-IMAGE_DATA_EXTRA_DIST += framelock_pixdata.h
-IMAGE_DATA_EXTRA_DIST += glx.png
-IMAGE_DATA_EXTRA_DIST += glx_pixdata.h
-IMAGE_DATA_EXTRA_DIST += gpu.png
-IMAGE_DATA_EXTRA_DIST += gpu_pixdata.h
-IMAGE_DATA_EXTRA_DIST += gvi.png
-IMAGE_DATA_EXTRA_DIST += gvi_pixdata.h
-IMAGE_DATA_EXTRA_DIST += help.png
-IMAGE_DATA_EXTRA_DIST += help_pixdata.h
-IMAGE_DATA_EXTRA_DIST += led_green.png
-IMAGE_DATA_EXTRA_DIST += led_green_pixdata.h
-IMAGE_DATA_EXTRA_DIST += led_grey.png
-IMAGE_DATA_EXTRA_DIST += led_grey_pixdata.h
-IMAGE_DATA_EXTRA_DIST += led_red.png
-IMAGE_DATA_EXTRA_DIST += led_red_pixdata.h
-IMAGE_DATA_EXTRA_DIST += logo.png
-IMAGE_DATA_EXTRA_DIST += logo_pixdata.h
-IMAGE_DATA_EXTRA_DIST += logo_tall.png
-IMAGE_DATA_EXTRA_DIST += logo_tall_pixdata.h
-IMAGE_DATA_EXTRA_DIST += nvidia_icon.png
-IMAGE_DATA_EXTRA_DIST += nvidia_icon_pixdata.h
-IMAGE_DATA_EXTRA_DIST += opengl.png
-IMAGE_DATA_EXTRA_DIST += opengl_pixdata.h
-IMAGE_DATA_EXTRA_DIST += penguin.png
-IMAGE_DATA_EXTRA_DIST += penguin_pixdata.h
-IMAGE_DATA_EXTRA_DIST += png_to_c_header.sh
-IMAGE_DATA_EXTRA_DIST += rj45_input.png
-IMAGE_DATA_EXTRA_DIST += rj45_input_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rj45_output.png
-IMAGE_DATA_EXTRA_DIST += rj45_output_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rj45_unused.png
-IMAGE_DATA_EXTRA_DIST += rj45_unused_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_left_off.png
-IMAGE_DATA_EXTRA_DIST += rotate_left_off_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_left_on.png
-IMAGE_DATA_EXTRA_DIST += rotate_left_on_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_right_off.png
-IMAGE_DATA_EXTRA_DIST += rotate_right_off_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_right_on.png
-IMAGE_DATA_EXTRA_DIST += rotate_right_on_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotation.png
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_horz.png
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_horz_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_vert.png
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_vert_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotation_pixdata.h
-IMAGE_DATA_EXTRA_DIST += sdi.png
-IMAGE_DATA_EXTRA_DIST += sdi_pixdata.h
-IMAGE_DATA_EXTRA_DIST += sdi_shared_sync_bnc.png
-IMAGE_DATA_EXTRA_DIST += sdi_shared_sync_bnc_pixdata.h
-IMAGE_DATA_EXTRA_DIST += slimm.png
-IMAGE_DATA_EXTRA_DIST += slimm_pixdata.h
-IMAGE_DATA_EXTRA_DIST += solaris.png
-IMAGE_DATA_EXTRA_DIST += solaris_pixdata.h
-IMAGE_DATA_EXTRA_DIST += src.mk
-IMAGE_DATA_EXTRA_DIST += svp_3dvp.png
-IMAGE_DATA_EXTRA_DIST += svp_3dvp_pixdata.h
-IMAGE_DATA_EXTRA_DIST += thermal.png
-IMAGE_DATA_EXTRA_DIST += thermal_pixdata.h
-IMAGE_DATA_EXTRA_DIST += tv.png
-IMAGE_DATA_EXTRA_DIST += tv_pixdata.h
-IMAGE_DATA_EXTRA_DIST += vcs.png
-IMAGE_DATA_EXTRA_DIST += vcs_pixdata.h
-IMAGE_DATA_EXTRA_DIST += x.png
-IMAGE_DATA_EXTRA_DIST += x_pixdata.h
-IMAGE_DATA_EXTRA_DIST += xvideo.png
-IMAGE_DATA_EXTRA_DIST += xvideo_pixdata.h
diff --git a/src/libXNVCtrl/Makefile b/src/libXNVCtrl/Makefile
index 15b03cc..d40ec01 100644
--- a/src/libXNVCtrl/Makefile
+++ b/src/libXNVCtrl/Makefile
@@ -20,6 +20,7 @@
# SOFTWARE.
RANLIB ?= ranlib
+CFLAGS += -fPIC
libXNVCtrl.a : libXNVCtrl.a(NVCtrl.o)
$(RANLIB) $@
diff --git a/src/libXNVCtrl/NVCtrl.h b/src/libXNVCtrl/NVCtrl.h
index b04a21d..dbefc6e 100644
--- a/src/libXNVCtrl/NVCtrl.h
+++ b/src/libXNVCtrl/NVCtrl.h
@@ -138,18 +138,7 @@
/*
- * NV_CTRL_FLATPANEL_SCALING - the current flat panel scaling state;
- * possible values are:
- *
- * 0: default (the driver will use whatever state is current)
- * 1: native (the driver will use the panel's scaler, if possible)
- * 2: scaled (the driver will use the GPU's scaler, if possible)
- * 3: centered (the driver will center the image)
- * 4: aspect scaled (scale with the GPU's scaler, but keep the aspect
- * ratio correct)
- *
- * USAGE NOTE: This attribute has been deprecated in favor of the new
- * NV_CTRL_GPU_SCALING attribute.
+ * NV_CTRL_FLATPANEL_SCALING - not supported
*/
#define NV_CTRL_FLATPANEL_SCALING 2 /* RWDG */
@@ -296,7 +285,9 @@
#define NV_CTRL_FSAA_MODE_16xS 11
#define NV_CTRL_FSAA_MODE_16xQ 12
#define NV_CTRL_FSAA_MODE_32xS 13
-#define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_32xS
+#define NV_CTRL_FSAA_MODE_32x 14
+#define NV_CTRL_FSAA_MODE_64xS 15
+#define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_64xS
/*
@@ -723,12 +714,11 @@
/*
* NV_CTRL_TEXTURE_CLAMPING - texture clamping mode in OpenGL. By
- * default, NVIDIA's OpenGL implementation uses CLAMP_TO_EDGE, which
- * is not strictly conformant, but some applications rely on the
- * non-conformant behavior, and not all GPUs support conformant
- * texture clamping in hardware. _SPEC forces OpenGL texture clamping
- * to be conformant, but may introduce slower performance on older
- * GPUS, or incorrect texture clamping in certain applications.
+ * default, _SPEC is used, which forces OpenGL texture clamping to
+ * conform with the OpenGL specification. _EDGE forces NVIDIA's
+ * OpenGL implementation to remap GL_CLAMP to GL_CLAMP_TO_EDGE,
+ * which is not strictly conformant, but some applications rely on
+ * the non-conformant behavior.
*/
#define NV_CTRL_TEXTURE_CLAMPING 42 /* RW-X */
@@ -937,22 +927,24 @@
* glXSendPbufferToVideoNV(); see the GLX_NV_video_out spec for more
* details.
*
- * - if, rather than using the GLX_NV_video_out extension to display
- * GLX pbuffers on the GVO output, you wish display the X screen on
- * the GVO output, set NV_CTRL_GVO_DISPLAY_X_SCREEN to
- * NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE.
+ * - if using the GLX_NV_present_video extension, call
+ * glXBindVideoDeviceNV() to bind the GVO video device to current
+ * OpenGL context.
*
* Note that setting most GVO attributes only causes the value to be
* cached in the X server. The values will be flushed to the hardware
- * either when NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled, or when a GLX
- * pbuffer is bound to the GVO output (with glXBindVideoImageNV()).
+ * either when the next MetaMode is set that uses the GVO display
+ * device, or when a GLX pbuffer is bound to the GVO output (with
+ * glXBindVideoImageNV()).
*
- * Note that GLX_NV_video_out and NV_CTRL_GVO_DISPLAY_X_SCREEN are
- * mutually exclusive. If NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled,
- * then glXGetVideoDeviceNV will fail. Similarly, if a GLX client has
- * locked the GVO output (via glXGetVideoDeviceNV), then
- * NV_CTRL_GVO_DISPLAY_X_SCREEN will fail. The NV_CTRL_GVO_GLX_LOCKED
- * event will be sent when a GLX client locks the GVO output.
+ * Note that GLX_NV_video_out/GLX_NV_present_video and X screen use
+ * are mutually exclusive. If a MetaMode is currently using the GVO
+ * device, then glXGetVideoDeviceNV and glXBindVideoImageNV() will
+ * fail. Similarly, if a GLX client has locked the GVO output (via
+ * glXGetVideoDeviceNV or glXBindVideoImageNV), then setting a
+ * MetaMode that uses the GVO device will fail. The
+ * NV_CTRL_GVO_GLX_LOCKED event will be sent when a GLX client locks
+ * the GVO output.
*
*/
@@ -1215,25 +1207,7 @@
#define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422 27
/*
- * NV_CTRL_GVO_DISPLAY_X_SCREEN - enable/disable GVO output of the X
- * screen (in Clone mode). At this point, all the GVO attributes that
- * have been cached in the X server are flushed to the hardware and GVO is
- * enabled. Note that this attribute can fail to be set if a GLX
- * client has locked the GVO output (via glXGetVideoDeviceNV). Note
- * that due to the inherit race conditions in this locking strategy,
- * NV_CTRL_GVO_DISPLAY_X_SCREEN can fail unexpectantly. In the
- * failing situation, X will not return an X error. Instead, you
- * should query the value of NV_CTRL_GVO_DISPLAY_X_SCREEN after
- * setting it to confirm that the setting was applied.
- *
- * NOTE: This attribute is related to the NV_CTRL_GVO_LOCK_OWNER
- * attribute. When NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled,
- * the GVO device will be locked by NV_CTRL_GVO_LOCK_OWNER_CLONE.
- * see NV_CTRL_GVO_LOCK_OWNER for detais.
- *
- * NOTE: This attribute is deprecated and will be removed in a future release.
- * To display an X screen over GVO, it is recommended to instead
- * configure GVO via MetaModes.
+ * NV_CTRL_GVO_DISPLAY_X_SCREEN - no longer supported
*/
#define NV_CTRL_GVO_DISPLAY_X_SCREEN 73 /* RW- */
@@ -1333,11 +1307,12 @@
/*
- * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is locked by
- * GLX; this occurs when the GLX_NV_video_out function calls
- * glXGetVideoDeviceNV(). All GVO output resources are locked until
- * either glXReleaseVideoDeviceNV() is called or the X Display used
- * when calling glXGetVideoDeviceNV() is closed.
+ * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is
+ * locked by GLX; this occurs when either glXGetVideoDeviceNV (part of
+ * GLX_NV_video_out) or glXBindVideoDeviceNV (part of
+ * GLX_NV_present_video) is called. All GVO output resources are
+ * locked until released by the GLX_NV_video_out/GLX_NV_present_video
+ * client.
*
* When GVO is locked, setting of the following GVO NV-CONTROL attributes will
* not happen immediately and will instead be cached. The GVO resource will
@@ -1383,16 +1358,7 @@
/*
- * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - when GVO output of the X screen is
- * enabled, the pan x/y attributes control which portion of the X
- * screen is displayed by GVO. These attributes can be updated while
- * GVO output is enabled, or before enabling GVO output. The pan
- * values will be clamped so that GVO output is not panned beyond the
- * end of the X screen.
- *
- * NOTE: These attributes are deprecated and will be removed in a future
- * release. To display an X screen over GVO, it is recommended to
- * instead configure GVO via MetaModes.
+ * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - no longer supported
*/
#define NV_CTRL_GVO_X_SCREEN_PAN_X 86 /* RW- */
@@ -1913,19 +1879,8 @@
#define NV_CTRL_MULTIGPU_DISPLAY_OWNER 247 /* R-- */
-/*
- * NV_CTRL_GPU_SCALING - Controls what the GPU scales to and how.
- * This attribute is a packed integer; the scaling target (native/best fit)
- * is packed in the upper 16-bits and the scaling method is packed in the
- * lower 16-bits.
- *
- * 'Best fit' scaling will make the GPU scale the frontend (current) mode to
- * the closest larger resolution in the flat panel's EDID and allow the
- * flat panel to do its own scaling to the native resolution.
- *
- * 'Native' scaling will make the GPU scale the frontend (current) mode to
- * the flat panel's native resolution, thus disabling any internal scaling
- * the flat panel might have.
+/*
+ * NV_CTRL_GPU_SCALING - not supported
*/
#define NV_CTRL_GPU_SCALING 248 /* RWDG */
@@ -1941,26 +1896,14 @@
/*
- * NV_CTRL_FRONTEND_RESOLUTION - Returns the dimensions of the frontend
- * (current) resolution as determined by the NVIDIA X Driver.
- *
- * This attribute is a packed integer; the width is packed in the upper
- * 16-bits and the height is packed in the lower 16-bits.
+ * NV_CTRL_FRONTEND_RESOLUTION - not supported
*/
#define NV_CTRL_FRONTEND_RESOLUTION 249 /* R-DG */
/*
- * NV_CTRL_BACKEND_RESOLUTION - Returns the dimensions of the
- * backend resolution as determined by the NVIDIA X Driver.
- *
- * The backend resolution is the resolution (supported by the display
- * device) the GPU is set to scale to. If this resolution matches the
- * frontend resolution, GPU scaling will not be needed/used.
- *
- * This attribute is a packed integer; the width is packed in the upper
- * 16-bits and the height is packed in the lower 16-bits.
+ * NV_CTRL_BACKEND_RESOLUTION - not supported
*/
#define NV_CTRL_BACKEND_RESOLUTION 250 /* R-DG */
@@ -1986,43 +1929,21 @@
/*
- * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - Returns the dimensions of the
- * resolution, selected by the X driver, from the DFP's EDID that most
- * closely matches the frontend resolution of the current mode. The best
- * fit resolution is selected on a per-mode basis.
- * NV_CTRL_GPU_SCALING_TARGET is used to select between
- * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION and NV_CTRL_NATIVE_RESOLUTION.
- *
- * This attribute is only valid for flat panel (DFP) display devices.
- *
- * This attribute is a packed integer; the width is packed in the upper
- * 16-bits and the height is packed in the lower 16-bits.
+ * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - not supported
*/
#define NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION 252 /* R-DG */
/*
- * NV_CTRL_GPU_SCALING_ACTIVE - Returns the current state of
- * GPU scaling. GPU scaling is mode-specific (meaning it may vary
- * depending on which mode is currently set). GPU scaling is active if
- * the frontend timing (current resolution) is different than the target
- * resolution. The target resolution is either the native resolution of
- * the flat panel or the best fit resolution supported by the flat panel.
- * What (and how) the GPU should scale to is controlled through the
- * NV_CTRL_GPU_SCALING attribute.
+ * NV_CTRL_GPU_SCALING_ACTIVE - not supported
*/
#define NV_CTRL_GPU_SCALING_ACTIVE 253 /* R-DG */
/*
- * NV_CTRL_DFP_SCALING_ACTIVE - Returns the current state of
- * DFP scaling. DFP scaling is mode-specific (meaning it may vary
- * depending on which mode is currently set). DFP scaling is active if
- * the GPU is set to scale to the best fit resolution (NV_CTRL_GPU_SCALING
- * is set to NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT) and the best fit
- * and native resolutions are different.
+ * NV_CTRL_DFP_SCALING_ACTIVE - not supported
*/
#define NV_CTRL_DFP_SCALING_ACTIVE 254 /* R-DG */
@@ -2059,19 +1980,16 @@
/*
* NV_CTRL_GVO_LOCK_OWNER - indicates that the GVO device is available
- * or in use (by GLX, Clone Mode, TwinView etc).
+ * or in use (by GLX or an X screen).
*
- * The GVO device is locked by GLX when the GLX_NV_video_out function
- * calls glXGetVideoDeviceNV(). The GVO device is then unlocked when
- * glXReleaseVideoDeviceNV() is called, or the X Display used when calling
- * glXGetVideoDeviceNV() is closed.
- *
- * The GVO device is locked/unlocked for Clone mode use when the
- * attribute NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled/disabled.
+ * The GVO device is locked by GLX when either glXGetVideoDeviceNV
+ * (part of GLX_NV_video_out) or glXBindVideoDeviceNV (part of
+ * GLX_NV_present_video) is called. All GVO output resources are
+ * locked until released by the GLX_NV_video_out/GLX_NV_present_video
+ * client.
*
- * The GVO device is locked/unlocked by TwinView mode, when the GVO device is
- * associated/unassociated to/from an X screen through the
- * NV_CTRL_ASSOCIATED_DISPLAY_DEVICES attribute directly.
+ * The GVO device is locked/unlocked by an X screen, when the GVO device is
+ * used in a MetaMode on an X screen.
*
* When the GVO device is locked, setting of the following GVO NV-CONTROL
* attributes will not happen immediately and will instead be cached. The
@@ -2086,7 +2004,7 @@
#define NV_CTRL_GVO_LOCK_OWNER 257 /* R-- */
#define NV_CTRL_GVO_LOCK_OWNER_NONE 0
#define NV_CTRL_GVO_LOCK_OWNER_GLX 1
-#define NV_CTRL_GVO_LOCK_OWNER_CLONE 2
+#define NV_CTRL_GVO_LOCK_OWNER_CLONE /* no longer supported */ 2
#define NV_CTRL_GVO_LOCK_OWNER_X_SCREEN 3
@@ -2832,16 +2750,7 @@
#define NV_CTRL_GVI_NUM_CAPTURE_SURFACES 338 /* RW-I */
/*
- * NV_CTRL_OVERSCAN_COMPENSATION - This option specifies the amount of overscan
- * compensation to apply to the current mode. It is measured in raster pixels,
- * i.e. pixels as specified in the current mode's backend timings.
- *
- * This option is similar to NV_CTRL_TV_OVERSCAN, but can be available on
- * display devices other than TVs. It also has semantics that are the opposite
- * of NV_CTRL_TV_OVERSCAN: a higher NV_CTRL_OVERSCAN_COMPENSATION makes the
- * screen smaller instead of bigger. NV_CTRL_OVERSCAN_COMPENSATION and
- * NV_CTRL_TV_OVERSCAN will not be available on the same display device at the
- * same time.
+ * NV_CTRL_OVERSCAN_COMPENSATION - not supported
*/
#define NV_CTRL_OVERSCAN_COMPENSATION 339 /* RWDG */
@@ -2921,14 +2830,9 @@
#define NV_CTRL_COLOR_RANGE_LIMITED 1
/*
- * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - Returns the default scaling target
- * for the specified display device.
- *
- * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - Returns the default scaling method
- * for the specified display device.
+ * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - not supported
*
- * The values returned by these attributes are one of the target or method
- * values defined for the attribute NV_CTRL_GPU_SCALING.
+ * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - not supported
*/
#define NV_CTRL_GPU_SCALING_DEFAULT_TARGET 350 /* R-DG */
#define NV_CTRL_GPU_SCALING_DEFAULT_METHOD 351 /* R-DG */
@@ -3266,7 +3170,22 @@
#define NV_CTRL_GVO_AUDIO_BLANKING_DISABLE 0
#define NV_CTRL_GVO_AUDIO_BLANKING_ENABLE 1
-#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_GVO_AUDIO_BLANKING
+/*
+ * NV_CTRL_CURRENT_METAMODE_ID - switch modes to the MetaMode with
+ * the specified ID.
+ */
+#define NV_CTRL_CURRENT_METAMODE_ID 387 /* RW- */
+
+/*
+ * NV_CTRL_DISPLAY_ENABLED - Returns whether or not the display device
+ * is currently enabled.
+ */
+#define NV_CTRL_DISPLAY_ENABLED 388 /* R-D */
+#define NV_CTRL_DISPLAY_ENABLED_TRUE 1
+#define NV_CTRL_DISPLAY_ENABLED_FALSE 0
+
+
+#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_DISPLAY_ENABLED
/**************************************************************************/
@@ -3404,7 +3323,10 @@
* NV_CTRL_BINARY_DATA_METAMODES.
*/
-#define NV_CTRL_STRING_CURRENT_METAMODE 12 /* R--- */
+#define NV_CTRL_STRING_CURRENT_METAMODE 12 /* RW-- */
+#define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1 \
+ NV_CTRL_STRING_CURRENT_METAMODE
+
/*
@@ -3865,9 +3787,75 @@
*/
#define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME 44 /* RW-T */
+/*
+ * NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 - Returns the metamode currently
+ * being used by the specified X screen. The MetaMode string has the same
+ * syntax as the MetaMode X configuration option, as documented in the NVIDIA
+ * driver README. Also, see NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 for more
+ * details on the base syntax.
+ *
+ * The returned string may also be prepended with a comma-separated list of
+ * "token=value" pairs, separated from the MetaMode string by "::".
+ */
+#define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 45 /* RW-- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME - Returns a type name for the
+ * display device ("CRT", "DFP", or "TV"). However, note that the determination
+ * of the name is based on the protocol through which the X driver communicates
+ * to the display device. E.g., if the driver communicates using VGA ,then the
+ * basename is "CRT"; if the driver communicates using TMDS, LVDS, or DP, then
+ * the name is "DFP".
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME 46 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID - Returns the type-based name + ID for
+ * the display device, e.g. "CRT-0", "DFP-1", "TV-2". If this device is a
+ * DisplayPort 1.2 device, then this name will also be prepended with the
+ * device's port address like so: "DFP-1.0.1.2.3". See
+ * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME for more information about the
+ * construction of type-based names.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID 47 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_DP_GUID - Returns the GUID of the DisplayPort
+ * display device. e.g. "DP-GUID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
+ *
+ * The display device must be a DisplayPort 1.2 device.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_DP_GUID 48 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH - Returns the SHA-1 hash of the
+ * display device's EDID in 8-4-4-4-12 UID format. e.g.
+ * "DPY-EDID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
+ *
+ * The display device must have a valid EDID.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH 49 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX - Returns the current NV-CONTROL
+ * target ID (name) of the display device. e.g. "DPY-1", "DPY-4"
+ *
+ * This name for the display device is not guarenteed to be the same between
+ * different runs of the X server.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX 50 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_RANDR - Returns the RandR output name for the
+ * display device. e.g. "VGA-1", "DVI-I-0", "DVI-D-3", "LVDS-1", "DP-2",
+ * "HDMI-3", "eDP-6". This name should match If this device is a DisplayPort
+ * 1.2 device, then this name will also be prepended with the device's port
+ * address like so: "DVI-I-3.0.1.2.3"
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_RANDR 51 /* R-D- */
#define NV_CTRL_STRING_LAST_ATTRIBUTE \
- NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME
+ NV_CTRL_STRING_DISPLAY_NAME_RANDR
/**************************************************************************/
@@ -3988,6 +3976,8 @@
*/
#define NV_CTRL_BINARY_DATA_METAMODES 2 /* R-D- */
+#define NV_CTRL_BINARY_DATA_METAMODES_VERSION_1 \
+ NV_CTRL_BINARY_DATA_METAMODES
/*
@@ -4194,9 +4184,42 @@
#define NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU 15 /* R--G */
+/*
+ * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 - Returns values similar to
+ * NV_CTRL_BINARY_DATA_METAMODES(_VERSION_1) but also returns extended syntax
+ * information to indicate a specific display device, as well as other per-
+ * display deviceflags as "token=value" pairs. For example:
+ *
+ * "DPY-1: 1280x1024 {Stereo=PassiveLeft},
+ * DPY-2: 1280x1024 {Stereo=PassiveRight},"
+ *
+ * The display device names have the form "DPY-%d", where the integer
+ * part of the name is the NV-CONTROL target ID for that display device
+ * for this instance of the X server. Note that display device NV-CONTROL
+ * target IDs are not guaranteed to be the same from one run of the X
+ * server to the next.
+ */
+
+#define NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 16 /* R-D- */
+
+/*
+ * NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN - Returns the list of
+ * display devices that are currently scanning out the X screen target.
+ *
+ * The format of the returned data is:
+ *
+ * 4 CARD32 number of display devices
+ * 4 * n CARD32 display device indices
+ *
+ * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
+ * using a NV_CTRL_TARGET_TYPE_X_SCREEN target.
+ */
+
+#define NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN 17 /* R--- */
+
#define NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE \
- NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU
+ NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN
/**************************************************************************/
diff --git a/src/libXNVCtrl/nv_control.h b/src/libXNVCtrl/nv_control.h
index 914d83a..0124c87 100644
--- a/src/libXNVCtrl/nv_control.h
+++ b/src/libXNVCtrl/nv_control.h
@@ -53,6 +53,9 @@
* 1.25 Added 3D_VISION_PRO_TRANSCEIVER TargetType
* 1.26 Added XNVCTRLQueryXXXAttributePermissions.
* 1.27 Added DISPLAY TargetType
+ * 1.28 Added NV_CTRL_CURRENT_METAMODE_ID: clients should use this
+ * attribute to switch MetaModes, rather than pass the MetaMode ID
+ * through the RRSetScreenConfig protocol request.
*/
#ifndef __NVCONTROL_H
@@ -63,7 +66,7 @@
#define NV_CONTROL_NAME "NV-CONTROL"
#define NV_CONTROL_MAJOR 1
-#define NV_CONTROL_MINOR 27
+#define NV_CONTROL_MINOR 28
#define X_nvCtrlQueryExtension 0
#define X_nvCtrlIsNv 1
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.c b/src/libXNVCtrlAttributes/NvCtrlAttributes.c
index 9247bde..3e7ec39 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributes.c
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.c
@@ -570,13 +570,6 @@ NvCtrlGetDisplayAttribute64(NvCtrlAttributeHandle *handle,
return status;
}
- if ((attr >= NV_CTRL_ATTR_XRANDR_BASE) &&
- (attr <= NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE)) {
- status = NvCtrlXrandrGetAttribute(h, attr, &value_32);
- *val = value_32;
- return status;
- }
-
return NvCtrlNoAttribute;
} /* NvCtrlGetDisplayAttribute64() */
@@ -614,12 +607,6 @@ NvCtrlSetDisplayAttribute(NvCtrlAttributeHandle *handle,
return NvCtrlXvSetAttribute(h, attr, val);
}
-
- if ((attr >= NV_CTRL_ATTR_XRANDR_BASE) &&
- (attr <= NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE)) {
-
- return NvCtrlXrandrSetAttribute(h, attr, val);
- }
return NvCtrlNoAttribute;
@@ -931,24 +918,6 @@ void NvCtrlAttributeClose(NvCtrlAttributeHandle *handle)
} /* NvCtrlAttributeClose() */
-ReturnStatus
-NvCtrlXrandrSetScreenMode (NvCtrlAttributeHandle *handle,
- int width, int height, int refresh)
-{
- return NvCtrlXrandrSetScreenMagicMode
- ((NvCtrlAttributePrivateHandle *)handle, width, height, refresh);
-} /* NvCtrlXrandrSetScreenMode() */
-
-
-ReturnStatus
-NvCtrlXrandrGetScreenMode (NvCtrlAttributeHandle *handle,
- int *width, int *height, int *refresh)
-{
- return NvCtrlXrandrGetScreenMagicMode
- ((NvCtrlAttributePrivateHandle *)handle, width, height, refresh);
-} /* NvCtrlXrandrGetScreenMode() */
-
-
/*
* NvCtrlGetMultisampleModeName() - lookup a string desribing the
* NV-CONTROL constant.
@@ -971,7 +940,9 @@ const char *NvCtrlGetMultisampleModeName(int multisample_mode)
"8x (8xMS)", /* FSAA_MODE_8xQ */
"16x (4xSS, 4xMS)", /* FSAA_MODE_16xS */
"16x (8xMS, 8xCS)", /* FSAA_MODE_16xQ */
- "32x (4xSS, 8xMS)" /* FSAA_MODE_32xS */
+ "32x (4xSS, 8xMS)", /* FSAA_MODE_32xS */
+ "32x (8xMS, 24xCS)", /* FSAA_MODE_32x */
+ "64x (16xSS, 4xMS)", /* FSAA_MODE_64xS */
};
if ((multisample_mode < NV_CTRL_FSAA_MODE_NONE) ||
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.h b/src/libXNVCtrlAttributes/NvCtrlAttributes.h
index 4637890..c8beb87 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributes.h
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.h
@@ -130,20 +130,7 @@ typedef void NvCtrlAttributeHandle;
#define NV_CTRL_ATTR_GLX_LAST_ATTRIBUTE \
(NV_CTRL_ATTR_GLX_FBCONFIG_ATTRIBS)
-/* XRandR */
-
-#define NV_CTRL_ATTR_XRANDR_BASE \
- (NV_CTRL_ATTR_GLX_LAST_ATTRIBUTE + 1)
-
-#define NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED (NV_CTRL_ATTR_XRANDR_BASE + 0)
-#define NV_CTRL_ATTR_XRANDR_ROTATIONS (NV_CTRL_ATTR_XRANDR_BASE + 1)
-#define NV_CTRL_ATTR_XRANDR_ROTATION (NV_CTRL_ATTR_XRANDR_BASE + 2)
-
-#define NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE \
- (NV_CTRL_ATTR_XRANDR_ROTATION)
-
-
-#define NV_CTRL_ATTR_LAST_ATTRIBUTE (NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE)
+#define NV_CTRL_ATTR_LAST_ATTRIBUTE (NV_CTRL_ATTR_GLX_LAST_ATTRIBUTE)
typedef enum {
@@ -506,12 +493,4 @@ char *NvCtrlAttributesStrError (ReturnStatus status);
void NvCtrlAttributeClose(NvCtrlAttributeHandle *handle);
-ReturnStatus
-NvCtrlXrandrSetScreenMode (NvCtrlAttributeHandle *handle,
- int width, int height, int refresh);
-
-ReturnStatus
-NvCtrlXrandrGetScreenMode (NvCtrlAttributeHandle *handle,
- int *width, int *height, int *refresh);
-
#endif /* __NVCTRL_ATTRIBUTES__ */
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h b/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
index 070e377..728f3e9 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
@@ -23,7 +23,6 @@
#include "NvCtrlAttributes.h"
#include "NVCtrl.h"
#include <GL/glx.h> /* GLX #defines */
-#include <X11/extensions/Xrandr.h> /* Xrandr */
#include <X11/extensions/Xvlib.h> /* Xv */
@@ -216,19 +215,6 @@ void
NvCtrlXrandrAttributesClose (NvCtrlAttributePrivateHandle *);
ReturnStatus
-NvCtrlXrandrGetAttribute (NvCtrlAttributePrivateHandle *, int, int *);
-
-ReturnStatus
-NvCtrlXrandrSetAttribute (NvCtrlAttributePrivateHandle *, int, int);
-
-ReturnStatus
-NvCtrlXrandrSetScreenMagicMode (NvCtrlAttributePrivateHandle *, int, int, int);
-
-ReturnStatus
-NvCtrlXrandrGetScreenMagicMode (NvCtrlAttributePrivateHandle *, int *, int *,
- int *);
-
-ReturnStatus
NvCtrlXrandrGetStringAttribute (NvCtrlAttributePrivateHandle *,
unsigned int, int, char **);
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c b/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
index 8a97c1d..99aa756 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
@@ -61,35 +61,6 @@ typedef struct __libXrandrInfoRec {
void (* XRRSelectInput)
(Display *dpy, Window window, int mask);
-
- XRRScreenConfiguration * (* XRRGetScreenInfo)
- (Display *dpy, Drawable draw);
-
- SizeID (* XRRConfigCurrentConfiguration)
- (XRRScreenConfiguration *config, Rotation *rotation);
-
- short (* XRRConfigCurrentRate)
- (XRRScreenConfiguration *config);
-
- Rotation (* XRRConfigRotations)
- (XRRScreenConfiguration *config, Rotation *rotation);
-
- XRRScreenSize * (* XRRConfigSizes)
- (XRRScreenConfiguration *config, int *nsizes);
-
- short * (* XRRConfigRates)
- (XRRScreenConfiguration *config, int size_index, int *nrates);
-
- Status (* XRRSetScreenConfig)
- (Display *dpy, XRRScreenConfiguration *config, Drawable draw,
- int size_index, Rotation rotation, Time timestamp);
-
- Status (* XRRSetScreenConfigAndRate)
- (Display *dpy, XRRScreenConfiguration *config, Drawable draw,
- int size_index, Rotation rotation, short rate, Time timestamp);
-
- void (* XRRFreeScreenConfigInfo)
- (XRRScreenConfiguration *);
} __libXrandrInfo;
@@ -145,42 +116,6 @@ static Bool open_libxrandr(void)
NV_DLSYM(__libXrandr->handle, "XRRSelectInput");
if ((error_str = dlerror()) != NULL) goto fail;
- __libXrandr->XRRGetScreenInfo =
- NV_DLSYM(__libXrandr->handle, "XRRGetScreenInfo");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigCurrentConfiguration =
- NV_DLSYM(__libXrandr->handle, "XRRConfigCurrentConfiguration");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigCurrentRate =
- NV_DLSYM(__libXrandr->handle, "XRRConfigCurrentRate");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigRotations =
- NV_DLSYM(__libXrandr->handle, "XRRConfigRotations");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigSizes =
- NV_DLSYM(__libXrandr->handle, "XRRConfigSizes");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigRates =
- NV_DLSYM(__libXrandr->handle, "XRRConfigRates");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRSetScreenConfig =
- NV_DLSYM(__libXrandr->handle, "XRRSetScreenConfig");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRSetScreenConfigAndRate =
- NV_DLSYM(__libXrandr->handle, "XRRSetScreenConfigAndRate");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRFreeScreenConfigInfo =
- NV_DLSYM(__libXrandr->handle, "XRRFreeScreenConfigInfo");
- if ((error_str = dlerror()) != NULL) goto fail;
-
/* Up the ref count */
__libXrandr->ref_count++;
@@ -234,28 +169,6 @@ static void close_libxrandr(void)
/******************************************************************************
*
- * Some XR&R functions fails on XFree86 4.3.0 with BadImplementation if the
- * screen resolution is not the one the server started with. We work around
- * that by temporarily installing an error handler, trying the call, and then
- * disabling the rotation page if it fails.
- *
- ****/
-
-static int errors = 0;
-static int (*old_error_handler)(Display *, XErrorEvent *);
-
-static int
-error_handler (Display *dpy, XErrorEvent *err)
-{
- errors++;
- return 0;
-
-} /* error_handler() */
-
-
-
-/******************************************************************************
- *
* Initializes the NvCtrlXrandrAttributes Extension by linking the
* libXrandr.so.2 library and resolving functions used.
*
@@ -265,8 +178,6 @@ NvCtrlXrandrAttributes *
NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
{
NvCtrlXrandrAttributes * xrandr = NULL;
- XRRScreenConfiguration *sc;
- Rotation rotation, rotations;
/* Check parameters */
if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
@@ -289,16 +200,10 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
}
- XSync(h->dpy, False);
- errors = 0;
- old_error_handler = XSetErrorHandler(error_handler);
-
/* Verify server support of XRandR extension */
if ( !__libXrandr->XRRQueryExtension(h->dpy,
&(xrandr->event_base),
&(xrandr->error_base)) ) {
- XSync(h->dpy, False);
- XSetErrorHandler(old_error_handler);
goto fail;
}
@@ -307,8 +212,6 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
((xrandr->major_version < MIN_RANDR_MAJOR) ||
((xrandr->major_version == MIN_RANDR_MAJOR) &&
(xrandr->minor_version < MIN_RANDR_MINOR)))) {
- XSync(h->dpy, False);
- XSetErrorHandler(old_error_handler);
goto fail;
}
@@ -316,22 +219,6 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
__libXrandr->XRRSelectInput(h->dpy, RootWindow(h->dpy, h->target_id),
RRScreenChangeNotifyMask);
-
- /* Try calling a couple functions that are known to fail */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy, h->target_id));
- if ( sc ) {
- rotations = __libXrandr->XRRConfigRotations(sc, &rotation);
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- } else {
- errors++;
- }
-
- XSync(h->dpy, False);
- XSetErrorHandler(old_error_handler);
- if ( errors > 0 ) {
- goto fail;
- }
-
return xrandr;
fail:
@@ -368,158 +255,6 @@ NvCtrlXrandrAttributesClose (NvCtrlAttributePrivateHandle *h)
-/******************************************************************************
- *
- * Retrieves XRandR integer attributes
- *
- ****/
-
-ReturnStatus
-NvCtrlXrandrGetAttribute (NvCtrlAttributePrivateHandle *h,
- int attr, int *val)
-{
- XRRScreenConfiguration *sc;
- Rotation rotation, rotations;
-
-
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
- if ( !val ) {
- return NvCtrlBadArgument;
- }
-
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- rotations = __libXrandr->XRRConfigRotations(sc, &rotation);
- __libXrandr->XRRFreeScreenConfigInfo(sc);
-
-
- /* Fetch right attribute */
- switch ( attr ) {
-
- case NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED:
- /* For rotation to be supported, there must
- * be at least 2 orientations
- */
- *val = ( rotations != 1 && rotations != 2 &&
- rotations != 4 && rotations != 8 ) ? 1 : 0;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATIONS:
- /* Return the available rotations */
- *val = rotations;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATION:
- /* Return the current rotation */
- *val = (int)rotation;
- break;
-
- default:
- return NvCtrlNoAttribute;
- break;
- } /* Done fetching attribute */
-
-
- return NvCtrlSuccess;
-
-} /* NvCtrlXrandrGetAttribute */
-
-
-
-/******************************************************************************
- *
- * Sets XRandR integer attributes
- *
- ****/
-
-static ReturnStatus
-set_rotation(NvCtrlAttributePrivateHandle *h, Rotation rotation)
-{
- XRRScreenConfiguration *sc;
- Rotation cur_rotation, rotations;
- SizeID cur_size;
- Status ret;
-
-
- assert(h->target_type == NV_CTRL_TARGET_TYPE_X_SCREEN);
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- cur_size = __libXrandr->XRRConfigCurrentConfiguration(sc, &cur_rotation);
- rotations = __libXrandr->XRRConfigRotations(sc, &cur_rotation);
-
-
- /* Check orientation we want is supported */
- if ( !(rotations & rotation) ) {
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlBadArgument;
- }
-
-
- /* Set the orientation */
- ret = __libXrandr->XRRSetScreenConfig(h->dpy, sc,
- RootWindow(h->dpy, h->target_id),
- cur_size, rotation, CurrentTime);
- __libXrandr->XRRFreeScreenConfigInfo(sc);
-
- return ( ret == Success )?NvCtrlSuccess:NvCtrlError;
-
-} /* set_rotation() */
-
-
-ReturnStatus
-NvCtrlXrandrSetAttribute (NvCtrlAttributePrivateHandle *h,
- int attr, int val)
-{
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
-
-
- /* Set right attribute */
- switch ( attr ) {
-
- case NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED:
- return NvCtrlReadOnlyAttribute;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATIONS:
- return NvCtrlReadOnlyAttribute;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATION:
- return set_rotation(h, (Rotation)val);
- break;
-
- default:
- return NvCtrlNoAttribute;
- break;
- }
-
- return NvCtrlSuccess;
-
-} /* NvCtrlXrandrSetAttribute */
-
-
/*
* Get Xrandr String Attribute Values
*/
@@ -549,129 +284,3 @@ NvCtrlXrandrGetStringAttribute (NvCtrlAttributePrivateHandle *h,
return NvCtrlNoAttribute;
} /* NvCtrlXrandrGetStringAttribute() */
-
-
-/******************************************************************************
- *
- * Sets XRandR size and refresh rate.
- *
- ****/
-
-ReturnStatus
-NvCtrlXrandrSetScreenMagicMode (NvCtrlAttributePrivateHandle *h,
- int width, int height, int magic_ref_rate)
-{
- XRRScreenConfiguration *sc;
- Rotation cur_rotation;
- int nsizes;
- XRRScreenSize *sizes;
- int nrates;
- short *rates;
- Status ret;
-
-
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
-
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
-
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- __libXrandr->XRRConfigRotations(sc, &cur_rotation);
-
-
- /* Look for size that has matching refresh rate */
- sizes = __libXrandr->XRRConfigSizes(sc, &nsizes);
- while ( --nsizes >= 0 ) {
-
- /* Must match in size */
- if ( sizes[nsizes].width != width ||
- sizes[nsizes].height != height ) {
- continue;
- }
-
- rates = __libXrandr->XRRConfigRates(sc, nsizes, &nrates);
- while ( --nrates >= 0 ) {
-
- /* Set the mode if we found the rate */
- if ( *rates == magic_ref_rate ) {
- ret = __libXrandr->XRRSetScreenConfigAndRate
- (h->dpy, sc, RootWindow(h->dpy, h->target_id), nsizes,
- cur_rotation, magic_ref_rate, CurrentTime);
-
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return (ret == Success)?NvCtrlSuccess:NvCtrlError;
- }
- rates++;
- }
- }
-
- /* If we are here, then we could not find the correct mode to set */
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlError;
-
-} /* NvCtrlXrandrSetScreenMagicMode */
-
-
-
-/******************************************************************************
- *
- * Gets XRandR size and refresh rate.
- *
- ****/
-
-ReturnStatus
-NvCtrlXrandrGetScreenMagicMode (NvCtrlAttributePrivateHandle *h,
- int *width, int *height, int *magic_ref_rate)
-{
- XRRScreenConfiguration *sc;
- Rotation cur_rotation;
- int nsizes;
- XRRScreenSize *sizes;
- int cur_size;
- short cur_rate;
-
-
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
-
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
-
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- cur_size = __libXrandr->XRRConfigCurrentConfiguration(sc, &cur_rotation);
- cur_rate = __libXrandr->XRRConfigCurrentRate(sc);
- sizes = __libXrandr->XRRConfigSizes(sc, &nsizes);
- if (cur_size >= nsizes) {
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlError;
- }
-
-
- /* Get the width & height from the size information */
- *width = sizes[cur_size].width;
- *height = sizes[cur_size].height;
- *magic_ref_rate = (int)cur_rate;
-
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlSuccess;
-
-} /* NvCtrlXrandrGetScreenMagicMode */
diff --git a/src/libXNVCtrlAttributes/src.mk b/src/libXNVCtrlAttributes/src.mk
deleted file mode 100644
index e8f9609..0000000
--- a/src/libXNVCtrlAttributes/src.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# files in the src/libXNVCtrlAttributes directory of nvidia-settings
-#
-
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributes.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesNvControl.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesVidMode.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesXv.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesGlx.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesXrandr.c
-
-LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += NvCtrlAttributes.h
-LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += NvCtrlAttributesPrivate.h
-LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += src.mk
diff --git a/src/lscf.c b/src/lscf.c
index 569aed4..e77d527 100644
--- a/src/lscf.c
+++ b/src/lscf.c
@@ -1,4 +1,7 @@
#include <stdio.h>
+
+#include "lscf.h"
+
#if defined(NV_SUNOS)
/* Interface to the Solaris Service Management Facility.
diff --git a/src/msg.c b/src/msg.c
index 09467b4..1a79651 100644
--- a/src/msg.c
+++ b/src/msg.c
@@ -19,6 +19,9 @@
#include "msg.h"
#include "command-line.h"
+#include "common-utils.h"
+
+#include <NvCtrlAttributes.h>
#include <stdio.h>
#include <stdarg.h>
diff --git a/src/msg.h b/src/msg.h
index 5334a32..1188ea9 100644
--- a/src/msg.h
+++ b/src/msg.h
@@ -29,47 +29,4 @@ void nv_info_msg(const char*, const char*, ...);
void nv_msg(const char*, const char*, ...);
void nv_msg_preserve_whitespace(const char*, const char*, ...);
-
-/*
- * NV_VSNPRINTF(): macro that assigns buf using vsnprintf(). This is
- * correct for differing semantics of vsnprintf() in different
- * versions of glibc:
- *
- * different semantics of the return value from (v)snprintf:
- *
- * -1 when the buffer is not long enough (glibc < 2.1)
- *
- * or
- *
- * the length the string would have been if the buffer had been large
- * enough (glibc >= 2.1)
- *
- * This macro allocates memory for buf; the caller should use free()
- * when done.
- */
-#define NV_FMT_BUF_LEN 256
-#define NV_VSNPRINTF(buf, fmt) \
-do { \
- va_list ap; \
- int len, current_len = NV_FMT_BUF_LEN; \
- \
- (buf) = malloc(current_len); \
- \
- while (1) { \
- va_start(ap, fmt); \
- len = vsnprintf((buf), current_len, (fmt), ap); \
- va_end(ap); \
- \
- if ((len > -1) && (len < current_len)) { \
- break; \
- } else if (len > -1) { \
- current_len = len + 1; \
- } else { \
- current_len += NV_FMT_BUF_LEN; \
- } \
- \
- (buf) = realloc(buf, current_len); \
- } \
-} while (0)
-
#endif /* __MSG_H__ */
diff --git a/src/option-table.h b/src/option-table.h
index 58bd581..50b0356 100644
--- a/src/option-table.h
+++ b/src/option-table.h
@@ -33,45 +33,49 @@
*/
static const NVGetoptOption __options[] = {
- { "version", 'v', 0, NULL,
- "Print the <nvidia-settings> version and exit." },
+ { "version", 'v', NVGETOPT_HELP_ALWAYS, NULL,
+ "Print the ^nvidia-settings^ version and exit." },
- { "help", 'h', 0, NULL,
+ { "help", 'h', NVGETOPT_HELP_ALWAYS, NULL,
"Print usage information and exit." },
- { "config", CONFIG_FILE_OPTION, NVGETOPT_STRING_ARGUMENT, NULL,
- "Use the configuration file ^CONFIG> rather than the "
- "default ^" DEFAULT_RC_FILE ">" },
+ { "config", CONFIG_FILE_OPTION,
+ NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "Use the configuration file &CONFIG& rather than the "
+ "default &" DEFAULT_RC_FILE "&" },
- { "ctrl-display", 'c', NVGETOPT_STRING_ARGUMENT, NULL,
+ { "ctrl-display", 'c',
+ NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
"Control the specified X display. If this option is not given, then "
- "<nvidia-settings> will control the display specified by <'--display'>; "
- "if that is not given, then the ^$DISPLAY> environment variable is used." },
+ "^nvidia-settings^ will control the display specified by ^'--display'^; "
+ "if that is not given, then the &$DISPLAY& environment "
+ "variable is used." },
- { "load-config-only", 'l', 0, NULL,
+ { "load-config-only", 'l', NVGETOPT_HELP_ALWAYS, NULL,
"Load the configuration file, send the values specified therein to "
"the X server, and exit. This mode of operation is useful to place "
"in your xinitrc file, for example." },
- { "no-config", 'n', 0, NULL,
+ { "no-config", 'n', NVGETOPT_HELP_ALWAYS, NULL,
"Do not load the configuration file. This mode of operation is useful "
- "if <nvidia-settings> has difficulties starting due to problems with "
+ "if ^nvidia-settings^ has difficulties starting due to problems with "
"applying settings in the configuration file." },
- { "rewrite-config-file", 'r', 0, NULL,
+ { "rewrite-config-file", 'r', NVGETOPT_HELP_ALWAYS, NULL,
"Write the X server configuration to the configuration file, and exit, "
"without starting the graphical user interface. See EXAMPLES section." },
{ "verbose", 'V',
- NVGETOPT_STRING_ARGUMENT | NVGETOPT_ARGUMENT_IS_OPTIONAL, NULL,
+ NVGETOPT_STRING_ARGUMENT | NVGETOPT_ARGUMENT_IS_OPTIONAL |
+ NVGETOPT_HELP_ALWAYS, NULL,
"Controls how much information is printed. By default, the verbosity "
- "is <errors> and only error messages are printed. Valid values are "
- "<'none'> (do not print messages), <'errors'> (print error messages), "
- "<'warnings'> (print error and warning messages), and "
- "<'all'> (print error, warning and other informational messages)." },
+ "is ^errors^ and only error messages are printed. Valid values are "
+ "^'none'^ (do not print messages), ^'errors'^ (print error messages), "
+ "^'warnings'^ (print error and warning messages), and "
+ "^'all'^ (print error, warning and other informational messages)." },
- { "assign", 'a', NVGETOPT_STRING_ARGUMENT, NULL,
- "The ^ASSIGN> argument to the <'--assign'> command line option is of the "
+ { "assign", 'a', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "The &ASSIGN& argument to the ^'--assign'^ command line option is of the "
"form:\n"
"\n"
TAB "{DISPLAY}/{attribute name}[{display devices}]={value}\n"
@@ -80,7 +84,7 @@ static const NVGetoptOption __options[] = {
"X Display {DISPLAY}. {DISPLAY} follows the usual {host}:{display}."
"{screen} syntax of the DISPLAY environment variable and is optional; "
"when it is not specified, then it is implied following the same rule as "
- "the <--ctrl-display> option. If the X screen is not specified, then the "
+ "the ^--ctrl-display^ option. If the X screen is not specified, then the "
"assignment is made to all X screens. Note that the '/' is only required "
"when {DISPLAY} is present.\n"
"\n"
@@ -88,8 +92,8 @@ static const NVGetoptOption __options[] = {
"an assignment to something other than an X screen. A target "
"specification is contained within brackets and consists of a target "
"type name, a colon, and the target id. The target type name can be "
- "one of <\"screen\", \"gpu\", \"framelock\", \"vcs\", \"gvi\",> or "
- "<\"fan\";> the target id is the index into the list of targets "
+ "one of ^\"screen\", \"gpu\", \"framelock\", \"vcs\", \"gvi\",^ or "
+ "^\"fan\";^ the target id is the index into the list of targets "
"(for that target type). The target specification can be used in "
"{DISPLAY} wherever an X screen can be used, following the syntax "
"{host}:{display}[{target_type}:{target_id}]. See the output of\n"
@@ -114,41 +118,41 @@ static const NVGetoptOption __options[] = {
TAB "--assign=\"SyncToVBlank=1\"\n"
TAB "-a [gpu:0]/DigitalVibrance[DFP-1]=63\n" },
- { "query", 'q', NVGETOPT_STRING_ARGUMENT, NULL,
- "The ^QUERY> argument to the <'--query'> command line option is of the "
+ { "query", 'q', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "The &QUERY& argument to the ^'--query'^ command line option is of the "
"form:\n"
"\n"
TAB "{DISPLAY}/{attribute name}[{display devices}]\n"
"\n"
"This queries the current value of the attribute {attribute name} on the "
"X Display {DISPLAY}. The syntax is the same as that for the "
- "<'--assign'> option, without '=<{value}'>; specify <'-q screens', "
- "'-q gpus', '-q framelocks', '-q vcs', '-q gvis', or '-q fans'> to "
+ "^'--assign'^ option, without '=^{value}'^; specify ^'-q screens', "
+ "'-q gpus', '-q framelocks', '-q vcs', '-q gvis', or '-q fans'^ to "
"query a list of X screens, GPUs, Frame Lock devices, Visual Computing "
"Systems, SDI Input Devices, or Fans, respectively, that are present "
- "on the X Display {DISPLAY}. Specify <'-q all'> to query all attributes." },
+ "on the X Display {DISPLAY}. Specify ^'-q all'^ to query all attributes." },
- { "terse", 't', 0, NULL,
+ { "terse", 't', NVGETOPT_HELP_ALWAYS, NULL,
"When querying attribute values with the '--query' command line option, "
"only print the current value, rather than the more verbose description "
"of the attribute, its valid values, and its current value." },
- { "display-device-string", 'd', 0, NULL,
+ { "display-device-string", 'd', NVGETOPT_HELP_ALWAYS, NULL,
"When printing attribute values in response to the '--query' option, "
"if the attribute value is a display device mask, print the value "
"as a list of display devices (e.g., \"CRT-0, DFP-0\"), rather than "
"a hexadecimal bit mask (e.g., 0x00010001)." },
- { "glxinfo", 'g', 0, NULL,
+ { "glxinfo", 'g', NVGETOPT_HELP_ALWAYS, NULL,
"Print GLX Information for the X display and exit." },
- { "describe", 'e', NVGETOPT_STRING_ARGUMENT, NULL,
+ { "describe", 'e', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
"Prints information about a particular attribute. Specify 'all' to "
"list the descriptions of all attributes. Specify 'list' to list the "
"attribute names without a descriptions." },
- { "page", 'p', NVGETOPT_STRING_ARGUMENT, NULL,
- "The ^PAGE> argument to the <'--page'> commandline option selects a "
+ { "page", 'p', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "The &PAGE& argument to the ^'--page'^ commandline option selects a "
"particular page in the nvidia-settings user interface to display "
"upon starting nvidia-settings. Valid values are the page names "
"in the tree view on the left side of the nvidia-settings user "
@@ -163,7 +167,7 @@ static const NVGetoptOption __options[] = {
"\n"
TAB "--page=\"GPU 0 - (Quadro 6000), PowerMizer\"\n"
"\n"
- "The first page with a name matching the ^PAGE> argument will be used. "
+ "The first page with a name matching the &PAGE& argument will be used. "
"By default, the \"X Server Information\" page is displayed." },
{ NULL, 0, 0, NULL, NULL},
diff --git a/src/parse.c b/src/parse.c
index 0e9ec28..0df6942 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -28,6 +28,9 @@
#include "parse.h"
#include "NvCtrlAttributes.h"
+#include "common-utils.h"
+
+
/* local helper functions */
static int nv_parse_display_and_target(char *start, char *end,
@@ -36,7 +39,6 @@ static char **nv_strtok(char *s, char c, int *n);
static void nv_free_strtoks(char **s, int n);
static int ctoi(const char c);
static int count_number_of_chars(char *o, char d);
-static char *nv_strndup(char *s, int n);
/*
* Table of all attribute names recognized by the attribute string
@@ -217,7 +219,6 @@ AttributeTableEntry attributeTable[] = {
{ "GvioDetectedVideoFormat", NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT, I|N, "Returns the input video format detected by the GVO or GVI device. For GVI devices, the jack+channel must be passed through via the display mask param where the jack number is in the lower 16 bits and the channel number is in the upper 16 bits." },
{ "GvoInputVideoFormat", NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT, I|N|A, "DEPRECATED: use \"GvioDetectedVideoFormat\" instead." },
{ "GvoDataFormat", NV_CTRL_GVO_DATA_FORMAT, I, "Configures how the data in the source (either the X screen or the GLX pbuffer) is interpreted and displayed by the GVO device." },
- { "GvoDisplayXScreen", NV_CTRL_GVO_DISPLAY_X_SCREEN, I|N, "Enable/disable GVO output of the X screen (in Clone mode)." },
{ "GvoCompositeSyncInputDetected", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, I|N, "Indicates whether Composite Sync input is detected." },
{ "GvoCompositeSyncInputDetectMode", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE, I|N, "Get/set the Composite Sync input detect mode." },
{ "GvoSdiSyncInputDetected", NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED, I|N, "Indicates whether SDI Sync input is detected, and what type." },
@@ -226,8 +227,6 @@ AttributeTableEntry attributeTable[] = {
{ "GvoSyncDelayLines", NV_CTRL_GVO_SYNC_DELAY_LINES, I, "Controls the skew between the input sync and the output sync in numbers of lines from vsync; this is a 12-bit value. If the GVO Capabilities has the Advanced Sync Skew bit set, then setting this value will set a sync advance instead of a delay." },
{ "GvoInputVideoFormatReacquire", NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE, I|N, "Forces input detection to reacquire the input format." },
{ "GvoGlxLocked", NV_CTRL_GVO_GLX_LOCKED, I|N, "Indicates that GVO configuration is locked by GLX; this occurs when the GLX_NV_video_out function calls glXGetVideoDeviceNV(). All GVO output resources are locked until either glXReleaseVideoDeviceNV() is called or the X Display used when calling glXGetVideoDeviceNV() is closed." },
- { "GvoXScreenPanX", NV_CTRL_GVO_X_SCREEN_PAN_X, I, "When GVO output of the X screen is enabled, the pan x/y attributes control which portion of the X screen is displayed by GVO. These attributes can be updated while GVO output is enabled, or before enabling GVO output. The pan values will be clamped so that GVO output is not panned beyond the end of the X screen." },
- { "GvoXScreenPanY", NV_CTRL_GVO_X_SCREEN_PAN_Y, I, "When GVO output of the X screen is enabled, the pan x/y attributes control which portion of the X screen is displayed by GVO. These attributes can be updated while GVO output is enabled, or before enabling GVO output. The pan values will be clamped so that GVO output is not panned beyond the end of the X screen." },
{ "GvoOverrideHwCsc", NV_CTRL_GVO_OVERRIDE_HW_CSC, I, "Override the SDI hardware's Color Space Conversion with the values controlled through XNVCTRLSetGvoColorConversion() and XNVCTRLGetGvoColorConversion()." },
{ "GvoCapabilities", NV_CTRL_GVO_CAPABILITIES, I|N, "Returns a description of the GVO capabilities that differ between NVIDIA SDI products. This value is a bitmask where each bit indicates whether that capability is available." },
{ "GvoCompositeTermination", NV_CTRL_GVO_COMPOSITE_TERMINATION, I, "Enable or disable 75 ohm termination of the SDI composite input signal." },
@@ -301,6 +300,9 @@ AttributeTableEntry attributeTable[] = {
{ "ColorSpace", NV_CTRL_COLOR_SPACE, 0, "Sets the color space of the signal sent to the display device." },
{ "ColorRange", NV_CTRL_COLOR_RANGE, 0, "Sets the color range of the signal sent to the display device." },
{ "SynchronousPaletteUpdates", NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES, 0, "Controls whether colormap updates are synchronized with X rendering." },
+ { "CurrentMetaModeID", NV_CTRL_CURRENT_METAMODE_ID, N, "The ID of the current MetaMode." },
+ { "CurrentMetaMode", NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2, S|N, "Controls the current MetaMode." },
+ { "XineramaInfoOrder", NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER, S|N, "Controls the TwinViewXineramaInfoOrder." },
/* TV */
{ "TVOverScan", NV_CTRL_TV_OVERSCAN, 0, "Adjusts the amount of overscan on the specified display device." },
@@ -374,7 +376,7 @@ AttributeTableEntry attributeTable[] = {
* about.
*/
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GVO_AUDIO_BLANKING
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_DISPLAY_ENABLED
#warning "Have you forgotten to add a new integer attribute to attributeTable?"
#endif
@@ -459,7 +461,7 @@ TargetTypeEntry targetTypeTable[] = {
NV_FALSE, /* uses_display_devices */
1, 27 }, /* required major,minor protocol rev */
- { NULL, NULL, 0, 0, 0 },
+ { NULL, NULL, 0, 0, 0, 0, 0, 0 },
};
@@ -588,7 +590,7 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
s++;
start = s;
while (*s && *s != ']') s++;
- display_device_name = nv_strndup(start, s - start);
+ display_device_name = nvstrndup(start, s - start);
a->display_device_mask =
display_device_name_to_display_device_mask(display_device_name);
/*
@@ -617,7 +619,10 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
tmp = s;
if (a->flags & NV_PARSER_TYPE_COLOR_ATTRIBUTE) {
/* color attributes are floating point */
- a->fval = strtod(s, &tmp);
+ a->val.f = strtod(s, &tmp);
+ } else if (a->flags & NV_PARSER_TYPE_STRING_ATTRIBUTE) {
+ a->val.str = strdup(s);
+ tmp = s + strlen(s);
} else if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
/*
* Either a single 32-bit integer or two 16-bit
@@ -625,11 +630,11 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
* Passing base as 0 allows packed values to be specified
* in hex (Bug 377242)
*/
- a->val = strtol(s, &tmp, 0);
+ a->val.i = strtol(s, &tmp, 0);
if (tmp && *tmp == ',') {
- a->val = (a->val & 0xffff) << 16;
- a->val |= strtol((tmp + 1), &tmp, 0) & 0xffff;
+ a->val.i = (a->val.i & 0xffff) << 16;
+ a->val.i |= strtol((tmp + 1), &tmp, 0) & 0xffff;
}
} else if (a->flags & NV_PARSER_TYPE_VALUE_IS_DISPLAY) {
if (nv_strcasecmp(s, "alldisplays")) {
@@ -642,19 +647,19 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
((mask & (DISPLAY_DEVICES_WILDCARD_CRT |
DISPLAY_DEVICES_WILDCARD_TV |
DISPLAY_DEVICES_WILDCARD_DFP)) == 0)) {
- a->val = mask;
+ a->val.i = mask;
tmp = s + strlen(s);
} else {
- a->val = strtol(s, &tmp, 0);
+ a->val.i = strtol(s, &tmp, 0);
}
}
} else if (a->flags & NV_PARSER_TYPE_SDI_CSC) {
/* String that names a standard CSC matrix */
- a->pfval = nv_get_sdi_csc_matrix(s);
+ a->val.pf = nv_get_sdi_csc_matrix(s);
tmp = s + strlen(s);
} else {
/* all other attributes are integer */
- a->val = strtol(s, &tmp, 0);
+ a->val.i = strtol(s, &tmp, 0);
}
if (tmp && (s != tmp)) a->flags |= NV_PARSER_HAS_VAL;
@@ -743,7 +748,7 @@ static int nv_parse_display_and_target(char *start,
len = pClose - pOpen - 1;
- tmp = nv_strndup(pOpen + 1, len);
+ tmp = nvstrndup(pOpen + 1, len);
/* find the colon within the temp string */
@@ -836,7 +841,7 @@ static int nv_parse_display_and_target(char *start,
if (start < end) {
- a->display = nv_strndup(start, end - start);
+ a->display = nvstrndup(start, end - start);
a->flags |= NV_PARSER_HAS_X_DISPLAY;
/*
@@ -1236,7 +1241,6 @@ void nv_parsed_attribute_add(ParsedAttribute *head, ParsedAttribute *a)
t->target_id = a->target_id;
t->attr = a->attr;
t->val = a->val;
- t->fval = a->fval;
t->display_device_mask = a->display_device_mask;
t->flags = a->flags;
@@ -1498,11 +1502,11 @@ static char **nv_strtok(char *s, char c, int *n)
tokens = malloc((count + 1) * sizeof(char *));
len = delims[0] - s;
- tokens[0] = nv_strndup(s, len);
+ tokens[0] = nvstrndup(s, len);
for (i = 1; i < count+1; i++) {
len = delims[i] - delims[i-1];
- tokens[i] = nv_strndup(delims[i-1]+1, len-1);
+ tokens[i] = nvstrndup(delims[i-1]+1, len-1);
}
free(delims);
@@ -1579,24 +1583,6 @@ int count_number_of_bits(unsigned int mask)
-/*
- * nv_strndup() - this function takes a pointer to a string and a
- * length n, mallocs a new string of n+1, copies the first n chars
- * from the original string into the new, and null terminates the new
- * string. The caller should free the string.
- */
-
-static char *nv_strndup(char *s, int n)
-{
- char *m = malloc(n + 1);
- strncpy (m, s, n);
- m[n] = '\0';
- return (m);
-
-} /* nv_strndup() */
-
-
-
/** parse_skip_whitespace() ******************************************
*
* Returns a pointer to the start of non-whitespace chars in string 'str'
@@ -1776,6 +1762,39 @@ const char *parse_read_display_name(const char *str, unsigned int *mask)
+/** parse_read_display_id() *****************************************
+ *
+ * Convert a 'DPY-#' style display device name into a display device
+ * id. The location where parsing stopped is returned or NULL if an
+ * error occured.
+ *
+ **/
+const char *parse_read_display_id(const char *str, unsigned int *id)
+{
+ if (!str || !id) {
+ return NULL;
+ }
+
+ str = parse_skip_whitespace(str);
+ if (!strncmp(str, "DPY-", 4)) {
+ *id = atoi(str+4);
+ } else {
+ return NULL;
+ }
+
+ while (*str && *str != ':') {
+ str++;
+ }
+ if (*str == ':') {
+ str++;
+ }
+
+ return parse_skip_whitespace(str);
+
+} /* parse_read_display_id() */
+
+
+
/** parse_read_float_range() *****************************************
*
* Reads the maximun/minimum information from a string in the
diff --git a/src/parse.h b/src/parse.h
index 1b1870a..7dfcc1b 100644
--- a/src/parse.h
+++ b/src/parse.h
@@ -118,9 +118,12 @@ typedef struct _ParsedAttribute {
int target_type;
int target_id;
int attr;
- int val;
- float fval; /* XXX put in a union with val? */
- const float *pfval; /* XXX put in a union with val? */
+ union {
+ int i;
+ float f;
+ const float *pf;
+ char *str;
+ } val;
uint32 display_device_mask;
uint32 flags;
struct _ParsedAttribute *next;
@@ -329,6 +332,7 @@ const char *parse_read_integer_pair(const char *str,
const char separator, int *a, int *b);
const char *parse_read_name(const char *str, char **name, char term);
const char *parse_read_display_name(const char *str, unsigned int *mask);
+const char *parse_read_display_id(const char *str, unsigned int *id);
int parse_read_float_range(const char *str, float *min, float *max);
int count_number_of_bits(unsigned int mask);
diff --git a/src/query-assign.c b/src/query-assign.c
index 52ec01f..54bc01a 100644
--- a/src/query-assign.c
+++ b/src/query-assign.c
@@ -32,6 +32,7 @@
#include "parse.h"
#include "msg.h"
#include "query-assign.h"
+#include "common-utils.h"
extern int __verbosity;
extern int __terse;
@@ -633,19 +634,20 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
/* don't do any checks on integer or bitmask values */
break;
case ATTRIBUTE_TYPE_BOOL:
- if ((a->val < 0) || (a->val > 1)) {
+ if ((a->val.i < 0) || (a->val.i > 1)) {
bad_val = NV_TRUE;
}
break;
case ATTRIBUTE_TYPE_RANGE:
if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
- if (((a->val >> 16) < (valid.u.range.min >> 16)) ||
- ((a->val >> 16) > (valid.u.range.max >> 16)) ||
- ((a->val & 0xffff) < (valid.u.range.min & 0xffff)) ||
- ((a->val & 0xffff) > (valid.u.range.max & 0xffff)))
+ if (((a->val.i >> 16) < (valid.u.range.min >> 16)) ||
+ ((a->val.i >> 16) > (valid.u.range.max >> 16)) ||
+ ((a->val.i & 0xffff) < (valid.u.range.min & 0xffff)) ||
+ ((a->val.i & 0xffff) > (valid.u.range.max & 0xffff)))
bad_val = NV_TRUE;
} else {
- if ((a->val < valid.u.range.min) || (a->val > valid.u.range.max))
+ if ((a->val.i < valid.u.range.min) ||
+ (a->val.i > valid.u.range.max))
bad_val = NV_TRUE;
}
break;
@@ -653,16 +655,16 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
unsigned int u, l;
- u = (((unsigned int) a->val) >> 16);
- l = (a->val & 0xffff);
+ u = (((unsigned int) a->val.i) >> 16);
+ l = (a->val.i & 0xffff);
if ((u > 15) || ((valid.u.bits.ints & (1 << u << 16)) == 0) ||
(l > 15) || ((valid.u.bits.ints & (1 << l)) == 0)) {
bad_val = NV_TRUE;
}
} else {
- if ((a->val > 31) || (a->val < 0) ||
- ((valid.u.bits.ints & (1<<a->val)) == 0)) {
+ if ((a->val.i > 31) || (a->val.i < 0) ||
+ ((valid.u.bits.ints & (1<<a->val.i)) == 0)) {
bad_val = NV_TRUE;
}
}
@@ -688,13 +690,13 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
nv_warning_msg("The value pair %d,%d for attribute '%s' (%s%s) "
"specified %s is invalid.",
- a->val >> 16, a->val & 0xffff,
+ a->val.i >> 16, a->val.i & 0xffff,
a->name, t->name,
d_str, whence);
} else {
nv_warning_msg("The value %d for attribute '%s' (%s%s) "
"specified %s is invalid.",
- a->val, a->name, t->name,
+ a->val.i, a->name, t->name,
d_str, whence);
}
print_valid_values(a->name, a->attr, a->flags, valid);
@@ -834,7 +836,7 @@ static void print_valid_values(char *name, int attr, uint32 flags,
for (i = 0; targetTypeTable[i].name; i++) {
if (valid.permissions & targetTypeTable[i].permission_bit) {
if (n > 0) c += sprintf(c, ", ");
- c += sprintf(c, targetTypeTable[i].name);
+ c += sprintf(c, "%s", targetTypeTable[i].name);
n++;
}
}
@@ -1556,27 +1558,32 @@ static int process_parsed_attribute_internal(CtrlHandleTarget *t,
}
if (assign) {
- ret = validate_value(t, a, d, target_type, whence);
- if (!ret) return NV_FALSE;
+ if (a->flags & NV_PARSER_TYPE_STRING_ATTRIBUTE) {
+ status = NvCtrlSetStringAttribute(t->h, a->attr, a->val.str, NULL);
+ } else {
- status = NvCtrlSetDisplayAttribute(t->h, d, a->attr, a->val);
-
- if (status != NvCtrlSuccess) {
- nv_error_msg("Error assigning value %d to attribute '%s' "
- "(%s%s) as specified %s (%s).",
- a->val, a->name, t->name, str, whence,
- NvCtrlAttributesStrError(status));
- return NV_FALSE;
- }
-
- if (verbose) {
- if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
- nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d,%d.",
- a->name, t->name, str,
- a->val >> 16, a->val & 0xffff);
- } else {
- nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d.",
- a->name, t->name, str, a->val);
+ ret = validate_value(t, a, d, target_type, whence);
+ if (!ret) return NV_FALSE;
+
+ status = NvCtrlSetDisplayAttribute(t->h, d, a->attr, a->val.i);
+
+ if (status != NvCtrlSuccess) {
+ nv_error_msg("Error assigning value %d to attribute '%s' "
+ "(%s%s) as specified %s (%s).",
+ a->val.i, a->name, t->name, str, whence,
+ NvCtrlAttributesStrError(status));
+ return NV_FALSE;
+ }
+
+ if (verbose) {
+ if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
+ nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d,%d.",
+ a->name, t->name, str,
+ a->val.i >> 16, a->val.i & 0xffff);
+ } else {
+ nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d.",
+ a->name, t->name, str, a->val.i);
+ }
}
}
@@ -1608,7 +1615,7 @@ static int process_parsed_attribute_internal(CtrlHandleTarget *t,
tmp_str = NULL;
}
} else {
- status = NvCtrlGetDisplayAttribute(t->h, d, a->attr, &a->val);
+ status = NvCtrlGetDisplayAttribute(t->h, d, a->attr, &a->val.i);
if (status == NvCtrlAttributeNotAvailable) {
nv_warning_msg("Error querying attribute '%s' specified %s; "
@@ -1622,7 +1629,7 @@ static int process_parsed_attribute_internal(CtrlHandleTarget *t,
NvCtrlAttributesStrError(status));
return NV_FALSE;
} else {
- print_queried_value(t, &valid, a->val, a->flags, a->name, d,
+ print_queried_value(t, &valid, a->val.i, a->flags, a->name, d,
" ", __terse ?
VerboseLevelTerse : VerboseLevelVerbose);
print_valid_values(a->name, a->attr, a->flags, valid);
@@ -1874,18 +1881,18 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
}
/*
- * assign fval to all values in the array; a->attr will
+ * assign a->val.f to all values in the array; a->attr will
* tell NvCtrlSetColorAttributes() which indices in the
* array to use
*/
- v[0] = v[1] = v[2] = a->fval;
+ v[0] = v[1] = v[2] = a->val.f;
status = NvCtrlSetColorAttributes(t->h, v, v, v, a->attr);
if (status != NvCtrlSuccess) {
nv_error_msg("Error assigning %f to attribute '%s' on %s "
- "specified %s (%s)", a->fval, a->name,
+ "specified %s (%s)", a->val.f, a->name,
t->name, whence,
NvCtrlAttributesStrError(status));
goto done;
@@ -1909,9 +1916,9 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
if (a->flags & NV_PARSER_TYPE_ASSIGN_ALL_DISPLAYS) {
if (a->flags & NV_PARSER_TYPE_VALUE_IS_SWITCH_DISPLAY) {
- a->val = t->c;
+ a->val.i = t->c;
} else {
- a->val = t->d;
+ a->val.i = t->d;
}
}
@@ -1929,10 +1936,10 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
display_device_descriptor = "enabled";
}
- if ((check_mask & a->val) != a->val) {
+ if ((check_mask & a->val.i) != a->val.i) {
tmp_d_str0 =
- display_device_mask_to_display_device_name(a->val);
+ display_device_mask_to_display_device_name(a->val.i);
tmp_d_str1 =
display_device_mask_to_display_device_name(check_mask);
@@ -1960,7 +1967,7 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
/* value must be non-zero */
- if (!a->val) {
+ if (!a->val.i) {
if (a->flags & NV_PARSER_TYPE_VALUE_IS_DISPLAY) {
tmp_d_str0 = "display device";
@@ -2082,7 +2089,7 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
if (assign) {
/* Make sure the standard is known */
- if (!a->pfval) {
+ if (!a->val.pf) {
nv_error_msg("The attribute '%s' specified %s cannot be "
"assigned; valid values are \"ITU_601\", "
"\"ITU_709\", \"ITU_177\", and \"Identity\".",
@@ -2092,10 +2099,10 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
for (r = 0; r < 3; r++) {
for (c = 0; c < 3; c++) {
- colorMatrix[r][c] = a->pfval[r*5 + c];
+ colorMatrix[r][c] = a->val.pf[r*5 + c];
}
- colorOffset[r] = a->pfval[r*5 + 3];
- colorScale[r] = a->pfval[r*5 + 4];
+ colorOffset[r] = a->val.pf[r*5 + 3];
+ colorScale[r] = a->val.pf[r*5 + 4];
}
status = NvCtrlSetGvoColorConversion(t->h,
diff --git a/src/src.mk b/src/src.mk
index dda3891..beb592e 100644
--- a/src/src.mk
+++ b/src/src.mk
@@ -1,3 +1,14 @@
+##############################################################################
+# define the list of files that should be built and distributed in the
+# nvidia-settings source tarball; this is used by the NVIDIA driver
+# build when packaging the tarball, and by the nvidia-settings
+# makefile when building nvidia-settings.
+#
+# Defines NVIDIA_SETTINGS_SRC, NVIDIA_SETTINGS_EXTRA_DIST, and
+# NVIDIA_SETTINGS_DIST_FILES
+##############################################################################
+
+
#
# files in the src directory of nvidia-settings
#
@@ -11,6 +22,8 @@ SRC_SRC += parse.c
SRC_SRC += query-assign.c
SRC_SRC += glxinfo.c
+NVIDIA_SETTINGS_SRC += $(SRC_SRC)
+
SRC_EXTRA_DIST += src.mk
SRC_EXTRA_DIST += command-line.h
SRC_EXTRA_DIST += option-table.h
@@ -21,3 +34,240 @@ SRC_EXTRA_DIST += parse.h
SRC_EXTRA_DIST += query-assign.h
SRC_EXTRA_DIST += glxinfo.h
SRC_EXTRA_DIST += gen-manpage-opts.c
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(SRC_EXTRA_DIST)
+
+#
+# files in the src/image_data directory of nvidia-settings
+#
+
+IMAGE_DATA_SRC +=
+
+IMAGE_DATA_EXTRA_DIST += image_data/HOWTO-ADD-IMAGES
+IMAGE_DATA_EXTRA_DIST += image_data/antialias.png
+IMAGE_DATA_EXTRA_DIST += image_data/antialias_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/background.png
+IMAGE_DATA_EXTRA_DIST += image_data/background_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/background_tall.png
+IMAGE_DATA_EXTRA_DIST += image_data/background_tall_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/bnc_cable.png
+IMAGE_DATA_EXTRA_DIST += image_data/bnc_cable_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/bsd.png
+IMAGE_DATA_EXTRA_DIST += image_data/bsd_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/clock.png
+IMAGE_DATA_EXTRA_DIST += image_data/clock_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/color.png
+IMAGE_DATA_EXTRA_DIST += image_data/color_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/config.png
+IMAGE_DATA_EXTRA_DIST += image_data/config_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/crt.png
+IMAGE_DATA_EXTRA_DIST += image_data/crt_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/cursor_shadow.png
+IMAGE_DATA_EXTRA_DIST += image_data/cursor_shadow_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/dfp.png
+IMAGE_DATA_EXTRA_DIST += image_data/dfp_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/display_config.png
+IMAGE_DATA_EXTRA_DIST += image_data/display_config_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/framelock.png
+IMAGE_DATA_EXTRA_DIST += image_data/framelock_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/glx.png
+IMAGE_DATA_EXTRA_DIST += image_data/glx_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/gpu.png
+IMAGE_DATA_EXTRA_DIST += image_data/gpu_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/gvi.png
+IMAGE_DATA_EXTRA_DIST += image_data/gvi_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/help.png
+IMAGE_DATA_EXTRA_DIST += image_data/help_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/led_green.png
+IMAGE_DATA_EXTRA_DIST += image_data/led_green_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/led_grey.png
+IMAGE_DATA_EXTRA_DIST += image_data/led_grey_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/led_red.png
+IMAGE_DATA_EXTRA_DIST += image_data/led_red_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/logo.png
+IMAGE_DATA_EXTRA_DIST += image_data/logo_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/logo_tall.png
+IMAGE_DATA_EXTRA_DIST += image_data/logo_tall_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/nvidia_icon.png
+IMAGE_DATA_EXTRA_DIST += image_data/nvidia_icon_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/opengl.png
+IMAGE_DATA_EXTRA_DIST += image_data/opengl_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/penguin.png
+IMAGE_DATA_EXTRA_DIST += image_data/penguin_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/png_to_c_header.sh
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_input.png
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_input_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_output.png
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_output_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_unused.png
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_unused_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/sdi.png
+IMAGE_DATA_EXTRA_DIST += image_data/sdi_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/sdi_shared_sync_bnc.png
+IMAGE_DATA_EXTRA_DIST += image_data/sdi_shared_sync_bnc_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/slimm.png
+IMAGE_DATA_EXTRA_DIST += image_data/slimm_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/solaris.png
+IMAGE_DATA_EXTRA_DIST += image_data/solaris_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/svp_3dvp.png
+IMAGE_DATA_EXTRA_DIST += image_data/svp_3dvp_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/thermal.png
+IMAGE_DATA_EXTRA_DIST += image_data/thermal_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/tv.png
+IMAGE_DATA_EXTRA_DIST += image_data/tv_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/vcs.png
+IMAGE_DATA_EXTRA_DIST += image_data/vcs_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/x.png
+IMAGE_DATA_EXTRA_DIST += image_data/x_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/xvideo.png
+IMAGE_DATA_EXTRA_DIST += image_data/xvideo_pixdata.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(IMAGE_DATA_EXTRA_DIST)
+
+#
+# files in the src/libXNVCtrlAttributes directory of nvidia-settings
+#
+
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributes.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesNvControl.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesVidMode.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesXv.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesGlx.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
+
+NVIDIA_SETTINGS_SRC += $(LIB_XNVCTRL_ATTRIBUTES_SRC)
+
+LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += libXNVCtrlAttributes/NvCtrlAttributes.h
+LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST)
+
+#
+# files in the src/xpm_data directory of nvidia-settings
+#
+
+LIB_XPM_DATA_SRC +=
+
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/blue_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/green_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/red_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/rgb_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_add_glasses.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_autopick_next_channel.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_0.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_100.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_25.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_50.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_75.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_excellent.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_good.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_low.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_nosignal.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_verygood.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_verylow.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(LIB_XPM_DATA_EXTRA_DIST)
+
+#
+# files in the src/gtk+-2.x directory of nvidia-settings
+#
+
+GTK_SRC += gtk+-2.x/ctkxvideo.c
+GTK_SRC += gtk+-2.x/ctkcursorshadow.c
+GTK_SRC += gtk+-2.x/ctkui.c
+GTK_SRC += gtk+-2.x/ctkframelock.c
+GTK_SRC += gtk+-2.x/ctkgauge.c
+GTK_SRC += gtk+-2.x/ctkcurve.c
+GTK_SRC += gtk+-2.x/ctkcolorcorrection.c
+GTK_SRC += gtk+-2.x/ctkscale.c
+GTK_SRC += gtk+-2.x/ctkmultisample.c
+GTK_SRC += gtk+-2.x/ctkconfig.c
+GTK_SRC += gtk+-2.x/ctkevent.c
+GTK_SRC += gtk+-2.x/ctkwindow.c
+GTK_SRC += gtk+-2.x/ctkopengl.c
+GTK_SRC += gtk+-2.x/ctkglx.c
+GTK_SRC += gtk+-2.x/ctkhelp.c
+GTK_SRC += gtk+-2.x/ctkimagesliders.c
+GTK_SRC += gtk+-2.x/ctkdisplaydevice-crt.c
+GTK_SRC += gtk+-2.x/ctkdisplaydevice-tv.c
+GTK_SRC += gtk+-2.x/ctkdisplaydevice.c
+GTK_SRC += gtk+-2.x/ctkditheringcontrols.c
+GTK_SRC += gtk+-2.x/ctkthermal.c
+GTK_SRC += gtk+-2.x/ctkpowermizer.c
+GTK_SRC += gtk+-2.x/ctkgvo.c
+GTK_SRC += gtk+-2.x/ctkgvo-csc.c
+GTK_SRC += gtk+-2.x/ctkdropdownmenu.c
+GTK_SRC += gtk+-2.x/ctkclocks.c
+GTK_SRC += gtk+-2.x/ctkutils.c
+GTK_SRC += gtk+-2.x/ctkedid.c
+GTK_SRC += gtk+-2.x/ctkserver.c
+GTK_SRC += gtk+-2.x/ctkdisplaylayout.c
+GTK_SRC += gtk+-2.x/ctkdisplayconfig.c
+GTK_SRC += gtk+-2.x/ctkscreen.c
+GTK_SRC += gtk+-2.x/ctkslimm.c
+GTK_SRC += gtk+-2.x/ctkgpu.c
+GTK_SRC += gtk+-2.x/ctkbanner.c
+GTK_SRC += gtk+-2.x/ctkvcs.c
+GTK_SRC += gtk+-2.x/ctkdisplayconfig-utils.c
+GTK_SRC += gtk+-2.x/ctkgvo-banner.c
+GTK_SRC += gtk+-2.x/ctkgvo-sync.c
+GTK_SRC += gtk+-2.x/ctkpowersavings.c
+GTK_SRC += gtk+-2.x/ctkgvi.c
+GTK_SRC += gtk+-2.x/ctklicense.c
+GTK_SRC += gtk+-2.x/ctkecc.c
+GTK_SRC += gtk+-2.x/ctkcolorcontrols.c
+GTK_SRC += gtk+-2.x/ctk3dvisionpro.c
+
+NVIDIA_SETTINGS_SRC += $(GTK_SRC)
+
+GTK_EXTRA_DIST += gtk+-2.x/ctkxvideo.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcursorshadow.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkui.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkframelock.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgauge.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcurve.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcolorcorrection.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkscale.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkmultisample.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkconfig.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkevent.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkwindow.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkopengl.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkglx.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkhelp.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkimagesliders.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaydevice-crt.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaydevice-tv.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaydevice.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkditheringcontrols.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkconstants.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkthermal.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkpowermizer.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo-csc.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdropdownmenu.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkclocks.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkutils.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkedid.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkserver.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaylayout.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplayconfig.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkscreen.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkslimm.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgpu.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkbanner.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkvcs.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplayconfig-utils.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkpowersavings.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo-banner.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo-sync.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvi.h
+GTK_EXTRA_DIST += gtk+-2.x/ctklicense.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkecc.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcolorcontrols.h
+GTK_EXTRA_DIST += gtk+-2.x/ctk3dvisionpro.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(GTK_EXTRA_DIST)
+
+NVIDIA_SETTINGS_DIST_FILES += $(NVIDIA_SETTINGS_SRC)
+NVIDIA_SETTINGS_DIST_FILES += $(NVIDIA_SETTINGS_EXTRA_DIST)
diff --git a/src/version.mk b/src/version.mk
new file mode 100644
index 0000000..c29a7ba
--- /dev/null
+++ b/src/version.mk
@@ -0,0 +1 @@
+NVIDIA_VERSION = 302.07
diff --git a/src/xpm_data/src.mk b/src/xpm_data/src.mk
deleted file mode 100644
index a4432b4..0000000
--- a/src/xpm_data/src.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# files in the src/xpm_data directory of nvidia-settings
-#
-
-LIB_XPM_DATA_SRC +=
-
-LIB_XPM_DATA_EXTRA_DIST += blue_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += green_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += red_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += rgb_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += src.mk
-LIB_XPM_DATA_EXTRA_DIST += svp_add_glasses.h
-LIB_XPM_DATA_EXTRA_DIST += svp_autopick_next_channel.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_0.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_100.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_25.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_50.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_75.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_excellent.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_good.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_low.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_nosignal.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_verygood.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_verylow.h
diff --git a/utils.mk b/utils.mk
index 32014a3..2a7a9cf 100644
--- a/utils.mk
+++ b/utils.mk
@@ -28,9 +28,10 @@
CC ?= gcc
LD ?= ld
-CFLAGS ?=
-CFLAGS += -Wall -fno-strict-aliasing -Wno-unused-parameter
-CFLAGS += -O2 -fno-omit-frame-pointer
+# only set these warnings and optimizations if CFLAGS is unset
+CFLAGS ?= -Wall -Wno-unused-parameter -O2
+# always set these -f CFLAGS
+CFLAGS += -fno-strict-aliasing -fno-omit-frame-pointer
CC_ONLY_CFLAGS ?=
LDFLAGS ?=
BIN_LDFLAGS ?=
@@ -93,9 +94,9 @@ ifndef TARGET_ARCH
endif
ifeq ($(TARGET_OS),Linux)
- LIBDL_LDFLAGS = -ldl
+ LIBDL_LIBS = -ldl
else
- LIBDL_LDFLAGS =
+ LIBDL_LIBS =
endif
OUTPUTDIR ?= _out/$(TARGET_OS)_$(TARGET_ARCH)
@@ -124,11 +125,10 @@ endif
# the source tarball
##############################################################################
-prefix = /usr/local
+PREFIX ?= /usr/local
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-mandir = $(exec_prefix)/share/man/man1
+BINDIR = $(DESTDIR)$(PREFIX)/bin
+MANDIR = $(DESTDIR)$(PREFIX)/share/man/man1
##############################################################################
@@ -145,10 +145,16 @@ default build: all
# version.mk may be in one of two places: either in $(OUTPUTDIR) when
# building as part of the NVIDIA driver build, or directly in the
# source directory when building from the source tarball
+#
+# Throw an error if one of these two places did not define NVIDIA_VERSION.
##############################################################################
-include $(wildcard $(OUTPUTDIR)/version.mk version.mk)
+VERSION_MK := $(wildcard $(OUTPUTDIR)/version.mk version.mk)
+include $(VERSION_MK)
+ifndef NVIDIA_VERSION
+$(error NVIDIA_VERSION undefined)
+endif
##############################################################################
# to generate the dependency files, use the compiler's "-MM" option to
@@ -260,7 +266,7 @@ BUILD_DEPENDENCY_LIST = \
define DEFINE_OBJECT_RULE_WITH_OBJECT_NAME
$(3): $(2)
@$(MKDIR) $(OUTPUTDIR)
- $$(call quiet_cmd,$(1)) -c $$< -o $$@ $$(CFLAGS) \
+ $$(call quiet_cmd,$(1)) $$(CFLAGS) -c $$< -o $$@ \
$(call AUTO_DEP_CMD,$(1),$(2),$(3))
-include $$(call BUILD_DEPENDENCY_LIST,$(3))
@@ -298,7 +304,7 @@ define DEFINE_STAMP_C_RULE
$$(STAMP_C): $$(filter-out \
$$(call BUILD_OBJECT_LIST,$$(STAMP_C)),$(1)) \
- $$(wildcard version.mk $$(OUTPUTDIR)/version.mk)
+ $$(VERSION_MK)
@ $$(RM) $$@
@ $$(PRINTF) "const char NV_ID[] = \"nvidia id: " >> $$@
@ $$(PRINTF) "$(2): " >> $$@
diff --git a/version.mk b/version.mk
index 11eb84d..c29a7ba 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 295.40
+NVIDIA_VERSION = 302.07