From: marta Date: Tue, 31 Aug 2010 09:32:20 +0000 (+0200) Subject: Initial commit X-Git-Url: http://git.maemo.org/git/?p=tietoopcom;a=commitdiff_plain;h=cf559ceaa0d621fc362d94491f2a8fa9871a8d49 Initial commit --- cf559ceaa0d621fc362d94491f2a8fa9871a8d49 diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..fa0f3bc --- /dev/null +++ b/Doxyfile @@ -0,0 +1,1252 @@ +# Doxyfile 1.5.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Tieto Open Communicator (tietoopcom) + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 0.5 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = docs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = include src + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/HEAD b/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7a3d257 --- /dev/null +++ b/Makefile @@ -0,0 +1,256 @@ +############################################################################# +# Makefile for building: tietoopcom +# Generated by qmake (2.01a) (Qt 4.6.2) on: Thu Jul 8 08:48:04 2010 +# Project: tietoopcom.pro +# Template: subdirs +# Command: /usr/bin/qmake -unix -o Makefile tietoopcom.pro +############################################################################# + +first: make_default +MAKEFILE = Makefile +QMAKE = /usr/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +SUBTARGETS = \ + sub-src + +src/$(MAKEFILE): + @$(CHK_DIR_EXISTS) src/ || $(MKDIR) src/ + cd src/ && $(QMAKE) /home/maemo/tietoopcom/src/src.pro -unix -o $(MAKEFILE) +sub-src-qmake_all: FORCE + @$(CHK_DIR_EXISTS) src/ || $(MKDIR) src/ + cd src/ && $(QMAKE) /home/maemo/tietoopcom/src/src.pro -unix -o $(MAKEFILE) +sub-src: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) +sub-src-make_default: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) +sub-src-make_first: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) first +sub-src-all: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) all +sub-src-clean: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) clean +sub-src-distclean: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) distclean +sub-src-install_subtargets: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) install +sub-src-uninstall_subtargets: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) uninstall + +Makefile: tietoopcom.pro /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/linux-g++/qmake.conf /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug_and_release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/include_source_dir.prf + $(QMAKE) -unix -o Makefile tietoopcom.pro +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug_and_release.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/include_source_dir.prf: +qmake: qmake_all FORCE + @$(QMAKE) -unix -o Makefile tietoopcom.pro + +qmake_all: sub-src-qmake_all FORCE + +make_default: sub-src-make_default FORCE +make_first: sub-src-make_first FORCE +all: sub-src-all FORCE +clean: sub-src-clean FORCE +distclean: sub-src-distclean FORCE + -$(DEL_FILE) Makefile +install_subtargets: sub-src-install_subtargets FORCE +uninstall_subtargets: sub-src-uninstall_subtargets FORCE + +sub-src-sub_Debug: src/$(MAKEFILE) + cd src/ && $(MAKE) debug +debug: sub-src-sub_Debug + +sub-src-sub_Release: src/$(MAKEFILE) + cd src/ && $(MAKE) release +release: sub-src-sub_Release + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all +install_service: FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/dbus-1/services/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/dbus-1/services/ + -$(INSTALL_FILE) /home/maemo/tietoopcom/data/com.tieto.tietoopcom.service $(INSTALL_ROOT)/usr/share/dbus-1/services/ + + +uninstall_service: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/dbus-1/services/com.tieto.tietoopcom.service + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/dbus-1/services/ + + +install_emoticons: FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-angel24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-angel24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-angel32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-angel32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-crying24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-crying24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-crying32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-crying32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-devilish24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-devilish24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-devilish32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-devilish32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-glasses24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-glasses24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-glasses32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-glasses32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-grin24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-grin24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-grin32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-grin32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-kiss24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-kiss24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-kiss32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-kiss32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-monkey24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-monkey24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-monkey32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-monkey32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-plain24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-plain24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-plain32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-plain32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-sad24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-sad24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-sad32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-sad32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-smile-big24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile-big24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-smile-big32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile-big32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-smile24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-smile32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-surprise24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-surprise24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-surprise32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-surprise32x32.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-wink24x24.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-wink24x24.png + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/emoticons/face-wink32x32.png $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-wink32x32.png + + +uninstall_emoticons: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-angel24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-angel32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-crying24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-crying32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-devilish24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-devilish32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-glasses24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-glasses32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-grin24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-grin32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-kiss24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-kiss32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-monkey24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-monkey32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-plain24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-plain32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-sad24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-sad32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile-big24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile-big32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-smile32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-surprise24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-surprise32x32.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-wink24x24.png + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/face-wink32x32.png + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/tietoopcom/emoticons/ + + +install_desktop: FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/applications/hildon/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/applications/hildon/ + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/tietoopcom.desktop $(INSTALL_ROOT)/usr/share/applications/hildon/ + -strip $(INSTALL_ROOT)/usr/share/applications/hildon/tietoopcom.desktop + + +uninstall_desktop: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/applications/hildon/tietoopcom.desktop + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/applications/hildon/ + + +install_stylesheets: FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/ + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/stylesheets/default.qss $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/default.qss + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/stylesheets/my.qss $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/my.qss + + +uninstall_stylesheets: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/default.qss + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/my.qss + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/tietoopcom/stylesheets/ + + +install_licence: FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/tietoopcom/licence/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/tietoopcom/licence/ + -$(INSTALL_PROGRAM) /home/maemo/tietoopcom/data/copyright $(INSTALL_ROOT)/usr/share/tietoopcom/licence/ + -strip $(INSTALL_ROOT)/usr/share/tietoopcom/licence/copyright + + +uninstall_licence: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/tietoopcom/licence/copyright + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/tietoopcom/licence/ + + +install: install_subtargets install_service install_emoticons install_desktop install_stylesheets install_licence FORCE + +uninstall: uninstall_service uninstall_emoticons uninstall_desktop uninstall_stylesheets uninstall_licence uninstall_subtargets FORCE + +FORCE: + diff --git a/bin/tietoopcom b/bin/tietoopcom new file mode 100644 index 0000000..f832d68 Binary files /dev/null and b/bin/tietoopcom differ diff --git a/build-stamp b/build-stamp new file mode 100644 index 0000000..e69de29 diff --git a/build/release/moc_tecaccountintermediatewidget.cpp b/build/release/moc_tecaccountintermediatewidget.cpp new file mode 100644 index 0000000..f0c188b --- /dev/null +++ b/build/release/moc_tecaccountintermediatewidget.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecaccountintermediatewidget.h' +** +** Created: Fri Jun 18 17:41:03 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecaccountintermediatewidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecaccountintermediatewidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecAccountIntermediateWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 3, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 3, // signalCount + + // signals: signature, parameters, type, tag, flags + 30, 29, 29, 29, 0x05, + 46, 29, 29, 29, 0x05, + 60, 29, 29, 29, 0x05, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecAccountIntermediateWidget[] = { + "TecAccountIntermediateWidget\0\0" + "createClicked()\0editClicked()\0" + "backClicked()\0" +}; + +const QMetaObject TecAccountIntermediateWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecAccountIntermediateWidget, + qt_meta_data_TecAccountIntermediateWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecAccountIntermediateWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecAccountIntermediateWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecAccountIntermediateWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecAccountIntermediateWidget)) + return static_cast(const_cast< TecAccountIntermediateWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecAccountIntermediateWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: createClicked(); break; + case 1: editClicked(); break; + case 2: backClicked(); break; + default: ; + } + _id -= 3; + } + return _id; +} + +// SIGNAL 0 +void TecAccountIntermediateWidget::createClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TecAccountIntermediateWidget::editClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} + +// SIGNAL 2 +void TecAccountIntermediateWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 2, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecaccountsettingswidget.cpp b/build/release/moc_tecaccountsettingswidget.cpp new file mode 100644 index 0000000..e3a9aaf --- /dev/null +++ b/build/release/moc_tecaccountsettingswidget.cpp @@ -0,0 +1,129 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecaccountsettingswidget.h' +** +** Created: Fri Jun 18 17:41:02 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecaccountsettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecaccountsettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecAccountSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 10, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 4, // signalCount + + // signals: signature, parameters, type, tag, flags + 26, 25, 25, 25, 0x05, + 51, 25, 25, 25, 0x05, + 79, 25, 25, 25, 0x05, + 90, 25, 25, 25, 0x05, + + // slots: signature, parameters, type, tag, flags + 104, 25, 25, 25, 0x0a, + 113, 25, 25, 25, 0x08, + 126, 25, 25, 25, 0x08, + 160, 151, 25, 25, 0x08, + 193, 181, 25, 25, 0x08, + 217, 25, 25, 25, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecAccountSettingsWidget[] = { + "TecAccountSettingsWidget\0\0" + "accountSettingsChanged()\0" + "newAccountSettingsCreated()\0finished()\0" + "backClicked()\0reload()\0onOkButton()\0" + "onChangePasswordButton()\0newLogin\0" + "loginEdited(QString)\0newProtocol\0" + "protocolEdited(QString)\0disconnectHints()\0" +}; + +const QMetaObject TecAccountSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecAccountSettingsWidget, + qt_meta_data_TecAccountSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecAccountSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecAccountSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecAccountSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecAccountSettingsWidget)) + return static_cast(const_cast< TecAccountSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecAccountSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: accountSettingsChanged(); break; + case 1: newAccountSettingsCreated(); break; + case 2: finished(); break; + case 3: backClicked(); break; + case 4: reload(); break; + case 5: onOkButton(); break; + case 6: onChangePasswordButton(); break; + case 7: loginEdited((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 8: protocolEdited((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 9: disconnectHints(); break; + default: ; + } + _id -= 10; + } + return _id; +} + +// SIGNAL 0 +void TecAccountSettingsWidget::accountSettingsChanged() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TecAccountSettingsWidget::newAccountSettingsCreated() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} + +// SIGNAL 2 +void TecAccountSettingsWidget::finished() +{ + QMetaObject::activate(this, &staticMetaObject, 2, 0); +} + +// SIGNAL 3 +void TecAccountSettingsWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 3, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecbaseengine.cpp b/build/release/moc_tecbaseengine.cpp new file mode 100644 index 0000000..dab31d1 --- /dev/null +++ b/build/release/moc_tecbaseengine.cpp @@ -0,0 +1,176 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecbaseengine.h' +** +** Created: Fri Jun 18 17:41:03 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecEngine/tecbaseengine.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecbaseengine.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecBaseEngine[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 15, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 7, // signalCount + + // signals: signature, parameters, type, tag, flags + 29, 15, 14, 14, 0x05, + 79, 58, 14, 14, 0x05, + 138, 113, 14, 14, 0x05, + 199, 187, 14, 14, 0x05, + 244, 232, 14, 14, 0x05, + 284, 280, 14, 14, 0x05, + 314, 280, 14, 14, 0x05, + + // slots: signature, parameters, type, tag, flags + 344, 14, 14, 14, 0x0a, + 369, 58, 14, 14, 0x0a, + 404, 280, 14, 14, 0x0a, + 429, 187, 14, 14, 0x0a, + 473, 464, 14, 14, 0x0a, + 522, 506, 14, 14, 0x0a, + 564, 280, 14, 14, 0x0a, + 612, 596, 14, 14, 0x0a, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecBaseEngine[] = { + "TecBaseEngine\0\0status,reason\0" + "statusChanged(Status,Reason)\0" + "presence,description\0" + "presenceUpdated(Presence,QString)\0" + "uid,presence,description\0" + "contactPresenceUpdated(QString,Presence,QString)\0" + "uid,message\0incomingMessage(QString,Message)\0" + "contactList\0contactListReceived(TecContactList)\0" + "uid\0subscriptionAccepted(QString)\0" + "authorizationRequest(QString)\0" + "initializeFromSettings()\0" + "onPresenceChange(Presence,QString)\0" + "onSessionClosed(QString)\0" + "onNewMessageReady(QString,Message)\0" + "pContact\0onAddContactRequest(TecContact*)\0" + "pContact,oldUid\0" + "onEditContactRequest(TecContact*,QString)\0" + "onRemoveContactRequest(QString)\0" + "uid,bAuthorized\0onSubscriptionAccepted(QString,bool)\0" +}; + +const QMetaObject TecBaseEngine::staticMetaObject = { + { &QObject::staticMetaObject, qt_meta_stringdata_TecBaseEngine, + qt_meta_data_TecBaseEngine, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecBaseEngine::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecBaseEngine::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecBaseEngine::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecBaseEngine)) + return static_cast(const_cast< TecBaseEngine*>(this)); + return QObject::qt_metacast(_clname); +} + +int TecBaseEngine::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QObject::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: statusChanged((*reinterpret_cast< Status(*)>(_a[1])),(*reinterpret_cast< Reason(*)>(_a[2]))); break; + case 1: presenceUpdated((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 2: contactPresenceUpdated((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Presence(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break; + case 3: incomingMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 4: contactListReceived((*reinterpret_cast< const TecContactList(*)>(_a[1]))); break; + case 5: subscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 6: authorizationRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 7: initializeFromSettings(); break; + case 8: onPresenceChange((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 9: onSessionClosed((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 10: onNewMessageReady((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 11: onAddContactRequest((*reinterpret_cast< TecContact*(*)>(_a[1]))); break; + case 12: onEditContactRequest((*reinterpret_cast< TecContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 13: onRemoveContactRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 14: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; + default: ; + } + _id -= 15; + } + return _id; +} + +// SIGNAL 0 +void TecBaseEngine::statusChanged(Status _t1, Reason _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TecBaseEngine::presenceUpdated(Presence _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TecBaseEngine::contactPresenceUpdated(QString _t1, Presence _t2, QString _t3) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)), const_cast(reinterpret_cast(&_t3)) }; + QMetaObject::activate(this, &staticMetaObject, 2, _a); +} + +// SIGNAL 3 +void TecBaseEngine::incomingMessage(QString _t1, Message _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 3, _a); +} + +// SIGNAL 4 +void TecBaseEngine::contactListReceived(const TecContactList & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 4, _a); +} + +// SIGNAL 5 +void TecBaseEngine::subscriptionAccepted(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} + +// SIGNAL 6 +void TecBaseEngine::authorizationRequest(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 6, _a); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecbasemainwindow.cpp b/build/release/moc_tecbasemainwindow.cpp new file mode 100644 index 0000000..9520aee --- /dev/null +++ b/build/release/moc_tecbasemainwindow.cpp @@ -0,0 +1,180 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecbasemainwindow.h' +** +** Created: Fri Jun 18 17:41:01 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecbasemainwindow.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecbasemainwindow.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecBaseMainWindow[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 15, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 8, // signalCount + + // signals: signature, parameters, type, tag, flags + 33, 19, 18, 18, 0x05, + 71, 67, 18, 18, 0x05, + 106, 94, 18, 18, 0x05, + 148, 139, 18, 18, 0x05, + 188, 172, 18, 18, 0x05, + 221, 67, 18, 18, 0x05, + 259, 244, 18, 18, 0x05, + 294, 18, 18, 18, 0x05, + + // slots: signature, parameters, type, tag, flags + 319, 67, 18, 18, 0x09, + 351, 67, 18, 18, 0x09, + 397, 383, 18, 18, 0x09, + 427, 19, 18, 18, 0x09, + 480, 462, 18, 18, 0x09, + 530, 94, 18, 18, 0x09, + 571, 565, 18, 18, 0x09, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecBaseMainWindow[] = { + "TecBaseMainWindow\0\0presence,desc\0" + "presenceChanged(Presence,QString)\0uid\0" + "sessionClosed(QString)\0uid,message\0" + "newMessageReady(QString,Message)\0" + "pContact\0addContact(TecContact*)\0" + "pContact,oldUid\0editContact(TecContact*,QString)\0" + "removeContact(QString)\0uid,authorized\0" + "subscriptionAccepted(QString,bool)\0" + "accountSettingsChanged()\0" + "onAuthorizationRequest(QString)\0" + "onSubscriptionAccepted(QString)\0" + "status,reason\0onStatusChange(Status,Reason)\0" + "onPresenceUpdate(Presence,QString)\0" + "uid,presence,desc\0" + "onContactPresenceUpdate(QString,Presence,QString)\0" + "onIncomingMessage(QString,Message)\0" + "cList\0onContactListReceived(TecContactList)\0" +}; + +const QMetaObject TecBaseMainWindow::staticMetaObject = { + { &QMainWindow::staticMetaObject, qt_meta_stringdata_TecBaseMainWindow, + qt_meta_data_TecBaseMainWindow, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecBaseMainWindow::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecBaseMainWindow::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecBaseMainWindow::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecBaseMainWindow)) + return static_cast(const_cast< TecBaseMainWindow*>(this)); + return QMainWindow::qt_metacast(_clname); +} + +int TecBaseMainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QMainWindow::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: presenceChanged((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 1: sessionClosed((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 2: newMessageReady((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 3: addContact((*reinterpret_cast< TecContact*(*)>(_a[1]))); break; + case 4: editContact((*reinterpret_cast< TecContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 5: removeContact((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 6: subscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; + case 7: accountSettingsChanged(); break; + case 8: onAuthorizationRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 9: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 10: onStatusChange((*reinterpret_cast< Status(*)>(_a[1])),(*reinterpret_cast< Reason(*)>(_a[2]))); break; + case 11: onPresenceUpdate((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 12: onContactPresenceUpdate((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Presence(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break; + case 13: onIncomingMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 14: onContactListReceived((*reinterpret_cast< const TecContactList(*)>(_a[1]))); break; + default: ; + } + _id -= 15; + } + return _id; +} + +// SIGNAL 0 +void TecBaseMainWindow::presenceChanged(Presence _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TecBaseMainWindow::sessionClosed(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TecBaseMainWindow::newMessageReady(QString _t1, Message _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 2, _a); +} + +// SIGNAL 3 +void TecBaseMainWindow::addContact(TecContact * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 3, _a); +} + +// SIGNAL 4 +void TecBaseMainWindow::editContact(TecContact * _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 4, _a); +} + +// SIGNAL 5 +void TecBaseMainWindow::removeContact(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} + +// SIGNAL 6 +void TecBaseMainWindow::subscriptionAccepted(QString _t1, bool _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 6, _a); +} + +// SIGNAL 7 +void TecBaseMainWindow::accountSettingsChanged() +{ + QMetaObject::activate(this, &staticMetaObject, 7, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecchatwidget.cpp b/build/release/moc_tecchatwidget.cpp new file mode 100644 index 0000000..82d8271 --- /dev/null +++ b/build/release/moc_tecchatwidget.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecchatwidget.h' +** +** Created: Fri Jun 18 17:41:02 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecchatwidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecchatwidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecChatWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 4, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 27, 15, 14, 14, 0x05, + 60, 14, 14, 14, 0x05, + + // slots: signature, parameters, type, tag, flags + 81, 14, 14, 14, 0x08, + 101, 14, 14, 14, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecChatWidget[] = { + "TecChatWidget\0\0uid,message\0" + "newMessageReady(QString,Message)\0" + "smileButtonClicked()\0pressedSendButton()\0" + "showEmoticonsDialog()\0" +}; + +const QMetaObject TecChatWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecChatWidget, + qt_meta_data_TecChatWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecChatWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecChatWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecChatWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecChatWidget)) + return static_cast(const_cast< TecChatWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecChatWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: newMessageReady((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 1: smileButtonClicked(); break; + case 2: pressedSendButton(); break; + case 3: showEmoticonsDialog(); break; + default: ; + } + _id -= 4; + } + return _id; +} + +// SIGNAL 0 +void TecChatWidget::newMessageReady(const QString & _t1, Message _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TecChatWidget::smileButtonClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_teccontactlistwidget.cpp b/build/release/moc_teccontactlistwidget.cpp new file mode 100644 index 0000000..6fe95f6 --- /dev/null +++ b/build/release/moc_teccontactlistwidget.cpp @@ -0,0 +1,153 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'teccontactlistwidget.h' +** +** Created: Fri Jun 18 17:41:01 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/teccontactlistwidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'teccontactlistwidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecContactListWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 11, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 6, // signalCount + + // signals: signature, parameters, type, tag, flags + 40, 22, 21, 21, 0x05, + 82, 76, 21, 21, 0x05, + 123, 119, 21, 21, 0x05, + 156, 147, 21, 21, 0x05, + 196, 180, 21, 21, 0x05, + 238, 229, 21, 21, 0x05, + + // slots: signature, parameters, type, tag, flags + 288, 276, 21, 21, 0x0a, + 330, 321, 21, 21, 0x0a, + 370, 358, 21, 21, 0x0a, + 399, 21, 21, 21, 0x08, + 417, 21, 21, 21, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecContactListWidget[] = { + "TecContactListWidget\0\0uid,name,presence\0" + "triggered(QString,QString,Presence)\0" + "pItem\0contactInfoRequest(QListWidgetItem*)\0" + "uid\0removedContact(QString)\0pContact\0" + "addContact(TecContact*)\0pContact,oldUid\0" + "editContact(TecContact*,QString)\0" + "uid,name\0displayedNameChanged(QString,QString)\0" + "contactList\0onNewContactList(TecContactList)\0" + "pNewItem\0commitAdd(QListWidgetItem*)\0" + "pEditedItem\0commitEdit(QListWidgetItem*)\0" + "onEditRequested()\0onRemoveRequested()\0" +}; + +const QMetaObject TecContactListWidget::staticMetaObject = { + { &QListWidget::staticMetaObject, qt_meta_stringdata_TecContactListWidget, + qt_meta_data_TecContactListWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecContactListWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecContactListWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecContactListWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecContactListWidget)) + return static_cast(const_cast< TecContactListWidget*>(this)); + return QListWidget::qt_metacast(_clname); +} + +int TecContactListWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QListWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: triggered((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< Presence(*)>(_a[3]))); break; + case 1: contactInfoRequest((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 2: removedContact((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 3: addContact((*reinterpret_cast< TecContact*(*)>(_a[1]))); break; + case 4: editContact((*reinterpret_cast< TecContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 5: displayedNameChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 6: onNewContactList((*reinterpret_cast< const TecContactList(*)>(_a[1]))); break; + case 7: commitAdd((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 8: commitEdit((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 9: onEditRequested(); break; + case 10: onRemoveRequested(); break; + default: ; + } + _id -= 11; + } + return _id; +} + +// SIGNAL 0 +void TecContactListWidget::triggered(const QString & _t1, const QString & _t2, Presence _t3) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)), const_cast(reinterpret_cast(&_t3)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TecContactListWidget::contactInfoRequest(QListWidgetItem * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TecContactListWidget::removedContact(const QString & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 2, _a); +} + +// SIGNAL 3 +void TecContactListWidget::addContact(TecContact * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 3, _a); +} + +// SIGNAL 4 +void TecContactListWidget::editContact(TecContact * _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 4, _a); +} + +// SIGNAL 5 +void TecContactListWidget::displayedNameChanged(const QString & _t1, const QString & _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecemoticonsdialog.cpp b/build/release/moc_tecemoticonsdialog.cpp new file mode 100644 index 0000000..337b4b4 --- /dev/null +++ b/build/release/moc_tecemoticonsdialog.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecemoticonsdialog.h' +** +** Created: Fri Jun 18 17:41:03 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecemoticonsdialog.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecemoticonsdialog.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecEmoticonsDialog[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 1, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 26, 20, 19, 19, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecEmoticonsDialog[] = { + "TecEmoticonsDialog\0\0pItem\0" + "onEmoticonSelected(QListWidgetItem*)\0" +}; + +const QMetaObject TecEmoticonsDialog::staticMetaObject = { + { &QDialog::staticMetaObject, qt_meta_stringdata_TecEmoticonsDialog, + qt_meta_data_TecEmoticonsDialog, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecEmoticonsDialog::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecEmoticonsDialog::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecEmoticonsDialog::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecEmoticonsDialog)) + return static_cast(const_cast< TecEmoticonsDialog*>(this)); + return QDialog::qt_metacast(_clname); +} + +int TecEmoticonsDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QDialog::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: onEmoticonSelected((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + default: ; + } + _id -= 1; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecengine.cpp b/build/release/moc_tecengine.cpp new file mode 100644 index 0000000..2329658 --- /dev/null +++ b/build/release/moc_tecengine.cpp @@ -0,0 +1,133 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecengine.h' +** +** Created: Fri Jun 18 17:41:04 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecEngine/tecengine.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecengine.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecEngine[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 15, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 32, 11, 10, 10, 0x0a, + 76, 67, 10, 10, 0x0a, + 125, 109, 10, 10, 0x0a, + 171, 167, 10, 10, 0x0a, + 205, 203, 10, 10, 0x0a, + 242, 10, 10, 10, 0x0a, + 279, 267, 10, 10, 0x0a, + 314, 167, 10, 10, 0x0a, + 365, 339, 10, 10, 0x08, + 498, 464, 10, 10, 0x08, + 582, 464, 10, 10, 0x08, + 691, 670, 10, 10, 0x08, + 786, 772, 10, 10, 0x08, + 926, 889, 10, 10, 0x08, + 992, 67, 10, 10, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecEngine[] = { + "TecEngine\0\0presence,description\0" + "onPresenceChange(Presence,QString)\0" + "pContact\0onAddContactRequest(TecContact*)\0" + "pContact,oldUid\0" + "onEditContactRequest(TecContact*,QString)\0" + "uid\0onRemoveContactRequest(QString)\0" + ",\0onSubscriptionAccepted(QString,bool)\0" + "initializeFromSettings()\0uid,message\0" + "onNewMessageReady(QString,Message)\0" + "onSessionClosed(QString)\0" + "pConnection,status,reason\0" + "onStatusChange(QtTapioca::Connection*,QtTapioca::Connection::Status,Qt" + "Tapioca::Connection::Reason)\0" + "pContact,presence,presenceMessage\0" + "onPresenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Pres" + "ence,QString)\0" + "onSelfPresenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::" + "Presence,QString)\0" + "pTextChannel,message\0" + "onMessageReceived(const QtTapioca::TextChannel*,QtTapioca::TextChannel" + "::Message)\0" + "message,error\0" + "onMessageDeliveryError(QtTapioca::TextChannel::Message,QtTapioca::Text" + "Channel::Message::DeliveryError)\0" + "pConnection,pChannel,bSuppresHandler\0" + "onChannelCreated(QtTapioca::Connection*,QtTapioca::Channel*,bool)\0" + "onAuthorizationRequested(QtTapioca::Contact*)\0" +}; + +const QMetaObject TecEngine::staticMetaObject = { + { &TecBaseEngine::staticMetaObject, qt_meta_stringdata_TecEngine, + qt_meta_data_TecEngine, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecEngine::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecEngine::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecEngine::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecEngine)) + return static_cast(const_cast< TecEngine*>(this)); + return TecBaseEngine::qt_metacast(_clname); +} + +int TecEngine::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = TecBaseEngine::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: onPresenceChange((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 1: onAddContactRequest((*reinterpret_cast< TecContact*(*)>(_a[1]))); break; + case 2: onEditContactRequest((*reinterpret_cast< TecContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 3: onRemoveContactRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 4: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; + case 5: initializeFromSettings(); break; + case 6: onNewMessageReady((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 7: onSessionClosed((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 8: onStatusChange((*reinterpret_cast< QtTapioca::Connection*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::Connection::Status(*)>(_a[2])),(*reinterpret_cast< QtTapioca::Connection::Reason(*)>(_a[3]))); break; + case 9: onPresenceUpdated((*reinterpret_cast< QtTapioca::ContactBase*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::ContactBase::Presence(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; + case 10: onSelfPresenceUpdated((*reinterpret_cast< QtTapioca::ContactBase*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::ContactBase::Presence(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; + case 11: onMessageReceived((*reinterpret_cast< const QtTapioca::TextChannel*(*)>(_a[1])),(*reinterpret_cast< const QtTapioca::TextChannel::Message(*)>(_a[2]))); break; + case 12: onMessageDeliveryError((*reinterpret_cast< const QtTapioca::TextChannel::Message(*)>(_a[1])),(*reinterpret_cast< QtTapioca::TextChannel::Message::DeliveryError(*)>(_a[2]))); break; + case 13: onChannelCreated((*reinterpret_cast< QtTapioca::Connection*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::Channel*(*)>(_a[2])),(*reinterpret_cast< bool(*)>(_a[3]))); break; + case 14: onAuthorizationRequested((*reinterpret_cast< QtTapioca::Contact*(*)>(_a[1]))); break; + default: ; + } + _id -= 15; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecgeneralsettingswidget.cpp b/build/release/moc_tecgeneralsettingswidget.cpp new file mode 100644 index 0000000..4f2d349 --- /dev/null +++ b/build/release/moc_tecgeneralsettingswidget.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecgeneralsettingswidget.h' +** +** Created: Fri Jun 18 17:41:02 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecgeneralsettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecgeneralsettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecGeneralSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 3, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 26, 25, 25, 25, 0x05, + 37, 25, 25, 25, 0x05, + + // slots: signature, parameters, type, tag, flags + 51, 25, 25, 25, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecGeneralSettingsWidget[] = { + "TecGeneralSettingsWidget\0\0finished()\0" + "backClicked()\0saveGeneralSettings()\0" +}; + +const QMetaObject TecGeneralSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecGeneralSettingsWidget, + qt_meta_data_TecGeneralSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecGeneralSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecGeneralSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecGeneralSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecGeneralSettingsWidget)) + return static_cast(const_cast< TecGeneralSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecGeneralSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: finished(); break; + case 1: backClicked(); break; + case 2: saveGeneralSettings(); break; + default: ; + } + _id -= 3; + } + return _id; +} + +// SIGNAL 0 +void TecGeneralSettingsWidget::finished() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TecGeneralSettingsWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecmaintoolbar.cpp b/build/release/moc_tecmaintoolbar.cpp new file mode 100644 index 0000000..7a9b426 --- /dev/null +++ b/build/release/moc_tecmaintoolbar.cpp @@ -0,0 +1,268 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecmaintoolbar.h' +** +** Created: Fri Jun 18 17:41:03 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecmaintoolbar.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecmaintoolbar.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecMainToolbar[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 14, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 6, // signalCount + + // signals: signature, parameters, type, tag, flags + 25, 16, 15, 15, 0x05, + 69, 65, 15, 15, 0x05, + 94, 15, 15, 15, 0x05, + 116, 15, 15, 15, 0x05, + 134, 15, 15, 15, 0x05, + 166, 152, 15, 15, 0x05, + + // slots: signature, parameters, type, tag, flags + 217, 199, 15, 15, 0x0a, + 256, 15, 15, 15, 0x08, + 278, 15, 15, 15, 0x08, + 297, 15, 15, 15, 0x08, + 329, 321, 15, 15, 0x08, + 371, 364, 15, 15, 0x08, + 401, 15, 15, 15, 0x08, + 421, 15, 15, 15, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecMainToolbar[] = { + "TecMainToolbar\0\0uid,name\0" + "activeSessionTriggered(QString,QString)\0" + "uid\0finishedSession(QString)\0" + "finishedAllSessions()\0contactsClicked()\0" + "settingsClicked()\0presence,desc\0" + "presenceUpdate(Presence,QString)\0" + "uid,name,presence\0" + "onNewSession(QString,QString,Presence)\0" + "closeCurrentSession()\0closeAllSessions()\0" + "restoreCurrentSession()\0pAction\0" + "onActiveSessionTriggered(QAction*)\0" + "action\0onTriggeredPresence(QAction*)\0" + "onContactsClicked()\0onSettingsClicked()\0" +}; + +const QMetaObject TecMainToolbar::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecMainToolbar, + qt_meta_data_TecMainToolbar, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecMainToolbar::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecMainToolbar::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecMainToolbar::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecMainToolbar)) + return static_cast(const_cast< TecMainToolbar*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecMainToolbar::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: activeSessionTriggered((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 1: finishedSession((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 2: finishedAllSessions(); break; + case 3: contactsClicked(); break; + case 4: settingsClicked(); break; + case 5: presenceUpdate((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 6: onNewSession((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< Presence(*)>(_a[3]))); break; + case 7: closeCurrentSession(); break; + case 8: closeAllSessions(); break; + case 9: restoreCurrentSession(); break; + case 10: onActiveSessionTriggered((*reinterpret_cast< QAction*(*)>(_a[1]))); break; + case 11: onTriggeredPresence((*reinterpret_cast< QAction*(*)>(_a[1]))); break; + case 12: onContactsClicked(); break; + case 13: onSettingsClicked(); break; + default: ; + } + _id -= 14; + } + return _id; +} + +// SIGNAL 0 +void TecMainToolbar::activeSessionTriggered(const QString & _t1, const QString & _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TecMainToolbar::finishedSession(const QString & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TecMainToolbar::finishedAllSessions() +{ + QMetaObject::activate(this, &staticMetaObject, 2, 0); +} + +// SIGNAL 3 +void TecMainToolbar::contactsClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 3, 0); +} + +// SIGNAL 4 +void TecMainToolbar::settingsClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 4, 0); +} + +// SIGNAL 5 +void TecMainToolbar::presenceUpdate(Presence _t1, const QString & _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} +static const uint qt_meta_data_ActiveSessions[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 2, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 16, 15, 15, 15, 0x08, + 27, 15, 15, 15, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_ActiveSessions[] = { + "ActiveSessions\0\0scrollUp()\0scrollDown()\0" +}; + +const QMetaObject ActiveSessions::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_ActiveSessions, + qt_meta_data_ActiveSessions, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &ActiveSessions::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *ActiveSessions::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *ActiveSessions::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_ActiveSessions)) + return static_cast(const_cast< ActiveSessions*>(this)); + return QWidget::qt_metacast(_clname); +} + +int ActiveSessions::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: scrollUp(); break; + case 1: scrollDown(); break; + default: ; + } + _id -= 2; + } + return _id; +} +static const uint qt_meta_data_ScrollWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 0, 0, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + 0 // eod +}; + +static const char qt_meta_stringdata_ScrollWidget[] = { + "ScrollWidget\0" +}; + +const QMetaObject ScrollWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_ScrollWidget, + qt_meta_data_ScrollWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &ScrollWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *ScrollWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *ScrollWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_ScrollWidget)) + return static_cast(const_cast< ScrollWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int ScrollWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecmainwindow.cpp b/build/release/moc_tecmainwindow.cpp new file mode 100644 index 0000000..4e018ef --- /dev/null +++ b/build/release/moc_tecmainwindow.cpp @@ -0,0 +1,148 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecmainwindow.h' +** +** Created: Fri Jun 18 17:41:01 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecmainwindow.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecmainwindow.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecMainWindow[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 26, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 19, 15, 14, 14, 0x09, + 51, 15, 14, 14, 0x09, + 97, 83, 14, 14, 0x09, + 141, 127, 14, 14, 0x09, + 194, 176, 14, 14, 0x09, + 256, 244, 14, 14, 0x09, + 297, 291, 14, 14, 0x09, + 353, 335, 14, 14, 0x08, + 397, 388, 14, 14, 0x28, + 423, 15, 14, 14, 0x08, + 442, 14, 14, 14, 0x08, + 462, 14, 14, 14, 0x08, + 483, 478, 14, 14, 0x08, + 502, 497, 14, 14, 0x08, + 533, 14, 14, 14, 0x08, + 548, 14, 14, 14, 0x08, + 567, 14, 14, 14, 0x08, + 582, 14, 14, 14, 0x08, + 601, 14, 14, 14, 0x08, + 615, 14, 14, 14, 0x08, + 638, 14, 14, 14, 0x08, + 658, 388, 14, 14, 0x08, + 697, 14, 14, 14, 0x08, + 711, 14, 14, 14, 0x08, + 738, 14, 14, 14, 0x08, + 765, 14, 14, 14, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecMainWindow[] = { + "TecMainWindow\0\0uid\0onAuthorizationRequest(QString)\0" + "onSubscriptionAccepted(QString)\0" + "status,reason\0onStatusChange(Status,Reason)\0" + "presence,desc\0onPresenceUpdate(Presence,QString)\0" + "uid,presence,desc\0" + "onContactPresenceUpdate(QString,Presence,QString)\0" + "uid,message\0onIncomingMessage(QString,Message)\0" + "cList\0onContactListReceived(TecContactList)\0" + "uid,name,presence\0showChat(QString,QString,Presence)\0" + "uid,name\0showChat(QString,QString)\0" + "closeChat(QString)\0closeAllOpenChats()\0" + "clearAllChats()\0type\0showView(int)\0" + "item\0showUserInfo(QListWidgetItem*)\0" + "showContacts()\0returnToContacts()\0" + "showSettings()\0returnToSettings()\0" + "showAccount()\0returnToIntermediate()\0" + "showAccountCreate()\0" + "onDisplayedNameChange(QString,QString)\0" + "reloadTheme()\0onAccountSettingsChanged()\0" + "onAccountSettingsCreated()\0showAbout()\0" +}; + +const QMetaObject TecMainWindow::staticMetaObject = { + { &TecBaseMainWindow::staticMetaObject, qt_meta_stringdata_TecMainWindow, + qt_meta_data_TecMainWindow, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecMainWindow::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecMainWindow::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecMainWindow::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecMainWindow)) + return static_cast(const_cast< TecMainWindow*>(this)); + return TecBaseMainWindow::qt_metacast(_clname); +} + +int TecMainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = TecBaseMainWindow::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: onAuthorizationRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 1: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 2: onStatusChange((*reinterpret_cast< Status(*)>(_a[1])),(*reinterpret_cast< Reason(*)>(_a[2]))); break; + case 3: onPresenceUpdate((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 4: onContactPresenceUpdate((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Presence(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break; + case 5: onIncomingMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 6: onContactListReceived((*reinterpret_cast< const TecContactList(*)>(_a[1]))); break; + case 7: showChat((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< Presence(*)>(_a[3]))); break; + case 8: showChat((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 9: closeChat((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 10: closeAllOpenChats(); break; + case 11: clearAllChats(); break; + case 12: showView((*reinterpret_cast< int(*)>(_a[1]))); break; + case 13: showUserInfo((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 14: showContacts(); break; + case 15: returnToContacts(); break; + case 16: showSettings(); break; + case 17: returnToSettings(); break; + case 18: showAccount(); break; + case 19: returnToIntermediate(); break; + case 20: showAccountCreate(); break; + case 21: onDisplayedNameChange((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 22: reloadTheme(); break; + case 23: onAccountSettingsChanged(); break; + case 24: onAccountSettingsCreated(); break; + case 25: showAbout(); break; + default: ; + } + _id -= 26; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecsettingswidget.cpp b/build/release/moc_tecsettingswidget.cpp new file mode 100644 index 0000000..4183419 --- /dev/null +++ b/build/release/moc_tecsettingswidget.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecsettingswidget.h' +** +** Created: Fri Jun 18 17:41:02 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecsettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecsettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 1, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 1, // signalCount + + // signals: signature, parameters, type, tag, flags + 28, 19, 18, 18, 0x05, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecSettingsWidget[] = { + "TecSettingsWidget\0\0viewType\0triggered(int)\0" +}; + +const QMetaObject TecSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecSettingsWidget, + qt_meta_data_TecSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecSettingsWidget)) + return static_cast(const_cast< TecSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: triggered((*reinterpret_cast< int(*)>(_a[1]))); break; + default: ; + } + _id -= 1; + } + return _id; +} + +// SIGNAL 0 +void TecSettingsWidget::triggered(int _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecthemessettingswidget.cpp b/build/release/moc_tecthemessettingswidget.cpp new file mode 100644 index 0000000..3aee0f0 --- /dev/null +++ b/build/release/moc_tecthemessettingswidget.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecthemessettingswidget.h' +** +** Created: Fri Jun 18 17:41:03 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecthemessettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecthemessettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecThemesSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 3, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 25, 24, 24, 24, 0x05, + 39, 24, 24, 24, 0x05, + + // slots: signature, parameters, type, tag, flags + 61, 24, 24, 24, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecThemesSettingsWidget[] = { + "TecThemesSettingsWidget\0\0backClicked()\0" + "currentThemeChanged()\0saveThemesSettings()\0" +}; + +const QMetaObject TecThemesSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecThemesSettingsWidget, + qt_meta_data_TecThemesSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecThemesSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecThemesSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecThemesSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecThemesSettingsWidget)) + return static_cast(const_cast< TecThemesSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecThemesSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: backClicked(); break; + case 1: currentThemeChanged(); break; + case 2: saveThemesSettings(); break; + default: ; + } + _id -= 3; + } + return _id; +} + +// SIGNAL 0 +void TecThemesSettingsWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TecThemesSettingsWidget::currentThemeChanged() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tecuserinfowidget.cpp b/build/release/moc_tecuserinfowidget.cpp new file mode 100644 index 0000000..199d44c --- /dev/null +++ b/build/release/moc_tecuserinfowidget.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tecuserinfowidget.h' +** +** Created: Fri Jun 18 17:41:02 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TecUi/tecuserinfowidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tecuserinfowidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TecUserInfoWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 4, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 31, 19, 18, 18, 0x05, + 64, 18, 18, 18, 0x05, + + // slots: signature, parameters, type, tag, flags + 75, 18, 18, 18, 0x08, + 93, 87, 18, 18, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TecUserInfoWidget[] = { + "TecUserInfoWidget\0\0contactItem\0" + "contactChanged(QListWidgetItem*)\0" + "finished()\0okClicked()\0index\0" + "onCurrentIndexChanged(int)\0" +}; + +const QMetaObject TecUserInfoWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TecUserInfoWidget, + qt_meta_data_TecUserInfoWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TecUserInfoWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TecUserInfoWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TecUserInfoWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TecUserInfoWidget)) + return static_cast(const_cast< TecUserInfoWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TecUserInfoWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: contactChanged((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 1: finished(); break; + case 2: okClicked(); break; + case 3: onCurrentIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break; + default: ; + } + _id -= 4; + } + return _id; +} + +// SIGNAL 0 +void TecUserInfoWidget::contactChanged(QListWidgetItem * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TecUserInfoWidget::finished() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocaccountintermediatewidget.cpp b/build/release/moc_tocaccountintermediatewidget.cpp new file mode 100644 index 0000000..d2f91d2 --- /dev/null +++ b/build/release/moc_tocaccountintermediatewidget.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocaccountintermediatewidget.h' +** +** Created: Thu Jul 8 08:48:17 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocaccountintermediatewidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocaccountintermediatewidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocAccountIntermediateWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 3, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 3, // signalCount + + // signals: signature, parameters, type, tag, flags + 30, 29, 29, 29, 0x05, + 46, 29, 29, 29, 0x05, + 60, 29, 29, 29, 0x05, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocAccountIntermediateWidget[] = { + "TocAccountIntermediateWidget\0\0" + "createClicked()\0editClicked()\0" + "backClicked()\0" +}; + +const QMetaObject TocAccountIntermediateWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocAccountIntermediateWidget, + qt_meta_data_TocAccountIntermediateWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocAccountIntermediateWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocAccountIntermediateWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocAccountIntermediateWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocAccountIntermediateWidget)) + return static_cast(const_cast< TocAccountIntermediateWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocAccountIntermediateWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: createClicked(); break; + case 1: editClicked(); break; + case 2: backClicked(); break; + default: ; + } + _id -= 3; + } + return _id; +} + +// SIGNAL 0 +void TocAccountIntermediateWidget::createClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TocAccountIntermediateWidget::editClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} + +// SIGNAL 2 +void TocAccountIntermediateWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 2, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocaccountsettingswidget.cpp b/build/release/moc_tocaccountsettingswidget.cpp new file mode 100644 index 0000000..fca4498 --- /dev/null +++ b/build/release/moc_tocaccountsettingswidget.cpp @@ -0,0 +1,129 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocaccountsettingswidget.h' +** +** Created: Thu Jul 8 08:48:16 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocaccountsettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocaccountsettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocAccountSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 10, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 4, // signalCount + + // signals: signature, parameters, type, tag, flags + 26, 25, 25, 25, 0x05, + 51, 25, 25, 25, 0x05, + 79, 25, 25, 25, 0x05, + 90, 25, 25, 25, 0x05, + + // slots: signature, parameters, type, tag, flags + 104, 25, 25, 25, 0x0a, + 113, 25, 25, 25, 0x08, + 126, 25, 25, 25, 0x08, + 160, 151, 25, 25, 0x08, + 193, 181, 25, 25, 0x08, + 217, 25, 25, 25, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocAccountSettingsWidget[] = { + "TocAccountSettingsWidget\0\0" + "accountSettingsChanged()\0" + "newAccountSettingsCreated()\0finished()\0" + "backClicked()\0reload()\0onOkButton()\0" + "onChangePasswordButton()\0newLogin\0" + "loginEdited(QString)\0newProtocol\0" + "protocolEdited(QString)\0disconnectHints()\0" +}; + +const QMetaObject TocAccountSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocAccountSettingsWidget, + qt_meta_data_TocAccountSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocAccountSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocAccountSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocAccountSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocAccountSettingsWidget)) + return static_cast(const_cast< TocAccountSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocAccountSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: accountSettingsChanged(); break; + case 1: newAccountSettingsCreated(); break; + case 2: finished(); break; + case 3: backClicked(); break; + case 4: reload(); break; + case 5: onOkButton(); break; + case 6: onChangePasswordButton(); break; + case 7: loginEdited((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 8: protocolEdited((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 9: disconnectHints(); break; + default: ; + } + _id -= 10; + } + return _id; +} + +// SIGNAL 0 +void TocAccountSettingsWidget::accountSettingsChanged() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TocAccountSettingsWidget::newAccountSettingsCreated() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} + +// SIGNAL 2 +void TocAccountSettingsWidget::finished() +{ + QMetaObject::activate(this, &staticMetaObject, 2, 0); +} + +// SIGNAL 3 +void TocAccountSettingsWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 3, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocbaseengine.cpp b/build/release/moc_tocbaseengine.cpp new file mode 100644 index 0000000..537bcd9 --- /dev/null +++ b/build/release/moc_tocbaseengine.cpp @@ -0,0 +1,176 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocbaseengine.h' +** +** Created: Thu Jul 8 08:48:17 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocEngine/tocbaseengine.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocbaseengine.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocBaseEngine[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 15, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 7, // signalCount + + // signals: signature, parameters, type, tag, flags + 29, 15, 14, 14, 0x05, + 79, 58, 14, 14, 0x05, + 138, 113, 14, 14, 0x05, + 199, 187, 14, 14, 0x05, + 244, 232, 14, 14, 0x05, + 284, 280, 14, 14, 0x05, + 314, 280, 14, 14, 0x05, + + // slots: signature, parameters, type, tag, flags + 344, 14, 14, 14, 0x0a, + 369, 58, 14, 14, 0x0a, + 404, 280, 14, 14, 0x0a, + 429, 187, 14, 14, 0x0a, + 473, 464, 14, 14, 0x0a, + 522, 506, 14, 14, 0x0a, + 564, 280, 14, 14, 0x0a, + 612, 596, 14, 14, 0x0a, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocBaseEngine[] = { + "TocBaseEngine\0\0status,reason\0" + "statusChanged(Status,Reason)\0" + "presence,description\0" + "presenceUpdated(Presence,QString)\0" + "uid,presence,description\0" + "contactPresenceUpdated(QString,Presence,QString)\0" + "uid,message\0incomingMessage(QString,Message)\0" + "contactList\0contactListReceived(TocContactList)\0" + "uid\0subscriptionAccepted(QString)\0" + "authorizationRequest(QString)\0" + "initializeFromSettings()\0" + "onPresenceChange(Presence,QString)\0" + "onSessionClosed(QString)\0" + "onNewMessageReady(QString,Message)\0" + "pContact\0onAddContactRequest(TocContact*)\0" + "pContact,oldUid\0" + "onEditContactRequest(TocContact*,QString)\0" + "onRemoveContactRequest(QString)\0" + "uid,bAuthorized\0onSubscriptionAccepted(QString,bool)\0" +}; + +const QMetaObject TocBaseEngine::staticMetaObject = { + { &QObject::staticMetaObject, qt_meta_stringdata_TocBaseEngine, + qt_meta_data_TocBaseEngine, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocBaseEngine::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocBaseEngine::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocBaseEngine::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocBaseEngine)) + return static_cast(const_cast< TocBaseEngine*>(this)); + return QObject::qt_metacast(_clname); +} + +int TocBaseEngine::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QObject::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: statusChanged((*reinterpret_cast< Status(*)>(_a[1])),(*reinterpret_cast< Reason(*)>(_a[2]))); break; + case 1: presenceUpdated((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 2: contactPresenceUpdated((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Presence(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break; + case 3: incomingMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 4: contactListReceived((*reinterpret_cast< const TocContactList(*)>(_a[1]))); break; + case 5: subscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 6: authorizationRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 7: initializeFromSettings(); break; + case 8: onPresenceChange((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 9: onSessionClosed((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 10: onNewMessageReady((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 11: onAddContactRequest((*reinterpret_cast< TocContact*(*)>(_a[1]))); break; + case 12: onEditContactRequest((*reinterpret_cast< TocContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 13: onRemoveContactRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 14: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; + default: ; + } + _id -= 15; + } + return _id; +} + +// SIGNAL 0 +void TocBaseEngine::statusChanged(Status _t1, Reason _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TocBaseEngine::presenceUpdated(Presence _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TocBaseEngine::contactPresenceUpdated(QString _t1, Presence _t2, QString _t3) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)), const_cast(reinterpret_cast(&_t3)) }; + QMetaObject::activate(this, &staticMetaObject, 2, _a); +} + +// SIGNAL 3 +void TocBaseEngine::incomingMessage(QString _t1, Message _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 3, _a); +} + +// SIGNAL 4 +void TocBaseEngine::contactListReceived(const TocContactList & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 4, _a); +} + +// SIGNAL 5 +void TocBaseEngine::subscriptionAccepted(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} + +// SIGNAL 6 +void TocBaseEngine::authorizationRequest(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 6, _a); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocbasemainwindow.cpp b/build/release/moc_tocbasemainwindow.cpp new file mode 100644 index 0000000..c45d400 --- /dev/null +++ b/build/release/moc_tocbasemainwindow.cpp @@ -0,0 +1,180 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocbasemainwindow.h' +** +** Created: Thu Jul 8 08:48:15 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocbasemainwindow.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocbasemainwindow.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocBaseMainWindow[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 15, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 8, // signalCount + + // signals: signature, parameters, type, tag, flags + 33, 19, 18, 18, 0x05, + 71, 67, 18, 18, 0x05, + 106, 94, 18, 18, 0x05, + 148, 139, 18, 18, 0x05, + 188, 172, 18, 18, 0x05, + 221, 67, 18, 18, 0x05, + 259, 244, 18, 18, 0x05, + 294, 18, 18, 18, 0x05, + + // slots: signature, parameters, type, tag, flags + 319, 67, 18, 18, 0x09, + 351, 67, 18, 18, 0x09, + 397, 383, 18, 18, 0x09, + 427, 19, 18, 18, 0x09, + 480, 462, 18, 18, 0x09, + 530, 94, 18, 18, 0x09, + 571, 565, 18, 18, 0x09, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocBaseMainWindow[] = { + "TocBaseMainWindow\0\0presence,desc\0" + "presenceChanged(Presence,QString)\0uid\0" + "sessionClosed(QString)\0uid,message\0" + "newMessageReady(QString,Message)\0" + "pContact\0addContact(TocContact*)\0" + "pContact,oldUid\0editContact(TocContact*,QString)\0" + "removeContact(QString)\0uid,authorized\0" + "subscriptionAccepted(QString,bool)\0" + "accountSettingsChanged()\0" + "onAuthorizationRequest(QString)\0" + "onSubscriptionAccepted(QString)\0" + "status,reason\0onStatusChange(Status,Reason)\0" + "onPresenceUpdate(Presence,QString)\0" + "uid,presence,desc\0" + "onContactPresenceUpdate(QString,Presence,QString)\0" + "onIncomingMessage(QString,Message)\0" + "cList\0onContactListReceived(TocContactList)\0" +}; + +const QMetaObject TocBaseMainWindow::staticMetaObject = { + { &QMainWindow::staticMetaObject, qt_meta_stringdata_TocBaseMainWindow, + qt_meta_data_TocBaseMainWindow, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocBaseMainWindow::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocBaseMainWindow::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocBaseMainWindow::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocBaseMainWindow)) + return static_cast(const_cast< TocBaseMainWindow*>(this)); + return QMainWindow::qt_metacast(_clname); +} + +int TocBaseMainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QMainWindow::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: presenceChanged((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 1: sessionClosed((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 2: newMessageReady((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 3: addContact((*reinterpret_cast< TocContact*(*)>(_a[1]))); break; + case 4: editContact((*reinterpret_cast< TocContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 5: removeContact((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 6: subscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; + case 7: accountSettingsChanged(); break; + case 8: onAuthorizationRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 9: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 10: onStatusChange((*reinterpret_cast< Status(*)>(_a[1])),(*reinterpret_cast< Reason(*)>(_a[2]))); break; + case 11: onPresenceUpdate((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 12: onContactPresenceUpdate((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Presence(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break; + case 13: onIncomingMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 14: onContactListReceived((*reinterpret_cast< const TocContactList(*)>(_a[1]))); break; + default: ; + } + _id -= 15; + } + return _id; +} + +// SIGNAL 0 +void TocBaseMainWindow::presenceChanged(Presence _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TocBaseMainWindow::sessionClosed(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TocBaseMainWindow::newMessageReady(QString _t1, Message _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 2, _a); +} + +// SIGNAL 3 +void TocBaseMainWindow::addContact(TocContact * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 3, _a); +} + +// SIGNAL 4 +void TocBaseMainWindow::editContact(TocContact * _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 4, _a); +} + +// SIGNAL 5 +void TocBaseMainWindow::removeContact(QString _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} + +// SIGNAL 6 +void TocBaseMainWindow::subscriptionAccepted(QString _t1, bool _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 6, _a); +} + +// SIGNAL 7 +void TocBaseMainWindow::accountSettingsChanged() +{ + QMetaObject::activate(this, &staticMetaObject, 7, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocchatwidget.cpp b/build/release/moc_tocchatwidget.cpp new file mode 100644 index 0000000..17f372d --- /dev/null +++ b/build/release/moc_tocchatwidget.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocchatwidget.h' +** +** Created: Thu Jul 8 08:48:16 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocchatwidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocchatwidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocChatWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 4, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 27, 15, 14, 14, 0x05, + 60, 14, 14, 14, 0x05, + + // slots: signature, parameters, type, tag, flags + 81, 14, 14, 14, 0x08, + 101, 14, 14, 14, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocChatWidget[] = { + "TocChatWidget\0\0uid,message\0" + "newMessageReady(QString,Message)\0" + "smileButtonClicked()\0pressedSendButton()\0" + "showEmoticonsDialog()\0" +}; + +const QMetaObject TocChatWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocChatWidget, + qt_meta_data_TocChatWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocChatWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocChatWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocChatWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocChatWidget)) + return static_cast(const_cast< TocChatWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocChatWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: newMessageReady((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 1: smileButtonClicked(); break; + case 2: pressedSendButton(); break; + case 3: showEmoticonsDialog(); break; + default: ; + } + _id -= 4; + } + return _id; +} + +// SIGNAL 0 +void TocChatWidget::newMessageReady(const QString & _t1, Message _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TocChatWidget::smileButtonClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_toccontactlistwidget.cpp b/build/release/moc_toccontactlistwidget.cpp new file mode 100644 index 0000000..4db011d --- /dev/null +++ b/build/release/moc_toccontactlistwidget.cpp @@ -0,0 +1,199 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'toccontactlistwidget.h' +** +** Created: Thu Jul 8 08:48:15 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/toccontactlistwidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'toccontactlistwidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocContactListWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 13, 14, // methods + 1, 79, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 7, // signalCount + + // signals: signature, parameters, type, tag, flags + 40, 22, 21, 21, 0x05, + 82, 76, 21, 21, 0x05, + 123, 119, 21, 21, 0x05, + 156, 147, 21, 21, 0x05, + 196, 180, 21, 21, 0x05, + 238, 229, 21, 21, 0x05, + 280, 276, 21, 21, 0x05, + + // slots: signature, parameters, type, tag, flags + 317, 305, 21, 21, 0x0a, + 359, 350, 21, 21, 0x0a, + 399, 387, 21, 21, 0x0a, + 428, 21, 21, 21, 0x08, + 446, 21, 21, 21, 0x08, + 466, 276, 21, 21, 0x08, + + // properties: name, type, flags + 497, 490, 0x43495103, + + // properties: notify_signal_id + 6, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocContactListWidget[] = { + "TocContactListWidget\0\0uid,name,presence\0" + "triggered(QString,QString,Presence)\0" + "pItem\0contactInfoRequest(QListWidgetItem*)\0" + "uid\0removedContact(QString)\0pContact\0" + "addContact(TocContact*)\0pContact,oldUid\0" + "editContact(TocContact*,QString)\0" + "uid,name\0displayedNameChanged(QString,QString)\0" + "rgb\0logoColorChanged(QColor)\0contactList\0" + "onNewContactList(TocContactList)\0" + "pNewItem\0commitAdd(QListWidgetItem*)\0" + "pEditedItem\0commitEdit(QListWidgetItem*)\0" + "onEditRequested()\0onRemoveRequested()\0" + "changeLogoColor(QColor)\0QColor\0logoColor\0" +}; + +const QMetaObject TocContactListWidget::staticMetaObject = { + { &QListWidget::staticMetaObject, qt_meta_stringdata_TocContactListWidget, + qt_meta_data_TocContactListWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocContactListWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocContactListWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocContactListWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocContactListWidget)) + return static_cast(const_cast< TocContactListWidget*>(this)); + return QListWidget::qt_metacast(_clname); +} + +int TocContactListWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QListWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: triggered((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< Presence(*)>(_a[3]))); break; + case 1: contactInfoRequest((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 2: removedContact((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 3: addContact((*reinterpret_cast< TocContact*(*)>(_a[1]))); break; + case 4: editContact((*reinterpret_cast< TocContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 5: displayedNameChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 6: logoColorChanged((*reinterpret_cast< QColor(*)>(_a[1]))); break; + case 7: onNewContactList((*reinterpret_cast< const TocContactList(*)>(_a[1]))); break; + case 8: commitAdd((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 9: commitEdit((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 10: onEditRequested(); break; + case 11: onRemoveRequested(); break; + case 12: changeLogoColor((*reinterpret_cast< QColor(*)>(_a[1]))); break; + default: ; + } + _id -= 13; + } +#ifndef QT_NO_PROPERTIES + else if (_c == QMetaObject::ReadProperty) { + void *_v = _a[0]; + switch (_id) { + case 0: *reinterpret_cast< QColor*>(_v) = logoColor(); break; + } + _id -= 1; + } else if (_c == QMetaObject::WriteProperty) { + void *_v = _a[0]; + switch (_id) { + case 0: setLogoColor(*reinterpret_cast< QColor*>(_v)); break; + } + _id -= 1; + } else if (_c == QMetaObject::ResetProperty) { + _id -= 1; + } else if (_c == QMetaObject::QueryPropertyDesignable) { + _id -= 1; + } else if (_c == QMetaObject::QueryPropertyScriptable) { + _id -= 1; + } else if (_c == QMetaObject::QueryPropertyStored) { + _id -= 1; + } else if (_c == QMetaObject::QueryPropertyEditable) { + _id -= 1; + } else if (_c == QMetaObject::QueryPropertyUser) { + _id -= 1; + } +#endif // QT_NO_PROPERTIES + return _id; +} + +// SIGNAL 0 +void TocContactListWidget::triggered(const QString & _t1, const QString & _t2, Presence _t3) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)), const_cast(reinterpret_cast(&_t3)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TocContactListWidget::contactInfoRequest(QListWidgetItem * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TocContactListWidget::removedContact(const QString & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 2, _a); +} + +// SIGNAL 3 +void TocContactListWidget::addContact(TocContact * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 3, _a); +} + +// SIGNAL 4 +void TocContactListWidget::editContact(TocContact * _t1, QString _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 4, _a); +} + +// SIGNAL 5 +void TocContactListWidget::displayedNameChanged(const QString & _t1, const QString & _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} + +// SIGNAL 6 +void TocContactListWidget::logoColorChanged(QColor _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 6, _a); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocemoticonsdialog.cpp b/build/release/moc_tocemoticonsdialog.cpp new file mode 100644 index 0000000..5459c79 --- /dev/null +++ b/build/release/moc_tocemoticonsdialog.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocemoticonsdialog.h' +** +** Created: Thu Jul 8 08:48:17 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocemoticonsdialog.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocemoticonsdialog.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocEmoticonsDialog[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 1, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 26, 20, 19, 19, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocEmoticonsDialog[] = { + "TocEmoticonsDialog\0\0pItem\0" + "onEmoticonSelected(QListWidgetItem*)\0" +}; + +const QMetaObject TocEmoticonsDialog::staticMetaObject = { + { &QDialog::staticMetaObject, qt_meta_stringdata_TocEmoticonsDialog, + qt_meta_data_TocEmoticonsDialog, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocEmoticonsDialog::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocEmoticonsDialog::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocEmoticonsDialog::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocEmoticonsDialog)) + return static_cast(const_cast< TocEmoticonsDialog*>(this)); + return QDialog::qt_metacast(_clname); +} + +int TocEmoticonsDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QDialog::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: onEmoticonSelected((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + default: ; + } + _id -= 1; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocengine.cpp b/build/release/moc_tocengine.cpp new file mode 100644 index 0000000..227fe4c --- /dev/null +++ b/build/release/moc_tocengine.cpp @@ -0,0 +1,133 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocengine.h' +** +** Created: Thu Jul 8 08:48:18 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocEngine/tocengine.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocengine.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocEngine[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 15, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 32, 11, 10, 10, 0x0a, + 76, 67, 10, 10, 0x0a, + 125, 109, 10, 10, 0x0a, + 171, 167, 10, 10, 0x0a, + 205, 203, 10, 10, 0x0a, + 242, 10, 10, 10, 0x0a, + 279, 267, 10, 10, 0x0a, + 314, 167, 10, 10, 0x0a, + 365, 339, 10, 10, 0x08, + 498, 464, 10, 10, 0x08, + 582, 464, 10, 10, 0x08, + 691, 670, 10, 10, 0x08, + 786, 772, 10, 10, 0x08, + 926, 889, 10, 10, 0x08, + 992, 67, 10, 10, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocEngine[] = { + "TocEngine\0\0presence,description\0" + "onPresenceChange(Presence,QString)\0" + "pContact\0onAddContactRequest(TocContact*)\0" + "pContact,oldUid\0" + "onEditContactRequest(TocContact*,QString)\0" + "uid\0onRemoveContactRequest(QString)\0" + ",\0onSubscriptionAccepted(QString,bool)\0" + "initializeFromSettings()\0uid,message\0" + "onNewMessageReady(QString,Message)\0" + "onSessionClosed(QString)\0" + "pConnection,status,reason\0" + "onStatusChange(QtTapioca::Connection*,QtTapioca::Connection::Status,Qt" + "Tapioca::Connection::Reason)\0" + "pContact,presence,presenceMessage\0" + "onPresenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Pres" + "ence,QString)\0" + "onSelfPresenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::" + "Presence,QString)\0" + "pTextChannel,message\0" + "onMessageReceived(const QtTapioca::TextChannel*,QtTapioca::TextChannel" + "::Message)\0" + "message,error\0" + "onMessageDeliveryError(QtTapioca::TextChannel::Message,QtTapioca::Text" + "Channel::Message::DeliveryError)\0" + "pConnection,pChannel,bSuppresHandler\0" + "onChannelCreated(QtTapioca::Connection*,QtTapioca::Channel*,bool)\0" + "onAuthorizationRequested(QtTapioca::Contact*)\0" +}; + +const QMetaObject TocEngine::staticMetaObject = { + { &TocBaseEngine::staticMetaObject, qt_meta_stringdata_TocEngine, + qt_meta_data_TocEngine, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocEngine::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocEngine::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocEngine::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocEngine)) + return static_cast(const_cast< TocEngine*>(this)); + return TocBaseEngine::qt_metacast(_clname); +} + +int TocEngine::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = TocBaseEngine::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: onPresenceChange((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 1: onAddContactRequest((*reinterpret_cast< TocContact*(*)>(_a[1]))); break; + case 2: onEditContactRequest((*reinterpret_cast< TocContact*(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 3: onRemoveContactRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 4: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; + case 5: initializeFromSettings(); break; + case 6: onNewMessageReady((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 7: onSessionClosed((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 8: onStatusChange((*reinterpret_cast< QtTapioca::Connection*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::Connection::Status(*)>(_a[2])),(*reinterpret_cast< QtTapioca::Connection::Reason(*)>(_a[3]))); break; + case 9: onPresenceUpdated((*reinterpret_cast< QtTapioca::ContactBase*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::ContactBase::Presence(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; + case 10: onSelfPresenceUpdated((*reinterpret_cast< QtTapioca::ContactBase*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::ContactBase::Presence(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3]))); break; + case 11: onMessageReceived((*reinterpret_cast< const QtTapioca::TextChannel*(*)>(_a[1])),(*reinterpret_cast< const QtTapioca::TextChannel::Message(*)>(_a[2]))); break; + case 12: onMessageDeliveryError((*reinterpret_cast< const QtTapioca::TextChannel::Message(*)>(_a[1])),(*reinterpret_cast< QtTapioca::TextChannel::Message::DeliveryError(*)>(_a[2]))); break; + case 13: onChannelCreated((*reinterpret_cast< QtTapioca::Connection*(*)>(_a[1])),(*reinterpret_cast< QtTapioca::Channel*(*)>(_a[2])),(*reinterpret_cast< bool(*)>(_a[3]))); break; + case 14: onAuthorizationRequested((*reinterpret_cast< QtTapioca::Contact*(*)>(_a[1]))); break; + default: ; + } + _id -= 15; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocgeneralsettingswidget.cpp b/build/release/moc_tocgeneralsettingswidget.cpp new file mode 100644 index 0000000..4e39f59 --- /dev/null +++ b/build/release/moc_tocgeneralsettingswidget.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocgeneralsettingswidget.h' +** +** Created: Thu Jul 8 08:48:16 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocgeneralsettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocgeneralsettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocGeneralSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 3, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 26, 25, 25, 25, 0x05, + 37, 25, 25, 25, 0x05, + + // slots: signature, parameters, type, tag, flags + 51, 25, 25, 25, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocGeneralSettingsWidget[] = { + "TocGeneralSettingsWidget\0\0finished()\0" + "backClicked()\0saveGeneralSettings()\0" +}; + +const QMetaObject TocGeneralSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocGeneralSettingsWidget, + qt_meta_data_TocGeneralSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocGeneralSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocGeneralSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocGeneralSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocGeneralSettingsWidget)) + return static_cast(const_cast< TocGeneralSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocGeneralSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: finished(); break; + case 1: backClicked(); break; + case 2: saveGeneralSettings(); break; + default: ; + } + _id -= 3; + } + return _id; +} + +// SIGNAL 0 +void TocGeneralSettingsWidget::finished() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TocGeneralSettingsWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocmaintoolbar.cpp b/build/release/moc_tocmaintoolbar.cpp new file mode 100644 index 0000000..0d662ff --- /dev/null +++ b/build/release/moc_tocmaintoolbar.cpp @@ -0,0 +1,268 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocmaintoolbar.h' +** +** Created: Thu Jul 8 08:48:17 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocmaintoolbar.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocmaintoolbar.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocMainToolbar[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 14, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 6, // signalCount + + // signals: signature, parameters, type, tag, flags + 25, 16, 15, 15, 0x05, + 69, 65, 15, 15, 0x05, + 94, 15, 15, 15, 0x05, + 116, 15, 15, 15, 0x05, + 134, 15, 15, 15, 0x05, + 166, 152, 15, 15, 0x05, + + // slots: signature, parameters, type, tag, flags + 217, 199, 15, 15, 0x0a, + 256, 15, 15, 15, 0x08, + 278, 15, 15, 15, 0x08, + 297, 15, 15, 15, 0x08, + 329, 321, 15, 15, 0x08, + 371, 364, 15, 15, 0x08, + 401, 15, 15, 15, 0x08, + 421, 15, 15, 15, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocMainToolbar[] = { + "TocMainToolbar\0\0uid,name\0" + "activeSessionTriggered(QString,QString)\0" + "uid\0finishedSession(QString)\0" + "finishedAllSessions()\0contactsClicked()\0" + "settingsClicked()\0presence,desc\0" + "presenceUpdate(Presence,QString)\0" + "uid,name,presence\0" + "onNewSession(QString,QString,Presence)\0" + "closeCurrentSession()\0closeAllSessions()\0" + "restoreCurrentSession()\0pAction\0" + "onActiveSessionTriggered(QAction*)\0" + "action\0onTriggeredPresence(QAction*)\0" + "onContactsClicked()\0onSettingsClicked()\0" +}; + +const QMetaObject TocMainToolbar::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocMainToolbar, + qt_meta_data_TocMainToolbar, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocMainToolbar::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocMainToolbar::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocMainToolbar::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocMainToolbar)) + return static_cast(const_cast< TocMainToolbar*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocMainToolbar::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: activeSessionTriggered((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 1: finishedSession((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 2: finishedAllSessions(); break; + case 3: contactsClicked(); break; + case 4: settingsClicked(); break; + case 5: presenceUpdate((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 6: onNewSession((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< Presence(*)>(_a[3]))); break; + case 7: closeCurrentSession(); break; + case 8: closeAllSessions(); break; + case 9: restoreCurrentSession(); break; + case 10: onActiveSessionTriggered((*reinterpret_cast< QAction*(*)>(_a[1]))); break; + case 11: onTriggeredPresence((*reinterpret_cast< QAction*(*)>(_a[1]))); break; + case 12: onContactsClicked(); break; + case 13: onSettingsClicked(); break; + default: ; + } + _id -= 14; + } + return _id; +} + +// SIGNAL 0 +void TocMainToolbar::activeSessionTriggered(const QString & _t1, const QString & _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TocMainToolbar::finishedSession(const QString & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 1, _a); +} + +// SIGNAL 2 +void TocMainToolbar::finishedAllSessions() +{ + QMetaObject::activate(this, &staticMetaObject, 2, 0); +} + +// SIGNAL 3 +void TocMainToolbar::contactsClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 3, 0); +} + +// SIGNAL 4 +void TocMainToolbar::settingsClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 4, 0); +} + +// SIGNAL 5 +void TocMainToolbar::presenceUpdate(Presence _t1, const QString & _t2) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; + QMetaObject::activate(this, &staticMetaObject, 5, _a); +} +static const uint qt_meta_data_ActiveSessions[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 2, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 16, 15, 15, 15, 0x08, + 27, 15, 15, 15, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_ActiveSessions[] = { + "ActiveSessions\0\0scrollUp()\0scrollDown()\0" +}; + +const QMetaObject ActiveSessions::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_ActiveSessions, + qt_meta_data_ActiveSessions, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &ActiveSessions::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *ActiveSessions::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *ActiveSessions::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_ActiveSessions)) + return static_cast(const_cast< ActiveSessions*>(this)); + return QWidget::qt_metacast(_clname); +} + +int ActiveSessions::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: scrollUp(); break; + case 1: scrollDown(); break; + default: ; + } + _id -= 2; + } + return _id; +} +static const uint qt_meta_data_ScrollWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 0, 0, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + 0 // eod +}; + +static const char qt_meta_stringdata_ScrollWidget[] = { + "ScrollWidget\0" +}; + +const QMetaObject ScrollWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_ScrollWidget, + qt_meta_data_ScrollWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &ScrollWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *ScrollWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *ScrollWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_ScrollWidget)) + return static_cast(const_cast< ScrollWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int ScrollWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocmainwindow.cpp b/build/release/moc_tocmainwindow.cpp new file mode 100644 index 0000000..3160767 --- /dev/null +++ b/build/release/moc_tocmainwindow.cpp @@ -0,0 +1,156 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocmainwindow.h' +** +** Created: Thu Jul 8 08:48:15 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocmainwindow.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocmainwindow.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocMainWindow[] = { + + // content: + 4, // revision + 0, // classname + 1, 14, // classinfo + 27, 16, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // classinfo: key, value + 34, 14, + + // slots: signature, parameters, type, tag, flags + 55, 50, 51, 50, 0x4a, + 77, 73, 50, 50, 0x09, + 109, 73, 50, 50, 0x09, + 155, 141, 50, 50, 0x09, + 199, 185, 50, 50, 0x09, + 252, 234, 50, 50, 0x09, + 314, 302, 50, 50, 0x09, + 355, 349, 50, 50, 0x09, + 411, 393, 50, 50, 0x08, + 455, 446, 50, 50, 0x28, + 481, 73, 50, 50, 0x08, + 500, 50, 50, 50, 0x08, + 520, 50, 50, 50, 0x08, + 541, 536, 50, 50, 0x08, + 560, 555, 50, 50, 0x08, + 591, 50, 50, 50, 0x08, + 606, 50, 50, 50, 0x08, + 625, 50, 50, 50, 0x08, + 640, 50, 50, 50, 0x08, + 659, 50, 50, 50, 0x08, + 673, 50, 50, 50, 0x08, + 696, 50, 50, 50, 0x08, + 716, 446, 50, 50, 0x08, + 755, 50, 50, 50, 0x08, + 769, 50, 50, 50, 0x08, + 796, 50, 50, 50, 0x08, + 823, 50, 50, 50, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocMainWindow[] = { + "TocMainWindow\0org.indt.tietoopcom\0" + "D-Bus Interface\0\0int\0top_application()\0" + "uid\0onAuthorizationRequest(QString)\0" + "onSubscriptionAccepted(QString)\0" + "status,reason\0onStatusChange(Status,Reason)\0" + "presence,desc\0onPresenceUpdate(Presence,QString)\0" + "uid,presence,desc\0" + "onContactPresenceUpdate(QString,Presence,QString)\0" + "uid,message\0onIncomingMessage(QString,Message)\0" + "cList\0onContactListReceived(TocContactList)\0" + "uid,name,presence\0showChat(QString,QString,Presence)\0" + "uid,name\0showChat(QString,QString)\0" + "closeChat(QString)\0closeAllOpenChats()\0" + "clearAllChats()\0type\0showView(int)\0" + "item\0showUserInfo(QListWidgetItem*)\0" + "showContacts()\0returnToContacts()\0" + "showSettings()\0returnToSettings()\0" + "showAccount()\0returnToIntermediate()\0" + "showAccountCreate()\0" + "onDisplayedNameChange(QString,QString)\0" + "reloadTheme()\0onAccountSettingsChanged()\0" + "onAccountSettingsCreated()\0showAbout()\0" +}; + +const QMetaObject TocMainWindow::staticMetaObject = { + { &TocBaseMainWindow::staticMetaObject, qt_meta_stringdata_TocMainWindow, + qt_meta_data_TocMainWindow, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocMainWindow::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocMainWindow::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocMainWindow::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocMainWindow)) + return static_cast(const_cast< TocMainWindow*>(this)); + return TocBaseMainWindow::qt_metacast(_clname); +} + +int TocMainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = TocBaseMainWindow::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: { int _r = top_application(); + if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break; + case 1: onAuthorizationRequest((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 2: onSubscriptionAccepted((*reinterpret_cast< QString(*)>(_a[1]))); break; + case 3: onStatusChange((*reinterpret_cast< Status(*)>(_a[1])),(*reinterpret_cast< Reason(*)>(_a[2]))); break; + case 4: onPresenceUpdate((*reinterpret_cast< Presence(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; + case 5: onContactPresenceUpdate((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Presence(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break; + case 6: onIncomingMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< Message(*)>(_a[2]))); break; + case 7: onContactListReceived((*reinterpret_cast< const TocContactList(*)>(_a[1]))); break; + case 8: showChat((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< Presence(*)>(_a[3]))); break; + case 9: showChat((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 10: closeChat((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 11: closeAllOpenChats(); break; + case 12: clearAllChats(); break; + case 13: showView((*reinterpret_cast< int(*)>(_a[1]))); break; + case 14: showUserInfo((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 15: showContacts(); break; + case 16: returnToContacts(); break; + case 17: showSettings(); break; + case 18: returnToSettings(); break; + case 19: showAccount(); break; + case 20: returnToIntermediate(); break; + case 21: showAccountCreate(); break; + case 22: onDisplayedNameChange((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; + case 23: reloadTheme(); break; + case 24: onAccountSettingsChanged(); break; + case 25: onAccountSettingsCreated(); break; + case 26: showAbout(); break; + default: ; + } + _id -= 27; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocsettingswidget.cpp b/build/release/moc_tocsettingswidget.cpp new file mode 100644 index 0000000..3da872b --- /dev/null +++ b/build/release/moc_tocsettingswidget.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocsettingswidget.h' +** +** Created: Thu Jul 8 08:48:16 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocsettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocsettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 1, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 1, // signalCount + + // signals: signature, parameters, type, tag, flags + 28, 19, 18, 18, 0x05, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocSettingsWidget[] = { + "TocSettingsWidget\0\0viewType\0triggered(int)\0" +}; + +const QMetaObject TocSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocSettingsWidget, + qt_meta_data_TocSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocSettingsWidget)) + return static_cast(const_cast< TocSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: triggered((*reinterpret_cast< int(*)>(_a[1]))); break; + default: ; + } + _id -= 1; + } + return _id; +} + +// SIGNAL 0 +void TocSettingsWidget::triggered(int _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocthemessettingswidget.cpp b/build/release/moc_tocthemessettingswidget.cpp new file mode 100644 index 0000000..9cfa7dc --- /dev/null +++ b/build/release/moc_tocthemessettingswidget.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocthemessettingswidget.h' +** +** Created: Thu Jul 8 08:48:17 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocthemessettingswidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocthemessettingswidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocThemesSettingsWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 3, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 25, 24, 24, 24, 0x05, + 39, 24, 24, 24, 0x05, + + // slots: signature, parameters, type, tag, flags + 61, 24, 24, 24, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocThemesSettingsWidget[] = { + "TocThemesSettingsWidget\0\0backClicked()\0" + "currentThemeChanged()\0saveThemesSettings()\0" +}; + +const QMetaObject TocThemesSettingsWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocThemesSettingsWidget, + qt_meta_data_TocThemesSettingsWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocThemesSettingsWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocThemesSettingsWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocThemesSettingsWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocThemesSettingsWidget)) + return static_cast(const_cast< TocThemesSettingsWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocThemesSettingsWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: backClicked(); break; + case 1: currentThemeChanged(); break; + case 2: saveThemesSettings(); break; + default: ; + } + _id -= 3; + } + return _id; +} + +// SIGNAL 0 +void TocThemesSettingsWidget::backClicked() +{ + QMetaObject::activate(this, &staticMetaObject, 0, 0); +} + +// SIGNAL 1 +void TocThemesSettingsWidget::currentThemeChanged() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/moc_tocuserinfowidget.cpp b/build/release/moc_tocuserinfowidget.cpp new file mode 100644 index 0000000..3334342 --- /dev/null +++ b/build/release/moc_tocuserinfowidget.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'tocuserinfowidget.h' +** +** Created: Thu Jul 8 08:48:16 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "../../include/TocUi/tocuserinfowidget.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'tocuserinfowidget.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_TocUserInfoWidget[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 4, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 2, // signalCount + + // signals: signature, parameters, type, tag, flags + 31, 19, 18, 18, 0x05, + 64, 18, 18, 18, 0x05, + + // slots: signature, parameters, type, tag, flags + 75, 18, 18, 18, 0x08, + 93, 87, 18, 18, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_TocUserInfoWidget[] = { + "TocUserInfoWidget\0\0contactItem\0" + "contactChanged(QListWidgetItem*)\0" + "finished()\0okClicked()\0index\0" + "onCurrentIndexChanged(int)\0" +}; + +const QMetaObject TocUserInfoWidget::staticMetaObject = { + { &QWidget::staticMetaObject, qt_meta_stringdata_TocUserInfoWidget, + qt_meta_data_TocUserInfoWidget, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &TocUserInfoWidget::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *TocUserInfoWidget::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *TocUserInfoWidget::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_TocUserInfoWidget)) + return static_cast(const_cast< TocUserInfoWidget*>(this)); + return QWidget::qt_metacast(_clname); +} + +int TocUserInfoWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QWidget::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: contactChanged((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; + case 1: finished(); break; + case 2: okClicked(); break; + case 3: onCurrentIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break; + default: ; + } + _id -= 4; + } + return _id; +} + +// SIGNAL 0 +void TocUserInfoWidget::contactChanged(QListWidgetItem * _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +// SIGNAL 1 +void TocUserInfoWidget::finished() +{ + QMetaObject::activate(this, &staticMetaObject, 1, 0); +} +QT_END_MOC_NAMESPACE diff --git a/build/release/qrc_application.cpp b/build/release/qrc_application.cpp new file mode 100644 index 0000000..2b5d845 --- /dev/null +++ b/build/release/qrc_application.cpp @@ -0,0 +1,6191 @@ +/**************************************************************************** +** Resource object code +** +** Created: Thu Jul 8 08:48:18 2010 +** by: The Resource Compiler for Qt version 4.6.2 +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include + +static const unsigned char qt_resource_data[] = { + // /home/maemo/tietoopcom/resources/offline.png + 0x0,0x0,0x9,0xa8, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x14,0xc3,0x0,0x0,0x14,0xc3,0x1, + 0x15,0x70,0x4d,0x42,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xa, + 0xd,0x12,0x2b,0xd,0x68,0x67,0x33,0x0,0x0,0x9,0x28,0x49,0x44,0x41,0x54,0x68, + 0xde,0xd5,0x5a,0x5b,0x6c,0x53,0xc9,0x19,0xfe,0x66,0xc6,0xc7,0xd7,0x13,0x30,0x36, + 0xb9,0xd8,0x81,0x36,0x80,0x1d,0x2e,0x22,0x6,0xd4,0x3e,0x0,0xb,0x8a,0xa,0x6, + 0x2a,0xf1,0x92,0x65,0x79,0xe1,0xb5,0x7d,0xec,0x6b,0x55,0xf5,0x9,0xb5,0x55,0xb5, + 0xaa,0x56,0x54,0xea,0xbe,0x56,0xda,0x87,0xbe,0xf1,0xc2,0x45,0x42,0x41,0x15,0x98, + 0xec,0x22,0x2e,0x29,0x52,0xd5,0x5,0x1b,0x42,0xa,0x6,0xa5,0xa,0x38,0xb1,0x95, + 0x18,0x25,0xf8,0xd8,0x3e,0x97,0x99,0xe9,0x3,0xe7,0x78,0x4f,0x42,0xe2,0xd8,0xb9, + 0xec,0xb6,0x96,0x3e,0xc5,0x39,0x67,0xce,0x9c,0xef,0xfb,0xff,0x7f,0xfe,0x99,0x7f, + 0xc6,0x44,0x4a,0x89,0xff,0xe7,0x8f,0x67,0x3d,0x3b,0x3b,0x7d,0xfa,0x74,0xc8,0x34, + 0xcd,0xed,0x8c,0xb1,0xb8,0x94,0x32,0x6,0x20,0x66,0xdf,0x9a,0x22,0x84,0x4c,0x71, + 0xce,0xb,0x8a,0xa2,0x4c,0xde,0xba,0x75,0x4b,0x5b,0xaf,0x77,0x92,0xb5,0x7a,0xe0, + 0xe4,0xc9,0x93,0x3f,0x6,0x30,0x4,0xe0,0x53,0x0,0xc7,0x1,0xd0,0x15,0x1e,0x11, + 0x0,0xee,0x1,0xb8,0x6,0xe0,0xfa,0x9d,0x3b,0x77,0xfe,0xf3,0x83,0x8,0x48,0xa7, + 0xd3,0x43,0x52,0xca,0x8b,0x0,0xe,0x1,0x40,0x3c,0x1e,0xe7,0x7b,0xf6,0xec,0x61, + 0x91,0x48,0x4,0xa1,0x50,0x8,0xa1,0x50,0x8,0xc1,0x60,0x10,0x0,0x50,0xad,0x56, + 0xa1,0x69,0x1a,0x34,0x4d,0x43,0xb9,0x5c,0xc6,0xf8,0xf8,0x38,0x2f,0x14,0xa,0xcc, + 0xee,0xea,0x5b,0x42,0xc8,0x1f,0x32,0x99,0xcc,0xf5,0xef,0x45,0x40,0x3a,0x9d,0xfe, + 0x4,0xc0,0x25,0x29,0xe5,0xe1,0x78,0x3c,0xce,0x53,0xa9,0x14,0x4b,0x24,0x12,0x8, + 0x85,0x42,0x1f,0xcc,0x2b,0x4,0x0,0x40,0x4a,0x9,0xa7,0x6f,0x42,0x8,0x8,0x21, + 0x0,0x0,0x4a,0x3f,0x38,0x48,0xd3,0x34,0xe4,0xf3,0x79,0x64,0xb3,0x59,0x5e,0x28, + 0x14,0x18,0x21,0xe4,0x1f,0x0,0x7e,0x9d,0xc9,0x64,0x1e,0x6c,0x88,0x80,0x53,0xa7, + 0x4e,0x6d,0x16,0x42,0x7c,0x5,0xe0,0xb3,0x48,0x24,0xc2,0x7,0x7,0x7,0x59,0x7f, + 0x7f,0x3f,0xa4,0x94,0x10,0x42,0x80,0x73,0xe,0xce,0x79,0x4b,0x7d,0x31,0xc6,0xc0, + 0x18,0x3,0xa5,0x14,0x84,0x10,0xbc,0x78,0xf1,0x2,0x77,0xef,0xde,0xe5,0xe5,0x72, + 0x99,0x1,0xb8,0x42,0x29,0xfd,0xe5,0xed,0xdb,0xb7,0xe7,0xd6,0x4d,0xc0,0x89,0x13, + 0x27,0x92,0x94,0xd2,0x61,0x42,0xc8,0xae,0x74,0x3a,0x4d,0xf,0x1c,0x38,0x0,0x42, + 0x8,0x38,0xe7,0x30,0x4d,0x73,0x4d,0x63,0x48,0x51,0x14,0x30,0xc6,0x20,0x84,0x40, + 0x36,0x9b,0x45,0x26,0x93,0x11,0x52,0xca,0x57,0x42,0x88,0xb3,0x23,0x23,0x23,0x2f, + 0xd7,0x2c,0x20,0x9d,0x4e,0xa7,0xa5,0x94,0x57,0x54,0x55,0xd,0x9d,0x3f,0x7f,0x9e, + 0x75,0x77,0x77,0x37,0x88,0xaf,0x57,0xa,0x26,0x84,0xc0,0xe3,0xf1,0x80,0x31,0x86, + 0x62,0xb1,0x88,0x2b,0x57,0xae,0xf0,0x4a,0xa5,0xa2,0x11,0x42,0x3e,0xcb,0x64,0x32, + 0x99,0x55,0xb,0x48,0xa7,0xd3,0x69,0x0,0x7f,0x8f,0xc5,0x62,0x38,0x77,0xee,0x1c, + 0xb,0x6,0x83,0x30,0x4d,0xb3,0xe5,0x50,0x69,0xe5,0xe3,0x7e,0x3f,0x63,0xc,0x8a, + 0xa2,0xa0,0x5a,0xad,0xe2,0xea,0xd5,0xab,0x7c,0x7a,0x7a,0x1a,0x0,0x7e,0xde,0x4c, + 0xc4,0xb2,0x2,0x4e,0x9c,0x38,0x91,0x24,0x84,0xfc,0x33,0x1e,0x8f,0x87,0x2e,0x5c, + 0xb8,0xc0,0x28,0xa5,0x30,0xc,0x63,0x5d,0xac,0xde,0xac,0xf,0x42,0x8,0x14,0x45, + 0x81,0x10,0x2,0x97,0x2f,0x5f,0xe6,0x53,0x53,0x53,0x9a,0x94,0xf2,0xa7,0xcb,0x85, + 0x13,0x5d,0x6e,0xc0,0x52,0x4a,0x87,0x3b,0x3a,0x3a,0x42,0xe7,0xce,0x9d,0x5b,0x17, + 0xf2,0x4e,0x56,0x5a,0xae,0xf,0xe7,0x9e,0x10,0x2,0xba,0xae,0x83,0x10,0x82,0xa1, + 0xa1,0x21,0xa6,0xaa,0x6a,0x88,0x52,0x3a,0x7c,0xea,0xd4,0xa9,0xcd,0x2d,0xb,0x10, + 0x42,0x7c,0x45,0x29,0xdd,0x75,0xfe,0xfc,0x79,0x16,0x8,0x4,0xa0,0xeb,0x3a,0x84, + 0x10,0xb,0x48,0xb8,0x21,0x84,0x68,0xa,0xce,0x79,0x5b,0xf7,0x39,0xe7,0xd0,0x75, + 0x1d,0x81,0x40,0x0,0xb6,0x1,0x77,0xd9,0x19,0x70,0xe5,0x10,0x4a,0xa7,0xd3,0x9f, + 0x48,0x29,0xef,0x9f,0x39,0x73,0x6,0x7,0xf,0x1e,0x44,0xbd,0x5e,0x87,0x65,0x59, + 0xab,0xa,0x87,0xb5,0xde,0x67,0x8c,0xc1,0xef,0xf7,0xe3,0xf1,0xe3,0xc7,0xb8,0x73, + 0xe7,0xe,0x8,0x21,0xc7,0x16,0xcf,0x13,0x4b,0x79,0xe0,0x52,0x24,0x12,0xe1,0xa9, + 0x54,0xa,0x86,0x61,0x34,0xb2,0xcd,0x52,0x96,0x6e,0xd7,0xb2,0xee,0xeb,0xe,0x9a, + 0x3d,0x6b,0x18,0x6,0xc,0xc3,0x40,0x2a,0x95,0x42,0x38,0x1c,0xe6,0x0,0x2e,0x35, + 0xd,0x21,0x7b,0x79,0x70,0x78,0x70,0x70,0x90,0x1,0x40,0xbd,0x5e,0x6f,0x4a,0x66, + 0xa5,0x30,0x5a,0x8d,0xe8,0xc5,0x6d,0xea,0xf5,0x3a,0x0,0xe0,0xf8,0xf1,0xe3,0x4c, + 0x4a,0x79,0x38,0x9d,0x4e,0xf,0x2d,0xbb,0x1a,0x95,0x52,0x5e,0x8c,0xc7,0xe3,0x3c, + 0x99,0x4c,0x32,0x5d,0xd7,0x1b,0xe9,0xb2,0xd9,0xc0,0x6b,0x27,0x34,0xda,0x6d,0xef, + 0x2c,0x4d,0x74,0x5d,0x47,0x32,0x99,0x44,0x77,0x77,0x37,0x2f,0x16,0x8b,0x17,0x1, + 0x5c,0xff,0xc8,0x3,0xf6,0xaa,0xf2,0x50,0x2a,0x95,0x62,0xce,0x2,0xac,0x99,0x25, + 0x5b,0xf1,0xc0,0x72,0xed,0xdb,0xed,0xab,0x5a,0xad,0x42,0x4a,0x89,0x81,0x81,0x1, + 0x6,0xe0,0x90,0xcd,0xf5,0x23,0xf,0xc,0x1,0xc0,0xce,0x9d,0x3b,0x61,0x18,0xc6, + 0x82,0xc9,0x6a,0xbd,0x3c,0xd0,0xec,0xfe,0x4a,0xef,0x30,0xc,0x3,0x7d,0x7d,0x7d, + 0x6e,0xae,0x5f,0x2e,0x1e,0x3,0x9f,0xc6,0xe3,0x71,0xae,0xaa,0x6a,0x23,0x6d,0x2e, + 0x65,0x1d,0xb7,0x85,0x56,0x6b,0xd1,0xe5,0xc6,0x53,0xb3,0x71,0x54,0xaf,0xd7,0xa1, + 0xaa,0x2a,0x7a,0x7a,0x7a,0xb8,0x5d,0x7b,0x7c,0x17,0x42,0xa7,0x4f,0x9f,0xe,0x1, + 0x38,0xde,0xdf,0xdf,0xcf,0xa4,0x94,0xa8,0xd7,0xeb,0xcb,0x12,0x58,0x8f,0xc1,0xbc, + 0x5c,0xfb,0x66,0xd7,0x6b,0xb5,0x1a,0x0,0x20,0x91,0x48,0x30,0x0,0xc7,0x6d,0xce, + 0x1f,0x42,0xc8,0x34,0xcd,0xed,0x94,0x52,0x1a,0x89,0x44,0x60,0x9a,0x26,0x2c,0xcb, + 0x6a,0x6b,0x10,0xae,0xd7,0xf5,0xa5,0xee,0xbb,0xbf,0x1b,0x86,0x81,0x48,0x24,0x2, + 0x0,0xd4,0x34,0xcd,0xed,0x0,0xc6,0x3d,0xf6,0x84,0x11,0x97,0x52,0x42,0x55,0xd5, + 0x5,0xaa,0xd7,0x42,0x6a,0x23,0x9e,0x17,0x42,0x34,0xaa,0x3c,0xc6,0x58,0xbc,0x21, + 0xc0,0x2e,0xc0,0xe1,0xf7,0xfb,0x97,0x2c,0x4c,0x5a,0xb5,0xd8,0x46,0x7b,0x88,0x73, + 0x8e,0x40,0x20,0x0,0x37,0x67,0x27,0xb,0xc5,0x0,0x20,0x10,0x8,0xa0,0x56,0xab, + 0x35,0xca,0xc2,0x8d,0x26,0xd5,0x6e,0x98,0x9a,0xa6,0xd9,0xf0,0x80,0xc3,0xd9,0xb3, + 0x78,0x29,0xeb,0x28,0xfd,0x5f,0x21,0xbd,0x52,0x3b,0x47,0xc0,0x94,0x33,0x79,0x11, + 0x42,0x9a,0x3e,0xf8,0x7d,0x8d,0x8d,0xa5,0xda,0x51,0x4a,0x51,0xad,0x56,0xe1,0xe6, + 0xec,0xb1,0x2d,0x3f,0x25,0xa5,0x84,0xa6,0x69,0xd8,0xbc,0x79,0xf3,0x82,0x9d,0x85, + 0xd5,0x92,0xdd,0x88,0x2c,0x46,0x29,0xc5,0xfb,0xf7,0xef,0x9d,0x68,0xf9,0x4e,0x0, + 0xe7,0xbc,0x40,0x29,0x85,0xa6,0x69,0x8,0x87,0xc3,0x4b,0x86,0xd0,0xf,0x69,0x79, + 0xe7,0x3a,0x63,0xc,0x95,0x4a,0xc5,0x9,0xf3,0x42,0x43,0x80,0xa2,0x28,0x93,0x9c, + 0x73,0x31,0x3b,0x3b,0x4b,0x77,0xec,0xd8,0xd1,0xd8,0x71,0x68,0xf7,0x65,0xab,0x25, + 0xd9,0xca,0x73,0x8c,0x31,0x78,0xbd,0x5e,0xbc,0x7b,0xf7,0xe,0x0,0x84,0xa2,0x28, + 0x93,0x8d,0x99,0xd8,0xde,0xab,0xbc,0x97,0xcf,0xe7,0x39,0x0,0x84,0x42,0xa1,0x96, + 0xaa,0xa6,0x56,0xd7,0xfe,0xcd,0x66,0xe6,0x56,0x9f,0x73,0x36,0xce,0x5e,0xbf,0x7e, + 0xcd,0x1,0xdc,0x73,0xf6,0x57,0xdd,0x59,0xe8,0xda,0xd4,0xd4,0xd4,0x60,0xa5,0x52, + 0x81,0xaa,0xaa,0x28,0x97,0xcb,0xab,0xce,0xf3,0x1b,0x11,0x6e,0x1d,0x1d,0x1d,0xa8, + 0x54,0x2a,0x28,0x16,0x8b,0xcc,0xde,0x57,0xfd,0xa8,0xa0,0xb9,0x6e,0x2b,0x6c,0xe4, + 0xda,0xc5,0x55,0xd3,0x6a,0x16,0x66,0xcb,0x55,0x5f,0x8b,0xaf,0x37,0xab,0xd2,0x9c, + 0xa8,0x98,0x98,0x98,0x58,0xc0,0x75,0x81,0x0,0x7b,0x97,0xf8,0xf1,0xd3,0xa7,0x4f, + 0x39,0x0,0x44,0xa3,0xd1,0xb6,0x5f,0xe6,0x5c,0xb3,0x2c,0x6b,0xcd,0xa4,0xdd,0xe8, + 0xec,0xec,0x4,0x21,0x4,0x63,0x63,0x63,0x5c,0x4a,0x99,0x1d,0x19,0x19,0x99,0xfe, + 0x48,0x0,0x21,0xc4,0xab,0xeb,0xfa,0xa5,0x62,0xb1,0xc8,0xf2,0xf9,0x3c,0xa2,0xd1, + 0x28,0x18,0x63,0x2d,0x2f,0x7d,0xd7,0xea,0xa9,0xe5,0xc0,0x18,0x43,0x67,0x67,0x27, + 0xf2,0xf9,0x3c,0x4a,0xa5,0x12,0xab,0x56,0xab,0x7f,0x1,0x10,0x20,0x84,0x28,0xd, + 0x1,0x84,0x10,0xa,0xc0,0xfb,0xe0,0xc1,0x83,0xc,0xe7,0xfc,0xdb,0xfb,0xf7,0xef, + 0xb,0x29,0x25,0xba,0xba,0xba,0xda,0xb2,0x60,0xbb,0x9e,0x6a,0xa5,0x3e,0xee,0xe9, + 0xe9,0x81,0x94,0x12,0xa3,0xa3,0xa3,0x82,0x73,0xfe,0xe4,0xd1,0xa3,0x47,0xdf,0x0, + 0xf0,0x1,0xf0,0x11,0x9b,0x38,0x0,0x28,0xe,0xca,0xe5,0xf2,0x17,0x73,0x73,0x73, + 0x34,0x97,0xcb,0x21,0x1a,0x8d,0x62,0xd3,0xa6,0x4d,0x2d,0x67,0x8f,0xa5,0xd6,0xf1, + 0x2b,0x15,0x3b,0xcd,0x10,0xe,0x87,0xd1,0xd9,0xd9,0x89,0x5c,0x2e,0x87,0xf9,0xf9, + 0x79,0x5a,0x2a,0x95,0xbe,0x74,0x73,0x5,0xe0,0xa1,0xae,0x50,0x62,0x0,0x58,0x2e, + 0x97,0x7b,0x62,0x9a,0xe6,0xc8,0xbd,0x7b,0xf7,0x44,0xb1,0x58,0x44,0x5f,0x5f,0x1f, + 0xbc,0x5e,0xef,0x86,0xc4,0x76,0x33,0xf8,0xfd,0x7e,0xec,0xd8,0xb1,0x3,0xc5,0x62, + 0x11,0xf,0x1f,0x3e,0x94,0x86,0x61,0xdc,0x7d,0xfe,0xfc,0x79,0xce,0xe1,0xe9,0xc0, + 0x11,0x40,0x6c,0x0,0x0,0xc9,0x66,0xb3,0x7f,0xb4,0x2c,0xab,0x70,0xe3,0xc6,0xd, + 0x51,0xad,0x56,0x91,0x4c,0x26,0x1b,0x5b,0xe0,0x1b,0x49,0xda,0x81,0xc7,0xe3,0x41, + 0x32,0x99,0x44,0xad,0x56,0xc3,0xf0,0xf0,0xb0,0xb0,0x2c,0x6b,0xea,0xc9,0x93,0x27, + 0x5f,0x2c,0xe6,0xe9,0x1e,0xc4,0xc2,0x8d,0xb9,0xb9,0xb9,0xf9,0x97,0x2f,0x5f,0xfe, + 0x46,0xd3,0xb4,0xfa,0xf0,0xf0,0xb0,0xa0,0x94,0x62,0xef,0xde,0xbd,0xf0,0xfb,0xfd, + 0x6d,0x4d,0x62,0xab,0x41,0x20,0x10,0xc0,0xbe,0x7d,0xfb,0xc0,0x18,0xc3,0xcd,0x9b, + 0x37,0x85,0xa6,0x69,0xfa,0xf8,0xf8,0xf8,0xc5,0xf7,0x1f,0x16,0x41,0x62,0x11,0xb8, + 0x23,0x80,0x3,0xb0,0x5c,0x30,0xdf,0xbe,0x7d,0x3b,0x51,0x28,0x14,0x7e,0x57,0x2a, + 0x95,0x70,0xf5,0xea,0x55,0x61,0x59,0x16,0x6,0x6,0x6,0x10,0xe,0x87,0x57,0x1d, + 0xd3,0x2b,0x21,0x12,0x89,0x60,0x60,0x60,0x0,0x9c,0x73,0x5c,0xbb,0x76,0x4d,0x94, + 0x4a,0x25,0xbc,0x79,0xf3,0xe6,0xf3,0xe9,0xe9,0xe9,0x9,0x87,0xd7,0x22,0x9e,0x16, + 0x71,0x9d,0x63,0x5,0x0,0x4,0x6d,0x84,0x0,0x4,0x0,0x4,0xfb,0xfb,0xfb,0x8f, + 0xf5,0xf6,0xf6,0x5e,0xc,0x85,0x42,0xfe,0xb3,0x67,0xcf,0xd2,0xee,0xee,0x6e,0x4c, + 0x4f,0x4f,0x63,0x62,0x62,0x2,0x86,0x61,0xac,0xcb,0x19,0x81,0xd7,0xeb,0x45,0x5f, + 0x5f,0x1f,0x7a,0x7a,0x7a,0x50,0x2c,0x16,0x31,0x3c,0x3c,0x2c,0x34,0x4d,0xd3,0x27, + 0x27,0x27,0xff,0x94,0xcf,0xe7,0x47,0x1,0x54,0x6d,0xd4,0x0,0x68,0xf6,0xf7,0x79, + 0x29,0xa5,0xe9,0x16,0x40,0x5c,0x2,0x82,0x8e,0x0,0x0,0x81,0x58,0x2c,0x96,0xd8, + 0xbd,0x7b,0xf7,0xe7,0x1e,0x8f,0x27,0x76,0xf4,0xe8,0x51,0x32,0x30,0x30,0x0,0x0, + 0x78,0xf3,0xe6,0xd,0x26,0x27,0x27,0x9b,0x6e,0xfe,0x36,0x3d,0xa4,0xf6,0x78,0xb0, + 0x7d,0xfb,0x76,0x6c,0xdb,0xb6,0xd,0x0,0x90,0xcb,0xe5,0xf0,0xf0,0xe1,0x43,0x69, + 0x9a,0xe6,0xf4,0xf8,0xf8,0xf8,0xef,0x8b,0xc5,0xe2,0x2b,0x9b,0x74,0xcd,0x25,0xa0, + 0xa,0x60,0x1e,0x80,0x2e,0xa5,0x5c,0xb8,0x3b,0xed,0x12,0x11,0x58,0x8c,0x8e,0x8e, + 0x8e,0x68,0x2a,0x95,0xfa,0xad,0xcf,0xe7,0x3b,0xb6,0x69,0xd3,0x26,0x71,0xe4,0xc8, + 0x11,0x9a,0x48,0x24,0x20,0xa5,0x44,0xb9,0x5c,0xc6,0xcc,0xcc,0xc,0x66,0x66,0x66, + 0x56,0xf4,0x8a,0xd7,0xeb,0xc5,0xd6,0xad,0x5b,0xb1,0x75,0xeb,0x56,0x44,0x22,0x11, + 0x10,0x42,0x90,0xcf,0xe7,0x31,0x3a,0x3a,0x2a,0xe6,0xe7,0xe7,0x69,0xbd,0x5e,0x1f, + 0xcd,0x66,0xb3,0x7f,0xae,0x54,0x2a,0xb3,0x0,0xea,0x2e,0x1,0xe,0xe6,0x1,0x18, + 0xd,0xc3,0x2f,0xb5,0x70,0x22,0x84,0xf8,0x5c,0xe4,0xfd,0x6e,0x24,0x12,0x89,0x9f, + 0xc4,0x62,0xb1,0x5f,0x29,0x8a,0xb2,0xa7,0xab,0xab,0x4b,0xec,0xdb,0xb7,0x8f,0xf6, + 0xf5,0xf5,0x41,0x55,0x55,0x48,0x29,0x51,0xad,0x56,0xa1,0xeb,0x3a,0xc,0xc3,0x80, + 0xae,0xeb,0x0,0x0,0x9f,0xcf,0x7,0xaf,0xd7,0xb,0x9f,0xcf,0x87,0x60,0x30,0x8, + 0x42,0x8,0x2a,0x95,0xa,0x26,0x26,0x26,0x30,0x36,0x36,0x26,0x4a,0xa5,0x12,0x35, + 0xc,0xe3,0xdf,0x85,0x42,0xe1,0xaf,0xaf,0x5f,0xbf,0xfe,0x17,0x0,0xdd,0x26,0xef, + 0x46,0x5,0x80,0x26,0xa5,0x14,0x2d,0x1d,0x31,0xd9,0xde,0xf0,0xdb,0x22,0x7c,0xf6, + 0x77,0x1f,0x0,0x2f,0x0,0xdf,0xfe,0xfd,0xfb,0x4f,0x46,0xa3,0xd1,0x5f,0x30,0xc6, + 0x92,0x0,0xd0,0xd5,0xd5,0x25,0x76,0xed,0xda,0x45,0xb7,0x6c,0xd9,0xd2,0x38,0xe4, + 0x76,0x76,0x10,0x6a,0xb5,0x5a,0xe3,0xb0,0xfb,0xdd,0xbb,0x77,0x78,0xf5,0xea,0x95, + 0x28,0x95,0x4a,0x14,0x0,0x2c,0xcb,0xca,0xcf,0xce,0xce,0xfe,0xed,0xd9,0xb3,0x67, + 0x5f,0x3,0x30,0x6c,0xf2,0x86,0x4b,0x44,0xcd,0x26,0x6f,0x2d,0x69,0xec,0x95,0xb6, + 0x4c,0xec,0x42,0xdf,0x63,0xb,0x8,0xda,0x2,0xbc,0xce,0x6c,0xd8,0xdb,0xdb,0xfb, + 0xa3,0x58,0x2c,0x76,0x32,0x10,0x8,0xfc,0x4c,0x51,0x94,0x3,0xad,0xfc,0xd4,0xc0, + 0x34,0xcd,0x6c,0xad,0x56,0xfb,0xa6,0x50,0x28,0x7c,0x5d,0x28,0x14,0x26,0xed,0xec, + 0xe2,0xc0,0xb0,0xe3,0x5c,0x3,0x60,0x2e,0xb6,0xf8,0x9a,0x4e,0xea,0x5d,0x62,0x1c, + 0x8f,0x28,0xf6,0xff,0x1e,0x0,0x2c,0x1c,0xe,0xab,0x91,0x48,0xa4,0x57,0x55,0xd5, + 0x6e,0x8f,0xc7,0xd3,0xe5,0xf1,0x78,0x3a,0x1,0x10,0xcb,0xb2,0x4a,0xa6,0x69,0xce, + 0x68,0x9a,0x36,0x3d,0x3b,0x3b,0x5b,0x98,0x9b,0x9b,0xd3,0xec,0xd4,0xed,0x4e,0xdf, + 0x55,0xdb,0xe2,0xa6,0x6c,0x83,0xd4,0x9a,0x7e,0xec,0x61,0x87,0x19,0xb1,0xad,0x4e, + 0x17,0x4f,0xf3,0x36,0x9c,0x89,0x92,0xbb,0x20,0x5c,0x7f,0xc5,0x87,0x1a,0x66,0x75, + 0x3c,0xfe,0xb,0xd3,0x92,0x8,0x1,0x5f,0x2d,0xd9,0x20,0x0,0x0,0x0,0x0,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/close.png + 0x0,0x0,0xa,0xd4, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xaf,0xc8,0x37,0x5,0x8a,0xe9, + 0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65, + 0x0,0x41,0x64,0x6f,0x62,0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64, + 0x79,0x71,0xc9,0x65,0x3c,0x0,0x0,0xa,0x66,0x49,0x44,0x41,0x54,0x68,0x43,0xc5, + 0x9a,0x57,0x6c,0x54,0xdd,0x15,0x85,0xf1,0xff,0x12,0xf1,0x2,0x8,0x8,0xbd,0x98, + 0xde,0xc1,0x14,0x29,0x34,0x1,0xf,0x1,0x21,0xd1,0x11,0x10,0x8a,0xe8,0xbd,0x83, + 0x90,0xe8,0xa,0x4f,0xd4,0x44,0xf4,0x22,0x64,0x1e,0x90,0x10,0x1,0x21,0xc0,0xf0, + 0x92,0x20,0x44,0x15,0xbd,0x1a,0x4c,0xef,0xdd,0x54,0x53,0x4c,0x31,0x60,0xe0,0xe4, + 0x7c,0x5b,0x5e,0xce,0x61,0x98,0x71,0x8c,0xff,0x4,0x8f,0xb4,0x75,0xef,0x1d,0xdf, + 0xb9,0xb3,0xd6,0x3a,0xeb,0xec,0xbd,0xcf,0x19,0xc7,0x15,0xf8,0xcf,0xeb,0xb7,0x6, + 0xd,0x1a,0x54,0xf0,0x97,0xed,0xbe,0x7d,0xfb,0xd6,0x2d,0x2e,0x2e,0xae,0xc9,0x6f, + 0xfe,0xe5,0x9c,0xb,0x6e,0xf9,0xf5,0xa7,0x1e,0x47,0x1,0x8f,0x27,0xc3,0x1f,0xf, + 0x7b,0x2c,0x49,0x5,0xb,0x16,0x3c,0x70,0xe2,0xc4,0x89,0x67,0x1e,0xc9,0xf7,0xc0, + 0xea,0xd5,0xab,0xf7,0xe7,0xfa,0xf5,0xeb,0x27,0x79,0x12,0xa9,0xfe,0xf8,0x35,0x21, + 0x21,0xc1,0x11,0xfe,0x3a,0x5f,0x23,0xc0,0xf1,0xc9,0x9f,0xdf,0xf7,0x78,0xfe,0xe1, + 0xf1,0xfd,0x29,0x94,0x32,0xce,0x83,0xef,0xec,0xdf,0xdc,0xe7,0x6f,0xf8,0xda,0xa8, + 0x51,0x23,0x3,0x5c,0xb3,0x66,0x4d,0x57,0xa5,0x4a,0x15,0x57,0xa9,0x52,0xa5,0x7c, + 0x8d,0xaa,0x55,0xab,0xba,0xda,0xb5,0x6b,0x9b,0x98,0x59,0xd8,0x32,0x3d,0xde,0x4d, + 0x3e,0x1a,0x19,0x9,0xf,0x36,0xde,0x83,0xff,0x67,0xc3,0x86,0xd,0x1d,0x51,0xbd, + 0x7a,0x75,0x57,0xab,0x56,0x2d,0xd7,0xbb,0x77,0x6f,0x37,0x7f,0xfe,0x7c,0xb7,0x7a, + 0xf5,0xea,0x5f,0x1e,0xab,0x56,0xad,0x72,0x8a,0x39,0x73,0xe6,0xb8,0x4e,0x9d,0x3a, + 0xb9,0x6a,0xd5,0xaa,0x19,0x91,0x2c,0x9c,0xef,0x3c,0xee,0xa5,0x3e,0x8a,0x40,0x60, + 0xa4,0x8f,0x34,0xd8,0x1,0xbc,0x59,0xb3,0x66,0x6e,0xca,0x94,0x29,0x6e,0xff,0xfe, + 0xfd,0xee,0xf3,0xe7,0xcf,0xde,0x76,0xf9,0xfb,0x7a,0xf9,0xf2,0xa5,0xdb,0xb6,0x6d, + 0x9b,0x1b,0x3a,0x74,0x68,0xb6,0x33,0x1a,0x37,0x6e,0xcc,0xf9,0x35,0x2f,0x7c,0x27, + 0x8,0xfc,0xcb,0x47,0xa6,0xbf,0x70,0xc4,0xac,0x59,0xb3,0xdc,0xb3,0x67,0xcf,0xf2, + 0x15,0xf5,0xd7,0xaf,0x5f,0xdd,0x97,0x2f,0x5f,0x2c,0x38,0x27,0x2e,0x5c,0xb8,0xe0, + 0xfa,0xf6,0xed,0x6b,0xd6,0xc6,0xe2,0x1e,0xeb,0x7b,0x7f,0x4c,0x84,0xc0,0x73,0xfc, + 0xc5,0x1f,0xfa,0xf4,0xe9,0xe3,0xe,0x1c,0x38,0xf0,0x1d,0x78,0x9f,0x1,0xdc,0xaf, + 0x8,0x81,0xce,0xcc,0xcc,0xb4,0x91,0xff,0xf4,0xe9,0x93,0xfb,0xf8,0xf1,0xa3,0x5, + 0x7f,0x4b,0x4f,0x4f,0x77,0x1b,0x37,0x6e,0x74,0xed,0xdb,0xb7,0x77,0x35,0x6a,0xd4, + 0xd0,0x7c,0x38,0x3,0x81,0xd7,0x10,0x60,0xc2,0xce,0x9b,0x37,0xcf,0x65,0x64,0x64, + 0x18,0x81,0x5f,0x1,0x9a,0xef,0x90,0xc2,0xa8,0xd,0x78,0x1,0x7,0xc7,0x87,0xf, + 0x1f,0xdc,0xfb,0xf7,0xef,0x2d,0x20,0x72,0xff,0xfe,0x7d,0x37,0x62,0xc4,0x8,0x4b, + 0x2a,0x59,0x13,0x3a,0x5,0x2,0x69,0xc,0x9,0x6f,0xae,0x59,0xb3,0x26,0x5b,0xfd, + 0xff,0x37,0x81,0x48,0xe0,0x52,0x1e,0xa0,0x21,0xf8,0x77,0xef,0xde,0x99,0xfa,0x7a, + 0x6f,0xf2,0xe4,0xc9,0xae,0x62,0xc5,0x8a,0x46,0xc0,0xdb,0x28,0x39,0x4f,0x4,0x42, + 0x8f,0xe5,0x85,0xa8,0xec,0xc2,0x51,0x9f,0x87,0x80,0xc0,0xa3,0x38,0xc0,0x5,0xfe, + 0xcd,0x9b,0x37,0x36,0xa,0x5c,0x4f,0x9a,0x34,0x29,0x36,0x1,0x52,0xa6,0x5e,0xd1, + 0x80,0x85,0xc0,0x65,0xb5,0x9c,0xee,0x8f,0x45,0xe,0xe0,0x7a,0x1,0xfa,0xed,0xdb, + 0xb7,0x66,0x1f,0xee,0xc7,0x36,0x5c,0x13,0x28,0xf,0xf8,0xd7,0xaf,0x5f,0x1b,0x78, + 0xce,0x27,0x4e,0x9c,0x98,0x77,0x2,0x7c,0xf1,0xe3,0xc7,0x8f,0xdd,0xee,0xdd,0xbb, + 0xdd,0x86,0xd,0x1b,0xdc,0xbe,0x7d,0xfb,0xdc,0x8b,0x17,0x2f,0x72,0x6d,0x3b,0xd9, + 0x86,0xf,0xe0,0xf5,0x4b,0x97,0x2e,0x59,0x8a,0x5c,0xbf,0x7e,0xbd,0xa5,0x6d,0x9e, + 0x1d,0x2a,0xf,0x70,0xe2,0xd5,0xab,0x57,0x46,0x86,0xf3,0x9,0x13,0x26,0xe4,0x8d, + 0x0,0x5f,0x9a,0x9a,0x9a,0xea,0x66,0xcf,0x9e,0xed,0x9a,0x34,0x69,0xe2,0xa8,0x90, + 0x1c,0x29,0x76,0x7c,0x41,0x4e,0x23,0x21,0xe0,0x52,0x1e,0xf0,0x47,0x8e,0x1c,0x71, + 0xfd,0xfb,0xf7,0x77,0x75,0xea,0xd4,0xb1,0x4,0xd2,0xa6,0x4d,0x1b,0x9b,0x83,0x8, + 0xc2,0xe8,0xa,0x38,0x75,0x20,0x2d,0x2d,0xcd,0xae,0x39,0xcf,0x13,0x1,0xc0,0xf1, + 0xe5,0x28,0xf,0xe8,0x62,0xc5,0x8a,0xb9,0x52,0xa5,0x4a,0x59,0x90,0xc1,0xe6,0xce, + 0x9d,0x6b,0xf,0x8f,0x46,0x22,0x4c,0x8f,0xfc,0x1d,0xab,0x1c,0x3c,0x78,0xd0,0x75, + 0xef,0xde,0xdd,0xc5,0xc7,0xc7,0x67,0x3f,0xa7,0x68,0xd1,0xa2,0xf6,0xde,0x83,0x7, + 0xf,0x6c,0x74,0x4,0x1c,0x42,0xcf,0x9f,0x3f,0x37,0x91,0x20,0x32,0x7e,0xfc,0x78, + 0xfb,0x5c,0xd4,0x49,0x1c,0x6b,0xe,0xf0,0xc5,0x78,0x15,0xdb,0xa0,0x3c,0xc0,0x51, + 0x8d,0x7,0x95,0x29,0x53,0xc6,0x48,0x90,0x82,0x23,0xed,0x14,0x16,0x24,0xcd,0x7, + 0xea,0xc,0x40,0xcb,0x97,0x2f,0xef,0xca,0x96,0x2d,0xeb,0x2a,0x57,0xae,0x6c,0xcf, + 0x2a,0x54,0xa8,0x90,0x6b,0xdd,0xba,0xb5,0xbb,0x7b,0xf7,0xae,0x11,0x0,0xac,0xc0, + 0x53,0x58,0x21,0xc4,0x75,0x9e,0x8,0xf0,0xe5,0x14,0x17,0x7c,0xca,0x8,0x94,0x2c, + 0x59,0xd2,0xc0,0xf3,0xe5,0x1c,0x1,0xe2,0x9b,0x2b,0xb7,0x70,0xe1,0x42,0xf7,0xf4, + 0xe9,0xd3,0xec,0x3a,0xa2,0xdc,0x1e,0x82,0xef,0xd1,0xa3,0x87,0x2b,0x5d,0xba,0xb4, + 0xab,0x50,0xa1,0x82,0x7d,0x9e,0x28,0x57,0xae,0x9c,0xbd,0x37,0x68,0xd0,0x20,0x1b, + 0x1,0x26,0x32,0xaa,0x13,0x3c,0xef,0xc9,0x93,0x27,0x6,0x1e,0x22,0x79,0x26,0x0, + 0x2a,0x54,0xc1,0xf3,0x28,0x8e,0xf2,0x21,0x9,0x14,0xc5,0xcf,0x8b,0x16,0x2d,0xb2, + 0xc9,0xc8,0xb,0x2,0x22,0x8f,0xf2,0x80,0x67,0xf4,0xf4,0x39,0xc0,0xf3,0x39,0xc8, + 0x30,0x2a,0x49,0x49,0x49,0x6,0x18,0xbb,0x0,0x56,0xe0,0x79,0x1e,0xd7,0x10,0x19, + 0x37,0x6e,0xdc,0xcf,0x5b,0x8,0x10,0x7a,0xf1,0x70,0x3c,0xf,0x9,0x94,0xa7,0x0, + 0x2,0x84,0x23,0x40,0x20,0x81,0x9d,0xd4,0x4f,0x61,0x7,0xd9,0x6,0x95,0x5,0x5e, + 0xf7,0x73,0xdd,0xad,0x5b,0x37,0xb7,0x63,0xc7,0xe,0x4b,0x93,0x88,0x4,0x70,0x2, + 0xe0,0x4,0xc9,0x43,0xd7,0x63,0xc7,0x8e,0xcd,0x1b,0x81,0x68,0x24,0x68,0xfe,0x50, + 0x30,0x24,0xc1,0x35,0x76,0x5a,0xb0,0x60,0x81,0x29,0x46,0xb6,0x91,0xe7,0x65,0x9b, + 0x10,0x7c,0x97,0x2e,0x5d,0xc,0xbc,0xb2,0x8e,0x94,0x16,0xf0,0x47,0x8f,0x1e,0xb9, + 0x87,0xf,0x1f,0x1a,0x11,0xce,0xc7,0x8c,0x19,0x93,0x77,0x2,0x21,0x9,0x3c,0x9, + 0x48,0x14,0x7,0x58,0x48,0x82,0x91,0x69,0xd1,0xa2,0x85,0xf5,0x2d,0x1d,0x3b,0x76, + 0xb4,0x89,0x8f,0xcf,0xe5,0x79,0xdd,0xdf,0xb9,0x73,0x67,0x3,0xcf,0xa8,0x42,0x40, + 0x96,0x41,0x71,0x1,0x67,0x4e,0xd0,0x3,0xe9,0xfa,0x77,0x13,0x8,0x49,0xa0,0xb0, + 0x48,0xa0,0x7c,0x38,0x27,0xb4,0x92,0x3,0x38,0xbd,0x8b,0xc0,0x73,0x1f,0xd7,0x28, + 0xbf,0x73,0xe7,0x4e,0xcb,0x2e,0x14,0x29,0x9e,0x45,0x48,0x69,0x54,0x17,0xf8,0x7b, + 0xf7,0xee,0xd9,0x28,0x40,0xe4,0x7f,0x42,0x40,0x59,0x85,0x79,0xc1,0x17,0x32,0x27, + 0xb0,0xd,0xca,0x87,0x1e,0x7,0xa8,0x46,0x46,0xd9,0x6,0xf5,0xbb,0x76,0xed,0x6a, + 0x13,0x36,0x4,0x1f,0x5a,0x46,0xc0,0x1,0x4c,0x5a,0xbd,0x73,0xe7,0x8e,0x81,0xe7, + 0xfc,0x77,0x13,0x8,0xb,0x13,0x45,0x89,0x17,0xca,0x91,0x9d,0xb0,0x8d,0x94,0x97, + 0xe2,0x3a,0x42,0x4c,0x6b,0xe,0x6c,0x3,0x78,0xac,0xa3,0x89,0x1a,0x69,0x19,0x54, + 0x17,0xf8,0xdb,0xb7,0x6f,0x3b,0xae,0x21,0x32,0x7a,0xf4,0xe8,0xec,0x76,0xfa,0x87, + 0x6e,0xf4,0xbf,0x35,0x73,0xd1,0x16,0x1d,0x5a,0x76,0x2,0x60,0xf8,0xf0,0xe1,0x66, + 0x95,0xd0,0x32,0xca,0x50,0x58,0xa7,0x79,0xf3,0xe6,0x6e,0xdd,0xba,0x75,0xd6,0xef, + 0x40,0x20,0x27,0xcb,0x84,0xe0,0x6f,0xdd,0xba,0x65,0x64,0x20,0x32,0x6a,0xd4,0xa8, + 0xbc,0x11,0x88,0xb5,0x62,0x22,0xd7,0x53,0x78,0xe,0x1d,0x3a,0x64,0x13,0x16,0xcf, + 0x87,0xb6,0xd1,0x8,0x40,0x8a,0x45,0x39,0x4b,0x56,0x80,0x90,0x4,0x20,0x0,0x71, + 0x2c,0x23,0xdb,0x84,0xc0,0xb9,0xef,0xe6,0xcd,0x9b,0xee,0xc6,0x8d,0x1b,0xf6,0x19, + 0xce,0x47,0x8e,0x1c,0x99,0x7b,0x2,0x61,0x13,0x16,0xb9,0xd4,0xa3,0xe1,0x42,0x7d, + 0xc0,0xd3,0x95,0x92,0x2a,0xc9,0x36,0xa1,0xfa,0x91,0x44,0xb0,0x11,0xb,0x72,0x1a, + 0xc2,0x6b,0xd7,0xae,0x59,0xa5,0x85,0x0,0xf6,0x8,0x2d,0x83,0xe2,0x80,0x25,0xae, + 0x5f,0xbf,0x6e,0xf7,0xea,0x3c,0xd7,0x4,0xc2,0x3e,0x6,0x95,0xc3,0x75,0x2a,0xe0, + 0x29,0x50,0xbc,0xb7,0x67,0xcf,0x1e,0x2b,0x44,0x58,0x24,0x4c,0x95,0x80,0x55,0xc6, + 0x9,0xe7,0x1,0x15,0x9c,0x15,0xe0,0xcc,0x99,0x33,0xdd,0xc5,0x8b,0x17,0x8d,0x44, + 0xa4,0xdf,0xa5,0x3a,0xca,0x3,0xfe,0xea,0xd5,0xab,0x36,0xa,0x9c,0xff,0x34,0x1, + 0x1,0xd7,0x5a,0x15,0xc5,0x69,0xec,0xb8,0xde,0xbb,0x77,0xaf,0xb5,0x7,0xd1,0x7a, + 0x1b,0x16,0xde,0x6c,0xd1,0x60,0x1b,0xc8,0x44,0xf6,0x4e,0x75,0xeb,0xd6,0x35,0x3b, + 0x9d,0x3f,0x7f,0xde,0xaa,0x36,0x13,0x54,0xca,0x4b,0x75,0x80,0x13,0x57,0xae,0x5c, + 0xb1,0x91,0xe0,0x98,0x6b,0x2,0xd1,0x2c,0x23,0xe5,0x59,0xde,0xa1,0x7c,0x4e,0xbd, + 0xd,0x3b,0x1c,0x89,0x89,0x89,0xa6,0x34,0xad,0x6f,0x64,0xef,0x44,0x3a,0x85,0x1c, + 0x7f,0x3f,0x7b,0xf6,0xac,0xb5,0xb,0x10,0x8,0xc1,0x3,0xf8,0xf2,0xe5,0xcb,0xb6, + 0xf0,0x81,0x8,0xc7,0x70,0x51,0xff,0x43,0x16,0x62,0x37,0x8c,0x97,0x1a,0xb0,0xc8, + 0x1d,0x2,0x94,0xa7,0xe8,0xa0,0x3c,0xb6,0x9,0x41,0x45,0xb6,0x7,0xdb,0xb7,0x6f, + 0xb7,0x7b,0x1,0x5,0x48,0xda,0x8e,0x70,0x82,0x73,0xbf,0x26,0xf6,0xf4,0xe9,0xd3, + 0xdd,0x99,0x33,0x67,0x6c,0x14,0xa4,0x74,0x8,0x1e,0xab,0x41,0x84,0xa3,0x32,0x5d, + 0xd4,0xf5,0xc0,0xca,0x95,0x2b,0xb3,0xbb,0x48,0xc0,0x87,0xbb,0x3,0x9c,0xd3,0x6c, + 0xd1,0x98,0xc9,0xf3,0xd1,0x7a,0x1b,0xda,0x83,0xad,0x5b,0xb7,0x9a,0xb7,0xd5,0x2, + 0xf3,0xe5,0x33,0x66,0xcc,0x70,0xd8,0x26,0xb2,0x77,0x52,0x3,0x38,0x75,0xea,0x54, + 0x77,0xfa,0xf4,0x69,0xf3,0x39,0xe0,0x51,0x1b,0xc0,0x6c,0x68,0xa5,0xa4,0xa4,0xd8, + 0x35,0xc7,0x61,0xc3,0x86,0x59,0xaa,0x8e,0x4a,0x60,0xc5,0x8a,0x15,0x46,0x0,0xdf, + 0x3,0x58,0x3b,0x1,0x1c,0x79,0x2f,0x39,0x39,0xd9,0xf5,0xeb,0xd7,0xcf,0xfc,0x1c, + 0xab,0xb7,0x41,0x79,0x3c,0xd,0x78,0xca,0x3f,0x59,0x86,0x74,0xc9,0x97,0x33,0x12, + 0xd8,0x26,0xac,0xd0,0x8c,0x84,0xd6,0x13,0x90,0x38,0x77,0xee,0x9c,0x4d,0x58,0x80, + 0x13,0xcc,0x11,0xde,0xd3,0x79,0xae,0x8,0xa0,0x3e,0x93,0x95,0x82,0xc3,0xee,0x0, + 0xe7,0x34,0x5b,0x9b,0x36,0x6d,0x32,0x0,0xf4,0xf4,0xd1,0x7a,0x1b,0x81,0xa7,0x48, + 0x85,0x7d,0xc,0x6d,0x0,0x8d,0x1a,0x2,0x40,0x82,0x3d,0x58,0x94,0xf,0x27,0x76, + 0xf1,0xe2,0xc5,0x5d,0xdb,0xb6,0x6d,0xdd,0xf1,0xe3,0xc7,0x2d,0x65,0x42,0x98,0x0, + 0x3c,0x9f,0xd3,0x79,0xae,0x8,0xa0,0xbe,0xc0,0xe3,0x63,0x46,0x0,0x55,0x99,0x94, + 0x2c,0xff,0xb4,0xa4,0x64,0x14,0x0,0x42,0x63,0x86,0x6d,0x0,0x49,0x3f,0x1f,0x82, + 0xf,0xb,0x13,0x23,0x81,0x4d,0xa6,0x4d,0x9b,0x66,0x76,0x52,0xef,0xc4,0x33,0x8b, + 0x14,0x29,0x62,0x95,0x9a,0xf6,0x9b,0x11,0x10,0x70,0xc0,0x33,0xc9,0xb9,0xe6,0x18, + 0x95,0x0,0x8b,0x13,0x86,0x72,0xf9,0xf2,0xe5,0x66,0x21,0x0,0x87,0x7b,0x32,0x9c, + 0x13,0xbb,0x76,0xed,0xb2,0x75,0x2b,0xb,0xf0,0xc2,0x85,0xb,0xdb,0x24,0xa6,0x31, + 0x3,0x3c,0x4,0x9,0xc0,0xe7,0x54,0x98,0x18,0x8d,0x53,0xa7,0x4e,0x39,0xec,0xc2, + 0x56,0x79,0x89,0x12,0x25,0xc,0x3c,0xcf,0x62,0x97,0xc2,0xff,0xfa,0x62,0x19,0x47, + 0xc0,0x99,0xdc,0x90,0xe6,0x9a,0x23,0xbb,0xd4,0x3f,0xcc,0x1,0x8,0xf0,0xe6,0xb2, + 0x65,0xcb,0x8c,0x80,0x36,0x91,0xb4,0xc8,0xa0,0xe9,0xe2,0x3d,0xca,0x39,0xf7,0x0, + 0xba,0x55,0xab,0x56,0xf6,0x85,0x5b,0xb6,0x6c,0xb1,0x9,0x4b,0x53,0x16,0xb6,0x3, + 0xa1,0xf2,0x2a,0x4c,0x4a,0x91,0x64,0x26,0xc0,0x50,0x91,0xd9,0xac,0x6d,0xda,0xb4, + 0xa9,0x1b,0x30,0x60,0x80,0xdb,0xbc,0x79,0xb3,0xa9,0x8c,0xef,0x39,0x12,0xdc,0x7, + 0x61,0xce,0x39,0xe,0x19,0x32,0x24,0x36,0x81,0xa5,0x4b,0x97,0x1a,0x1,0x7c,0xaf, + 0x7d,0x18,0x2c,0xa1,0x1d,0x2,0x29,0xcc,0x10,0xa3,0x12,0x80,0x50,0x54,0xe0,0x55, + 0x51,0xd5,0x78,0x45,0x16,0x26,0x55,0x55,0x15,0x27,0x40,0x1d,0x3b,0x76,0xcc,0xfa, + 0x28,0xbc,0x8f,0xca,0x84,0x54,0x7,0xfc,0xc9,0x93,0x27,0x6d,0x54,0x74,0x9e,0x23, + 0x81,0x25,0x4b,0x96,0x58,0xd,0x20,0x5d,0x86,0xfb,0x32,0xb2,0x7,0x47,0x6d,0x32, + 0x41,0x90,0x73,0xc0,0x43,0x42,0xed,0x2e,0xa3,0x14,0x36,0x61,0xb1,0xa,0x13,0x29, + 0x52,0x22,0x70,0xf,0xa9,0x16,0xe5,0x5,0x1e,0xb5,0x1,0xf,0x31,0x48,0xea,0x7c, + 0xf0,0xe0,0xc1,0x36,0xf,0xbf,0x4b,0xa3,0xb2,0x10,0x4,0xe8,0x81,0x4,0x4e,0xfb, + 0x32,0x4c,0xbe,0x9c,0x96,0x7b,0x52,0x1e,0xe0,0xa8,0x4e,0x30,0x4a,0x91,0xe0,0xc9, + 0xe5,0xca,0xef,0x64,0x15,0xa5,0xc8,0x48,0xbf,0x47,0x82,0x3f,0x7a,0xf4,0xa8,0x8d, + 0x2,0x44,0x72,0x24,0xb0,0x78,0xf1,0x62,0xdb,0xa,0x41,0x7d,0x7c,0xad,0xad,0x8d, + 0x70,0x77,0x40,0xed,0x2f,0xaa,0x87,0x2b,0x26,0x81,0xf,0x3b,0x48,0x59,0x45,0xed, + 0x40,0x58,0x98,0x94,0x65,0xb0,0x51,0xa4,0xea,0x80,0x45,0x79,0x80,0x13,0x64,0x26, + 0xc0,0x73,0x1e,0x8d,0x40,0x3a,0x23,0x40,0x2b,0x4c,0xb5,0x4,0x94,0xf6,0x65,0xb4, + 0xe0,0x88,0xb6,0xc8,0x8e,0xd5,0x41,0x46,0xb3,0x8c,0x80,0x87,0x85,0x29,0x37,0xaa, + 0x3,0xf8,0xf0,0xe1,0xc3,0x46,0x80,0x60,0x19,0xda,0xb3,0x67,0x4f,0xfb,0xc1,0x2f, + 0xcb,0x42,0x17,0xb,0xf8,0x1e,0xe5,0x11,0x4,0x28,0x50,0x1d,0x3a,0x74,0xb0,0x9f, + 0x71,0xb4,0xdc,0x83,0x40,0x4e,0xe0,0xe5,0xf7,0x58,0x96,0x91,0xf2,0x6a,0x7,0xc2, + 0xc2,0x14,0x2a,0x8f,0xbf,0x35,0x59,0xa5,0xb4,0x40,0x43,0x80,0xd1,0xa0,0xff,0xa2, + 0x8,0xb6,0x6c,0xd9,0x32,0xfb,0xd7,0x4a,0xdf,0x96,0x1f,0xe3,0x7,0x8e,0xcd,0x9e, + 0xc4,0x67,0x48,0xf0,0x13,0xeb,0xc0,0x81,0x3,0x6d,0xb8,0xb0,0x8a,0x26,0x6f,0x38, + 0x12,0x91,0xbb,0x5,0x4a,0x97,0xca,0x38,0x78,0x3f,0xec,0xe3,0xc3,0xbe,0x26,0x96, + 0x85,0xc8,0x30,0x4a,0x97,0xe1,0xc4,0x5,0x7,0x4,0xe8,0x7c,0xd7,0xae,0x5d,0x6b, + 0x95,0x9a,0x2a,0xe,0x56,0x8f,0x39,0xdd,0x63,0xff,0x3b,0x23,0xf0,0x17,0x1f,0xa9, + 0xc,0x9,0xa3,0x40,0xd7,0xd8,0xab,0x57,0x2f,0x5b,0xbb,0xa2,0xa0,0x46,0x21,0x16, + 0x70,0x79,0x3f,0x4,0x8d,0xf7,0x63,0xf9,0x5e,0xde,0x8f,0xe5,0x7b,0x40,0x87,0xea, + 0xd3,0x9e,0x60,0x6d,0xc0,0x53,0xbd,0x89,0xac,0xdf,0xc7,0xce,0xfa,0x42,0xd8,0xaa, + 0x80,0x67,0xf3,0x47,0xcf,0x64,0x9d,0x3f,0x66,0xe8,0xb7,0x62,0x58,0xb6,0x6b,0xd7, + 0xce,0x8a,0x6,0x7b,0x91,0x6c,0xe7,0x11,0x6c,0x69,0xb0,0x2b,0xa0,0x60,0x81,0x1d, + 0x6,0x8b,0xd,0xfa,0x75,0x5,0xad,0x6f,0x18,0xb4,0x1,0x4,0xd5,0x94,0xe0,0xf9, + 0xa,0x26,0xa7,0x82,0x4d,0x5e,0x5,0x9e,0xc7,0x36,0xec,0x68,0x0,0x9e,0xea,0xed, + 0xb1,0xbe,0xf0,0x42,0xff,0xd5,0x17,0xc0,0x82,0xfa,0xb5,0x3e,0xc1,0xbf,0xb1,0xc1, + 0xff,0xe1,0x63,0xd6,0x8f,0xc8,0xf6,0x1,0xed,0x3e,0x6b,0x45,0x15,0x1e,0x7f,0xe6, + 0x5f,0x10,0x22,0xb7,0x58,0x72,0xba,0x26,0xc7,0x87,0x11,0xfe,0x42,0x9f,0x85,0x2d, + 0xcd,0xef,0x41,0xfd,0xcd,0xef,0x8,0x56,0xf9,0xee,0x5f,0x4f,0xfc,0x28,0x24,0xf8, + 0x58,0xee,0x23,0xc5,0x93,0xf9,0xc8,0x68,0xf0,0x1,0x8e,0xf9,0x19,0x60,0x40,0x75, + 0x8f,0xeb,0x8d,0x8f,0x53,0x5e,0xe4,0x39,0x7e,0xb9,0x1a,0x1f,0xf5,0xff,0x66,0x7c, + 0x2a,0x2d,0xc4,0xcf,0xf7,0x3e,0x12,0x7d,0x9c,0xf6,0x37,0x27,0xb3,0x6c,0xcb,0xcf, + 0xc8,0xc2,0x70,0x94,0x9,0x8b,0xe7,0x7d,0xef,0xf4,0x87,0x10,0xfc,0xbf,0x1,0x3d, + 0xc9,0x92,0x74,0x7e,0x82,0xde,0x1d,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae, + 0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/addcontact.png + 0x0,0x0,0xf,0x12, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xc,0x13,0x4a,0x13,0x53,0x79,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0xe,0x6d, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x5b,0x59,0x93,0x5c,0xe5,0x79,0x7e,0xbe,0xed, + 0x2c,0x7d,0x4e,0xef,0xd3,0x33,0xea,0x19,0x21,0x29,0x12,0x48,0x2c,0x92,0x1d,0x82, + 0x9,0x20,0x5c,0xd8,0xc6,0xa9,0xc4,0x71,0xec,0x84,0x8a,0x43,0x2a,0xf9,0x5,0xf9, + 0x1,0xb9,0xcc,0x4d,0xee,0xb8,0xcc,0x7d,0x72,0xcd,0x4d,0x70,0x5c,0xc9,0x45,0x2a, + 0xe5,0xca,0x52,0xc6,0x65,0x43,0x62,0x4a,0x26,0x6,0x2c,0x30,0x63,0x81,0x34,0xcc, + 0x30,0x6b,0x4f,0xef,0x67,0xf9,0xb6,0x37,0x17,0xdd,0x8c,0x84,0x90,0x52,0x21,0x25, + 0x9,0x86,0x9a,0xa7,0xeb,0xad,0xaf,0x67,0xa9,0x73,0xbe,0xf3,0xf4,0xbb,0xbf,0x5f, + 0x3,0x47,0x38,0xc2,0x11,0x8e,0x70,0x84,0x23,0x1c,0xe1,0x8,0x47,0x38,0xc2,0xe7, + 0x11,0xec,0x6e,0xdf,0xe0,0xf9,0xe7,0x9f,0x17,0xdf,0xf9,0xce,0x9f,0x37,0x5a,0x8b, + 0x9d,0xb,0x95,0x4a,0xfa,0xb8,0x94,0xf2,0x4b,0xa5,0x76,0xf,0x15,0x79,0x71,0xdc, + 0x58,0xa7,0xb2,0x7c,0x9a,0x67,0xd9,0x74,0x63,0x32,0x19,0x5c,0x9a,0x4c,0x86,0xff, + 0x3a,0xee,0xf5,0x5f,0xbd,0x76,0xed,0x91,0xdd,0x97,0x5e,0xfa,0x53,0xf7,0x59,0x10, + 0x22,0xef,0xf6,0xd,0x9e,0x7e,0xfa,0xd9,0xd3,0xad,0x56,0xfd,0xa9,0xc5,0xce,0xc2, + 0x33,0xd5,0x5a,0xfd,0x82,0x73,0xb8,0x6f,0x9a,0x15,0xdd,0x56,0xb3,0x3,0xe3,0x8, + 0xe3,0xc9,0x4,0xfd,0x7e,0xaf,0x2b,0x83,0xa8,0x23,0x82,0x64,0x49,0xc5,0xe9,0x52, + 0xd4,0xe9,0xfd,0x3b,0x5e,0xc2,0xea,0x67,0x41,0x88,0xb8,0x8b,0xd7,0xe6,0x2f,0xbe, + 0xf8,0x62,0xbb,0x7b,0xfc,0xbe,0x6f,0xb6,0x17,0xda,0x7f,0xb6,0xd0,0x6e,0x7d,0xa3, + 0x5a,0xad,0x3f,0x10,0x45,0x51,0x95,0x73,0x9,0x22,0xc0,0x3a,0x82,0x27,0xe,0x15, + 0xc4,0xc,0x4c,0x34,0x3d,0xd1,0x9,0xe7,0x5c,0xdd,0x6b,0xbb,0x7b,0x62,0xb9,0xb5, + 0xf6,0xdc,0x73,0xcf,0xe9,0x97,0x5f,0x7e,0x99,0xbe,0x10,0x1a,0xf2,0xc2,0xb,0x2f, + 0xd4,0x57,0x56,0x4e,0x5e,0x68,0x2f,0x74,0x9e,0x49,0x6a,0xb5,0x27,0x17,0x3b,0xed, + 0xa6,0x10,0xa,0x79,0xee,0x61,0xac,0x85,0x75,0x1e,0xdc,0x30,0x8,0x2e,0x20,0x24, + 0xa1,0x92,0xa4,0x20,0xc6,0x92,0x22,0xcf,0x2f,0x4c,0x45,0xf6,0x64,0xdc,0x3c,0x7d, + 0xed,0xf2,0xe6,0xc6,0x1b,0x0,0x86,0xf7,0x92,0x10,0x7e,0xb7,0x2e,0xfc,0xd0,0x43, + 0x5f,0xee,0xc6,0x49,0xf5,0xe9,0x5a,0xa3,0xf1,0x95,0xa5,0x4e,0xa7,0x99,0x44,0xa, + 0x56,0x5b,0x58,0x53,0x0,0xf0,0x60,0x8c,0xc0,0x18,0x1,0xf0,0x70,0xd6,0xc0,0x59, + 0x3,0xc6,0x18,0x84,0xa,0xea,0x20,0xfe,0x58,0x18,0x84,0x8f,0xd7,0xc3,0xb0,0x7a, + 0xaf,0x4d,0xe6,0xae,0x11,0xd2,0xea,0x2e,0x9f,0xe,0xc2,0xf8,0x71,0x40,0x9c,0xe, + 0x83,0x99,0x65,0x32,0xe6,0x1,0x10,0x18,0x6e,0xb4,0x2,0x2,0x68,0xbe,0x78,0xf, + 0xce,0x79,0xe0,0x3d,0x9d,0x85,0x8,0xce,0x13,0x6b,0xb5,0xe,0xbd,0x53,0x3d,0x77, + 0xf1,0xf,0xab,0x7f,0xf4,0xec,0xc5,0xe3,0x79,0xe6,0x9e,0x6a,0xd5,0xa2,0xf3,0x4a, + 0x85,0x69,0x9e,0x5b,0x8,0xc1,0x61,0x9d,0x87,0x27,0x82,0xf7,0x0,0x11,0x40,0xf3, + 0x15,0x0,0xbc,0xf7,0x70,0xce,0x82,0x8,0x70,0x9e,0xb5,0x4a,0x4d,0x17,0xb2,0x9c, + 0x9e,0xfe,0xee,0x9f,0xfc,0xe5,0x38,0x84,0xdf,0xfa,0xfe,0xf7,0xff,0x26,0x3f,0x94, + 0x1a,0xd2,0x94,0xc1,0xa9,0x6c,0xea,0xbe,0x3d,0x1c,0x8e,0xbf,0xce,0x98,0x5a,0x9, + 0xc3,0x18,0x65,0x69,0x91,0xe5,0x1a,0x65,0xe9,0xa0,0x8d,0x9f,0x39,0x53,0x7f,0x83, + 0x90,0x9f,0x89,0x77,0xb0,0xd6,0xc3,0x7a,0x8e,0xbc,0xf4,0xf,0x68,0x4d,0x7f,0xcc, + 0x15,0xff,0xfd,0x82,0xb9,0xce,0xa1,0xd5,0x90,0x30,0xa9,0x9e,0x74,0x16,0xcf,0xe6, + 0xb9,0x3d,0xcf,0x98,0xc,0x8d,0x25,0x98,0xd2,0x80,0x40,0xf0,0xde,0xc3,0x58,0x82, + 0x31,0xe,0xc6,0x38,0x38,0xe7,0xe1,0x9c,0x87,0xf7,0x33,0x32,0x9c,0x73,0xd0,0xc6, + 0xa0,0x28,0xc,0x9c,0x67,0x75,0xb0,0xe0,0x49,0x26,0x69,0x5b,0x30,0xf5,0xa,0x80, + 0xb5,0x43,0x49,0x48,0x14,0x24,0xb,0xc4,0xc4,0x29,0x6b,0x51,0x2b,0xb5,0x43,0x96, + 0x95,0x30,0x46,0xcf,0xcd,0x82,0xe0,0x9c,0x87,0x36,0x1e,0x5a,0xcf,0x48,0xb1,0x6e, + 0x46,0x84,0xf3,0xe,0xc6,0x58,0x14,0xa5,0x46,0x96,0xe7,0xb0,0x96,0x20,0x65,0x94, + 0xa,0x26,0x16,0xc1,0x79,0x74,0x68,0x35,0x24,0x50,0x41,0xec,0x3d,0xab,0x79,0xe2, + 0xc8,0xa,0x3,0xa5,0x4a,0x58,0x67,0x1,0xcc,0x7c,0x87,0xf7,0x1e,0xc6,0x10,0xb4, + 0x71,0xb3,0xf0,0x6b,0xd,0x9c,0x9b,0xad,0xa5,0x31,0xc8,0xf2,0x2,0xe3,0xc9,0x14, + 0x59,0x61,0x51,0x9,0x63,0x48,0xc9,0x43,0xc9,0x99,0x38,0xb4,0x84,0x10,0xbc,0x21, + 0x50,0xa1,0xb5,0x41,0x59,0x5a,0xe4,0x81,0x83,0xb3,0x33,0x93,0x21,0x9a,0x69,0x89, + 0xb5,0x1e,0xc6,0x58,0x18,0x6b,0x60,0x9d,0x81,0x31,0x1a,0xa5,0xd6,0xc8,0x8b,0x12, + 0x93,0x69,0x8e,0xe1,0x68,0x8a,0xa2,0x70,0x8,0x65,0x80,0x28,0x52,0x5e,0x9,0x45, + 0x87,0x97,0x10,0x67,0x26,0x1e,0xd4,0x33,0xd6,0x9c,0xd0,0xc6,0x6,0xa5,0xb6,0x30, + 0xc6,0x82,0x3c,0x81,0x3e,0x8a,0x26,0xde,0xc3,0x5a,0xb,0x67,0xd,0x8c,0x29,0x51, + 0xe8,0x12,0x59,0x96,0x63,0x3c,0x9e,0x62,0x34,0x9a,0x60,0x34,0x9a,0xc0,0x39,0x6, + 0x57,0xb5,0x0,0x17,0x90,0xea,0x10,0x87,0x5d,0xed,0xcc,0x87,0x0,0xfd,0xc2,0xba, + 0xb2,0x9b,0xe5,0xe3,0x13,0x2a,0x50,0xb0,0xc6,0xc0,0x13,0x81,0x88,0xe,0x1c,0xa8, + 0xb5,0x16,0xce,0x19,0xe4,0x65,0x89,0x69,0x36,0xd3,0x8a,0x5e,0x6f,0x88,0xfe,0xfe, + 0x10,0xd9,0x34,0x7,0x88,0x28,0x9f,0xca,0x32,0x8d,0x1b,0x5b,0x12,0x22,0x3f,0xb4, + 0x84,0xf0,0x92,0x56,0xe1,0x8a,0xff,0x30,0xe5,0xf4,0xe4,0x60,0xb0,0x7b,0x22,0xc, + 0x3,0xf8,0x3,0xed,0x70,0x7,0x84,0x18,0x63,0xa1,0xcd,0xcc,0x81,0xe,0xc7,0x53, + 0xec,0xf7,0xc7,0xd8,0xd9,0xdd,0x47,0xaf,0x37,0x84,0x2e,0x35,0x38,0xd9,0xac,0xc8, + 0xdc,0x9b,0x7a,0x5a,0xfe,0xcc,0xc6,0xc9,0xde,0xa1,0x2d,0xee,0xae,0x5c,0xf9,0xf9, + 0xe4,0xd1,0x2f,0x9d,0x99,0x8,0xa9,0x4e,0x95,0xda,0x3c,0x2,0x26,0x22,0x4f,0xc, + 0xd6,0x5a,0x68,0x5d,0x42,0x6b,0x8d,0xb2,0x28,0x91,0x15,0x39,0x46,0x93,0xc,0xfb, + 0x83,0x31,0xf6,0x7a,0x3,0x6c,0x6d,0xef,0x63,0x6b,0xab,0x87,0xe1,0x70,0xc,0x72, + 0x16,0xc,0xe5,0x36,0x73,0xa3,0x7f,0xe,0xcc,0xfa,0xbf,0x24,0xfd,0xb7,0xd6,0x2e, + 0xbd,0xbb,0x69,0xe,0x6d,0xb5,0x5b,0xdb,0xdf,0x2f,0x6d,0xb5,0x76,0x5f,0x5e,0x98, + 0xd3,0xa5,0x45,0xd3,0x7a,0x21,0xb5,0xb1,0xc8,0xb2,0xc,0xd3,0x69,0x8e,0xf1,0x34, + 0xc3,0x70,0x34,0x45,0x7f,0x7f,0x88,0x9d,0xdd,0x3e,0x36,0xb7,0xf6,0xb0,0xbd,0xdd, + 0x43,0x7f,0x30,0x82,0xd1,0x1a,0x92,0x3b,0x48,0xa1,0x57,0x19,0x95,0x3f,0x28,0x36, + 0x7e,0xf8,0xea,0x3f,0xbe,0xba,0x99,0x1d,0xea,0x6a,0xf7,0xe5,0x6b,0xd7,0xca,0xa7, + 0x96,0xaf,0xbe,0xd5,0xe8,0xb8,0x1f,0x4f,0x72,0x5f,0xeb,0xf5,0xa7,0xf7,0x47,0x51, + 0xa,0xf,0xf,0x46,0x80,0x75,0xe,0x65,0xa9,0x31,0x99,0xe6,0x18,0x8d,0x26,0xe8, + 0xf7,0x47,0x98,0x4c,0x33,0x18,0x43,0x10,0xc,0x96,0x33,0xbf,0x15,0x48,0xbc,0x26, + 0xa2,0xe8,0xf2,0x4f,0x7e,0x82,0xf1,0x17,0xa1,0xfc,0xa7,0x8d,0x8d,0x2b,0x6f,0x23, + 0x8,0x7f,0x5a,0x5a,0xfd,0x70,0x6f,0xd8,0xbf,0x5f,0x85,0x2d,0x78,0x2f,0x1,0x22, + 0x78,0xe7,0xa0,0xb5,0x41,0xa1,0x35,0x8a,0xbc,0x44,0x59,0x96,0xb0,0x8e,0x20,0x64, + 0x0,0x21,0x58,0x26,0xa4,0x7f,0x4d,0x49,0xfb,0xa3,0xaa,0x30,0x1f,0x7c,0x61,0x3a, + 0x66,0x6b,0x6b,0x6b,0xa6,0x7d,0x5f,0xa3,0x94,0x4c,0x6b,0x29,0x80,0x30,0x6c,0x21, + 0x9f,0x32,0xec,0xef,0x8f,0x30,0x1c,0xe,0x60,0x8c,0x85,0xf5,0xe,0x44,0x4,0x25, + 0x3,0xc4,0x95,0x10,0x71,0xc2,0x1,0xe4,0x9a,0xf9,0xc9,0xda,0xb4,0xbf,0x7e,0xf5, + 0xc7,0x97,0x2e,0x95,0x5f,0x88,0x8e,0xd9,0xd9,0xb3,0x67,0x17,0x4e,0x9d,0x6f,0x9f, + 0x8f,0xea,0xf2,0x62,0x54,0x15,0x8f,0x77,0x16,0x17,0xba,0x67,0x4e,0x9e,0x45,0x23, + 0xed,0x60,0x32,0x29,0x30,0x18,0x8d,0xe0,0xbd,0x7,0xe3,0xc,0x4a,0x5,0xa8,0xd7, + 0xea,0x68,0xb6,0x52,0x54,0x6a,0x25,0x3c,0xdb,0x2e,0x1d,0xed,0x5d,0xf5,0x3e,0xdb, + 0x5a,0x6c,0xb6,0x7d,0xb7,0xfa,0x20,0x6d,0xed,0xaf,0x1d,0xaa,0xb0,0xcb,0x2e,0x3e, + 0x7a,0xb1,0x7b,0xee,0x37,0xcf,0xdd,0xf7,0xc0,0x83,0xbf,0xb1,0xd4,0x59,0x5e,0x68, + 0x4e,0x8b,0xc9,0xd2,0xda,0xce,0xda,0x99,0x6b,0xeb,0xab,0x8f,0xec,0xf6,0x77,0x4e, + 0x10,0x9f,0xa2,0x7b,0x2c,0xc1,0x42,0xed,0x1c,0xda,0xad,0x26,0x96,0x97,0x17,0x50, + 0x6a,0x3,0xce,0x18,0x82,0x20,0x44,0x35,0xa9,0x81,0x78,0x86,0xcd,0xfe,0x2f,0x50, + 0xec,0xc,0x22,0x29,0xb2,0xf3,0xed,0xa5,0x5,0x56,0x9,0x93,0x6d,0xc6,0x54,0xef, + 0xc4,0x57,0xbf,0xb5,0xb7,0xbf,0x9d,0xef,0xc,0xae,0x8c,0xd6,0xb6,0xdf,0x5d,0x7f, + 0x6f,0x17,0xbb,0x93,0xcf,0x2b,0x21,0xea,0x99,0x27,0x9e,0x39,0xd5,0x58,0xaa,0xfe, + 0x76,0x6d,0x21,0x7e,0x22,0x4a,0xd5,0xc3,0x61,0x45,0xad,0x44,0xf5,0x56,0x35,0xa8, + 0xc9,0xc8,0xb2,0x2c,0xde,0xea,0x6f,0x86,0x5b,0xbb,0xeb,0xe8,0xd,0xd6,0x71,0x72, + 0xe5,0x7e,0x3c,0xfc,0xf0,0x32,0x96,0x8f,0x37,0x60,0x8c,0x7,0x67,0x2,0x52,0x4a, + 0x30,0xc6,0xb1,0xb3,0x7f,0x15,0x3b,0xc3,0x1c,0xc6,0x8d,0xc3,0x30,0x55,0xf,0x37, + 0x3a,0xd5,0xd3,0x81,0x8a,0xad,0x2d,0xbd,0xf5,0xe4,0xa6,0x51,0x22,0xdf,0xaf,0x2e, + 0x45,0xaf,0x72,0x74,0xff,0x4d,0xbe,0x2b,0x7f,0xbe,0x89,0xbb,0x13,0x79,0xfe,0xdf, + 0x26,0x73,0x1c,0x4f,0xc6,0xf,0xfe,0xd6,0xc9,0x47,0x1b,0xc7,0xd2,0x6f,0xb7,0x97, + 0x1b,0xdf,0xea,0x9e,0xe8,0x5c,0x5c,0xe8,0x2e,0x7c,0x79,0x69,0x79,0x71,0xa9,0xde, + 0xae,0xd5,0xaa,0xf5,0xb4,0x62,0xac,0x56,0x1f,0x7e,0xb8,0xc1,0x37,0xb7,0x36,0x50, + 0x94,0x19,0x8,0xe,0x9e,0xc,0xb8,0x24,0x8,0x49,0xe0,0xd2,0xc2,0xba,0x11,0xfa, + 0xe3,0x75,0xac,0x6d,0xbe,0x85,0xf7,0xd6,0xde,0xc4,0x38,0xeb,0xb1,0x5a,0xb3,0xa6, + 0x3a,0xc7,0x16,0xe3,0x4a,0x9a,0x24,0x32,0x14,0x55,0x21,0x79,0x9b,0xbc,0x3f,0xce, + 0x38,0x5a,0x90,0xa8,0x89,0x54,0xf2,0xd4,0xa4,0x59,0xbf,0xe8,0xf,0x3f,0x37,0x1a, + 0xd2,0x7c,0xc0,0x76,0xa3,0x4a,0xf4,0xbb,0x51,0x12,0x7e,0xaf,0xb6,0x98,0x9c,0xa9, + 0x1e,0x4b,0xe3,0xca,0x42,0xc4,0xbd,0xb4,0x28,0x8d,0x3,0x18,0x43,0x9a,0xa6,0x58, + 0xec,0x2c,0x61,0xe3,0xc3,0x75,0xbc,0xf3,0xde,0x1b,0xd8,0xe9,0xed,0xe0,0x58,0xe7, + 0x14,0xda,0xcd,0x65,0x44,0x41,0x5,0xc4,0x8,0x79,0x3e,0x46,0xaf,0xbf,0x89,0x9d, + 0xde,0x7,0x18,0x8c,0x7b,0x88,0xe2,0x10,0xa1,0x8a,0x0,0xe2,0x20,0xf2,0x20,0x46, + 0x90,0x15,0x81,0x74,0xb1,0x12,0x72,0xc9,0x2e,0x10,0xd1,0x22,0x2c,0x16,0x15,0x8b, + 0xfc,0x63,0xa7,0x7f,0x67,0xf3,0xd2,0xa5,0xbf,0x35,0x9f,0x39,0x21,0x5f,0x3b,0x79, + 0x32,0xf2,0xb,0xf1,0xa9,0xa8,0x12,0x3c,0x96,0xd4,0xe3,0x47,0x5a,0xdd,0x86,0x88, + 0x9b,0x1,0x4a,0xe4,0xd8,0x9f,0x18,0x80,0x0,0x46,0xc,0xda,0x95,0x68,0x77,0xda, + 0xe8,0xae,0x2c,0xe3,0xda,0xb5,0xab,0xd8,0xdc,0xfb,0x0,0xfd,0x61,0x1f,0xd5,0xe4, + 0x7d,0x28,0x19,0x0,0xc,0xd0,0x3a,0xc7,0x34,0x1f,0xc1,0xba,0x2,0x61,0x1c,0xa2, + 0xde,0x6c,0x20,0x49,0xab,0xe0,0x9c,0xc3,0x7b,0xf,0xa2,0x99,0xf3,0xd,0x2a,0x1, + 0x38,0xe3,0x92,0x7b,0xb9,0xc2,0x9c,0x7c,0x3a,0x52,0xf4,0xd6,0xf2,0xf2,0xf4,0xb5, + 0x4b,0x97,0xb0,0xf9,0x59,0x9b,0xc,0x6f,0x2d,0x9f,0x5e,0xae,0x76,0xaa,0x5f,0x4d, + 0x1b,0xd1,0xd7,0x17,0x8e,0xb7,0x96,0x5b,0x2b,0x75,0xc8,0x88,0xa3,0x28,0xb,0x64, + 0x79,0x86,0xbc,0xc8,0x30,0xc9,0x26,0xc8,0x74,0x6,0x2e,0x18,0x54,0x18,0x40,0xc9, + 0x0,0x9c,0x73,0x70,0xe,0x78,0x68,0x58,0x5f,0xc0,0xba,0x2,0x4,0xb,0x19,0x8, + 0x54,0x6b,0x35,0x2c,0x74,0x3a,0x68,0x77,0x3a,0x48,0xab,0x55,0x8,0x29,0x41,0x44, + 0xe0,0xe0,0x50,0x32,0x44,0x12,0x27,0x88,0x82,0x18,0xae,0xf4,0xe8,0xef,0xe,0xe3, + 0x51,0x7f,0x38,0x5d,0x7d,0x77,0x35,0xcb,0x32,0xeb,0x9c,0xd3,0xa,0x80,0x3,0x60, + 0xee,0xb9,0x86,0x74,0xbb,0xdd,0x48,0x29,0x75,0x46,0x85,0xfc,0x7c,0xa5,0x11,0x2f, + 0xa6,0xad,0x18,0x32,0x10,0xf3,0x64,0xcb,0xc2,0x59,0x77,0x50,0xd5,0x3a,0xef,0x21, + 0x95,0x44,0xab,0xdd,0x86,0x94,0xa,0xad,0x85,0x16,0x8a,0xa2,0x80,0xb5,0x16,0xde, + 0x3b,0xc0,0xcf,0x1a,0xee,0x8c,0x73,0x28,0xa5,0x10,0x86,0x11,0x54,0x10,0x40,0x88, + 0x19,0x19,0xe4,0x81,0x30,0x8,0x51,0x4d,0xeb,0x68,0x37,0x17,0x40,0x96,0x30,0x5c, + 0x7f,0x1b,0x9b,0x1f,0x6c,0xaa,0xbd,0xcd,0xde,0x57,0xa6,0x93,0x69,0x4d,0xeb,0x72, + 0x73,0xde,0x5e,0xfc,0x1,0x80,0xd7,0xee,0x39,0x21,0xc1,0x66,0x10,0xd8,0x26,0x9d, + 0x1,0xe3,0xe7,0xd2,0x46,0x54,0x4b,0x1b,0x31,0x84,0x60,0x28,0xf2,0x12,0x59,0x56, + 0x0,0x20,0x28,0xa5,0xc0,0x39,0x7,0x3,0x83,0x27,0xf,0xa5,0x14,0x9a,0xad,0x26, + 0xea,0x8d,0xfa,0xbc,0xda,0x9d,0xcb,0x47,0xfd,0x54,0xba,0xde,0x27,0x71,0xd6,0xce, + 0xdf,0xcf,0xb4,0x43,0x70,0x85,0x8a,0x4a,0xd0,0xa9,0x77,0x0,0xc7,0x70,0xd9,0xfe, + 0xa,0xdb,0xeb,0xdb,0x18,0xf4,0x87,0x2b,0x0,0x56,0xe6,0xdb,0xfa,0x35,0x80,0xff, + 0xfe,0x4c,0x8,0x29,0x53,0xa5,0xac,0x77,0xcb,0x60,0x74,0x22,0x4a,0xa3,0x4a,0xd2, + 0xa8,0x40,0x28,0x86,0x49,0x7f,0x82,0xbd,0xbd,0x7d,0xa8,0xb9,0x46,0x84,0xa1,0x4, + 0xe0,0xe7,0x89,0x3c,0x81,0x33,0x6,0x26,0x4,0x38,0xe3,0xf0,0xcc,0xc3,0x33,0x82, + 0x63,0xe,0xcc,0x7b,0xc0,0xd3,0xc1,0x28,0x82,0x80,0x83,0xde,0x9,0x18,0x66,0x8d, + 0x25,0x4d,0xe0,0x5e,0x42,0x4a,0x9,0xc9,0x25,0xbc,0xf3,0x37,0x6f,0xab,0x72,0xa7, + 0xb2,0xee,0x4f,0x7d,0x91,0xd6,0x52,0xb5,0x1e,0xc4,0x72,0x49,0x6,0xa2,0x13,0xa7, + 0xa1,0x8,0x2b,0x1,0xbc,0x77,0xc8,0xa6,0x19,0x76,0x77,0x77,0x11,0xc7,0x31,0xea, + 0x8d,0x3a,0x18,0x8b,0xe6,0x5c,0xf8,0xf9,0xb8,0xe1,0x23,0xcd,0xa0,0x83,0xd5,0x1d, + 0xf4,0x47,0xe8,0x63,0x1a,0x43,0x74,0xbd,0x63,0xe8,0x9d,0x87,0x29,0xd,0xac,0x36, + 0x90,0x91,0x84,0x10,0x2,0x52,0x7d,0x62,0xdb,0x63,0x0,0xfa,0x9e,0x13,0xf2,0x18, + 0x1e,0x53,0xa2,0x1d,0x76,0xe3,0x54,0x2c,0xc5,0x69,0x98,0x4,0x71,0x0,0xce,0x19, + 0x9c,0xc3,0xac,0x7a,0x1d,0x8d,0xf,0x3e,0x69,0xc6,0x30,0xf7,0x25,0x37,0xcf,0x60, + 0xae,0xb,0xf9,0xeb,0x2,0x2,0x38,0xe7,0x50,0x8c,0x83,0xe6,0xd3,0x22,0xce,0x39, + 0x14,0x49,0x70,0x36,0xfb,0x5,0x63,0xec,0x76,0x7,0x38,0xe6,0xb3,0xbf,0x7b,0x4c, + 0xc8,0x1e,0xf6,0x92,0xe3,0xd1,0xf1,0x6e,0xa5,0x5e,0x69,0x26,0x8d,0xa,0x97,0x81, + 0x98,0x77,0xd1,0x2d,0x8a,0xa2,0x40,0x36,0xcd,0xa0,0x82,0x0,0x44,0x34,0xdb,0x3c, + 0x66,0xa4,0x7c,0xec,0x45,0x1f,0x89,0x9f,0xaf,0xf3,0x87,0x67,0x1c,0x81,0xc,0x11, + 0x86,0x11,0xa2,0x28,0x9e,0x65,0xb0,0x9c,0x81,0x1b,0x81,0x8,0x31,0xaa,0x69,0x15, + 0x2a,0xc,0x10,0x4,0xea,0xe0,0xda,0x37,0xc0,0x1,0x98,0xde,0x6b,0x42,0x38,0xd5, + 0xa9,0xc9,0x19,0x16,0xe3,0x24,0x48,0xe2,0x34,0x84,0x90,0x2,0xd6,0xce,0x7a,0x1b, + 0x59,0x5e,0x20,0xcf,0xb,0xc4,0x15,0x3d,0x1f,0x3e,0xcd,0x34,0x82,0x8,0x37,0x90, + 0x70,0x7b,0x51,0x32,0x40,0x35,0xa9,0xa1,0x96,0xd4,0x21,0x65,0x30,0xf,0x3f,0x73, + 0xbf,0x52,0x32,0xe4,0xd3,0x2,0x65,0xa1,0x91,0x67,0x39,0xbc,0xa7,0x5b,0xa5,0xf, + 0xe9,0xbd,0x26,0x84,0x41,0xa1,0x45,0x44,0x8b,0x2a,0x96,0x49,0x94,0x84,0x10,0x92, + 0xc3,0x5a,0x8b,0xb2,0x28,0xa0,0xcb,0x72,0xd6,0x27,0xd5,0x1a,0x79,0x56,0x20,0x49, + 0xcc,0xd,0x1b,0xa7,0xf9,0x30,0xf7,0xfa,0x60,0xfb,0xfa,0x8c,0x7b,0xf6,0x52,0x52, + 0xa1,0x5e,0x6f,0x22,0xa0,0x10,0xeb,0x57,0x36,0xb0,0xfe,0xc1,0x6,0x40,0x80,0x33, + 0x1e,0xde,0x78,0xc4,0x71,0x5,0x60,0x84,0xd5,0x77,0x56,0x51,0x16,0x9f,0xe8,0xa, + 0x34,0x1,0xfc,0x1e,0x80,0xc5,0x5b,0xec,0xdb,0x3,0xf8,0x5,0x80,0x57,0xee,0x34, + 0x21,0x2,0x1c,0xd,0x80,0x16,0x95,0x92,0x49,0x58,0x51,0x10,0x92,0xc3,0x59,0x7, + 0x63,0xc,0x9c,0x9d,0x9d,0x80,0xd2,0xda,0x60,0x32,0x9d,0x22,0x49,0x53,0x8,0x21, + 0x66,0x1f,0xf3,0x8d,0x7c,0xdc,0x46,0x43,0x84,0x14,0x48,0x2b,0x9,0x8a,0x81,0xc6, + 0x5b,0x97,0x2e,0xe3,0xa7,0x3f,0x7a,0xe5,0xba,0xc9,0x79,0x2,0xe7,0x1c,0x0,0x41, + 0x97,0x1a,0xc5,0x27,0x9,0x69,0x3,0xf8,0x1e,0x80,0x3f,0xb8,0xc5,0xbe,0xd,0x80, + 0xbf,0xbb,0x2b,0x84,0x38,0x72,0xd,0x4f,0x7e,0x49,0x28,0x5e,0xd,0x63,0x5,0x2e, + 0xf9,0x7c,0x46,0xeb,0xe,0x1e,0xcc,0x5a,0x8b,0x22,0xcf,0xa1,0xb5,0x46,0x14,0x45, + 0x60,0x8c,0x1d,0xf8,0x8a,0xdb,0x11,0x82,0xb9,0xcf,0x91,0x4a,0x82,0x7c,0x89,0x41, + 0xaf,0x8f,0xc1,0xfe,0xe0,0xd3,0x6a,0x7a,0xe3,0x7f,0xf9,0xfb,0xb1,0xff,0xb3,0x5f, + 0xf8,0x34,0x3e,0xc4,0x33,0xd6,0x24,0x8e,0x25,0x15,0xa9,0x4a,0x9c,0x46,0x50,0x81, + 0x0,0xe3,0xc,0x8c,0x31,0x70,0xc1,0xc0,0x38,0x9b,0x25,0x55,0xd6,0xcd,0x32,0xd1, + 0x3,0x27,0x7a,0x3,0x11,0x9f,0x70,0xb0,0x98,0x4f,0xf4,0xe6,0xc3,0x2b,0xef,0xc0, + 0xc5,0x1d,0x3f,0x94,0x60,0xef,0xa,0x21,0x2a,0x90,0xd,0x2e,0xf8,0x52,0x94,0x4, + 0x61,0x9c,0x46,0x90,0xa1,0x2,0x17,0x1c,0x9c,0xb3,0xd9,0x2a,0x18,0xc0,0xe7,0x7e, + 0x81,0xfc,0x4d,0x51,0xe5,0xf6,0xe2,0x89,0xe6,0x93,0xff,0x12,0x45,0x59,0xc0,0x98, + 0x3b,0x3e,0x71,0x90,0x77,0xfc,0x1f,0x8f,0xd7,0x8e,0x2b,0x15,0xaa,0x5,0x4f,0x7e, + 0xd9,0x94,0x96,0x8f,0xf6,0x27,0x60,0x82,0x23,0x1b,0x67,0x18,0x8f,0x72,0xd8,0xdc, + 0x43,0x22,0x80,0x12,0x1,0x4,0x9f,0x35,0x7d,0x18,0xe7,0xb3,0xb0,0xca,0xd8,0x81, + 0x56,0xdc,0xe8,0x54,0x67,0x32,0x23,0x45,0x1b,0x8d,0xc1,0x78,0x80,0xac,0x28,0x10, + 0x37,0x22,0x2c,0x74,0xdb,0x90,0x5c,0x82,0xcf,0x18,0x6,0x63,0x1c,0x9e,0x3c,0xb2, + 0xe9,0x14,0xe3,0xc9,0xe4,0xe6,0x6c,0x55,0x3,0xd8,0x9d,0x27,0x68,0xb7,0xf2,0x21, + 0xef,0xdf,0x71,0x42,0x58,0x9d,0x45,0x4a,0x89,0x9a,0x2d,0x6d,0xb4,0xbd,0xb6,0x87, + 0x6c,0x52,0xcc,0xee,0x56,0x1a,0x94,0x5a,0x63,0x3c,0x28,0x21,0x75,0x84,0x28,0x88, + 0xc0,0x9d,0x4,0x3c,0xc3,0xfc,0x49,0x66,0x44,0x1c,0x4,0x9b,0x5b,0x6b,0x49,0x51, + 0x16,0xd8,0xdd,0xdb,0x83,0xd7,0x1e,0x4b,0x67,0x16,0x51,0xef,0xd4,0x50,0x8b,0xea, + 0x88,0x45,0x2,0xe6,0x67,0xbd,0xd7,0xa2,0x28,0x70,0xf9,0x97,0x97,0xf1,0xfa,0xa5, + 0xd7,0x91,0x65,0x1f,0x6b,0x98,0xed,0x2,0xf8,0x7b,0x0,0xaf,0xde,0x26,0x69,0x7b, + 0xf7,0x8e,0x13,0x12,0x4,0x81,0xe0,0x9c,0x6f,0x97,0x59,0xf9,0xcb,0xad,0xab,0x3b, + 0x6a,0x6b,0x6d,0x8f,0xe6,0xa9,0xb9,0xf3,0x1e,0xcc,0x59,0xdb,0x66,0x8c,0x2d,0xa, + 0x4b,0x18,0x5,0x53,0x48,0xae,0x60,0xb4,0x85,0x8a,0x14,0xc0,0x18,0x38,0x3,0xb8, + 0xe4,0x60,0xe0,0x60,0xde,0x81,0x39,0x6,0x70,0x6,0x46,0x1c,0x6c,0x9e,0xbe,0x8f, + 0xb3,0x31,0xe0,0x81,0xa4,0x15,0xa3,0xbb,0x7c,0xc,0x4b,0x69,0x17,0xcd,0xb8,0xd, + 0xc9,0x24,0xe2,0x28,0x86,0x36,0x7a,0x52,0x64,0x39,0xde,0x7c,0xe3,0xcd,0xf8,0xa6, + 0xd6,0xc5,0x8,0xc0,0xcb,0x0,0xfe,0xe9,0x9e,0xd9,0x16,0x11,0x95,0x80,0xfd,0x2f, + 0xab,0xf9,0x78,0x3c,0xc8,0xa5,0x9d,0xc7,0x59,0xe6,0x29,0x27,0xc6,0x24,0x11,0x3d, + 0x41,0x9e,0xbe,0x9b,0xd,0xf3,0xea,0x68,0x7f,0x82,0x41,0x6f,0x8c,0x66,0xb7,0x86, + 0xb4,0x91,0xa0,0x52,0x8d,0x11,0x55,0x2,0x88,0x50,0x2,0x1c,0x9f,0x48,0xe5,0x69, + 0x7e,0x90,0xc6,0x94,0x1a,0xba,0x30,0xb0,0x85,0x83,0x96,0xe,0x22,0xd,0xc1,0x1a, + 0x12,0x91,0xa,0x91,0xc4,0xe9,0xd6,0x52,0x67,0xf1,0xd7,0x41,0x10,0x26,0xe4,0xe9, + 0xdc,0xbc,0xa0,0xbb,0x51,0xb,0xec,0x3d,0x75,0x36,0xd3,0xe9,0x74,0x4a,0x54,0x79, + 0xdd,0x7b,0xff,0x8e,0x73,0x4e,0x9a,0xb1,0x71,0x0,0xe0,0x8d,0xcf,0x1d,0x39,0x91, + 0x34,0x93,0x6d,0xf,0x9f,0x90,0xa7,0xfb,0xc1,0x90,0x8e,0x47,0x93,0x64,0x32,0x98, + 0x44,0x95,0x7a,0x1c,0x56,0xaa,0xb1,0x8a,0x93,0x10,0x32,0x54,0x60,0xe2,0xba,0x29, + 0xcd,0x8e,0x54,0x59,0x78,0x37,0x27,0xc4,0x18,0x94,0xd3,0x2,0xf9,0xb8,0x84,0xa2, + 0xa0,0xe8,0xd7,0x46,0xf9,0x5e,0x73,0x3f,0xaf,0x56,0xd3,0x49,0x14,0xc5,0x3f,0x6b, + 0x36,0x9a,0x97,0x7b,0x7b,0xbd,0xb3,0xc6,0x98,0x93,0x37,0x11,0xc2,0x6f,0xfa,0xf9, + 0xee,0x13,0xb2,0xbd,0xbd,0x5d,0x0,0x28,0x70,0x90,0x54,0x1f,0x14,0x53,0x1e,0x0, + 0xb,0xc2,0xe0,0x3f,0xa1,0xe0,0x3d,0xe1,0x1c,0xc1,0xad,0xf8,0xa9,0xef,0x3a,0x63, + 0x5a,0x83,0xbd,0x51,0x9d,0xb,0xde,0x62,0x1c,0x1d,0xce,0x78,0x88,0x79,0x44,0x12, + 0x72,0xd6,0x22,0xb4,0xa5,0x85,0xb5,0x1e,0xc0,0xec,0xbc,0x99,0x35,0x16,0xe4,0x68, + 0x33,0x50,0xe1,0x46,0x56,0x2d,0xf6,0x46,0xfd,0xd1,0x6e,0xa3,0xde,0x58,0x5f,0x5e, + 0x59,0x7e,0xf5,0xcc,0x89,0x33,0x1b,0xab,0xab,0xab,0xdc,0x5a,0x6b,0x6f,0x11,0x2d, + 0xd9,0x3d,0x25,0x64,0x5e,0x40,0xdd,0xd6,0xa2,0xb6,0x6,0x5b,0x6b,0x69,0x9a,0x4e, + 0x93,0x24,0x79,0x1b,0xc4,0x96,0xac,0xb6,0x9d,0x72,0x52,0xd6,0xbd,0xf5,0x55,0x4b, + 0xbe,0x46,0x8e,0x5a,0xc,0x54,0x1,0x0,0x11,0x48,0x2e,0x3,0x21,0x89,0x88,0x74, + 0xae,0xad,0x33,0xf3,0x72,0x17,0x80,0x87,0xb7,0xc,0x6c,0x57,0x6,0x72,0x3b,0x1f, + 0xe7,0xfd,0x5e,0xaf,0xd7,0x8f,0xa2,0x68,0xcb,0x91,0xbb,0x52,0xa9,0x54,0xb2,0xd5, + 0xd5,0xd5,0xaf,0x39,0xe7,0x6a,0x37,0xdd,0xbf,0xe,0x20,0xb8,0x13,0x84,0xdc,0x8d, + 0x6f,0x43,0xa8,0x6e,0xb7,0xab,0x8a,0xa2,0x50,0xfd,0xbe,0x95,0xc0,0x58,0xcc,0x1d, + 0xa0,0xbc,0x21,0xef,0x51,0x69,0x90,0x6,0x1a,0xda,0x6b,0xad,0xcb,0xeb,0x9d,0xa4, + 0x8f,0xf9,0x3,0x3d,0x5f,0xed,0x3c,0x74,0x7e,0x94,0xaf,0xff,0x5,0x80,0xbf,0xba, + 0x29,0xfb,0xfc,0x15,0x80,0xbf,0x6,0xf0,0xf,0x9f,0x47,0x42,0xee,0x36,0x2e,0x2, + 0xf8,0x26,0x80,0xea,0x4d,0x61,0xf7,0x87,0x0,0xde,0xc0,0x11,0x8e,0x70,0x84,0x23, + 0x1c,0xe1,0x8,0x47,0x38,0xc2,0x11,0x8e,0xf0,0x85,0xc4,0xff,0x0,0xca,0xa1,0xfc, + 0x59,0x5,0xd,0xfc,0x18,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82, + // /home/maemo/tietoopcom/resources/contactfemale.png + 0x0,0x0,0x10,0xb8, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xc,0x37,0x76,0x10,0xb7,0xa8,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x10,0x13, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x5b,0x5b,0x6f,0x5c,0xd7,0x75,0xfe,0xf6,0xed, + 0xdc,0xe6,0xcc,0x85,0x33,0x24,0x87,0x94,0x44,0x31,0x92,0xa3,0xc8,0x96,0xed,0x26, + 0xb2,0x9c,0x46,0xae,0xe3,0xc6,0x71,0xdd,0xa4,0x4d,0x63,0x24,0x6e,0x9a,0xa4,0x5, + 0x82,0x16,0x48,0x1e,0x8a,0x3e,0xf8,0xa1,0x7f,0x26,0x40,0xff,0x40,0x1f,0x1a,0xa0, + 0xaf,0xcd,0x43,0x81,0x16,0x68,0xd1,0xa2,0x48,0xed,0xd8,0xb9,0x21,0x86,0x6f,0x51, + 0x24,0x4b,0x22,0x87,0xc3,0xb9,0x9d,0xdb,0xbe,0xae,0x3e,0xcc,0xe8,0xe2,0xd8,0x41, + 0xd1,0x44,0x92,0x69,0x94,0x1f,0xb0,0x40,0xcc,0xc,0x67,0x13,0xe7,0x3b,0xeb,0x5b, + 0xeb,0xdb,0x6b,0x1f,0x2,0xc7,0x38,0xc6,0x31,0x8e,0x71,0x8c,0x63,0x1c,0xe3,0x18, + 0xc7,0x38,0xc6,0x51,0x4,0xbb,0xdf,0x7f,0xe0,0xdb,0xdf,0xfe,0x76,0x56,0x14,0xc5, + 0x59,0xa5,0xd4,0x67,0x18,0x63,0x7f,0x28,0x84,0xfc,0x4c,0x14,0xa9,0xd,0x21,0x84, + 0x24,0x22,0x78,0xef,0x39,0x11,0x20,0x84,0x20,0xc6,0xc0,0x42,0x8,0xd6,0x18,0x33, + 0xf2,0xde,0xff,0x27,0x11,0x7d,0x5f,0x4a,0xf9,0xef,0xad,0x56,0xeb,0xea,0x77,0xbf, + 0xfb,0x5d,0xf3,0x20,0x8,0x11,0xf7,0x73,0xf1,0xef,0x7c,0xe7,0x3b,0x3,0x6b,0xed, + 0x33,0xde,0xfb,0x6f,0x0,0xf8,0x8a,0x52,0xea,0xc9,0x4e,0xa7,0x73,0x62,0x63,0x63, + 0x5d,0xf6,0xfb,0x7d,0x4a,0x92,0x2c,0x56,0x2a,0x12,0x69,0x9a,0x89,0xb5,0xb5,0x2e, + 0x5b,0x5b,0x5b,0xa3,0x34,0x4d,0x55,0x8,0x61,0xcd,0x5a,0xbb,0xe5,0xbd,0x3f,0xe9, + 0x9c,0xeb,0x18,0x63,0xca,0x8b,0x17,0x2f,0x4e,0x5f,0x7b,0xed,0x35,0xfb,0x91,0x24, + 0xe4,0xc5,0x17,0x5f,0x64,0x4f,0x3f,0xfd,0x74,0xf7,0xf0,0xf0,0xf0,0xb3,0x44,0xf4, + 0xe7,0x71,0x1c,0x7f,0x39,0xcf,0xf3,0x87,0xdb,0xed,0x76,0xd6,0x6e,0xb7,0xa9,0xd7, + 0xeb,0xbb,0x28,0x4e,0xa4,0xd6,0x15,0x33,0x46,0x83,0x28,0x40,0x45,0x31,0x6b,0xe5, + 0x1d,0xae,0x22,0xe5,0x18,0x88,0x1,0xac,0x5,0xe0,0x14,0x11,0x6d,0x19,0x63,0x84, + 0x31,0x66,0xf2,0xe4,0x93,0x4f,0x4e,0x7f,0xf4,0xa3,0x1f,0x99,0x8f,0x1c,0x21,0x17, + 0x2f,0x5e,0xec,0x94,0x65,0xf9,0x8c,0xf7,0xfe,0x6b,0x52,0xca,0x2f,0xf4,0x7a,0xbd, + 0xed,0xc1,0x60,0x80,0x76,0xbb,0x4d,0x71,0x1c,0x3,0x60,0x72,0x34,0x3a,0x60,0xb3, + 0xd9,0x1,0x88,0xe6,0x0,0xd5,0xa8,0x2a,0xd,0x6b,0xc1,0x94,0x92,0x42,0x29,0x9, + 0x25,0x15,0xe3,0x9c,0x73,0xe7,0x5c,0x4f,0x6b,0x3d,0x24,0x22,0x46,0x44,0x93,0xa7, + 0x9e,0x7a,0xea,0xe0,0x95,0x57,0x5e,0x71,0xf7,0x8b,0x10,0x79,0x3f,0x16,0x2d,0xcb, + 0x72,0x97,0x73,0xfe,0xc7,0x49,0x92,0x3c,0xd7,0x6e,0xb7,0x87,0x79,0x9e,0x53,0x92, + 0x24,0x94,0x24,0x9,0x33,0x46,0xb3,0xfd,0xbd,0x11,0xde,0xbd,0x71,0x80,0x48,0x14, + 0xb8,0xf4,0xc4,0x69,0x74,0x7a,0xdb,0xf8,0xe1,0xcb,0x3f,0xc0,0xf5,0xeb,0x35,0xca, + 0x72,0xd,0xeb,0x83,0x1e,0x4b,0x92,0x84,0x18,0x63,0x14,0x42,0x50,0xde,0xfb,0x87, + 0xca,0xb2,0xfc,0x23,0xad,0xf5,0x88,0x88,0xde,0x0,0xd0,0x7c,0x64,0x32,0xe4,0xab, + 0x5f,0xfd,0x6a,0x5e,0xd7,0xf5,0xe7,0x18,0x63,0xdf,0xec,0x76,0xbb,0xe7,0x7a,0xbd, + 0x1e,0xcf,0xb2,0xc,0x0,0xb8,0xd6,0x9a,0x4d,0xa6,0x53,0xec,0x1f,0x8c,0x51,0x97, + 0x73,0x5c,0x78,0x64,0x17,0x5f,0x7e,0xf1,0x25,0xb4,0x7b,0xe7,0xe0,0xed,0xc,0xa3, + 0xbd,0x37,0x31,0x99,0xd6,0x8,0x60,0x50,0x4a,0x31,0xce,0x18,0x63,0x8c,0x81,0x88, + 0xb8,0xd6,0xba,0xa7,0xb5,0x9e,0x96,0x65,0xf9,0xc3,0x67,0x9e,0x79,0xe6,0xe0,0xd5, + 0x57,0x5f,0xa5,0xfb,0x41,0x8,0xbf,0x97,0x8b,0xbd,0xf4,0xd2,0x4b,0xa2,0xae,0xeb, + 0x87,0x88,0xe8,0xa2,0xf7,0x7e,0x47,0x8,0xc1,0x95,0x52,0x10,0x42,0x30,0xad,0x35, + 0xf6,0xf6,0x46,0xb8,0x72,0xe5,0x3a,0x8a,0xc5,0x4,0xe7,0x1f,0xea,0xe0,0xb9,0xcf, + 0x3f,0xb,0xf0,0xc,0x32,0xce,0xf0,0xf1,0xb,0xcf,0xe3,0xc2,0x23,0xf,0x23,0x8b, + 0x4a,0xec,0xdd,0xdc,0xc3,0xb5,0x6b,0x37,0x31,0x9f,0x97,0x60,0x8c,0x21,0x49,0x12, + 0x8,0x21,0x62,0xe7,0xdc,0x19,0x0,0x67,0x9b,0xa6,0x69,0x7d,0x24,0x32,0x64,0x73, + 0x73,0x33,0xd5,0x5a,0x3f,0x2b,0x84,0xf8,0x62,0x1c,0xc7,0x1f,0xcb,0xf3,0x3c,0x4a, + 0xe2,0x98,0x59,0x6b,0x71,0x78,0x38,0xc5,0xde,0xfe,0x3e,0x82,0x5b,0xe0,0x93,0x8f, + 0xed,0xe0,0x4f,0xbf,0xf6,0x4d,0xc,0x4f,0x5f,0x86,0xb5,0x1e,0xce,0x5,0x4,0xc4, + 0xc8,0xbb,0x5b,0x90,0x6c,0x8a,0x72,0x7e,0x13,0xf3,0x59,0x9,0xe3,0x2,0x84,0x54, + 0x60,0x8c,0xa1,0x2c,0xb,0x14,0x45,0x51,0x87,0x10,0xae,0x37,0x4d,0x73,0xf5,0xf2, + 0xe5,0xcb,0x93,0x1f,0xff,0xf8,0xc7,0x74,0xa4,0x9,0xe9,0xf7,0xfb,0x6d,0x0,0x7f, + 0x92,0x24,0xc9,0xf3,0x9d,0x4e,0xa7,0xdf,0xe9,0x74,0x18,0x11,0xb1,0xf1,0xf8,0x10, + 0x37,0xf7,0xf7,0x0,0x5f,0xe2,0xa9,0x4f,0x5f,0xc0,0x5f,0xfe,0xd5,0x4b,0xe8,0x6d, + 0x3e,0x2,0xad,0x3d,0xac,0xb,0xb0,0x2e,0xc0,0x58,0x87,0x80,0x18,0xed,0xc1,0x79, + 0xf4,0x3a,0x12,0x8b,0xc9,0x15,0x1c,0x4e,0xa,0x38,0x2f,0x10,0x29,0x5,0x63,0x34, + 0xaa,0xba,0x86,0xb3,0x76,0x1e,0x42,0xf8,0xa5,0xd6,0xfa,0xca,0x5b,0x6f,0xbd,0x15, + 0x8e,0x74,0x51,0x35,0xc6,0x74,0x18,0x63,0xa7,0x18,0xf8,0x7a,0x9a,0xa6,0x9c,0x73, + 0xce,0xca,0xaa,0xc2,0xc1,0x78,0xc,0x11,0x4a,0x7c,0xe6,0xc9,0xb,0xf8,0xc6,0xb7, + 0xfe,0x16,0xaa,0xd5,0x87,0xd6,0xe,0xde,0x13,0x9c,0x23,0x78,0x1f,0x10,0x2,0x40, + 0x44,0x8,0x21,0x20,0xe9,0x7f,0x12,0xbb,0xe7,0x1b,0x18,0xfd,0x2f,0x98,0x16,0x13, + 0xcc,0x58,0x0,0x11,0x21,0x8a,0xa2,0x8e,0xd1,0xfa,0xbc,0x31,0x66,0xd7,0x39,0x27, + 0x1,0xd8,0x23,0x5b,0x43,0xce,0x9c,0x39,0xc3,0x89,0x68,0xcb,0x39,0x37,0x20,0x4, + 0x49,0x44,0xac,0xaa,0x6b,0xcc,0x66,0x73,0xc0,0xd7,0x78,0xf4,0x13,0x5b,0x78,0xe1, + 0xcf,0xfe,0x6,0x5c,0x75,0xd1,0x34,0xe,0xc6,0x6,0x58,0xeb,0x61,0xdd,0x52,0x32, + 0xce,0x7b,0x78,0xef,0x11,0x42,0x80,0x73,0xe,0x3e,0xfa,0x18,0xfa,0x9b,0x3b,0x48, + 0x64,0x81,0xc9,0x64,0xc,0x6d,0x2c,0xa2,0x28,0x52,0x0,0x76,0xb5,0xd6,0x27,0x67, + 0xb3,0x59,0x74,0xa4,0x8b,0xea,0xe6,0xe6,0x66,0x9b,0x88,0x76,0xac,0xb5,0x3d,0xef, + 0x1d,0x8c,0xb5,0x98,0x4c,0xb,0xcc,0x66,0x13,0xf4,0xdb,0xc0,0x33,0x9f,0xfb,0x22, + 0x54,0xb2,0x89,0xa6,0xb1,0x68,0x1a,0x87,0x46,0x3b,0x68,0xe3,0x60,0x8c,0x87,0xb5, + 0x6e,0x49,0x82,0x77,0x70,0xce,0xc2,0x58,0x8b,0xba,0xd1,0x98,0xb9,0x6d,0x8,0x99, + 0xc0,0x34,0x5,0xb4,0x71,0x90,0x52,0x81,0x88,0xba,0xce,0xb9,0xd,0x6b,0x6d,0xe7, + 0x48,0x13,0xc2,0x18,0xeb,0x79,0xef,0x4f,0x78,0xef,0x73,0x6b,0x1d,0xb7,0xc6,0x62, + 0xbe,0x28,0x51,0x17,0x73,0xc,0x7a,0x11,0x4e,0x9d,0xff,0x2,0xaa,0xda,0xa1,0xaa, + 0x1d,0xea,0xc6,0xdd,0x26,0xe5,0x56,0x96,0x78,0x77,0x87,0x8c,0x46,0x1b,0x94,0x55, + 0x8d,0xbd,0x9,0xe0,0x83,0x40,0xf0,0x76,0x59,0x63,0x96,0xd9,0x23,0xad,0xb5,0x6b, + 0x44,0xb4,0x71,0xf1,0xe2,0x45,0x7e,0x64,0x6b,0x48,0x5d,0xd7,0xb9,0xb5,0x76,0xd, + 0x40,0x6a,0xad,0x65,0xce,0x39,0x34,0x5a,0xc3,0x68,0xd,0xc5,0x9,0x75,0x3,0x58, + 0xbb,0x94,0x3c,0x11,0x10,0x28,0xc0,0x39,0xf,0xe7,0x1c,0xac,0x73,0xb0,0xce,0x40, + 0x1b,0x83,0xba,0xae,0x51,0x96,0x35,0xe6,0x8b,0xa,0x8b,0x45,0x81,0x54,0x18,0x38, + 0xef,0x0,0x6b,0x61,0xad,0x80,0x73,0x8e,0x39,0xe7,0x72,0xc6,0xd8,0x6,0x11,0x45, + 0xf7,0xda,0xa4,0xc9,0x7b,0x58,0x50,0x13,0xef,0x7d,0xe,0x20,0xf2,0xde,0xc3,0x3a, + 0x7,0x67,0x97,0x77,0x5c,0x37,0x6,0x8d,0xb6,0x30,0x46,0x83,0x31,0x6,0x10,0xe0, + 0x29,0xc0,0x7b,0x7f,0x97,0x4c,0x34,0xea,0xa6,0xc6,0xa2,0xac,0x31,0x9d,0x17,0x98, + 0xce,0x4a,0x98,0xa6,0x82,0xe1,0xd,0x8c,0xb1,0x80,0x72,0xb0,0xc6,0xc0,0x5a,0x4b, + 0xce,0xb9,0x8c,0x73,0x3e,0xd0,0x5a,0xb7,0xee,0x35,0x21,0xf7,0x2c,0xe5,0xb4,0xd6, + 0xca,0x39,0x97,0x10,0x51,0x44,0xab,0xc2,0x18,0x82,0x87,0xb5,0x1e,0x7,0xa3,0x31, + 0xc6,0x6f,0xff,0x33,0x9c,0x77,0x30,0xd6,0xc0,0x58,0x7d,0x27,0x4c,0x83,0xc6,0xd4, + 0x28,0xeb,0x1a,0xf3,0xa2,0xc2,0x78,0x32,0xc7,0xfe,0x68,0x82,0xe9,0x64,0x8e,0xed, + 0xe4,0x26,0x48,0x1f,0x42,0x9b,0x0,0x50,0x80,0xb5,0x16,0xd6,0x5a,0x66,0xad,0xcd, + 0x8c,0x31,0xbd,0xaa,0xaa,0xb2,0x23,0x2b,0x19,0x63,0xc,0xbf,0x45,0xb0,0xb1,0x16, + 0xce,0x1a,0x28,0x25,0xc0,0xa5,0xc2,0x8d,0x83,0x2,0xaf,0xff,0xf0,0xfb,0xb8,0xb0, + 0xfe,0x4,0x0,0x20,0x78,0xf,0x4f,0x1e,0xde,0x79,0x18,0x6b,0x50,0x6b,0x83,0xa2, + 0xa8,0x70,0x38,0x5d,0x60,0x74,0x30,0xc5,0xde,0xde,0x21,0x66,0xb3,0x2,0x6b,0xf1, + 0x18,0x8b,0xd2,0x80,0x89,0x1c,0x52,0x8,0x38,0xe7,0x60,0x8c,0x81,0x73,0x2e,0x2, + 0x90,0x33,0xc6,0xd4,0x91,0x25,0x24,0x84,0x60,0x57,0xe1,0xb5,0xd6,0x70,0xce,0x21, + 0x8d,0x63,0x98,0xb4,0x45,0xfb,0xb3,0x9a,0xfd,0xfc,0xf5,0x6b,0x38,0xf5,0x3b,0x6f, + 0x80,0x92,0x21,0x2,0x2d,0xdb,0xab,0x75,0xe,0x75,0xad,0xb1,0xa8,0x1a,0xcc,0xa6, + 0xb,0x8c,0xf,0x67,0xd8,0x1f,0x4d,0x70,0x30,0x9a,0x62,0x18,0xed,0xa1,0x9a,0x8d, + 0x71,0x73,0xa,0xb4,0xd7,0x32,0x28,0x25,0x50,0x95,0xd,0x9c,0x73,0xe4,0x9c,0x13, + 0x0,0x84,0x10,0x42,0x1c,0x65,0x42,0x1a,0x6b,0x6d,0x1,0xc0,0x68,0xad,0x61,0xad, + 0x45,0x9a,0xa6,0x88,0xa2,0x8,0x37,0x35,0x70,0xe5,0xca,0x35,0x7a,0xe7,0x7,0xff, + 0xc4,0xc4,0xd9,0x2f,0x81,0xad,0x8c,0x96,0xb6,0xe,0x55,0xd5,0x60,0xbe,0x28,0x31, + 0x9d,0xce,0x31,0x3e,0x9c,0x61,0x32,0x29,0x50,0xd7,0x1a,0x67,0xd8,0x4d,0xec,0x4f, + 0x27,0x98,0xeb,0x36,0x7a,0x52,0x80,0x31,0xc0,0xb9,0xdb,0x92,0xc1,0x6a,0x27,0x7c, + 0x74,0xb7,0xff,0xd6,0xda,0xb9,0xb5,0x76,0x9f,0x88,0xa,0x63,0xc,0x79,0xef,0x97, + 0x45,0x8a,0x73,0xc6,0x85,0xc0,0xc1,0x5c,0xb3,0x37,0x7e,0xfa,0xdf,0x88,0xdd,0x69, + 0x68,0x96,0x83,0x11,0xc1,0x5,0x8f,0xa6,0x31,0xa8,0xaa,0x1a,0xf3,0x79,0x81,0xf9, + 0xbc,0x84,0x36,0x16,0x5b,0x69,0x8d,0x50,0xec,0xf9,0x71,0xe9,0x85,0x88,0x4,0xc0, + 0x0,0xf2,0xcb,0xd6,0xec,0xbd,0x87,0x73,0xce,0x31,0xc6,0x6a,0xce,0xb9,0x3d,0xb2, + 0x84,0x34,0x4d,0x73,0xe0,0xbd,0x7f,0x9b,0x31,0x76,0xe0,0xbd,0x27,0xef,0xfd,0xb2, + 0xcd,0x52,0x40,0x96,0xc4,0x28,0x1a,0x85,0x37,0x7f,0x79,0x13,0xf,0x77,0xfe,0xb, + 0x7,0xea,0x53,0xa8,0x6b,0xb,0xeb,0xc,0x8c,0x73,0xb0,0xc6,0x2e,0xc3,0x7a,0x8, + 0xc1,0xd1,0x13,0x63,0x1c,0x1c,0xcc,0x44,0x1d,0x12,0x64,0x49,0xc,0x86,0x65,0x91, + 0x76,0x4b,0x32,0x10,0x9c,0x3f,0x24,0xc6,0xe,0x94,0x62,0xc5,0x91,0x35,0x66,0x65, + 0x59,0x96,0x5a,0xeb,0x37,0x88,0x68,0xcf,0x5a,0x8b,0xba,0xae,0x50,0x55,0x25,0x74, + 0xd3,0x20,0x4,0x47,0xb,0x43,0xfe,0xca,0x9c,0xa1,0x98,0x5c,0xc1,0xe9,0x7e,0x4, + 0xce,0x38,0x26,0xd3,0x39,0xe,0x46,0x87,0x18,0x8f,0x27,0x68,0x1a,0x8b,0x56,0x2b, + 0xc7,0xa7,0x76,0x18,0xa4,0xbd,0x81,0x37,0x27,0xf0,0x85,0x63,0xb5,0xe0,0x0,0x42, + 0x40,0xa3,0x35,0xea,0xba,0x86,0xb5,0x16,0x84,0xb0,0x9f,0x8,0x7f,0x2d,0x38,0x33, + 0x3f,0xd2,0x9b,0x3b,0x22,0xda,0x77,0x3e,0xfc,0xa4,0x6c,0x9a,0xf1,0xfe,0x78,0x32, + 0x2c,0xb5,0x1,0x8,0xa8,0xaa,0x8a,0x55,0x55,0xc1,0x79,0x2c,0x90,0xb8,0x1a,0x8f, + 0x9e,0xdd,0x0,0x32,0xc0,0x93,0xc3,0x6c,0x5e,0xc0,0x39,0x8f,0x76,0x2b,0xc7,0x70, + 0xb8,0x89,0xdd,0xec,0x17,0x78,0xe7,0x5a,0x85,0xa2,0x69,0xb8,0x13,0x41,0x95,0x55, + 0xa,0xce,0x39,0x9a,0x46,0x63,0x7c,0x38,0x45,0xd5,0xe8,0x29,0x82,0x7f,0xf7,0x4c, + 0x27,0x7d,0xf7,0xe5,0x77,0xe7,0xe6,0xc8,0x12,0x32,0xc4,0xb0,0xf5,0xc8,0x67,0x1f, + 0x7f,0x38,0x70,0xdd,0x9e,0x15,0xc5,0xcf,0x1a,0xe7,0xa7,0x9e,0xb1,0xdc,0x91,0xc9, + 0x9a,0x5a,0xb7,0x77,0x3a,0x5e,0x3e,0xb1,0x2e,0xf0,0xe8,0xd3,0xbf,0x8f,0xd3,0x8f, + 0x5f,0x42,0x3c,0x2c,0xb1,0xb1,0x3e,0x40,0x51,0x56,0x0,0x71,0xa4,0x69,0x8a,0x34, + 0x8b,0x50,0xd4,0x5d,0xf4,0xf6,0x5f,0xc5,0xd3,0xb3,0x39,0x7b,0x79,0xd4,0x88,0x9b, + 0x93,0x89,0x3f,0xd0,0xda,0x70,0xa0,0x20,0x16,0xe6,0x69,0x2b,0xbb,0x9a,0xc8,0xb6, + 0x89,0xf3,0x76,0x2,0xdc,0xf3,0x4,0xb9,0x27,0xf3,0x10,0x7e,0xe9,0xec,0xa5,0xce, + 0xce,0xe3,0x3b,0x4f,0x6e,0x9e,0xee,0xbf,0xb0,0x73,0xe6,0xc4,0x97,0x86,0x9b,0xf9, + 0x63,0x11,0x99,0xcd,0x88,0x6c,0xbb,0xcd,0x7d,0xba,0x4d,0xb5,0x78,0xf4,0x64,0x8c, + 0xab,0xbb,0x27,0x91,0xd,0x1f,0x42,0x9e,0xb7,0x91,0xb7,0x32,0xf4,0xfb,0x1d,0x6c, + 0x6e,0x76,0x71,0xf2,0xc4,0x6,0xd6,0xd7,0x5b,0x10,0xb2,0xc6,0xe8,0xf0,0xd,0xfc, + 0x74,0xfa,0x2e,0x4e,0xa8,0x5,0xce,0x90,0x67,0x75,0x6d,0xb8,0xad,0x2a,0x15,0x7, + 0x9d,0xd,0xfa,0x59,0xa7,0xbf,0xb9,0xb6,0xb6,0x36,0x18,0x28,0x2f,0xa3,0xc5,0x89, + 0xf4,0xe4,0xfe,0xf5,0xc9,0xb9,0xa,0xb8,0x12,0x8e,0xc,0x21,0x5b,0x5b,0x1f,0x5f, + 0x5f,0xdb,0xec,0xfc,0xc1,0xe0,0x44,0xe7,0x6b,0xc3,0xb3,0x83,0xcf,0xef,0x9e,0x3f, + 0x75,0xe1,0xa9,0xe7,0x2e,0x27,0x4f,0x6d,0xb7,0xf9,0xb9,0xc5,0x3e,0xff,0xdd,0xf3, + 0x3b,0x6c,0xe7,0x2b,0xcf,0xe3,0xa7,0xba,0xc2,0x8d,0xfd,0x3d,0xcc,0x8b,0x19,0x8a, + 0x6a,0x86,0xa2,0x9a,0xa0,0x6a,0xa6,0x28,0xea,0x11,0x16,0xd5,0x8,0x7,0x93,0x2b, + 0xf8,0xe5,0xf5,0x9f,0xe0,0xad,0xab,0xaf,0xe1,0xfa,0xde,0xdb,0xb8,0x29,0x38,0xe2, + 0x27,0x1e,0xc1,0xf3,0xbd,0x8,0x9f,0xa6,0x2,0x97,0x7a,0x92,0x7d,0x62,0x77,0xc0, + 0xd7,0x76,0x87,0xa9,0x6b,0x25,0x3,0x4f,0xe8,0x1a,0x6b,0x58,0x22,0x26,0x93,0xe9, + 0x62,0x3c,0x3e,0x1a,0x92,0xf9,0xfa,0xd7,0xc5,0xf6,0x9b,0xbf,0xf8,0x78,0xde,0xcd, + 0x5e,0x68,0xf5,0xb3,0x2f,0xf5,0xb6,0xf3,0x41,0x77,0x3b,0x43,0x1d,0x2a,0xe0,0xfc, + 0x39,0xc,0x2e,0x3c,0x2,0x30,0x86,0xc5,0xf5,0x6b,0xd8,0x3a,0x71,0x2,0xe3,0xe9, + 0x21,0x46,0xd3,0xeb,0x98,0x2e,0xc6,0x68,0xa5,0x1d,0x64,0x49,0x1b,0x42,0x48,0x0, + 0xc,0xda,0x54,0x28,0xaa,0x19,0xea,0x66,0x81,0x40,0x1e,0xbd,0xee,0x0,0x59,0xd6, + 0xc2,0xde,0xe5,0x5d,0xe0,0xf2,0x25,0xb8,0xe0,0x11,0x7c,0x40,0x70,0x1,0xf9,0xb4, + 0xe9,0x18,0x13,0x3e,0xdb,0x2c,0xb4,0x6a,0xb5,0xe4,0xe8,0xd2,0xa5,0x4b,0x6f,0xbf, + 0xfc,0xf2,0xcb,0xf6,0xc3,0xce,0x10,0xfe,0x58,0xbb,0xbd,0xb1,0xd1,0x6f,0xff,0x5e, + 0xde,0xcb,0x5e,0x18,0xee,0xe,0xce,0x6e,0x7d,0x6c,0x80,0xb8,0x1d,0xc1,0x5a,0x83, + 0xb2,0xae,0x50,0xd6,0x5,0xca,0xba,0x40,0x63,0x1b,0x4,0x4,0x10,0x23,0x18,0x6b, + 0x50,0x94,0xb,0x14,0xe5,0x1c,0xf3,0xc5,0x18,0xb3,0xf9,0x18,0xd3,0xc5,0x1,0x16, + 0xc5,0x4,0xda,0x55,0x88,0x12,0x89,0xfe,0xfa,0x0,0x9b,0x9b,0x43,0x74,0x3a,0x3d, + 0x48,0x29,0x11,0x42,0xc0,0x2d,0x13,0xc6,0x4,0x3,0x18,0x10,0x6c,0x90,0xba,0x32, + 0x2d,0x22,0xba,0x6a,0xb4,0x79,0x67,0x34,0xda,0x28,0x81,0x91,0xff,0xd0,0x32,0x64, + 0x7b,0x7b,0x3b,0x49,0x83,0x38,0x9b,0x66,0xd1,0xe3,0xdd,0xf5,0x6c,0x3d,0xef,0xb7, + 0xc0,0x25,0x87,0xd6,0x1a,0x56,0x5b,0x38,0x17,0x6e,0x8f,0x4,0x1,0xa0,0x95,0xa7, + 0x38,0x7d,0x7a,0x7,0x91,0x8a,0xd0,0x6e,0xef,0xa3,0x2c,0xa,0x68,0xad,0x11,0x3c, + 0x81,0x31,0x40,0x8,0x81,0x28,0x8a,0xd0,0x6a,0xe7,0xe8,0x76,0x7b,0xc8,0xdb,0xed, + 0x5b,0x3,0x21,0x84,0xd5,0x3a,0x21,0x10,0x88,0x1,0xc4,0x8,0x32,0x15,0x50,0xb9, + 0xcc,0x9d,0xb1,0xe7,0x75,0x1d,0x1e,0xdf,0xce,0xfd,0xec,0x46,0x81,0x83,0xf,0x8d, + 0x90,0x34,0xa4,0x39,0x87,0x3f,0xcf,0x25,0xbf,0x90,0xb4,0xe3,0x5e,0xd6,0x8e,0xc1, + 0x38,0x83,0xd6,0x1a,0x75,0xd5,0x60,0x75,0x80,0xd,0x10,0x81,0x96,0x3,0x24,0x64, + 0x59,0x86,0xe1,0xd6,0x10,0x79,0x3b,0x87,0xd6,0xd,0xac,0x75,0xf0,0x3e,0x0,0x44, + 0x60,0x8c,0x81,0x73,0xe,0xa9,0x14,0x94,0x8a,0x20,0xa4,0x0,0x5,0x5a,0x92,0x10, + 0x2,0xbc,0xf,0x70,0xd6,0x2f,0x9d,0x13,0x11,0x44,0xc4,0xa1,0x12,0x19,0x37,0x92, + 0x3d,0x4,0xe0,0x31,0x8a,0xf4,0xeb,0xc0,0x87,0x48,0x48,0xd0,0x71,0xea,0x8c,0x3b, + 0xc7,0x40,0xe7,0x5a,0xdd,0x24,0xc9,0x3a,0x31,0x18,0x7,0xaa,0x59,0x85,0xc5,0xbc, + 0x80,0x52,0x11,0xf2,0x76,0xe,0xbe,0xda,0xa5,0xfa,0x5b,0x99,0xd2,0xca,0x90,0x65, + 0xe9,0xea,0xae,0xd3,0x6d,0x39,0x4,0xbf,0xfc,0xb9,0xb4,0xe6,0x1e,0x3e,0x10,0x2, + 0x5,0x10,0x96,0x84,0x3a,0xe3,0xd0,0x54,0x1a,0x4c,0x30,0xa8,0x58,0x41,0xc4,0x2, + 0x71,0x4b,0xb1,0x42,0xb0,0x53,0xde,0xfb,0x87,0x99,0xa0,0xfe,0x87,0xea,0x54,0x49, + 0xf8,0x14,0x84,0x13,0x4c,0xb0,0x13,0x79,0x27,0x93,0xad,0x4e,0x2,0xce,0x19,0xca, + 0xa2,0xc4,0xe1,0x78,0x82,0x62,0x51,0x20,0x84,0x80,0xd5,0xc9,0x1b,0x42,0x58,0x4a, + 0xe8,0xd6,0x5,0x2e,0x17,0x59,0x5,0x0,0xc2,0x9d,0xcf,0x8,0xb8,0x2d,0x15,0x22, + 0x6,0x22,0xc0,0x6a,0x87,0xba,0xa8,0xd1,0x94,0x1a,0x21,0x84,0x65,0x86,0xb4,0x14, + 0xe3,0x8a,0xaf,0x31,0xc6,0x76,0x38,0xb1,0xce,0x87,0x49,0x8,0xeb,0xac,0xc5,0x3d, + 0x99,0xca,0x41,0x9c,0x45,0x71,0x9c,0x29,0xa8,0x58,0x1,0x8c,0xa1,0x2c,0x2b,0x1c, + 0x8e,0xf,0x51,0x14,0x77,0x8,0xb9,0xcb,0xc9,0xc2,0xbb,0x0,0x67,0x97,0xfb,0x17, + 0x63,0xcc,0x32,0xac,0x85,0xb5,0xee,0xae,0x61,0xf3,0x72,0x3c,0x40,0xe1,0xe,0x45, + 0xce,0x39,0xe8,0xda,0xc0,0x68,0x83,0x10,0x8,0x8c,0x33,0x8,0xc9,0xa1,0x62,0x25, + 0x79,0xc4,0xd7,0x65,0x2a,0x86,0x1b,0x1b,0x1b,0xf9,0x87,0x42,0xc8,0x70,0x38,0xcc, + 0x5a,0x6b,0xad,0xed,0x7c,0x2d,0xed,0xa6,0xed,0x4,0x4c,0x70,0x84,0x40,0xf0,0xde, + 0xa3,0xaa,0x6a,0xcc,0xe6,0x73,0x54,0x55,0xb5,0x22,0xe4,0xe,0x19,0xbf,0x36,0xc2, + 0x7,0xbd,0x1f,0x56,0xb1,0x7c,0xed,0xbd,0x87,0xb3,0xe,0xce,0xae,0xda,0xef,0x8a, + 0x2c,0x1e,0x71,0xc8,0x44,0xe6,0x2a,0x95,0x3b,0x31,0xe2,0xad,0xdf,0xd6,0x5b,0xfd, + 0x26,0x84,0x88,0x34,0x4d,0xd7,0xe3,0x5c,0x9e,0xca,0x3a,0x49,0x27,0xcd,0x13,0x70, + 0xc1,0x61,0x8d,0x43,0x53,0x6b,0x94,0x65,0x89,0xaa,0x2c,0xa1,0xb5,0x59,0xc9,0x64, + 0x39,0x54,0xc6,0xfb,0x2e,0xf8,0x6e,0xfd,0xdd,0x1d,0xb4,0xfa,0xdd,0xd5,0xf7,0x56, + 0x1f,0x4,0x1f,0x60,0xb5,0x85,0x6d,0x2c,0x9c,0xb5,0xf0,0xce,0x23,0x10,0xc0,0x25, + 0x7,0x8f,0x79,0xc,0x45,0x43,0xe,0x3e,0x4,0x10,0x3f,0x68,0x42,0xa4,0x24,0xb9, + 0xcd,0x5,0x3b,0x95,0x66,0x71,0x9e,0xb4,0x62,0x70,0xc1,0x61,0x8c,0x45,0x55,0x55, + 0x68,0xea,0x66,0xb5,0x95,0x5f,0x86,0xf3,0x7e,0x55,0x3b,0x3e,0x20,0x4b,0xf0,0x41, + 0x99,0x1,0xfc,0xea,0x81,0x6d,0x20,0x20,0xb8,0x0,0x6b,0xdc,0x92,0x14,0xed,0xe0, + 0xac,0x3,0x81,0xc0,0x24,0x3,0x57,0x4c,0x81,0x51,0xdf,0x32,0xbb,0xd1,0x46,0x3b, + 0x7d,0xc0,0x5d,0x66,0x43,0x11,0x13,0x9b,0x8c,0xb3,0xed,0xa4,0x15,0xb5,0xd2,0xf6, + 0x92,0x10,0x67,0xed,0xad,0x79,0xe7,0x72,0x3c,0x68,0x2c,0x74,0xa3,0x91,0x24,0x6e, + 0x59,0x1c,0x6f,0xdf,0xfc,0xff,0x4d,0x2a,0xb7,0x8,0x59,0x65,0x46,0x58,0x1e,0x75, + 0x7a,0x17,0xe0,0xed,0x92,0xdc,0x5b,0xb2,0x1,0x8,0x42,0x71,0x88,0x88,0x2b,0xc6, + 0x69,0xe0,0x83,0xdf,0x70,0x70,0xe9,0x3,0xce,0x10,0x23,0xbd,0x75,0x5d,0x2,0xfa, + 0x51,0x16,0x27,0x69,0x1e,0x83,0xb,0x76,0xbb,0x75,0xde,0x92,0x86,0x31,0x6,0x55, + 0x59,0xc3,0x68,0xd,0x22,0x7a,0xbf,0x32,0xf0,0x6b,0xea,0xc9,0xaf,0xbc,0x1f,0x42, + 0x80,0x37,0xcb,0x8c,0x8,0x7e,0x65,0xd2,0x56,0x2d,0x1b,0xc,0x90,0x11,0x87,0x4c, + 0x44,0x4,0xc6,0x6,0xce,0xb9,0x8d,0x80,0x90,0x3c,0x60,0x42,0x82,0xf0,0x3e,0xe4, + 0x60,0xe8,0x46,0xa9,0x8c,0xe3,0x2c,0x82,0x90,0xfc,0x3d,0xf6,0x3a,0x10,0x41,0x6b, + 0x8d,0xaa,0xaa,0x60,0xac,0xf9,0x3f,0x4a,0xe6,0xee,0xcc,0x1,0xbc,0xb,0xab,0x89, + 0x9a,0x5f,0xfa,0x92,0xdb,0x5,0x77,0xb9,0x26,0x57,0x2,0x42,0x9,0x9,0x86,0x75, + 0x2,0xfb,0xad,0x9,0xf9,0xd,0x24,0x13,0x24,0x42,0xe8,0x83,0xd1,0x7a,0x9c,0xc5, + 0x2a,0x6d,0x27,0x60,0x9c,0xc1,0x58,0x3,0x19,0x49,0x44,0x71,0x84,0x28,0x56,0x60, + 0x9c,0xc1,0x87,0x65,0xb,0x25,0x22,0x2c,0x3d,0x37,0xbd,0x27,0xe8,0x7d,0x59,0x83, + 0xf7,0x4a,0x87,0x80,0xe0,0x9,0xce,0x78,0x84,0xe0,0xc1,0x5,0x87,0x8c,0x24,0x84, + 0xe4,0x60,0x82,0x81,0x9,0xe,0xa6,0x0,0x99,0x48,0xc1,0x18,0xeb,0x11,0xd1,0x90, + 0x40,0xf,0xba,0x86,0x4,0x15,0x78,0xd8,0xa,0x81,0x4e,0x48,0x25,0xa4,0x8a,0x25, + 0x42,0x20,0x70,0xc1,0x21,0xa4,0x40,0x92,0x25,0xc8,0xdb,0x2d,0x28,0x19,0x41,0x2a, + 0x75,0xdb,0x98,0x7d,0x50,0x97,0xf9,0x75,0x6d,0x18,0xb7,0x32,0x7,0x58,0xd9,0xf7, + 0xb0,0x94,0x47,0x2c,0xa1,0x62,0x5,0x2e,0x96,0x83,0x67,0xc6,0x1,0xc6,0x19,0xb8, + 0x60,0x20,0x50,0x1e,0x42,0xd8,0x4,0xf0,0x60,0x33,0xa4,0x1b,0x77,0x94,0x94,0x62, + 0xcb,0x6a,0xd7,0x39,0xbc,0x31,0x83,0x4a,0xae,0x23,0x4,0xa0,0xa9,0x6a,0x14,0x8b, + 0x12,0xd5,0x81,0x1,0xd5,0x2,0xaa,0x1d,0x23,0x92,0x31,0xa4,0x5a,0xde,0x51,0xa, + 0x0,0xb,0x7c,0xd5,0x4b,0xd9,0xea,0xa2,0xdf,0x5f,0x68,0xc1,0xb0,0xba,0x58,0x6, + 0xbe,0xda,0xdd,0x12,0x0,0xf2,0x4,0x57,0x7b,0x4,0xd3,0x80,0x13,0x43,0x53,0x68, + 0x70,0xce,0x0,0xe,0x54,0x93,0x1a,0xb6,0xb1,0x2,0xa0,0xa1,0x10,0x22,0x71,0xde, + 0x3d,0x40,0x42,0x86,0x5d,0x28,0x19,0xa8,0x98,0x95,0x78,0xfd,0x95,0x77,0xf0,0xf6, + 0xcf,0xae,0x2,0x44,0xcb,0x89,0xb8,0xb1,0x28,0x8b,0xa,0x84,0x0,0x79,0x32,0x81, + 0xdb,0x24,0x4,0x87,0x3b,0x96,0x7c,0xd5,0x42,0x6e,0xdb,0xf7,0xdb,0xd2,0xa1,0xf7, + 0xb8,0xd9,0x5b,0x9d,0x86,0x88,0x6e,0x4b,0x46,0x2f,0x34,0x16,0xfb,0x5,0x4c,0xbd, + 0x94,0x26,0x97,0x1c,0x8c,0xad,0xdc,0xaf,0xf5,0xd0,0xa5,0x1,0x18,0x48,0x26,0x12, + 0xba,0xd4,0xf,0x8e,0x90,0x5e,0x2f,0x29,0x9b,0xa6,0xf9,0x8f,0x72,0x51,0xa5,0xf3, + 0x49,0x9,0xab,0xef,0x9a,0xf3,0x6,0xc0,0x53,0x38,0x9f,0xa4,0xf1,0xb9,0x48,0xd4, + 0xd8,0x8b,0xf,0x61,0x1b,0x87,0xac,0x97,0x40,0xc5,0x12,0x9c,0x73,0x70,0xb9,0x3a, + 0x67,0xa1,0xa5,0xad,0x17,0x91,0x80,0x80,0x80,0xf7,0x1e,0xd6,0x10,0xc8,0x10,0xbc, + 0x73,0xb0,0xc6,0x43,0x97,0x1a,0xe5,0xac,0xc2,0xfc,0x60,0x81,0xf9,0xa8,0x40,0x31, + 0xae,0xd0,0x2c,0x9a,0x3d,0x80,0x7e,0x2,0x86,0xfa,0xb6,0x71,0x63,0xc,0x42,0x70, + 0x40,0xe2,0xe7,0x8a,0xab,0xbd,0x7,0x2a,0x19,0xe7,0xdc,0x54,0x4a,0xf9,0x8f,0x5a, + 0xeb,0x7f,0xad,0xa6,0x15,0xa6,0xb3,0x12,0xcb,0x3,0x56,0x5,0x28,0xa0,0xd3,0x4d, + 0xff,0xc2,0x39,0xfb,0xd7,0xd3,0x83,0x79,0xb7,0xac,0x2a,0x8c,0xae,0x26,0x68,0xad, + 0x65,0x68,0xf5,0x52,0x64,0xdd,0x14,0x49,0x2b,0x81,0x54,0x2,0x8c,0x3,0x42,0x49, + 0xc8,0x58,0x82,0x9,0xb6,0xda,0xcd,0x1a,0xe8,0x4a,0xc3,0x6a,0x8d,0x72,0xd1,0x60, + 0xb1,0xbf,0xc0,0x6c,0xb4,0x40,0x39,0xab,0xd0,0x94,0x6,0xd6,0x58,0x10,0xf,0xff, + 0xd6,0x54,0xee,0xef,0x3c,0xc2,0x6a,0xab,0x6f,0xa1,0xa0,0xa0,0x94,0x82,0x60,0xa2, + 0x54,0x89,0xba,0xf1,0xdb,0x10,0x72,0xcf,0x1f,0xfe,0xdf,0xdd,0xdd,0xbd,0xec,0x9c, + 0xfb,0x16,0x79,0x9c,0xb0,0xce,0x75,0x54,0x24,0xd6,0xe2,0x56,0xd4,0xce,0x3a,0x69, + 0x9a,0x75,0x92,0x38,0x4e,0xa3,0x84,0x9,0x9e,0x30,0x6,0x25,0x95,0x84,0x8c,0x15, + 0x98,0xc0,0x32,0xed,0x6b,0x3,0x53,0x9b,0xe0,0xac,0xb3,0x4d,0xa9,0x4d,0x39,0x29, + 0xcb,0x72,0x56,0x2d,0x74,0x65,0xa,0x2,0x66,0x60,0x6c,0x26,0x4,0xff,0x87,0xe9, + 0x74,0xfa,0xf7,0xb8,0x4f,0xb8,0xe7,0x4f,0x32,0x6f,0x6f,0x6f,0xbf,0x76,0xe3,0xc6, + 0x8d,0xa9,0x9,0x66,0x83,0xbc,0x3f,0x69,0x75,0xd8,0xf5,0xde,0x6f,0xeb,0xda,0xac, + 0x4d,0x47,0xf3,0xb6,0x14,0xbc,0x43,0xa0,0x2e,0x11,0xba,0x0,0xd6,0x8,0x68,0x3, + 0xc4,0x43,0x8,0x81,0x80,0x3,0x10,0xc6,0xe4,0x7d,0xed,0x5c,0x28,0x83,0x73,0x23, + 0xef,0xc2,0xcd,0x10,0x68,0x8f,0x9,0x76,0x8d,0x73,0x76,0x4d,0x4a,0xf9,0x73,0xdc, + 0x47,0xdc,0xcf,0x7f,0xf,0x61,0x79,0x9e,0xf,0x94,0x52,0x43,0xb2,0xd4,0xf7,0xc1, + 0xe7,0x4e,0xbb,0x8c,0x88,0x65,0x4,0xdf,0x22,0xb0,0x16,0x11,0xb5,0x39,0x90,0x6, + 0x2,0x5b,0xda,0x39,0x36,0x7,0xd8,0x3c,0x20,0x68,0x0,0x8d,0x14,0x6c,0x1a,0xa9, + 0x68,0x4a,0x82,0x26,0x59,0x96,0x8d,0x9e,0x7d,0xf6,0xd9,0xd1,0xf7,0xbe,0xf7,0x3d, + 0x8f,0x63,0x1c,0xe3,0x18,0xc7,0x38,0xc6,0x31,0x8e,0x71,0x8c,0x63,0x1c,0xe3,0xff, + 0x1d,0xfe,0x7,0x1f,0x92,0x69,0x26,0xfd,0xbe,0x16,0x61,0x0,0x0,0x0,0x0,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/away.png + 0x0,0x0,0xe,0xcd, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x14,0xc3,0x0,0x0,0x14,0xc3,0x1, + 0x15,0x70,0x4d,0x42,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd8,0xc,0x11, + 0xa,0x2d,0x4,0x35,0x3c,0xf2,0x39,0x0,0x0,0xe,0x4d,0x49,0x44,0x41,0x54,0x68, + 0xde,0xd5,0x9a,0x7b,0x70,0x54,0x55,0x9e,0xc7,0x3f,0xe7,0xde,0xbe,0xb7,0xbb,0xd3, + 0xaf,0x3c,0x20,0x9d,0x4,0x42,0x20,0x21,0x4,0x44,0xd1,0xc8,0xd3,0x17,0xa8,0xe0, + 0xe8,0x2c,0xb2,0xca,0xa8,0x65,0xd5,0xec,0x3a,0xae,0xb3,0x3e,0xb1,0xa6,0xc6,0xda, + 0xd5,0xd9,0xd5,0x5a,0x7c,0x61,0x29,0xa3,0xcc,0x4c,0x59,0xbb,0xa2,0xa0,0xb3,0xd6, + 0x4e,0x39,0x3b,0x65,0xd,0x8a,0xce,0xac,0x3b,0xeb,0x2a,0x82,0x20,0xc,0x6f,0x91, + 0x1,0x21,0x21,0xe1,0x61,0x20,0xe9,0x4e,0x20,0xe9,0xdc,0x7e,0xdf,0xbe,0xf7,0x9e, + 0xfd,0xa3,0x3b,0xb1,0xc3,0x43,0x8c,0x71,0x77,0x6a,0x6f,0xd5,0xaf,0x3a,0x7d,0xfa, + 0xde,0x73,0xbf,0xdf,0xdf,0xf9,0xbd,0xce,0xef,0x44,0x48,0x29,0xf9,0xff,0x7c,0xb9, + 0xbe,0xcd,0xc9,0x1e,0x78,0xb1,0xc2,0x57,0xe3,0xb6,0x6b,0x35,0x47,0xa9,0x1,0xaa, + 0x71,0x39,0xd5,0x0,0x58,0x4a,0x17,0xd0,0x95,0x53,0x9c,0xce,0xce,0xac,0xda,0xf1, + 0xf2,0x8f,0x4f,0x25,0xbf,0xad,0x77,0x8a,0x91,0xae,0xc0,0x73,0xab,0x42,0x75,0x2, + 0xe5,0x66,0x60,0x31,0x70,0x15,0xa0,0x9c,0xe7,0x11,0x7,0xd8,0x4,0xac,0x95,0x38, + 0xef,0x3c,0x7a,0x5f,0xff,0xb1,0x3f,0xb,0x81,0x65,0xaf,0x94,0x2e,0xd6,0x14,0x65, + 0x29,0x52,0x36,0x3,0xcc,0xa9,0x9,0xd9,0xe1,0xb2,0x2b,0xd4,0xd2,0xb2,0x4a,0xdc, + 0xde,0x32,0x74,0xdd,0x8f,0x4b,0xf,0xe6,0x17,0xc0,0x34,0x30,0xcd,0x4,0xd9,0x74, + 0x1f,0x7d,0xbd,0x51,0xa2,0x7d,0x9b,0xed,0x6d,0x5d,0x86,0x9a,0x47,0x20,0x3e,0xcd, + 0x39,0xce,0xb2,0xa5,0xf7,0xc7,0xd6,0xfe,0x9f,0x10,0x58,0xbe,0xba,0x7c,0x2e,0xf0, + 0x2,0x52,0xce,0x9a,0x5d,0x1d,0xb4,0xeb,0x6a,0xae,0x57,0xc3,0x63,0xa7,0xe2,0x72, + 0x8d,0xca,0xab,0xd7,0x4e,0x61,0xcb,0x2c,0xb6,0x99,0xc5,0xb2,0xcc,0xbc,0x9d,0xba, + 0x74,0x54,0xdd,0x8d,0x2a,0xdc,0x28,0x6a,0x49,0x9e,0x94,0x75,0x92,0xe8,0xf1,0xfd, + 0x1c,0xeb,0x7c,0x3f,0x4f,0x46,0x88,0xed,0xc0,0x23,0xff,0x78,0x6f,0xef,0xc6,0xff, + 0x15,0x2,0x2b,0x5f,0x19,0x15,0x32,0x84,0xfd,0x3a,0xb0,0xb8,0x29,0xec,0xb5,0x67, + 0x35,0xdc,0xa2,0x56,0xd4,0x4c,0x7,0x14,0xcc,0x4c,0x2f,0xe9,0x44,0x1f,0x46,0xda, + 0x20,0x67,0xdb,0x5f,0x39,0x8f,0xa6,0xaa,0xf8,0x4b,0x82,0xf8,0xbc,0x65,0xe8,0x9e, + 0x72,0x50,0x1c,0x4e,0x75,0xee,0x62,0x7b,0xfb,0x5b,0x76,0x4b,0x34,0xad,0x2,0x6b, + 0x83,0x52,0xbd,0x6b,0xc9,0xfd,0x27,0xfb,0xbf,0x35,0x2,0x2b,0x5e,0xad,0x68,0xb4, + 0xa4,0x7c,0xcf,0xa3,0xd0,0xb0,0xf0,0xc2,0x9b,0x94,0xda,0xfa,0x2b,0x0,0x85,0x64, + 0xf2,0x4,0x27,0xfb,0x4e,0x62,0x4b,0x89,0x65,0x99,0x24,0xd3,0xc7,0x30,0xad,0x36, + 0xe2,0xa9,0x2c,0x69,0xd3,0xa2,0x3b,0x99,0x5,0xa0,0xd2,0xe7,0xc6,0xab,0xbb,0xf0, + 0x79,0xdc,0x78,0xf5,0x9,0x94,0x78,0xeb,0xf3,0xab,0x22,0x4,0xa3,0xca,0x46,0xe1, + 0xb,0x8c,0x1,0xc7,0xa1,0xe3,0xf0,0x66,0xde,0xdb,0xf7,0xae,0x93,0x71,0x68,0x77, + 0x9,0xb1,0xf0,0xe1,0x7b,0x4e,0x1d,0x1a,0x31,0x81,0x15,0xab,0xcb,0x17,0x58,0x52, + 0xbe,0x35,0x26,0xe4,0xf6,0xfd,0xc5,0x8c,0xfb,0x54,0x5f,0x69,0x1d,0xe9,0x44,0xf, + 0x27,0x63,0x11,0x72,0xb6,0x4d,0x5f,0x7f,0x7,0x7d,0x89,0x5d,0x1c,0x8c,0xc6,0xb1, + 0x1c,0x98,0x50,0xee,0x62,0x4a,0xa9,0x17,0xe1,0x4c,0xc0,0x57,0x1a,0x6,0x1b,0x92, + 0xf1,0x28,0x52,0x39,0xc2,0x81,0x58,0x9a,0x23,0xbd,0x16,0x2e,0x5,0x26,0x87,0x3, + 0x94,0xf9,0xa7,0x53,0x16,0xaa,0x45,0x53,0x55,0x46,0x97,0x56,0xe3,0xf1,0x8f,0x22, + 0x19,0x3b,0xc6,0x7f,0xee,0x5c,0x65,0x9f,0xe8,0xcf,0x26,0x5d,0x42,0xdc,0xf2,0xf0, + 0xbd,0xbd,0x1f,0x7e,0x63,0x2,0x2b,0x56,0x97,0x2f,0xc8,0x48,0xf9,0x5f,0x57,0x54, + 0x7,0x99,0x3e,0xfd,0xc7,0xaa,0xe6,0xa,0x70,0xaa,0xf7,0x18,0x46,0xca,0xc0,0x30, + 0x7a,0x89,0x26,0x3e,0xe6,0x40,0x67,0x82,0x8b,0x47,0xe9,0x34,0x55,0xcf,0xa3,0x43, + 0x7b,0x92,0x8b,0x1a,0xc2,0x8,0x71,0xf6,0xf9,0xa4,0x84,0x7d,0xed,0xdd,0x8c,0xb3, + 0x9f,0xe2,0x60,0xc7,0x6,0xf6,0xf4,0x66,0x99,0x52,0xe3,0x27,0xec,0x9f,0x47,0x30, + 0x58,0x4e,0xc8,0x17,0xa2,0xa2,0xbc,0xe,0x33,0x67,0xb0,0x6b,0xd7,0x8b,0xf6,0xe6, + 0x2e,0x3,0x8f,0x10,0x37,0x7c,0x15,0x89,0x73,0x12,0x58,0xf1,0x6a,0x45,0xa3,0xe5, + 0x38,0x3b,0x67,0xd6,0x4,0x7d,0x97,0xcd,0x78,0x44,0x95,0x52,0xd0,0xdd,0x73,0x94, + 0xb4,0x95,0x26,0x1e,0x5f,0xc7,0xfa,0x96,0x8,0x93,0x42,0x1a,0x97,0x35,0xdf,0x83, + 0x56,0xf1,0x10,0xaa,0xaa,0xc,0x2b,0x18,0xd8,0x8e,0xc4,0xee,0xf9,0x5,0x5b,0x76, + 0xbf,0x46,0x4b,0xdc,0x64,0x6e,0x53,0x98,0x50,0xc9,0x75,0xf8,0x3c,0x5e,0x46,0x87, + 0x27,0x0,0xb0,0x75,0xfb,0x72,0x7b,0x47,0xa7,0x91,0x74,0x29,0xca,0x8c,0x73,0x99, + 0xd3,0x59,0x9,0xac,0x7c,0x65,0x54,0xc8,0x50,0x9c,0x1d,0x35,0x41,0x57,0xfd,0xcd, + 0x97,0x3f,0xac,0xaa,0x2e,0x1f,0x9d,0xd1,0x36,0x32,0xb9,0xc,0x27,0x4e,0xfe,0x81, + 0x3d,0x1d,0xfd,0xdc,0x3a,0x6d,0x3e,0xbe,0xfa,0x97,0xf0,0xe8,0x23,0xcb,0x85,0x19, + 0xd3,0x22,0x79,0xf8,0x41,0xd6,0xec,0x5d,0xc7,0x45,0x35,0x41,0x6a,0x2b,0xbf,0x8b, + 0xd7,0xed,0xa5,0xa6,0x72,0x22,0xb6,0x95,0xe4,0x9d,0x2d,0x2b,0xec,0x4e,0xc3,0x3a, + 0x1c,0x74,0x94,0x99,0x67,0x73,0xec,0xb3,0xaa,0xcd,0x10,0xf6,0xeb,0x42,0xc8,0x86, + 0x1b,0x9a,0xef,0x56,0x55,0x2d,0x44,0xb4,0xfb,0x8,0x99,0x5c,0x86,0xcf,0x8f,0xff, + 0x9e,0xf6,0xae,0x38,0x4b,0xbe,0xf3,0xb7,0x54,0x4c,0x5e,0x35,0x62,0xf0,0x0,0x1e, + 0xdd,0x45,0xc5,0xe4,0x55,0xdc,0x35,0x6f,0x9,0xfb,0x22,0x6,0x2d,0x1d,0xbf,0x23, + 0x9d,0x4d,0xd3,0xdd,0x73,0x14,0x55,0xb,0x71,0x43,0xf3,0xdd,0xaa,0x10,0xb2,0xa1, + 0x10,0x1,0x39,0x2f,0x81,0x42,0x9c,0x5f,0xbc,0x68,0xf2,0x42,0xc5,0x17,0xac,0xa3, + 0xb7,0xf7,0xb,0x32,0x76,0x5e,0xf3,0x27,0xfb,0xd2,0x4c,0x9a,0xf2,0x31,0x76,0xe9, + 0xa3,0x23,0x2,0x6d,0x59,0x16,0x96,0x65,0xd,0x19,0xd3,0xc3,0x7f,0xc7,0x25,0x53, + 0x36,0xd2,0xdd,0x9f,0xe5,0x44,0xe4,0xf,0xa4,0xad,0x34,0x7d,0xc6,0x31,0x7c,0xc1, + 0x3a,0x16,0x4d,0x5e,0xa8,0x0,0x8b,0xb,0xd8,0xce,0xbb,0x2,0x2f,0x4c,0x1c,0xed, + 0xb5,0xc7,0xd5,0xcf,0x22,0x93,0xe9,0x26,0x9e,0x89,0x13,0x8f,0xaf,0x63,0x4f,0x47, + 0x3f,0x77,0x5c,0x7b,0x17,0x33,0xa6,0x54,0x8f,0x8,0xfc,0xc6,0x4f,0x36,0x73,0xdb, + 0xf7,0x7f,0xc0,0xc2,0xc5,0xb7,0xf1,0x45,0x47,0xc7,0x90,0xdf,0x66,0x4d,0xad,0xe1, + 0x8e,0x6b,0xef,0xe2,0xb3,0x88,0x41,0x7f,0x62,0x1d,0x46,0x22,0x41,0x26,0xd3,0xcd, + 0xb8,0xfa,0x59,0x8c,0x1f,0xe5,0xb1,0x81,0x17,0xbe,0x92,0xc0,0xb2,0x57,0x4a,0x17, + 0x23,0xe5,0xac,0x4b,0xc7,0xdf,0xa8,0x4a,0x45,0xd0,0x1b,0xeb,0xc5,0x30,0x7a,0x59, + 0xdf,0x12,0xe1,0xd6,0x69,0xf3,0x47,0xac,0xf9,0x5d,0x9f,0x7e,0xca,0xb2,0xe7,0x9e, + 0xa7,0x2f,0x16,0x23,0x9b,0xcd,0xb2,0x6d,0xc7,0xae,0x33,0x9d,0xbb,0xf4,0x51,0x6e, + 0xb9,0xe0,0x5a,0x3e,0x3e,0x18,0x21,0x66,0x74,0xd3,0x1b,0xeb,0x5,0x55,0x61,0xd6, + 0x84,0x45,0x2a,0x52,0xce,0x5a,0xf6,0x4a,0xe9,0xe2,0x73,0x12,0xd0,0x14,0x65,0xe9, + 0xa5,0x63,0x2,0x76,0x65,0xf8,0x42,0x52,0xc6,0x49,0x72,0x8e,0x4d,0x34,0xf1,0x31, + 0x93,0x42,0x1a,0xbe,0xfa,0x97,0x46,0x4,0xfe,0x50,0x5b,0x3b,0xff,0xf4,0xe4,0x32, + 0x72,0xb9,0xdc,0xe0,0x58,0xb8,0x72,0xf4,0x59,0xef,0xd,0x36,0xbd,0xcc,0xe4,0x72, + 0x37,0x27,0xfa,0x3f,0x21,0xe7,0xd8,0x24,0x13,0xa7,0xa8,0xc,0x5f,0x48,0x73,0x8d, + 0xdf,0xd6,0x14,0x65,0xe9,0x59,0x9,0x3c,0xb7,0x2a,0x54,0x87,0x94,0xcd,0x63,0x43, + 0x73,0x55,0x29,0x25,0xb1,0x64,0x8c,0xbe,0xfe,0xe,0xe,0x74,0x26,0xb8,0xac,0xf9, + 0x9e,0x11,0x3b,0xec,0xbf,0xbf,0xb9,0x86,0x74,0x3a,0x33,0xf8,0xdd,0xeb,0xf5,0x30, + 0x67,0xd6,0xcc,0xb3,0xde,0xab,0x6b,0x2a,0xf3,0x2f,0xbd,0x83,0xf6,0x68,0x92,0x98, + 0x71,0x98,0x98,0xd1,0x8b,0x54,0x4,0x63,0xca,0xe7,0xa9,0x48,0xd9,0xfc,0xdc,0xaa, + 0x50,0xdd,0x19,0x4,0xa,0x25,0x31,0xe1,0xea,0x46,0xcc,0x9c,0x81,0x2d,0x25,0x7d, + 0x89,0x5d,0x5c,0x3c,0x4a,0x47,0xab,0x78,0x68,0x44,0xe0,0xcd,0x5c,0x8e,0xad,0xdb, + 0xb7,0xd,0x19,0x9b,0x33,0x6b,0x36,0xba,0xae,0x9f,0xfb,0x99,0xb2,0x7f,0x60,0x46, + 0xa5,0x97,0xee,0xf8,0x5e,0x6c,0x29,0x31,0x53,0x6,0xe1,0xea,0xc6,0x21,0x58,0x4f, + 0x37,0xa1,0xc5,0x97,0x86,0x3,0xb6,0xe6,0xd,0x91,0x4a,0xa5,0xb0,0x2c,0x93,0x83, + 0xd1,0x38,0x4d,0xd5,0xf3,0x86,0x9d,0xa4,0x4e,0xbf,0x76,0xee,0xda,0x3d,0x44,0xfb, + 0xc1,0x40,0x80,0x1f,0xde,0xf9,0x57,0x5f,0xf9,0x8c,0x22,0x4,0x4d,0x75,0xd7,0xd0, + 0x16,0x49,0x90,0xcb,0x65,0x49,0x65,0x52,0xb8,0xdd,0x21,0x9a,0x6b,0xfc,0x76,0x61, + 0xef,0xf1,0x25,0x81,0x7,0x5e,0xac,0xf0,0x1,0x57,0x95,0x5,0xa7,0xab,0xd8,0xe, + 0xa9,0x6c,0x86,0x64,0xfa,0x18,0x96,0x3,0x1d,0xda,0x93,0xdf,0x8,0x74,0x57,0x24, + 0xc2,0x86,0x8d,0x1b,0xd9,0xb0,0x71,0x23,0x1d,0x1d,0xc7,0x8b,0xcc,0x43,0xe3,0xd9, + 0xa7,0x1f,0xa7,0x76,0xec,0xd8,0xf3,0xce,0x71,0x5c,0x3c,0x81,0x25,0x25,0x99,0x6c, + 0x2b,0xa9,0x6c,0xa,0x6c,0x87,0x72,0xdf,0xc,0x15,0xb8,0xaa,0x80,0x39,0xbf,0xa5, + 0xac,0x71,0xdb,0xb5,0x20,0x94,0x90,0xbf,0xc,0xdb,0xc9,0x61,0x4b,0x1b,0xd3,0x6a, + 0x63,0x42,0xb9,0x8b,0x8b,0x1a,0xc2,0xc3,0x33,0x17,0xd3,0x64,0xe5,0xaa,0xd7,0x78, + 0xf7,0x3f,0xde,0x63,0x20,0xcb,0xb,0x21,0x8,0x4,0x2,0x94,0x95,0x96,0xf2,0xe0, + 0xfd,0x77,0x73,0xe1,0xd4,0xa9,0x5f,0x6b,0xae,0xc9,0xe3,0x2b,0x38,0x79,0x48,0x27, + 0x91,0x3e,0x4e,0xc0,0x7f,0x11,0xb6,0x93,0x23,0xe4,0x2f,0x3,0x50,0xf2,0x98,0x39, + 0xe8,0x2,0xd0,0x1c,0xa5,0x6,0x55,0xe2,0xf1,0xfa,0xb1,0x72,0xf9,0x4d,0x48,0x3c, + 0x95,0xcd,0x57,0x95,0x62,0x78,0x9a,0x1f,0x0,0x7f,0xeb,0xe2,0x9b,0xb9,0xfe,0xba, + 0xf9,0x0,0xbc,0xff,0xc1,0x3a,0xd6,0xac,0x7d,0x87,0xf9,0x57,0xcf,0x63,0xf6,0xcc, + 0x99,0xc3,0x9a,0xaf,0xb1,0xdc,0xc7,0xc1,0x54,0x96,0x6a,0xc0,0x76,0x72,0x78,0xbc, + 0x7e,0x6,0x31,0xf,0x10,0x0,0xaa,0x1,0x34,0xdd,0x87,0xe3,0xe4,0x33,0x64,0xda, + 0xb4,0x10,0xee,0xc6,0x61,0x9b,0xcd,0x0,0xf8,0x7,0xef,0xbf,0x67,0x70,0x7c,0x62, + 0x43,0x3d,0x0,0x6b,0xd6,0xbe,0xc3,0xed,0xb7,0x7d,0x8f,0xea,0xaa,0xaa,0xaf,0x3d, + 0x67,0xd6,0x6a,0x24,0x9e,0xfa,0x2c,0x9f,0x23,0x72,0x39,0x34,0xdd,0x47,0x31,0xe6, + 0xbc,0x77,0x16,0xba,0x7,0xba,0x5e,0x42,0xce,0xc9,0xef,0xa8,0xba,0x93,0xd9,0x7c, + 0x3d,0x3f,0x8c,0xab,0xa5,0xb5,0x15,0x29,0xe5,0xa0,0xe6,0x8b,0xaf,0xeb,0xaf,0x9b, + 0x8f,0x94,0x92,0x96,0xd6,0xd6,0x61,0xcd,0x19,0x8,0x86,0x88,0xa5,0xf3,0xb9,0xc3, + 0x92,0xe,0xba,0x5e,0x42,0x31,0xe6,0x21,0xe1,0xc5,0xb1,0x0,0xc5,0x29,0x4a,0x8b, + 0x7f,0xfe,0xbe,0x8f,0xa2,0x7c,0xd9,0xfb,0x91,0x52,0xe2,0x58,0x67,0x2b,0x25,0xf2, + 0x7d,0x1b,0xcc,0xac,0x81,0x52,0xb8,0xbd,0xd2,0xe7,0x26,0x19,0x8f,0xe,0xeb,0x65, + 0x4d,0x93,0x26,0x21,0x84,0xe0,0xfd,0xf,0xd6,0x9d,0xf1,0xdb,0xfb,0x1f,0xac,0x43, + 0x8,0x41,0xd3,0xa4,0x49,0xc3,0x9a,0xb3,0x3f,0xd6,0x8f,0xdf,0xab,0x15,0xc8,0x28, + 0x98,0x59,0x83,0x62,0xcc,0x3,0xe4,0xba,0x0,0x32,0xe9,0x4,0x7e,0x2d,0xbf,0x44, + 0x5e,0xdd,0x85,0x54,0x8e,0xc,0xeb,0x65,0xd5,0x55,0x55,0xdc,0x74,0xe3,0x42,0xd6, + 0xac,0x7d,0x67,0xd0,0x6c,0x8a,0x9d,0xf8,0xa6,0x1b,0x17,0xe,0xcb,0xfe,0x1,0x3c, + 0xde,0x56,0x2,0x66,0x3e,0xe1,0xa9,0x8,0x12,0xe9,0x4,0xc5,0x98,0x5d,0x0,0x39, + 0xc5,0xe9,0xd4,0x10,0xa4,0xb3,0x49,0x2,0x85,0xb0,0xe3,0xf3,0xb8,0x39,0x10,0x8b, + 0x31,0x56,0x32,0xac,0x48,0xb4,0xe4,0xbe,0xbb,0x7,0x1d,0xf6,0xb7,0x6f,0xaf,0x1d, + 0xc,0xa3,0x7e,0xbf,0x9f,0xdd,0x7b,0x3e,0x63,0xdb,0x8e,0x1d,0xc3,0x8a,0x44,0xad, + 0xd1,0x14,0x81,0x60,0x3e,0xf2,0x8,0x97,0x4a,0x3a,0x9b,0x6f,0xea,0xe5,0x14,0xa7, + 0x73,0x90,0x40,0x67,0x56,0xed,0xa8,0xf3,0x38,0x4e,0x2a,0x13,0x51,0x84,0x68,0x44, + 0x15,0x2,0xaf,0x3e,0x81,0x23,0xbd,0x3b,0xd8,0xd7,0xde,0xcd,0x45,0x13,0x2b,0xbf, + 0xf6,0xb,0x75,0x5d,0xe7,0xa1,0x1f,0x2d,0xe1,0xf6,0xdb,0xbe,0x37,0xe8,0xb0,0xd1, + 0x68,0xf,0x2f,0xbf,0xfa,0x4b,0xe2,0xf1,0x38,0x4b,0x9f,0x7c,0x86,0x9f,0x3f,0xff, + 0xec,0xd7,0xca,0x5,0x2d,0xc7,0x4e,0xb1,0xbf,0xcf,0x64,0x41,0x65,0x35,0xaa,0x10, + 0x8,0x47,0x90,0xca,0x44,0x0,0x9c,0xce,0xac,0xda,0x31,0xe8,0x3,0x85,0x5e,0xe5, + 0xa6,0xa8,0x71,0xc0,0x96,0x8a,0x44,0x57,0xf5,0x7c,0xeb,0x43,0x81,0x71,0xf6,0x53, + 0xdf,0xc8,0xf9,0xaa,0xab,0xaa,0xb8,0x7a,0xee,0x5c,0xae,0x9e,0x3b,0x97,0xda,0xda, + 0xb1,0x43,0xea,0xa2,0xc7,0x1e,0x7f,0x9a,0x8e,0xe3,0xc7,0xcf,0x3b,0xc7,0x58,0xfb, + 0x19,0x10,0x2,0xdd,0x7d,0x1,0xba,0xae,0x23,0x15,0x49,0xd4,0x38,0x60,0x3,0x9b, + 0x6,0xfa,0xab,0xc5,0x51,0x68,0xed,0xfe,0x9e,0x84,0x9a,0x49,0xc5,0xd0,0x3c,0x1a, + 0x2e,0x97,0xce,0xe4,0x70,0x80,0x83,0x1d,0x1b,0xb0,0x9d,0x91,0xf5,0x4f,0x67,0x4c, + 0xbf,0x14,0xaf,0xd7,0xf3,0xe5,0x96,0x35,0x1e,0xe7,0x5f,0xff,0xed,0xd7,0x5f,0xf9, + 0x8c,0x94,0xd0,0xf6,0xc5,0x87,0x4c,0xae,0xf2,0xe3,0xd2,0x3d,0x68,0xaa,0x9b,0x4c, + 0x2a,0xc6,0xfe,0x9e,0x84,0xa,0xac,0x3d,0xa3,0x98,0x93,0x38,0xef,0x0,0x74,0x75, + 0x1e,0x41,0x43,0x43,0x1,0xca,0xfc,0xd3,0xd9,0xd3,0x9b,0xc5,0xee,0xf9,0xc5,0x88, + 0x8,0xe8,0x9a,0xc6,0x9c,0x59,0xb3,0x87,0x8c,0x6d,0xdd,0xbe,0xd,0xd3,0x34,0xcf, + 0xdd,0xc1,0x33,0x56,0xb0,0xb5,0x3b,0x4d,0x65,0x60,0x1a,0x8a,0x2,0x9a,0xa2,0xd2, + 0x19,0x3d,0x3a,0x4,0xeb,0x10,0x2,0x85,0x2e,0xf1,0x9e,0xce,0xcc,0x4e,0xdb,0x71, + 0x1c,0x3c,0x9a,0x87,0xb2,0x50,0x2d,0x53,0x6a,0xfc,0x6c,0xd9,0xfd,0x1a,0x19,0xd3, + 0x1a,0x11,0x89,0xef,0xdf,0x7e,0xeb,0x90,0x55,0x48,0xa7,0x33,0x6c,0xdd,0xbe,0xe3, + 0x1c,0xe5,0xb7,0xcd,0xfa,0x5d,0xaf,0xd3,0x10,0xf6,0x51,0x1a,0xac,0xc7,0xa3,0x7a, + 0x70,0x1c,0x87,0x8e,0xc4,0x76,0x5b,0x85,0xbd,0x8f,0xdd,0x6f,0x44,0xce,0xdc,0xf, + 0x8,0xa1,0x67,0x92,0xe9,0x9f,0xb5,0x44,0x12,0x6a,0x57,0xf7,0x21,0x74,0xb7,0x7, + 0x55,0x8,0xc2,0xfe,0x79,0xb4,0xc4,0x4d,0x92,0x87,0x1f,0x1c,0x11,0x81,0xc6,0x89, + 0xd,0x3c,0xf3,0xe4,0x52,0x34,0x4d,0x1b,0x1c,0x8b,0x76,0xf7,0x9c,0xf5,0xde,0x78, + 0xfb,0x12,0x3e,0x3f,0x99,0x65,0x4c,0xe8,0x4a,0x54,0x21,0xd0,0xdd,0x1e,0x3a,0xa3, + 0x6d,0xb4,0x47,0x93,0x6a,0x6f,0x6f,0xe2,0x45,0xc0,0x2b,0x84,0xd0,0x6,0x9,0x8, + 0x21,0x14,0x40,0x7f,0xea,0xef,0xb3,0x1f,0x8,0xc7,0xf9,0x6c,0x5f,0xd7,0x47,0x8e, + 0x63,0x5b,0xb8,0xdd,0x5e,0x82,0xc1,0x72,0xe6,0x36,0x85,0x59,0xb3,0x77,0x1d,0x66, + 0xf4,0xe7,0x23,0x22,0x31,0xbd,0xb9,0x99,0xa5,0x8f,0xfe,0x84,0xb2,0xd2,0x52,0xdc, + 0x6e,0x37,0xb3,0x67,0x4e,0x3f,0xf3,0xc4,0xa5,0x77,0x5,0x6b,0xf6,0xae,0xe3,0xca, + 0xc6,0x30,0xa5,0xc1,0x4a,0xdc,0x6e,0x2f,0x8e,0x6d,0xb1,0x3f,0xb2,0xce,0x91,0x96, + 0xf3,0xa7,0xe5,0x8f,0x59,0xeb,0x1,0x37,0xe0,0x16,0x42,0x8,0x21,0xa5,0x44,0x8, + 0xe1,0x6,0x4a,0x0,0xdf,0x8f,0x1e,0x66,0x5e,0xcd,0xc4,0xd2,0x37,0xae,0x69,0x9c, + 0xc3,0x98,0xea,0xe9,0xa4,0xb3,0x69,0x4c,0xd3,0xe4,0x68,0xf4,0x77,0xec,0x8b,0x18, + 0x5c,0x32,0x65,0x23,0xb3,0xa6,0xd6,0x8c,0xb8,0xad,0x92,0x6f,0xbb,0xf,0xdd,0xa6, + 0xee,0x69,0x89,0xd0,0x72,0x70,0x1e,0xb5,0x21,0x1f,0x13,0xc6,0x2d,0x42,0x53,0xdd, + 0x78,0xdd,0x5e,0x4e,0x74,0xed,0x62,0xfd,0xa1,0xad,0x74,0xec,0x8e,0xdd,0xbd,0x72, + 0x35,0x9b,0x80,0x14,0x90,0x4,0x12,0x4a,0x91,0x29,0xa9,0x80,0xfa,0xcf,0x2b,0xd8, + 0x6d,0xa6,0x73,0x1b,0xd6,0xb7,0x6d,0x73,0x62,0x46,0x4,0x8f,0xe6,0xc1,0xe5,0x72, + 0x51,0x5b,0xf9,0x5d,0xea,0xcb,0xbc,0xb4,0xb5,0x5c,0x8d,0x1a,0x7b,0x6e,0x64,0xe7, + 0x5a,0x2e,0xd7,0x19,0xe0,0x5d,0xbd,0x2b,0x68,0x39,0x38,0xf,0x9f,0x47,0x67,0x6c, + 0xf5,0xd,0xa8,0x42,0xc3,0xa3,0x79,0x88,0x19,0x11,0xd6,0xb7,0x6d,0x93,0xd9,0x94, + 0xb9,0x69,0xe5,0x6a,0x3e,0x1b,0xc0,0x39,0x20,0xca,0xe0,0x96,0x38,0x2f,0x0,0xe2, + 0x37,0x3f,0x4b,0x3e,0x6d,0xe5,0xec,0xce,0x2d,0xad,0xef,0x3a,0x99,0x9c,0x81,0x57, + 0x77,0xa3,0xeb,0x3a,0x4d,0xb5,0x7f,0x49,0xfd,0x28,0x3f,0x2b,0xff,0xfb,0x97,0x9c, + 0xdc,0x77,0x2f,0x66,0x6e,0xe4,0xd5,0x9e,0x99,0xb3,0x39,0x75,0xf0,0x3e,0x5e,0xfa, + 0xf0,0x15,0x6a,0x43,0x3e,0xa6,0x8d,0x5f,0x84,0xdb,0xed,0xc6,0xab,0xbb,0xc9,0xe4, + 0xc,0xb6,0xb4,0xbe,0xeb,0xd8,0x59,0xbb,0xeb,0x57,0x3f,0x4d,0x2d,0x3f,0x1d,0x67, + 0xb1,0x13,0x3b,0xc5,0x72,0xf0,0x38,0xc6,0xe6,0xdf,0x1a,0x3f,0x89,0x25,0x73,0x99, + 0x4f,0x8f,0xbc,0xed,0x38,0x8e,0x85,0x47,0x2f,0xc1,0xad,0xb9,0xa9,0x1b,0xbb,0x88, + 0x79,0x93,0xab,0x78,0xeb,0xf3,0x8f,0xf8,0xe3,0xc7,0xd3,0x70,0xf5,0x2e,0xc7,0xf9, + 0x6,0xc7,0x54,0x52,0x82,0xab,0x7f,0x5,0xdb,0x36,0x4d,0x1b,0xb4,0xf9,0x9,0xe3, + 0x16,0xe1,0xd1,0x4b,0xf0,0xe8,0x25,0x38,0x8e,0xc5,0xa7,0x47,0xde,0x76,0x62,0xc9, + 0x5c,0xf6,0xa3,0xdf,0x18,0x8f,0x1f,0x8e,0x12,0x3f,0x1d,0x27,0x60,0xf,0xf8,0x80, + 0x56,0xf0,0x81,0x12,0xc0,0x37,0xf0,0xf9,0xc3,0x3b,0xb9,0x72,0xec,0xec,0xd2,0xe5, + 0x53,0xab,0x4a,0xb8,0x64,0xfc,0x62,0x45,0xd7,0xfd,0xe4,0xcc,0x2c,0x39,0xc7,0x26, + 0x66,0x74,0x73,0xa2,0xff,0x13,0xda,0xa3,0x49,0x66,0x54,0x7a,0x69,0xaa,0xbb,0x86, + 0xe3,0xe2,0x9,0x26,0x8f,0xaf,0x38,0x6f,0x79,0x30,0xd6,0x7e,0x86,0xb6,0x2f,0x3e, + 0x64,0x6b,0x77,0x9a,0x86,0xb0,0x8f,0x31,0xa1,0x2b,0x29,0xd,0x56,0xa2,0x29,0x2a, + 0x9a,0xee,0xc6,0x34,0x13,0xec,0x39,0xba,0xd6,0xd9,0x1f,0x49,0x71,0x78,0x73,0xec, + 0x89,0x37,0x7e,0xcd,0x1f,0x8b,0xec,0xbe,0xf8,0xd3,0x10,0x45,0xfb,0x56,0xef,0x69, + 0x24,0xbc,0x40,0xc9,0xdf,0xdc,0xc9,0x95,0x53,0xe6,0x84,0x1e,0xf7,0x97,0xb8,0x3c, + 0x57,0x34,0x2c,0x52,0x42,0x81,0xd1,0x58,0xd2,0xc1,0xb2,0x4c,0x1c,0x20,0x66,0x1c, + 0xa6,0x3b,0xbe,0x97,0xb6,0x48,0x2,0x4b,0x4a,0xa6,0x96,0xe9,0x34,0x96,0xfb,0xc8, + 0x5a,0x8d,0x4,0x82,0x21,0x14,0x25,0x5f,0x12,0x7b,0xbc,0xad,0xb4,0x46,0x53,0xec, + 0xef,0x33,0x41,0x8,0x26,0x57,0xf9,0xa9,0xc,0x4c,0xa3,0x34,0x58,0x8f,0x52,0x38, + 0x47,0x73,0x9,0x85,0xfe,0x78,0xf,0x9b,0xdb,0x7f,0xef,0x24,0x52,0x56,0xf6,0x4f, + 0x1b,0xfa,0x97,0xbf,0xf1,0xe6,0x20,0xf8,0x14,0x90,0x2e,0x6,0x2f,0xa5,0xcc,0x15, + 0x13,0x10,0x45,0x4,0x4a,0x6,0x8,0x0,0xde,0x5,0x57,0x31,0xf1,0xea,0xdb,0x82, + 0xcf,0xaa,0x6e,0xb5,0x7a,0xc1,0xa4,0xb,0x45,0x79,0xe9,0xc,0x84,0x50,0xb1,0xa4, + 0x35,0x78,0x26,0x96,0xcb,0x65,0xc9,0x64,0x5b,0x49,0xa4,0x8f,0x13,0x37,0xb3,0xc4, + 0x53,0x26,0xb1,0x74,0xe,0x17,0xe0,0xf7,0x6a,0x4,0x4a,0x74,0x2,0xba,0x46,0xc8, + 0x53,0x8d,0xee,0xbe,0x0,0x97,0xee,0x1,0x7,0x34,0x4d,0xc5,0x25,0x5c,0x48,0x69, + 0xd3,0x1b,0xdb,0xc9,0x87,0xad,0xfb,0xa4,0x63,0x5a,0x91,0xf7,0xdf,0x88,0x3f,0xb5, + 0x71,0x1b,0xed,0x5,0xd0,0xe9,0x22,0x2,0x29,0xc0,0x0,0xb2,0x52,0xca,0xa1,0xe7, + 0x3,0x45,0x24,0xbc,0xa7,0x4b,0x7d,0x98,0x8a,0xbf,0x7e,0xc4,0xf3,0x98,0xd7,0xef, + 0xb9,0xbc,0xcc,0xef,0x72,0xa6,0x55,0x5d,0xae,0x54,0x96,0x4f,0x44,0x8,0x81,0x8d, + 0xc4,0x71,0x1c,0x6c,0xf9,0xf5,0x9c,0x5a,0x15,0x2a,0x8a,0xa2,0xa0,0x22,0xf2,0x5, + 0x5a,0xcf,0x11,0xe,0x75,0x6f,0x72,0xba,0xc,0x4b,0x31,0x13,0x99,0xad,0xaf,0x3f, + 0x9f,0x59,0x71,0xb4,0x9b,0x53,0x40,0xa6,0x88,0xc0,0x80,0x18,0x80,0x39,0xa8,0xf8, + 0xb3,0x1d,0x70,0x14,0xf2,0xc2,0x0,0x78,0x4f,0xb1,0xdc,0xf1,0x3,0x66,0x4e,0x9a, + 0x1e,0x58,0xe2,0x72,0xab,0x4d,0x75,0x15,0x5e,0x67,0x52,0xd5,0x4,0xc5,0xab,0x4f, + 0x45,0x77,0x7,0x8b,0x1c,0x54,0xe6,0x7d,0x4c,0xe,0x8d,0x17,0xa2,0x68,0x63,0x61, + 0x66,0xd,0xd2,0xe6,0x7e,0x5a,0x23,0x47,0x9c,0x63,0xa7,0xd2,0x8a,0xcc,0xda,0xad, + 0x9f,0x6f,0x89,0xbf,0xfa,0xc6,0x9b,0xec,0x4,0xb2,0x5,0xf0,0xc5,0x92,0x0,0x92, + 0x52,0x4a,0xe7,0x6b,0x1d,0x31,0x15,0x56,0xc3,0x53,0x20,0xe1,0x2e,0xfc,0xed,0x6, + 0x74,0xc0,0xfd,0xc0,0x43,0x2c,0xa8,0x6b,0x8,0xdc,0x25,0x35,0xb5,0x11,0x60,0xe2, + 0x68,0xaf,0xd3,0x10,0x2e,0x53,0xd2,0x99,0x26,0x74,0xbd,0x4,0xb7,0xcb,0x8b,0xa6, + 0x7b,0xf3,0xe6,0x65,0xa6,0xc9,0x5a,0x69,0x4c,0x33,0x85,0xd7,0xd3,0x42,0x7b,0xb4, + 0xcf,0x69,0xeb,0x49,0x2b,0x0,0x4e,0xce,0x6e,0x3b,0xd6,0x12,0xff,0xd5,0xea,0x7f, + 0xe1,0x23,0xc0,0x2c,0x80,0x37,0x8b,0x48,0xa4,0xb,0xe0,0xad,0xb3,0x2a,0xfb,0x7c, + 0xa7,0x94,0x5,0xad,0xb9,0xa,0x4,0x4a,0xa,0x4,0x74,0x40,0x3,0xb4,0xef,0x5c, + 0xc5,0xb8,0xe9,0xb,0xd4,0xf9,0x81,0xd2,0x92,0x6b,0xd0,0x5d,0x17,0xb,0x21,0x95, + 0xaf,0xe,0x9f,0xc2,0xc1,0xb4,0xf6,0xc6,0xfb,0x92,0x1b,0xb6,0x7d,0xe4,0xac,0xff, + 0x68,0x23,0x1d,0x40,0xae,0x48,0xcc,0xa2,0x48,0x93,0x3b,0x5d,0xe3,0x23,0x3a,0xa9, + 0x2f,0x22,0x33,0xb0,0x22,0x5a,0xe1,0xbb,0xb,0x50,0x27,0x35,0xe2,0x6f,0x9e,0xc9, + 0x98,0x51,0x55,0x84,0xfd,0x7e,0xa5,0xd2,0xe5,0x51,0x46,0x3,0xc2,0xca,0x38,0xdd, + 0x49,0xc3,0x39,0xd9,0x13,0x21,0xb2,0x6b,0x7,0x9d,0x6d,0xed,0x24,0xb,0x3d,0xf, + 0x1b,0xb0,0xa,0x92,0x2a,0x68,0x3c,0x27,0x87,0x1,0x6a,0x44,0xff,0xec,0x51,0x30, + 0x33,0x51,0x48,0x88,0xca,0xe9,0x69,0xbe,0x20,0x3,0x89,0xd2,0x2e,0x12,0xa7,0xe8, + 0xd3,0xc9,0xbb,0xcd,0x37,0xc3,0xf1,0x3f,0xa3,0x79,0x95,0xb7,0x5a,0x76,0xb0,0x2e, + 0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/themes.png + 0x0,0x0,0x1e,0xce, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x48,0x0,0x0,0x0,0x3e,0x8,0x6,0x0,0x0,0x0,0x88,0x96,0x5d,0x9b, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0x2, + 0xf,0x6,0x16,0xbd,0x9e,0x0,0xf6,0x0,0x0,0x1e,0x4e,0x49,0x44,0x41,0x54,0x78, + 0xda,0xed,0x7b,0x79,0x70,0x5d,0xd5,0x99,0xe7,0xef,0xdc,0x73,0xee,0xf6,0xf6,0x45, + 0x8b,0x25,0x4b,0xb2,0x2c,0xcb,0x2b,0xc2,0xd8,0x18,0x1a,0x1c,0xa0,0x3,0xd,0x84, + 0x49,0x9c,0x9,0x19,0x12,0x77,0x43,0xa7,0x92,0x6e,0x12,0xda,0xa9,0x49,0x87,0x9a, + 0x49,0x57,0x65,0xc8,0x74,0x15,0x5d,0x21,0xcb,0x54,0x66,0xd2,0xdd,0x33,0xd5,0x99, + 0x49,0x8a,0x0,0x49,0x27,0x53,0xd9,0x27,0x24,0xe5,0x9,0xa4,0x13,0xe8,0xe0,0x40, + 0xc,0x5e,0xc0,0x6,0x1b,0x64,0xcb,0xb2,0xb5,0x5a,0xd2,0xd3,0xd3,0xdb,0xdf,0x7d, + 0x77,0x3d,0xcb,0xfc,0x21,0xe9,0xc5,0x10,0x42,0x36,0x20,0x4c,0x57,0x7f,0x55,0xaf, + 0x9e,0xde,0xd5,0xad,0x7b,0xcf,0xf9,0xdd,0xdf,0xf7,0x9d,0xef,0xfb,0x9d,0xef,0x2, + 0xff,0x6a,0xff,0x6a,0xff,0x6a,0xff,0x52,0x6c,0xdf,0xbe,0xbd,0xbf,0xd1,0xf9,0x6f, + 0xba,0x7a,0xcf,0xef,0x7d,0xcc,0xe4,0xf5,0xb8,0xc9,0x87,0x3e,0xf4,0x1,0x0,0xc0, + 0xe7,0x3f,0xff,0x0,0x0,0xe0,0xef,0xfe,0xdb,0x15,0xe4,0xe4,0xb,0x9d,0xcc,0xf7, + 0x35,0x23,0x8c,0x88,0x1e,0x72,0x50,0x1e,0x11,0x8d,0x73,0x8a,0x30,0xc,0x22,0xcf, + 0x6b,0x6,0x4a,0x49,0xff,0xe9,0xa3,0x4f,0xa8,0xb,0xaf,0xf3,0xd8,0x63,0x8f,0x1, + 0x0,0xae,0xbb,0xee,0xba,0x97,0xbd,0xcf,0xd0,0xd0,0x10,0x26,0x26,0x26,0x5e,0xd5, + 0xb1,0xb3,0xdf,0xc7,0x53,0xa9,0x35,0x52,0x6,0x94,0xb6,0x11,0x20,0x3b,0x1,0x72, + 0x31,0x80,0xb5,0x20,0x24,0x1,0x42,0x28,0x88,0x76,0x8a,0x10,0xed,0xa7,0x0,0xf9, + 0x9,0x0,0xf7,0x5f,0x3c,0x83,0xfe,0xea,0xaf,0xfe,0x12,0x7f,0xff,0xf7,0xff,0xb, + 0x0,0xf0,0xb7,0x9f,0xfd,0x28,0x9b,0x98,0x2c,0xd,0x7a,0x5e,0x70,0x63,0x18,0xe9, + 0x3b,0x43,0x6e,0xc,0x73,0xc1,0x6,0xa4,0xd2,0xb3,0x52,0x31,0xb,0xd0,0x69,0xc4, + 0xa3,0x99,0x30,0xf4,0xff,0x9,0xa,0x9f,0xf8,0xc9,0x3f,0x7d,0xbe,0xf4,0x8d,0x6f, + 0x7c,0x3,0x0,0x70,0xdb,0x6d,0xb7,0xbd,0xe8,0xba,0xf7,0xdc,0x73,0xf,0x2b,0x14, + 0xa,0xda,0x17,0xbe,0xf0,0x5,0xe,0x40,0xae,0x1e,0xbf,0xe5,0x96,0x5b,0x0,0x0, + 0xf,0x3e,0xf8,0xe0,0x1b,0x8b,0x41,0xb3,0xb3,0xb3,0xe8,0xef,0xef,0x6f,0xff,0xfe, + 0xc0,0x7,0xfe,0xc,0xad,0x96,0xdb,0x6,0x7,0x0,0x66,0x66,0xca,0x43,0x11,0xc7, + 0x5b,0x85,0x34,0xff,0x52,0x28,0x7b,0xa3,0x20,0x9,0x28,0x1a,0x3,0x21,0x31,0xe8, + 0xd4,0x82,0xc6,0xc,0xd0,0xd0,0xdb,0xa8,0xe9,0xad,0x22,0x94,0x32,0x2f,0x4,0xe6, + 0xce,0x3b,0xef,0xc4,0x55,0x57,0x5d,0x45,0xd,0xc3,0x30,0x3a,0x3a,0x3a,0xf2,0x94, + 0xd2,0x7c,0x14,0x45,0xc6,0xa5,0x97,0x5e,0xea,0x1e,0x38,0x70,0xa0,0x5a,0xa9,0x54, + 0xaa,0x87,0xe,0x1d,0xf2,0x1f,0x7c,0xf0,0x41,0x5,0x0,0x97,0x5d,0x76,0x19,0x9e, + 0x7e,0xfa,0xe9,0xd7,0x1f,0x20,0xa5,0x14,0x8,0x21,0xbf,0xf2,0x9c,0x3b,0xee,0xf8, + 0xf3,0x17,0x1d,0xfb,0x9b,0xbf,0xf9,0x8f,0x3,0x8b,0x85,0xca,0x1f,0x47,0xa1,0xf6, + 0xde,0x90,0xa7,0xd7,0x85,0x32,0x7,0xae,0x92,0x0,0x14,0xa0,0x8,0x94,0x90,0x0, + 0x11,0x0,0xa1,0x9c,0x52,0x2b,0x5a,0xfe,0xc7,0xcf,0x4d,0xd7,0x75,0x8d,0x52,0xda, + 0x43,0x29,0xbd,0x9,0xc0,0xce,0x58,0x2c,0xd6,0x6f,0x9a,0xa6,0xae,0x94,0xa,0xa4, + 0x94,0xd3,0x8f,0x3d,0xf6,0xd8,0x23,0xb6,0x6d,0x1f,0xad,0x56,0xab,0xc5,0xdf,0x4b, + 0xc,0x9a,0x9d,0x18,0x5b,0xf6,0xc9,0x5f,0x2,0xce,0x32,0x7b,0x14,0x0,0xf2,0xa2, + 0x73,0x1e,0x3b,0xf0,0xd,0xfa,0xf0,0x43,0x4f,0x6d,0x2d,0x97,0x5a,0xff,0x4e,0xaa, + 0xf8,0xcd,0xa0,0xd6,0x26,0xd,0x79,0x50,0x95,0x0,0xa4,0x1,0x29,0x23,0x28,0x29, + 0xa0,0x94,0x84,0x94,0x12,0x4a,0x29,0x9,0xa2,0x9,0x8d,0xa8,0x17,0x1,0x34,0x32, + 0x32,0xd2,0xa9,0xeb,0xfa,0x95,0xc9,0x64,0xf2,0x8f,0x4d,0xd3,0x1c,0xd1,0x75,0x3d, + 0x61,0x59,0x16,0x5d,0xbb,0x76,0xad,0xa0,0x94,0x96,0xa,0x85,0x42,0x9f,0x52,0xca, + 0xfe,0xd6,0xb7,0xbe,0xf5,0x10,0x0,0xef,0xd5,0x60,0xcf,0xaf,0x5,0x90,0x52,0xa, + 0x7f,0xff,0x5f,0x3f,0x86,0xfe,0xa1,0xcd,0xab,0xbf,0x49,0xb9,0x30,0x49,0x4f,0x8d, + 0x9f,0x35,0x23,0xa1,0x5b,0x50,0x94,0x78,0x5e,0xa3,0x49,0x83,0xef,0x85,0xff,0xe6, + 0x16,0xa2,0x0,0x40,0x89,0x73,0xf8,0xca,0x17,0xbf,0x4b,0x1d,0x2f,0xd0,0x1e,0xf9, + 0xf1,0xf1,0x11,0x21,0xe8,0xbf,0x95,0xca,0xf8,0xb,0x8d,0xa5,0xfa,0x74,0x2d,0xf, + 0x8a,0x14,0xc,0x49,0xc0,0x45,0x4,0x1e,0x69,0x88,0xb8,0x84,0x94,0xaa,0x7d,0x7d, + 0x25,0x85,0xc6,0x95,0x6f,0xbc,0x64,0x1c,0x3,0x52,0xca,0x37,0x9b,0xa6,0x79,0x35, + 0x63,0x2c,0xa6,0x69,0x1a,0x18,0x63,0xc8,0xe5,0x72,0x88,0xc5,0x62,0xa9,0xa9,0xa9, + 0xa9,0x21,0xd7,0x75,0x5b,0x1b,0x37,0x6e,0x9c,0x9a,0x9b,0x9b,0x3b,0xe1,0xba,0x6e, + 0xf8,0x9a,0x3,0xa4,0x5e,0xfc,0x10,0xdb,0x6c,0x27,0xc0,0x66,0xcf,0x73,0xdf,0xdc, + 0x68,0x8a,0xe1,0x30,0x82,0x67,0xea,0xe2,0xa1,0xe1,0x75,0x6f,0x7a,0x16,0x78,0xc0, + 0x1,0x0,0x68,0x3d,0xac,0xe1,0xb4,0x86,0x16,0x96,0xaa,0xd7,0xb4,0x7c,0xf5,0x36, + 0x21,0x8d,0xab,0xd,0xab,0x37,0x4f,0xcd,0x3c,0x34,0x96,0x82,0x10,0xa,0x5c,0x8, + 0x44,0x9c,0x22,0x8a,0x38,0xa2,0x90,0x22,0x8a,0x4,0xb8,0x20,0x88,0x22,0x45,0x95, + 0x92,0x9,0xdf,0x6d,0xad,0x1,0x30,0xbb,0x1a,0x80,0x3d,0xcf,0x5b,0x6b,0xdb,0xf6, + 0xa6,0x30,0xc,0x29,0xa5,0x14,0x84,0x10,0x50,0x4a,0xa1,0xeb,0x3a,0x4c,0xd3,0xc4, + 0xe5,0x97,0x5f,0xe,0x21,0xc4,0xee,0x1d,0x3b,0x76,0x2c,0xb4,0x5a,0xad,0x73,0xaf, + 0x39,0x40,0x8d,0xc6,0xd2,0x2f,0xb8,0x53,0xd0,0x9a,0x1b,0x3c,0xfc,0xd4,0x4f,0xff, + 0x60,0x7e,0xa1,0x72,0x4d,0xa1,0x58,0xbf,0xd4,0xf5,0xb5,0xb5,0x42,0x32,0x9f,0x31, + 0xad,0x6b,0x7e,0xc9,0x3e,0x74,0xef,0x7d,0xf7,0x9d,0x6d,0x35,0x1a,0xe4,0xef,0xfe, + 0xf6,0xb,0x7d,0x9c,0x27,0x2e,0xd6,0x6d,0xfd,0x72,0x9b,0xe2,0x12,0x5,0x2b,0x63, + 0x27,0xba,0xa1,0x1b,0x29,0x80,0xe8,0x90,0x22,0x42,0x18,0x46,0x8,0xc2,0x10,0x61, + 0xc8,0x11,0x32,0xbe,0xfc,0xcd,0x15,0x0,0xa9,0x49,0xa9,0xd9,0x84,0x9a,0xb9,0xcd, + 0x3b,0xff,0x2c,0x36,0x76,0xfc,0x2b,0xe,0x0,0x22,0xa5,0xcc,0xb,0x21,0xba,0x85, + 0x10,0x44,0x8,0x1,0x21,0x4,0x38,0xe7,0x8,0xc3,0x10,0xba,0xae,0xa3,0xb7,0xb7, + 0x17,0x9b,0x37,0x6f,0x5e,0xdf,0x6c,0x36,0xaf,0xcf,0x64,0x32,0x87,0xef,0xbb,0xef, + 0xbe,0xc7,0x0,0xd4,0x5e,0x55,0x80,0x2e,0xc,0xc0,0xa9,0x54,0xe7,0x85,0x2c,0xa2, + 0x67,0xc7,0x47,0xfb,0x4f,0x8d,0xcd,0xbe,0x73,0x6e,0xa1,0x72,0xcb,0xf9,0xf9,0xea, + 0x9b,0xa,0x8b,0x1e,0x6d,0x5,0xc,0x94,0xd9,0x48,0x27,0xcd,0xd,0x49,0x42,0xaf, + 0xa4,0x5a,0xec,0x9c,0x44,0x40,0xfc,0xd0,0x1b,0x14,0x92,0x6c,0x30,0xec,0xbc,0x6d, + 0x27,0x93,0xd0,0xf5,0x24,0xc,0x2b,0x86,0x30,0xc,0x11,0x4,0x2e,0xc,0xc6,0xc0, + 0x28,0x83,0xae,0x6b,0x8,0x75,0x8e,0x50,0x8f,0x10,0xe8,0x14,0x7a,0xa4,0x40,0xa0, + 0xa0,0x94,0xb4,0xb9,0xb0,0x3b,0xb2,0x9d,0x3,0x31,0x0,0xe,0x0,0xa6,0x94,0x32, + 0xa5,0x94,0xa6,0x52,0x8a,0x0,0x80,0xa6,0x69,0xd0,0x34,0xd,0x4a,0x29,0x8,0x21, + 0x10,0x8b,0xc5,0xb0,0x7e,0xfd,0x7a,0xc6,0x18,0xbb,0x48,0x8,0x71,0xdb,0x9d,0x77, + 0xde,0x9,0xa5,0xd4,0x4f,0x6e,0xbc,0xf1,0xc6,0xc8,0xb6,0x6d,0xf1,0xc4,0x13,0x4f, + 0x88,0x6f,0x7e,0xf3,0x9b,0x62,0x7c,0x7c,0x5c,0xbd,0x74,0xce,0x8f,0x3e,0xfa,0x28, + 0x6e,0xbc,0xf1,0xc6,0xdf,0x3a,0x48,0x5b,0xf3,0xf3,0x67,0xaf,0x2f,0x2e,0x95,0xde, + 0xf5,0xc2,0xe8,0xd4,0x1f,0xce,0xcc,0x39,0xfd,0xa5,0x8a,0xa0,0x42,0x1a,0xd0,0xd, + 0x13,0x86,0xa9,0x43,0x2a,0x9d,0x11,0x2d,0x36,0x4c,0xd,0xbd,0x2f,0x96,0x4c,0xa2, + 0xe1,0x4c,0x99,0x8e,0xd3,0x30,0xfb,0xd6,0xd,0x22,0x97,0xef,0x81,0x4e,0xd,0xd4, + 0xeb,0x65,0x4c,0x4c,0x9d,0xc0,0xf9,0xf3,0xe7,0xd0,0xd9,0xb9,0x16,0xdd,0x6b,0xd6, + 0x23,0x95,0xe9,0x46,0x18,0x72,0xf8,0x1,0x5,0x65,0x1c,0x2c,0xe4,0x0,0x14,0x8, + 0x41,0x4a,0xc9,0x60,0x63,0x2e,0x49,0x8e,0x1,0x28,0x2,0x88,0x82,0x20,0x70,0x85, + 0x10,0x2e,0x0,0xc5,0x18,0x83,0x61,0x18,0x30,0xc,0x3,0x9a,0xa6,0x41,0x4a,0x89, + 0x20,0x8,0x90,0x4a,0xa5,0xb0,0x79,0xf3,0x66,0x2b,0x93,0xc9,0xdc,0x18,0x86,0xe1, + 0x80,0x10,0xe2,0xed,0xb5,0x5a,0x6d,0x6e,0x76,0x76,0x76,0x3c,0x8,0x82,0xd1,0xf1, + 0xf1,0xf1,0x53,0xbf,0x2c,0xf9,0xdc,0xbb,0x77,0x2f,0xbe,0xf3,0x9d,0xef,0xbc,0x32, + 0x40,0xab,0xec,0x59,0x61,0x4d,0xbc,0x56,0x2b,0xf,0x8c,0x9d,0x3e,0xf5,0xe6,0xe9, + 0x99,0x85,0x9b,0xa6,0x67,0x4b,0x57,0x9d,0x3e,0x5b,0xef,0xac,0xd6,0x5,0x84,0x34, + 0x60,0xdb,0x26,0x2c,0xcb,0x84,0x65,0x19,0xb0,0x2c,0x13,0x94,0xe9,0x6,0xe7,0xca, + 0x70,0x9a,0x4d,0x54,0xab,0x15,0xb8,0x6e,0x13,0xbd,0x3c,0x84,0x4e,0x1,0x4d,0x8b, + 0xd0,0xa8,0x2f,0x20,0xa,0x1b,0x88,0xd9,0x3a,0x12,0x9,0x1b,0xc9,0x54,0xc,0xc9, + 0xa4,0x8d,0x20,0x88,0x40,0x99,0x6,0x4d,0xb,0x41,0x35,0x2,0x42,0x34,0x68,0x94, + 0xda,0x51,0xe8,0x6c,0x92,0x9c,0x74,0x1,0x78,0x61,0x65,0x6c,0xbe,0xa6,0x69,0x2e, + 0x63,0x4c,0xa,0x21,0xe0,0xba,0x2e,0x34,0x4d,0x6b,0x3,0xb5,0xca,0xaa,0x44,0x22, + 0x41,0x74,0x5d,0xcf,0x84,0x61,0x78,0x79,0x18,0x86,0x1b,0x72,0xb9,0x5c,0xa9,0xb7, + 0xb7,0xf7,0xfc,0x25,0x97,0x5c,0x72,0xee,0xdd,0xef,0x7e,0xf7,0x58,0xa5,0x52,0x99, + 0x9c,0x9d,0x9d,0x9d,0x39,0x73,0xe6,0xcc,0xf9,0xcf,0x7e,0xf6,0xb3,0x25,0x42,0xc8, + 0x2b,0x26,0x99,0xec,0x97,0x4,0x66,0xa,0x60,0x40,0x29,0xbc,0xc5,0x73,0xfd,0x7f, + 0x5f,0x5c,0x6a,0x6e,0x1a,0x3b,0x5b,0x22,0xd3,0x73,0x1c,0x4c,0x37,0x91,0xcb,0x26, + 0x90,0x4c,0x18,0xb0,0x6d,0x1d,0xb6,0x6d,0x20,0x11,0xb3,0xa0,0x11,0x85,0x56,0xab, + 0x8a,0xc5,0x85,0x49,0x38,0xcd,0x12,0x34,0xd,0x70,0x1a,0x45,0xd4,0x2c,0x6,0xa6, + 0x33,0xb8,0xad,0x32,0x3a,0xbb,0x3a,0x31,0xbc,0x71,0x33,0xec,0x78,0x1a,0xb6,0x9d, + 0x4,0xa5,0xc,0x94,0x12,0x10,0xd,0x20,0x44,0x41,0xd3,0x14,0x34,0xa6,0x43,0x63, + 0xcc,0xf0,0x5a,0xc6,0x26,0x1e,0xb1,0xbe,0x36,0x8d,0x2d,0xcb,0xa5,0x94,0xb6,0x94, + 0x52,0xaa,0xd1,0x68,0xc0,0xf7,0x7d,0x24,0x12,0x9,0x28,0xa5,0x60,0x9a,0x26,0x28, + 0xa5,0x10,0x42,0x20,0x8a,0x22,0xd8,0xb6,0xd,0xdb,0xb6,0x35,0x0,0x1d,0x2b,0x9f, + 0x2d,0x9e,0xe7,0xdd,0xb0,0xb8,0xb8,0xe8,0x28,0xa5,0xc6,0x7c,0xdf,0x3f,0x1c,0x4, + 0xc1,0xc1,0xbb,0xef,0xbe,0xfb,0xe9,0xd9,0xd9,0xd9,0xa9,0x4a,0xa5,0x12,0xed,0xdf, + 0xbf,0x5f,0xad,0x2,0x73,0xe9,0xa5,0x97,0xe2,0xd8,0xb1,0x63,0x2f,0xf,0x90,0xe3, + 0xb8,0x1a,0x21,0x24,0x1e,0x8f,0x9b,0x9b,0x29,0x65,0x23,0x52,0x91,0x22,0xd5,0x2d, + 0x3d,0xdf,0x99,0xef,0x60,0x46,0x98,0xf2,0x3,0x9,0x42,0x34,0x98,0xa6,0xe,0xdb, + 0xb2,0x90,0x88,0x59,0x48,0xa7,0x12,0xa8,0xd7,0xa,0xa8,0x95,0xa7,0xe1,0xbb,0x25, + 0xac,0x5b,0xd7,0x87,0x5c,0xbe,0xb,0x53,0x93,0x93,0xa8,0xd7,0x97,0x90,0xef,0xe8, + 0xc4,0xe6,0xcd,0x5b,0x90,0xef,0xe8,0x86,0xa6,0xe9,0x28,0x95,0x96,0x10,0x86,0x11, + 0x4,0x14,0xc,0xc3,0x2,0x21,0x26,0xb4,0x95,0xba,0x47,0xd3,0x24,0x94,0x92,0xba, + 0x65,0x5b,0x1b,0xa2,0xd0,0xdb,0xda,0xdf,0xbf,0xb3,0x6b,0x76,0xf6,0x78,0x31,0x97, + 0xcb,0x96,0xa5,0x54,0x8b,0xc5,0x62,0x51,0x34,0x9b,0x4d,0xd4,0x6a,0xcb,0xf1,0x37, + 0x93,0xc9,0x60,0x70,0x70,0x10,0x3b,0x77,0xee,0x44,0x3c,0x1e,0x7,0x21,0xe4,0x65, + 0x93,0x59,0xd3,0x34,0xd1,0xdd,0xdd,0x9d,0x48,0x26,0x93,0x17,0xa5,0xd3,0xe9,0x1, + 0xc6,0xd8,0xd,0x9a,0xa6,0x1d,0xe7,0x9c,0xff,0x33,0xa5,0xf4,0x21,0x0,0xf3,0x2f, + 0xe7,0x7a,0xf4,0xa5,0x7,0xee,0xbe,0xfb,0x6e,0x10,0x42,0xc,0x42,0x54,0x22,0xc, + 0xa3,0xb0,0x52,0xa9,0x3f,0xef,0xfa,0x72,0x54,0x37,0x8c,0xb9,0x5c,0x5a,0xa7,0x8c, + 0xaa,0x4,0x94,0x30,0xc,0xc3,0x44,0x3c,0x6e,0x23,0x99,0xb4,0x11,0x8b,0x69,0x8, + 0xfd,0xa,0x7c,0xb7,0xc,0xd3,0xa0,0x18,0x1c,0x5c,0x8f,0xfe,0x81,0xf5,0x10,0x22, + 0x42,0x22,0x1e,0x43,0x77,0x77,0x17,0x86,0x86,0x36,0xc2,0xf7,0x3d,0x8c,0x8f,0x8f, + 0x62,0xec,0xd4,0x49,0xcc,0xce,0x9c,0x43,0xb3,0x51,0x43,0x32,0x95,0x41,0xcc,0x8e, + 0x81,0x52,0x6,0xa5,0x14,0x94,0x5a,0xe,0x43,0x80,0x66,0x72,0xc1,0x5d,0x66,0x24, + 0xcb,0x13,0xe3,0x87,0xcf,0xdc,0x76,0xeb,0xde,0xee,0x6a,0xb5,0x76,0xe9,0xc4,0xe4, + 0xe4,0xb6,0xc9,0xc9,0x49,0xb3,0x50,0x28,0x40,0xd3,0x34,0x78,0x9e,0x7,0xc7,0x71, + 0x10,0x8b,0xc5,0x56,0x99,0x3,0x4d,0xd3,0x7e,0xb1,0xe8,0x24,0x4,0x9a,0xa6,0x41, + 0x8,0xc1,0x82,0x20,0x88,0x3b,0x8e,0x93,0x6f,0xb5,0x5a,0x3,0xae,0xeb,0xe6,0x4b, + 0xa5,0x12,0x49,0xa7,0xd3,0xee,0xf4,0xf4,0x74,0x15,0x80,0x5c,0x58,0x58,0xf8,0xe5, + 0x2e,0x66,0xdb,0x16,0x0,0x78,0x8f,0x3c,0xf2,0xe8,0x91,0xbb,0xef,0xfe,0x9b,0x43, + 0x87,0xf,0x3f,0x25,0x95,0x52,0x3a,0xa4,0x37,0x74,0x6a,0x74,0xf4,0x1d,0xc7,0x4f, + 0x4c,0xee,0x9d,0x87,0xb8,0x5c,0x2a,0x5,0x2,0x9,0x21,0x7c,0x78,0xae,0xf,0x8d, + 0xf8,0xc8,0xe5,0x92,0x60,0x2c,0x8f,0x5c,0x2e,0x8f,0x5c,0x36,0x8b,0x2b,0xaf,0xd8, + 0xd,0xcb,0x34,0xc1,0x18,0x83,0xe7,0x7,0x38,0xf1,0xc4,0x61,0x3c,0xf2,0xc8,0x43, + 0x68,0x34,0x1a,0x60,0x94,0xa1,0xbf,0x7f,0x8,0x6b,0xfb,0x7,0x90,0xcb,0xe5,0x61, + 0x98,0x26,0xb8,0x10,0x10,0x42,0x42,0x8,0x89,0x44,0x22,0x1,0xcf,0x75,0xb7,0xa7, + 0xd2,0xd9,0x9b,0xf7,0xbc,0xfb,0xc3,0x67,0x6a,0xb5,0x6a,0x5f,0xa3,0xd1,0xe8,0x18, + 0x3b,0x7d,0x9a,0x2e,0x14,0xa,0x60,0x8c,0xa1,0xa3,0xa3,0x3,0x52,0x4a,0x94,0x4a, + 0x25,0x1c,0x3f,0x7e,0x1c,0x9c,0x73,0x6c,0xda,0xb4,0x9,0x8c,0xfd,0x7c,0x5a,0x86, + 0x61,0xc0,0x34,0x4d,0x68,0x9a,0x86,0x28,0x8a,0xe0,0x79,0x1e,0x7c,0xdf,0xc7,0x4a, + 0xa0,0x4f,0xe9,0xba,0xfe,0x66,0xa5,0x54,0x8f,0x6d,0xdb,0xf6,0xf0,0xf0,0x70,0xc5, + 0x71,0x9c,0xc5,0x42,0xa1,0x20,0x5e,0x69,0x15,0x53,0x0,0xc4,0x5b,0xde,0x72,0xa3, + 0xba,0x0,0xfd,0x48,0x29,0x35,0xb5,0x75,0xe4,0xa2,0xef,0x1f,0x7b,0x76,0xb4,0xdb, + 0x60,0xc1,0xb0,0x22,0x2a,0x5d,0x2c,0x4c,0x68,0xa5,0xa5,0x69,0x68,0x24,0x40,0x47, + 0x3e,0x83,0x5c,0x2e,0x87,0x30,0x74,0xe1,0xba,0x4d,0x0,0x11,0xfa,0xfb,0x6,0xd0, + 0xd9,0x99,0x47,0xbd,0x5e,0xc5,0xf7,0xbf,0xf7,0x7d,0x1c,0x39,0xfc,0x33,0x54,0x2a, + 0x15,0xec,0xd8,0xb1,0x13,0xeb,0x6,0x87,0xd0,0xd3,0x33,0x80,0xbe,0xfe,0x75,0x30, + 0xcc,0x18,0xc2,0x50,0x20,0xb2,0xd,0x70,0x2e,0x10,0x84,0x2,0x52,0x72,0x68,0x9a, + 0xd6,0x9d,0x49,0xc7,0x6e,0x48,0xd8,0x99,0x44,0xa3,0xd9,0xca,0x1a,0x6,0xdb,0x12, + 0x8b,0xc7,0x4d,0x29,0x25,0x96,0x96,0x96,0xf0,0xfc,0xf3,0xcf,0x63,0xc7,0x8e,0x1d, + 0xe8,0xef,0xef,0xc7,0xcc,0xcc,0xc,0x1a,0x8d,0x6,0xce,0x9d,0x3b,0x87,0x28,0x8a, + 0xe0,0xba,0x2e,0xa4,0x94,0xc8,0xe7,0xf3,0x18,0x19,0x19,0xc1,0xa6,0x4d,0x9b,0x40, + 0x29,0x5,0xa5,0xb4,0x9d,0x1a,0xac,0xe4,0x52,0x9a,0x61,0x18,0x5b,0xe2,0xf1,0xf8, + 0xe5,0x3d,0x3d,0x3d,0xc7,0x84,0x10,0xd5,0x42,0xa1,0xe0,0xfd,0xaa,0x3c,0x48,0xbd, + 0xc,0x45,0x3,0x0,0xe3,0x5f,0xfe,0xd2,0x7d,0x13,0x54,0x53,0x75,0x8e,0x30,0x15, + 0xf8,0xd,0xb8,0xad,0x3a,0x92,0x49,0x1b,0x89,0x64,0x6,0xf9,0x7c,0x37,0x3c,0xb7, + 0x9,0xaa,0x11,0x68,0x50,0x48,0xa5,0xe2,0xd0,0x19,0x60,0xe8,0x1a,0xea,0xf5,0xa, + 0x32,0x99,0x34,0xae,0xbe,0xea,0x6a,0x5c,0x7b,0xdd,0xf5,0xe8,0xe9,0xed,0x87,0x61, + 0xc4,0xa0,0xa0,0xc3,0xf7,0x23,0x84,0x1,0x47,0x18,0xa,0x38,0xad,0x10,0xb5,0x7a, + 0xb,0xb5,0x5a,0x3,0x51,0x50,0xd5,0x6c,0xc3,0x5b,0x93,0x4a,0x18,0x37,0xea,0xba, + 0xa1,0xdb,0xb6,0x6d,0x8c,0x8c,0x8c,0xa0,0xa3,0xa3,0x3,0xb,0xb,0xb,0xa8,0x56, + 0xab,0x68,0xb5,0x5a,0x10,0x42,0x80,0x31,0x6,0x21,0x4,0x2a,0x95,0xa,0xa,0x85, + 0x2,0x5a,0xad,0x16,0x0,0xa0,0x58,0x2c,0xb6,0x93,0xca,0xa1,0xa1,0xa1,0x76,0x6, + 0x7e,0x61,0xe,0xb5,0x32,0xef,0xac,0x61,0x18,0x31,0x29,0x25,0xf9,0x95,0xcb,0xfc, + 0x2b,0x9b,0xe6,0x30,0xc6,0xea,0x61,0x18,0xf4,0xc6,0x62,0x26,0xed,0xe9,0xe9,0x43, + 0x77,0x77,0x17,0xba,0xbb,0x3b,0x91,0x48,0xc4,0xa0,0xeb,0x1a,0x6c,0xdb,0x86,0xce, + 0x8,0x18,0x5d,0xbe,0x5e,0x14,0x9,0xac,0xe9,0xe9,0x41,0x5f,0xff,0x0,0xb6,0x6e, + 0xd9,0x8a,0x4d,0x9b,0xb7,0x40,0x2a,0xd,0x95,0x4a,0x3,0xcd,0xa6,0x8b,0x20,0xe0, + 0xf0,0xfd,0x8,0xe5,0xaa,0x83,0x42,0xb1,0x81,0x52,0xb9,0x82,0x5a,0x69,0x6,0xb6, + 0xd1,0x40,0x57,0x9e,0x21,0x11,0x5f,0x13,0xb7,0x6d,0x1b,0x99,0x4c,0x16,0xc3,0xc3, + 0x1b,0xa1,0xeb,0x3a,0x8a,0xc5,0x22,0x9e,0x78,0xe2,0x9,0x78,0x9e,0x87,0xc5,0xc5, + 0x45,0xac,0x5b,0xb7,0xe,0xb9,0x5c,0xe,0x9c,0x73,0x38,0x8e,0xd3,0x2e,0x41,0x0, + 0x60,0x7e,0x7e,0x1e,0x9c,0x73,0x24,0x12,0x9,0x64,0x32,0x19,0xe8,0xba,0xbe,0x32, + 0xae,0x8,0xbe,0xef,0x23,0xc,0x43,0x8,0x21,0x8a,0xba,0xae,0x2f,0x29,0xa5,0xc4, + 0xef,0x24,0x77,0xe4,0xf3,0xf9,0x82,0xe7,0x47,0xa7,0xd,0x8f,0xf,0x18,0x2c,0x6f, + 0x34,0x1a,0x6,0xe6,0xe7,0xce,0xe3,0xc4,0xb3,0x47,0x10,0x46,0x3e,0xfa,0xfa,0xfb, + 0x70,0xf1,0x45,0x17,0x61,0xdd,0x40,0x3f,0xa0,0x0,0xce,0x15,0x8,0x65,0xd8,0xbd, + 0xfb,0x2a,0xc4,0x6c,0xb,0xd9,0x6c,0x16,0xba,0xc1,0xe0,0xfb,0x11,0x18,0x23,0x30, + 0x4d,0xa,0x21,0x25,0x6a,0x4d,0xf,0xc5,0x52,0x13,0xe5,0x4a,0x13,0x4e,0xb3,0x86, + 0xc8,0x9f,0x87,0x45,0x5,0x8,0xc9,0x41,0x4a,0xb9,0x12,0x9b,0x4,0xc2,0x30,0x44, + 0x2a,0x95,0xc2,0xd0,0xd0,0x10,0x28,0xa5,0x18,0x1b,0x1b,0x83,0xe7,0x79,0x18,0x1c, + 0x1c,0x44,0x2c,0x16,0x43,0xb3,0xd9,0xc4,0xc8,0xc8,0x8,0x18,0x63,0x88,0xc7,0xe3, + 0x48,0x26,0x93,0x2b,0x19,0x7c,0x80,0x5a,0xad,0xd6,0x66,0x4f,0xad,0x56,0xc3,0xf9, + 0xf3,0xe7,0x71,0xfe,0xfc,0x79,0xd4,0x6a,0xb5,0x93,0x41,0x10,0xfc,0x4c,0x4a,0xf9, + 0x82,0x10,0x22,0xfc,0x9d,0x0,0xea,0xe8,0xec,0x18,0xab,0xd7,0x9d,0x47,0x88,0xe6, + 0xe,0x85,0x41,0x38,0xe2,0xba,0x4d,0x7b,0x76,0x66,0x2,0x8b,0x8b,0x73,0x60,0x94, + 0x20,0x9f,0xcf,0x81,0xf3,0x68,0x25,0x27,0xe1,0x10,0x8a,0x40,0x29,0x82,0xae,0xae, + 0x1e,0x58,0xa6,0xe,0xc6,0xc8,0x8a,0xbe,0x43,0x61,0x5b,0x6,0x78,0xc4,0x97,0xeb, + 0xbc,0x20,0x42,0xd3,0x9,0xe0,0x38,0xe,0x7c,0xb7,0xe,0xc1,0x1b,0x20,0x4a,0x7, + 0xa0,0x41,0x4a,0xb5,0xb2,0xc2,0x29,0x70,0xce,0x21,0xa5,0x84,0x65,0x59,0x48,0x26, + 0x93,0xe8,0xec,0xec,0x4,0xe7,0x1c,0x7d,0x7d,0x7d,0x6d,0x37,0x6b,0x36,0x9b,0x28, + 0x95,0x4a,0x88,0xa2,0x8,0xa9,0x54,0xa,0x6b,0xd7,0xae,0x45,0x67,0x67,0x27,0x82, + 0x20,0x68,0xaf,0x7a,0x67,0xce,0x9c,0xc1,0xd4,0xd4,0x94,0x53,0x2c,0x16,0x4f,0x79, + 0x9e,0xf7,0x7d,0xd7,0x75,0x9f,0x38,0x76,0xec,0x58,0xe3,0xb7,0xd2,0x83,0x2e,0xcc, + 0x2b,0xde,0xf4,0xa6,0xab,0xa7,0xf,0x1c,0x78,0xec,0xa1,0xc0,0xf7,0xae,0x71,0x9c, + 0xea,0x40,0x69,0x69,0xc1,0xf6,0x3c,0x7,0x6b,0xd6,0xac,0x41,0xdf,0xda,0xb5,0xe8, + 0x5e,0xd3,0xd,0xd3,0xb2,0xe0,0x5,0x3e,0x82,0x88,0x43,0x27,0x1a,0x38,0x97,0x10, + 0x22,0x80,0xe7,0xf9,0xd0,0x75,0xd,0xc9,0x84,0xd,0xc6,0x28,0x4c,0x53,0x47,0xe0, + 0x33,0x30,0xaa,0x81,0x0,0x88,0x22,0x9,0xdf,0x6b,0xc1,0xf7,0xea,0xd0,0x44,0x8, + 0x5,0xfd,0x17,0x54,0x61,0x4a,0x29,0xc2,0x30,0x84,0xe7,0x79,0x98,0x99,0x99,0x81, + 0x61,0x18,0xd8,0xb0,0x61,0x3,0x3a,0x3b,0x97,0x6b,0xc7,0x6a,0xb5,0x8a,0xe9,0xe9, + 0x69,0x1c,0x3d,0x7a,0x14,0x53,0x53,0x53,0x50,0x4a,0xe1,0x86,0x1b,0x6e,0xc0,0x9e, + 0x3d,0x7b,0xd0,0xd9,0xd9,0x89,0x4a,0xa5,0x82,0xd3,0xa7,0x4f,0xab,0x93,0x27,0x4f, + 0xba,0x53,0x53,0x53,0x4f,0x56,0x2a,0x95,0x7,0x17,0x16,0x16,0xbe,0x5f,0xad,0x56, + 0x17,0x57,0xef,0xb1,0x6b,0xd7,0x2e,0x3c,0xf3,0xcc,0x33,0xbf,0x19,0x83,0xfe,0xfa, + 0xaf,0x3f,0x8a,0x62,0xb1,0x80,0xfb,0xef,0xff,0xdf,0x98,0x99,0x99,0xe5,0x52,0xca, + 0x34,0xa5,0x7a,0xac,0xaf,0x7f,0x3d,0xb6,0x5d,0x74,0x31,0xd6,0xd,0xc,0x20,0x97, + 0x4d,0x61,0x76,0x76,0x12,0x84,0x0,0x51,0xc8,0x41,0x29,0x3,0x21,0x14,0x52,0x2a, + 0x10,0x22,0x51,0xaf,0x57,0x51,0xaf,0x55,0x0,0x25,0x90,0x48,0x26,0x91,0x4e,0x67, + 0x60,0x18,0xb1,0xe5,0x54,0x40,0x67,0x8,0x82,0x10,0x6e,0xab,0x8e,0xc8,0xaf,0xc2, + 0x64,0x2,0x64,0x5,0x1c,0x42,0x48,0x3b,0x8f,0xa1,0x94,0x62,0x35,0x51,0x6c,0x34, + 0x1a,0x18,0x18,0x18,0x40,0x6f,0x6f,0x2f,0x74,0x5d,0x7,0x21,0x4,0xf9,0x7c,0x1e, + 0x5b,0xb6,0x6c,0x69,0xa7,0x1,0xcf,0x3c,0xf3,0xc,0xe,0x1e,0x3c,0x8,0xdf,0xf7, + 0xf1,0x27,0x7f,0xf2,0x27,0x58,0x5c,0x5c,0xc4,0xe9,0xd3,0xa7,0x97,0x8a,0xc5,0xe2, + 0xf7,0x96,0x96,0x96,0x7e,0xd0,0x6a,0xb5,0xe,0x55,0xab,0xd5,0xf2,0xef,0xa4,0x28, + 0xbe,0x34,0x78,0x7b,0x9e,0x93,0xf2,0xfd,0x28,0x47,0x69,0xcc,0xee,0xeb,0xeb,0xc5, + 0xf0,0xf0,0x30,0x6,0x7,0x7,0xc0,0xa8,0x42,0xbd,0x51,0xc1,0x52,0x71,0x11,0xa5, + 0xd2,0x12,0x9a,0x8d,0x3a,0x52,0xe9,0x2c,0x74,0x5d,0x87,0x94,0x12,0x50,0xa,0xbe, + 0xef,0xa3,0x5a,0x29,0x41,0x5b,0x5c,0x44,0x2a,0x9d,0x41,0x57,0xd7,0x1a,0x48,0x9, + 0x58,0xc6,0x6a,0xe0,0xf4,0x11,0x5,0xe,0x4c,0x2a,0x1,0xf2,0xf3,0x4,0x8f,0x31, + 0xd6,0x66,0x4f,0xb9,0x5c,0x46,0xa5,0x52,0x81,0x65,0x2d,0xc7,0xb4,0x54,0x2a,0xd5, + 0x66,0x79,0x26,0x93,0xc1,0xb6,0x6d,0xdb,0xd0,0xdf,0xdf,0x8f,0x2d,0x5b,0xb6,0xa0, + 0xab,0xab,0xb,0xe3,0xe3,0xe3,0x68,0xb5,0x5a,0x88,0xa2,0x8,0x8e,0xe3,0x84,0xa5, + 0x52,0x69,0xa2,0x56,0xab,0x7d,0x7f,0x6c,0x6c,0xec,0x0,0x0,0xff,0xa5,0x5e,0xb2, + 0xca,0x9e,0xdf,0x5a,0xb4,0xa7,0x94,0x64,0x5a,0xad,0x96,0x95,0xce,0x24,0x69,0x26, + 0x93,0x47,0x36,0x9b,0x7,0x63,0x3a,0x82,0xc0,0x1,0xa5,0xc,0xb5,0x7a,0x1d,0xb, + 0xb,0xb,0x48,0x26,0x53,0x18,0x1a,0xda,0x88,0x5c,0xbe,0x3,0x94,0x69,0xc8,0x64, + 0xd2,0x0,0x4,0xa2,0xd0,0xc3,0x62,0xb1,0x88,0x6a,0xb5,0x8a,0xc0,0xf,0x60,0xc7, + 0xb2,0xb0,0x6d,0x1d,0x96,0x65,0x40,0x23,0xa,0x9c,0x7,0xcb,0x19,0x35,0x96,0xcb, + 0x6,0x29,0x97,0xeb,0x49,0x29,0x25,0x1a,0x8d,0x6,0xca,0xe5,0x32,0x5c,0xd7,0xc5, + 0xe0,0xe0,0x20,0x3a,0x3a,0x3a,0x40,0x29,0x45,0x14,0x45,0x30,0xc,0x3,0xf1,0x78, + 0x1c,0x99,0x4c,0x6,0x0,0xb0,0x6d,0xdb,0x36,0xec,0xda,0xb5,0xb,0x2f,0xbc,0xf0, + 0x2,0xe6,0xe7,0xe7,0x11,0x8f,0xc7,0xa1,0x69,0x5a,0x8d,0x31,0x76,0x66,0xfd,0xfa, + 0xf5,0xcf,0x1e,0x39,0x72,0xc4,0xff,0x55,0x2b,0xf8,0x6f,0x5,0x50,0x10,0x70,0x97, + 0x31,0x26,0xa4,0x94,0xca,0xf7,0x7d,0x12,0x84,0x1c,0x42,0x2a,0x68,0x1a,0x85,0x6e, + 0x98,0x28,0x97,0xca,0x38,0x7e,0xfc,0x18,0x9e,0x7d,0xf6,0x59,0x6c,0xdb,0x36,0x82, + 0x2b,0x77,0xbf,0x9,0x97,0x5d,0x76,0x19,0xf2,0xf9,0xc,0x92,0x49,0x1b,0x1d,0x1d, + 0x39,0xd4,0xaa,0xd,0xd4,0x6a,0xd,0xf8,0x81,0xf,0x4d,0xd3,0x60,0xdb,0xa,0xa9, + 0x84,0xd,0x4a,0x25,0xc2,0xa0,0x5,0x24,0x63,0x60,0x94,0x82,0x73,0x8e,0xc9,0xc9, + 0x49,0x94,0xcb,0x65,0x74,0x77,0x77,0x23,0x97,0xcb,0x21,0x95,0x4a,0xa1,0xa3,0xa3, + 0x3,0xdd,0xdd,0xdd,0xb0,0x6d,0x1b,0x42,0x88,0x76,0x2,0x28,0xe5,0xb2,0xb6,0xbd, + 0xaa,0x17,0xe5,0x72,0x39,0xec,0xdc,0xb9,0x13,0x1b,0x37,0x6e,0x4,0x21,0x4,0x93, + 0x93,0x93,0x12,0x80,0x8c,0xa2,0xe8,0xb5,0xdb,0xf6,0x11,0x5c,0x36,0x4d,0xd3,0x9c, + 0x56,0x4a,0x6c,0x76,0x5d,0x27,0xe7,0x7a,0x1e,0xc2,0x90,0x83,0x6a,0x0,0xd5,0x18, + 0x82,0x30,0x42,0xb9,0x5c,0x46,0xb5,0x5a,0x85,0xae,0xeb,0xe8,0xea,0xea,0xc4,0x25, + 0x97,0x5c,0xc,0x46,0xd3,0x60,0xb6,0x8d,0x98,0x6d,0xc3,0x30,0xe2,0xe0,0x82,0x20, + 0x8,0x39,0x40,0x34,0x98,0x26,0x45,0x36,0x13,0x47,0xdc,0x62,0x58,0x52,0x1c,0x50, + 0xaa,0x5d,0xa1,0x4f,0x4d,0x4d,0x21,0x8a,0x22,0xf4,0xf6,0xf6,0xe2,0xca,0x2b,0xaf, + 0x6c,0x33,0x27,0x93,0xc9,0xb4,0xcf,0xa1,0x94,0xb6,0x17,0x14,0xce,0x39,0x34,0x4d, + 0x6b,0x27,0x85,0x89,0x44,0x2,0x89,0x44,0x2,0x8e,0xe3,0x40,0xad,0xb8,0xb9,0xe7, + 0x79,0xda,0x6b,0x6,0x50,0x22,0x69,0x3b,0x50,0x38,0xd4,0x6c,0xf1,0x61,0xdf,0x77, + 0x72,0xae,0xeb,0xc1,0xf3,0x2,0x18,0x4c,0x2,0x8a,0x20,0x95,0x4a,0x63,0xfd,0xd0, + 0x30,0x7a,0x7b,0xd6,0xc0,0x34,0xd,0x70,0x1e,0xc1,0xf7,0x3c,0x70,0xbe,0xfc,0x64, + 0xa5,0x2,0xe6,0xe6,0xe7,0x31,0x3e,0x7e,0xe,0x82,0x3,0xa9,0x74,0x1e,0xba,0x1e, + 0x47,0x47,0x3e,0x81,0x74,0xda,0x86,0xce,0x28,0x14,0x14,0xc8,0x4a,0xb6,0x5b,0x2a, + 0x95,0x30,0x3b,0x3b,0x8b,0xf9,0xf9,0x79,0x6c,0xd9,0xb2,0x5,0xf1,0x78,0x1c,0x9d, + 0x9d,0x9d,0xed,0xca,0xfd,0x42,0x37,0x59,0xfd,0xbc,0x74,0x5,0x5e,0x15,0xd5,0x3c, + 0xcf,0x13,0xb5,0x5a,0x2d,0x8,0x82,0x80,0xbf,0xaa,0x0,0x7d,0xf9,0xcb,0x5f,0x6, + 0x0,0xdc,0x7e,0xfb,0xed,0xe8,0xeb,0xea,0x72,0x83,0x30,0xfa,0x49,0xbd,0x31,0xb7, + 0x2d,0xc,0x5a,0x97,0x54,0x2b,0x65,0xdd,0x32,0xd,0xa4,0x92,0x16,0x74,0xd3,0xc0, + 0x55,0x57,0xfd,0x21,0xae,0xb9,0xe6,0x8f,0x90,0xcd,0xa6,0x30,0x35,0x35,0x81,0xd2, + 0xd2,0x12,0x6a,0xf5,0x26,0x3a,0xbb,0x4,0xe2,0x31,0xd,0xc5,0xc5,0x3a,0x7e,0x7a, + 0xe0,0x0,0x1e,0x7f,0xe2,0x0,0xfa,0xd6,0xae,0xc7,0xc8,0xf6,0x3f,0x40,0xff,0xc0, + 0x26,0xa4,0x52,0x31,0xa4,0x92,0x36,0xc,0x83,0x1,0xa,0xed,0x9d,0x8e,0x55,0xe5, + 0xb0,0x56,0xab,0xe1,0xc8,0x91,0x23,0x88,0xc7,0xe3,0xb0,0x6d,0x1b,0x7d,0x7d,0x7d, + 0x88,0xc7,0xe3,0x60,0x8c,0xc1,0x5c,0x29,0x8a,0x9,0x21,0x17,0x96,0xf,0xed,0xf1, + 0x4b,0x29,0xb1,0xb0,0xb0,0x80,0x52,0xa9,0x54,0x2b,0x97,0xcb,0xf3,0x9e,0xe7,0x45, + 0xaf,0x2a,0x40,0xb7,0xdf,0x7e,0x7b,0xfb,0xef,0x1b,0xf7,0xdc,0x1c,0x1,0x38,0xfd, + 0xf,0xff,0xe3,0xbf,0x1f,0x94,0x32,0xda,0x5e,0x29,0x17,0x2e,0x23,0x44,0x32,0xcf, + 0x4b,0x23,0x8,0x6a,0x88,0xd9,0x71,0x64,0x52,0x19,0xa4,0x33,0x19,0x74,0x75,0x2d, + 0x33,0xa7,0x52,0xad,0xe3,0xec,0xb9,0x9,0x48,0xa1,0x70,0xe2,0xc4,0x73,0x78,0xf8, + 0xe1,0xff,0x8b,0x13,0xcf,0x1d,0xc7,0x35,0x7f,0x68,0x62,0x70,0xc8,0x45,0x10,0xa, + 0x68,0x1a,0x1,0x65,0x14,0x1a,0x5d,0x66,0xbf,0x92,0x12,0x84,0x10,0xc4,0x62,0x31, + 0x64,0x32,0x19,0xb8,0xae,0x8b,0x89,0x89,0x9,0x58,0x96,0x5,0xce,0x39,0xb6,0x6f, + 0xdf,0x8e,0xbe,0xbe,0x3e,0x24,0x93,0xc9,0xb6,0xa2,0x68,0x9a,0x26,0x32,0x99,0xc, + 0x18,0x63,0x2f,0x2,0xa9,0xd5,0x6a,0x61,0x74,0x74,0x14,0x33,0x33,0x33,0x85,0x5a, + 0xad,0x76,0xda,0xf3,0xbc,0xf0,0x35,0x73,0xb1,0x95,0x9b,0x46,0x5f,0xfb,0xda,0x97, + 0xf,0xd6,0xeb,0x5e,0x67,0xbd,0x5a,0xd8,0x10,0xf1,0xa0,0xb3,0x56,0xab,0xa2,0x5c, + 0x9a,0x43,0xad,0x56,0x1,0x14,0xb0,0x6e,0xdd,0x7a,0x74,0x76,0x75,0xc3,0x34,0x6d, + 0x14,0x16,0x8a,0x38,0xf1,0xdc,0x9,0x8c,0x8f,0x9f,0xc1,0xe1,0x43,0x4f,0x62,0x6c, + 0xec,0x5,0x98,0xa6,0x85,0x64,0x2a,0xb,0xd3,0x8a,0xc1,0xf3,0x7c,0xb4,0xdc,0xe5, + 0x5d,0xe,0x25,0x97,0xf3,0x43,0xb5,0x52,0x33,0x5b,0x96,0x85,0x8e,0x8e,0xe,0x4, + 0x41,0x80,0x56,0xab,0x85,0xe7,0x9f,0x7f,0x1e,0x73,0x73,0x73,0x38,0x75,0xea,0x14, + 0x2e,0xbe,0xf8,0x62,0xf4,0xf7,0xf7,0xc3,0x71,0x1c,0x18,0x86,0x81,0xde,0xde,0x5e, + 0x5c,0x71,0xc5,0x15,0x30,0xc,0xa3,0xbd,0xfa,0x45,0x51,0x84,0xb9,0xb9,0x39,0x1c, + 0x3d,0x7a,0x54,0x9e,0x3e,0x7d,0xfa,0xac,0xeb,0xba,0x27,0x1c,0xc7,0x79,0x6d,0x0, + 0xfa,0xd1,0xfe,0xfd,0xb8,0xe9,0x1d,0xef,0x0,0x0,0xfc,0xe9,0x9f,0xfe,0xf9,0xb9, + 0x7b,0xef,0xfd,0xc2,0x8f,0x74,0x9d,0xec,0x72,0x5b,0xf5,0xb7,0x2c,0x2c,0x9c,0xcf, + 0x9f,0x3d,0x73,0xa,0x4b,0xc5,0x2,0xa4,0x94,0x98,0x9c,0x18,0x47,0x3a,0x93,0x1, + 0xa5,0xc,0xf5,0x7a,0x1d,0x8b,0x8b,0xb,0x38,0x3f,0x3b,0x8b,0xd9,0xd9,0x59,0x78, + 0x9e,0x8b,0x4c,0x26,0x8f,0x74,0xba,0x3,0x94,0x59,0x70,0xbd,0x10,0x9e,0x17,0x20, + 0x8a,0x38,0xa4,0x92,0x0,0x28,0x94,0x5a,0x7e,0x18,0xab,0x22,0x98,0x10,0xa2,0x1d, + 0x6c,0x1d,0xc7,0xc1,0x89,0x13,0x27,0x30,0x3e,0x3e,0xe,0xc6,0x18,0x1c,0xc7,0xc1, + 0x25,0x97,0x5c,0x82,0xb7,0xbd,0xed,0x6d,0xed,0xb8,0xb4,0x2a,0xe8,0x1f,0x3f,0x7e, + 0x1c,0x3f,0xfb,0xd9,0xcf,0xe4,0xcc,0xcc,0xcc,0xe1,0x4a,0xa5,0x72,0x70,0x72,0x72, + 0xf2,0x2c,0x0,0xfe,0x9a,0x0,0x74,0xd3,0x3b,0xde,0x81,0xfb,0xef,0xff,0x62,0x9b, + 0x49,0x5f,0x7a,0xe0,0x81,0x31,0x2d,0x49,0xbf,0xb7,0x50,0x28,0xa6,0x9b,0xf5,0xca, + 0x4d,0xbe,0xef,0x53,0x5,0x6,0xa9,0x38,0xa,0x85,0x39,0x34,0xea,0x15,0xe8,0x86, + 0x81,0x96,0xeb,0xa2,0x58,0x5c,0x44,0xa5,0xb2,0x4,0xcf,0x73,0x61,0xdb,0x36,0xd6, + 0xf4,0xf4,0x21,0x99,0xea,0x0,0xa0,0xa3,0xd5,0xf2,0xe1,0xba,0x21,0x38,0x5f,0x96, + 0x74,0x97,0x29,0xa4,0xda,0x0,0xc5,0x62,0x31,0x30,0xc6,0xe0,0xfb,0x3e,0x9a,0xcd, + 0x26,0x2a,0x95,0xa,0x2a,0x95,0xa,0xa6,0xa7,0xa7,0xe1,0xfb,0x3e,0xf2,0xf9,0x3c, + 0x6c,0xdb,0x46,0x77,0x77,0x77,0x5b,0x30,0xf3,0x3c,0xf,0xe7,0xce,0x9d,0xc3,0xd1, + 0xa3,0x47,0x71,0xec,0xd8,0xb1,0xe9,0x4a,0xa5,0xb2,0xdf,0x71,0x9c,0xc3,0xab,0xe0, + 0x5c,0xa8,0x3d,0xbf,0xaa,0x2e,0x76,0xc7,0x1d,0xfb,0xda,0x20,0xdd,0xfe,0xfe,0xf7, + 0xf3,0x33,0x67,0xc6,0x1f,0xfa,0xca,0x57,0x1e,0xe8,0x30,0xd,0xd6,0xbf,0x61,0xe3, + 0xd6,0x2d,0x94,0xc6,0xf4,0x28,0xe2,0x98,0x3f,0x7f,0xa,0xc9,0x84,0x89,0x5c,0x36, + 0x7,0x3f,0x8,0x91,0xcd,0x64,0x60,0xe8,0x6,0xa2,0x28,0x44,0x47,0x67,0xf,0xd6, + 0xf,0x6d,0x83,0x1d,0xcb,0x22,0x8,0x15,0x5a,0x2d,0x6f,0x19,0x20,0x1,0x50,0x66, + 0x80,0x90,0x9f,0x8b,0x52,0xa6,0x69,0xb6,0x41,0x72,0x5d,0xf7,0x45,0x1,0x39,0xc, + 0x43,0x74,0x76,0x76,0x62,0xcf,0x9e,0x3d,0x78,0xe7,0x3b,0xdf,0x89,0xdd,0xbb,0x77, + 0xb7,0x13,0xc7,0x99,0x99,0x19,0x3c,0xfc,0xf0,0xc3,0x18,0x1d,0x1d,0x9d,0x2b,0x97, + 0xcb,0xff,0x9c,0x4a,0xa5,0xbe,0xfb,0xe8,0xa3,0x8f,0x8e,0xbf,0x2e,0xed,0x2f,0x77, + 0xdc,0xb1,0x6f,0x95,0x45,0xa,0x80,0x7b,0xcf,0x3d,0xff,0xf9,0xc7,0xba,0x6e,0x68, + 0x20,0xd6,0x7,0xc,0x33,0x73,0x31,0x88,0xc9,0xc,0xd3,0x86,0xe7,0x94,0xd0,0x72, + 0x9b,0x60,0x4c,0x83,0x65,0x19,0xc8,0x66,0x32,0x58,0xbf,0x7e,0x23,0xfa,0xd6,0x6d, + 0xc3,0xd0,0xf0,0xe,0x28,0x62,0xc0,0x69,0x79,0x68,0x39,0x1e,0xbc,0x40,0x40,0x4a, + 0x2,0x46,0x4d,0x10,0x2d,0x4,0xb0,0x5c,0xc1,0xaf,0x66,0xc9,0x84,0x10,0x58,0x96, + 0x5,0xdf,0xf7,0x21,0xa5,0x6c,0x8b,0x60,0xdb,0xb7,0x6f,0xc7,0xcd,0x37,0xdf,0x8c, + 0xed,0xdb,0xb7,0x83,0x52,0xa,0x29,0x25,0x4e,0x9c,0x38,0x81,0x27,0x9f,0x7c,0x12, + 0x63,0x63,0x63,0x73,0xb5,0x5a,0xed,0xdb,0x96,0x65,0x7d,0xad,0xbf,0xbf,0x7f,0xfa, + 0xc2,0x39,0xfc,0x2a,0xf6,0xbc,0xac,0x68,0xff,0x9b,0xd8,0xd7,0xbf,0xfe,0x75,0x7c, + 0xf7,0xbb,0xdf,0x5,0x0,0x1c,0x38,0xf0,0xb3,0xea,0xfb,0x6f,0x7f,0x6f,0xc1,0xf3, + 0x7c,0x46,0x8,0x4b,0x12,0x42,0x3b,0xad,0x58,0x96,0x29,0xe8,0x88,0x22,0x1,0x42, + 0x34,0x28,0xa9,0xc1,0x30,0x12,0xe8,0x5c,0x33,0x84,0x81,0xc1,0x11,0x74,0x74,0xae, + 0x3,0x17,0x4,0xae,0x1b,0xc0,0xf5,0x2,0x78,0x3e,0x47,0xb3,0x5e,0xe6,0x6e,0x6b, + 0x29,0xa4,0x84,0xb3,0x78,0x3c,0x86,0x58,0x2c,0xde,0x96,0x47,0x83,0x20,0x80,0xef, + 0xfb,0x70,0x5d,0x17,0x42,0x8,0x64,0x32,0x19,0xec,0xda,0xb5,0xb,0xd7,0x5f,0x7f, + 0x3d,0x76,0xed,0xda,0x85,0x54,0x2a,0x85,0x28,0x8a,0x30,0x35,0x35,0x85,0x43,0x87, + 0xe,0xe1,0xe8,0xd1,0xa3,0x4b,0xe5,0x72,0xf9,0x87,0x52,0xca,0x6f,0xec,0xdf,0xbf, + 0xff,0xd0,0xe1,0xc3,0x87,0xc5,0x72,0xaf,0xe4,0xbe,0x17,0x55,0xec,0xaf,0x5b,0xb, + 0x1e,0xd3,0x8d,0x39,0xcb,0xb2,0xfe,0x61,0x76,0xf6,0x5c,0x59,0xa3,0x31,0x23,0x9e, + 0xec,0x1b,0x49,0xa6,0xbb,0x8d,0x78,0xaa,0x7,0xd5,0xf2,0x3c,0x62,0xd4,0x47,0x2a, + 0x6f,0x23,0x93,0x5d,0x3,0xa6,0xdb,0x8,0x42,0x89,0x20,0x68,0x21,0x8,0x22,0x4, + 0xa1,0x40,0x10,0x4a,0x84,0x9c,0x2c,0x9,0x41,0x6a,0x4c,0x53,0xc3,0x50,0xd0,0x75, + 0x5d,0x47,0x3e,0x9f,0x47,0xb9,0x5c,0xc6,0xe2,0xe2,0x22,0x38,0xe7,0x2b,0xd9,0x79, + 0x17,0x2e,0xbb,0xec,0x32,0xec,0xdc,0xb9,0x13,0x1b,0x36,0x6c,0x80,0x61,0x18,0x10, + 0x42,0x60,0x69,0x69,0x9,0x8f,0x3f,0xfe,0x38,0x4e,0x9e,0x3c,0xd9,0x6c,0x36,0x9b, + 0xc7,0xba,0xbb,0xbb,0xbf,0x7c,0xf9,0xe5,0x97,0x3f,0xfd,0x83,0x1f,0xfc,0xa0,0x3d, + 0xce,0x2f,0x7e,0xf1,0x8b,0xaf,0x5f,0xb,0xde,0x7d,0xf7,0x7d,0xe,0x0,0xf0,0x17, + 0x7f,0x71,0x67,0xfb,0xd8,0x47,0xee,0x7c,0xff,0x46,0x45,0xe2,0xef,0x12,0xc4,0xfe, + 0x88,0x15,0x5f,0xdb,0x65,0x27,0x7a,0x21,0x85,0x0,0xe7,0x21,0x4,0xe7,0x50,0x0, + 0x34,0x6a,0x41,0x29,0x6,0xcf,0xf3,0x10,0x86,0x11,0xc2,0x48,0xc2,0xf7,0xb9,0x6a, + 0x39,0x95,0x1f,0xb7,0x6a,0x27,0x47,0x6d,0xa3,0x79,0x6b,0x2e,0x9b,0xe9,0xe9,0xec, + 0x5a,0x83,0x6c,0x36,0xdb,0x5e,0xc5,0x28,0xa5,0x48,0xa7,0xd3,0xe8,0xe9,0xe9,0xc1, + 0xe0,0xe0,0x20,0x7a,0x7a,0x7a,0x90,0xcd,0x66,0x41,0x29,0xc5,0xe4,0xe4,0x24,0x9e, + 0x79,0xe6,0x19,0x1c,0x3e,0x7c,0x18,0xd5,0x6a,0xf5,0x47,0xba,0xae,0x7f,0xa9,0xa7, + 0xa7,0xe7,0xc7,0x9f,0xfa,0xd4,0xa7,0xda,0x4d,0xc,0xf7,0xde,0x7b,0x2f,0x3e,0xf8, + 0xc1,0xf,0xbe,0xfe,0x3d,0x8a,0x1f,0xff,0xf8,0xc7,0xf1,0xf1,0x8f,0x7f,0x7c,0x25, + 0xbd,0xff,0x6,0xf9,0xf,0x1f,0xfa,0xe7,0x1d,0xcd,0x80,0xff,0x17,0xc3,0x5e,0x73, + 0x8d,0x9d,0x18,0x88,0xdb,0xb1,0x6e,0x8,0x29,0xe1,0x3a,0x15,0xd4,0x6a,0xb,0xa0, + 0x2c,0x1,0xd3,0xca,0x23,0xc,0x23,0x70,0x21,0x21,0xb8,0x92,0x9e,0x17,0xcc,0x7, + 0x61,0xf8,0x45,0xca,0x4f,0x1d,0x4e,0xd8,0xee,0x7f,0x8a,0xc7,0x63,0x57,0xa4,0xd3, + 0xd9,0x44,0x77,0x77,0x37,0xf2,0xf9,0x3c,0xd2,0xe9,0x34,0xe2,0xf1,0x38,0xf2,0xf9, + 0x3c,0x72,0xb9,0x1c,0x2c,0xcb,0x6a,0x4b,0x29,0x8e,0xe3,0xe0,0xd8,0xb1,0x63,0x78, + 0xe6,0x99,0x67,0xa2,0x42,0xa1,0x30,0x4e,0x8,0xb9,0xf7,0xa3,0x1f,0xfd,0xe8,0x3f, + 0x5e,0x7c,0xf1,0xc5,0xd,0x0,0xf8,0xd8,0xc7,0x3e,0x6,0x0,0xf8,0xcc,0x67,0x3e, + 0xf3,0xfb,0xef,0x72,0x25,0xe4,0x36,0xf5,0x97,0x1f,0x7a,0xff,0x39,0xcb,0xd4,0xbe, + 0x15,0x4,0xf5,0x44,0x10,0x4c,0x5f,0xdd,0x72,0x29,0x14,0x18,0xbc,0x56,0xd,0x4b, + 0xc5,0x19,0xe8,0x46,0xa,0xf1,0x24,0x1,0x88,0x1,0x80,0x41,0x2a,0xf8,0x9c,0xf3, + 0xa7,0xc2,0x0,0x3f,0x7d,0xd7,0x5b,0x36,0x3e,0x7b,0xbe,0xd0,0x78,0x2c,0xc,0xa3, + 0x6e,0x42,0xb4,0x11,0xce,0x39,0x38,0xe7,0xed,0x20,0xad,0x69,0x1a,0x82,0x20,0x0, + 0xe7,0xbc,0xbd,0x93,0xf1,0xc2,0xb,0x2f,0x60,0x62,0x62,0x2,0xd5,0x6a,0x75,0xa1, + 0xb7,0xb7,0xf7,0xfe,0x5c,0x2e,0xf7,0xf0,0x2a,0x38,0xab,0xf6,0x9b,0x82,0xf3,0x3b, + 0x7,0xe9,0xb,0xed,0xc0,0x81,0x3,0xb8,0xeb,0xaf,0xee,0xc4,0xd5,0xbb,0xaf,0xc0, + 0xc1,0xa7,0x8e,0x60,0xe7,0x55,0x3,0xa1,0xa9,0xc5,0x97,0x2,0xd7,0xcf,0x48,0x21, + 0x37,0x72,0x49,0x53,0x61,0xa8,0xc1,0xf3,0x15,0x5a,0xcd,0x22,0xa2,0xc0,0x87,0x10, + 0xa,0x94,0x25,0x20,0xa4,0x42,0x18,0xba,0xa7,0x83,0xd0,0xfb,0xca,0x5c,0xa1,0xf2, + 0xe4,0x3f,0xde,0xf7,0x89,0x6a,0xa5,0x5c,0xa,0xa5,0x52,0xfd,0xba,0x6e,0x6c,0xd7, + 0x34,0x8d,0xac,0x56,0xe7,0x4a,0x29,0xb8,0xae,0x8b,0x52,0xa9,0x84,0x85,0x85,0x5, + 0x9c,0x3d,0x7b,0x16,0xe7,0xce,0x9d,0x43,0xb9,0x5c,0xf6,0xa4,0x94,0x4f,0xdb,0xb6, + 0xfd,0x7f,0x72,0xb9,0xdc,0xf7,0xee,0xba,0xeb,0xae,0x89,0x7b,0xee,0xb9,0x47,0x1, + 0xc0,0xa7,0x3f,0xfd,0x69,0x7c,0xe2,0x13,0x9f,0x78,0x63,0xb6,0x1,0xbf,0xff,0xbd, + 0x7b,0xaf,0x11,0x88,0xbd,0x2f,0x42,0x66,0x4f,0x24,0x73,0x3d,0x7e,0xc4,0xd0,0x6a, + 0xce,0x22,0xa,0x1a,0xd0,0x34,0x13,0xc9,0xec,0x6,0x17,0x84,0x8d,0xf9,0x7e,0xf3, + 0x51,0xc7,0xaf,0xdf,0x7b,0xe8,0xc7,0xff,0xf3,0xdc,0x4a,0x15,0x1e,0xfb,0xce,0x77, + 0xbe,0x73,0x5b,0xb5,0x5a,0xbd,0xc3,0xf3,0xbc,0xad,0x84,0x90,0x34,0x63,0xc,0x96, + 0x65,0xb5,0x77,0x48,0x85,0x10,0x6e,0xa3,0xd1,0xf0,0x5a,0xad,0x56,0xc5,0x30,0x8c, + 0x53,0xd9,0x6c,0xf6,0xd1,0x8b,0x2e,0xba,0xe8,0xd1,0x3d,0x7b,0xf6,0x9c,0x2,0x80, + 0x4f,0x7e,0xf2,0x93,0xed,0xed,0xf4,0x37,0x6c,0x23,0x79,0xae,0xc3,0x7c,0x7a,0xa9, + 0x1c,0x85,0x32,0x2c,0xda,0x52,0x79,0x37,0x6a,0x2a,0xd6,0x65,0x5b,0x6,0x20,0x29, + 0x2,0xbf,0x56,0x6b,0xd6,0x27,0x8e,0x10,0xb0,0xef,0x85,0xad,0xea,0x8f,0x14,0xc8, + 0xf9,0xb,0xea,0x3d,0x77,0x7a,0x7a,0xfa,0x47,0x53,0x53,0x53,0xfe,0xf9,0xf3,0xe7, + 0xdf,0xe7,0x79,0xde,0x95,0x42,0x88,0x14,0xe7,0x1c,0xad,0x56,0xb,0x9e,0xe7,0xf9, + 0xc9,0x64,0xf2,0xb9,0xf5,0xeb,0xd7,0x3f,0x9b,0x4c,0x26,0x9f,0x26,0x84,0x1c,0x22, + 0x84,0xcc,0xce,0xcd,0xcd,0xb5,0xde,0xf0,0x8d,0xe4,0xfb,0xf6,0xed,0x7b,0xd1,0x52, + 0xfa,0xde,0xf7,0xdd,0x9c,0x8,0x5c,0xb1,0x93,0xab,0xc4,0x2e,0xa1,0xec,0x21,0x9, + 0x8b,0xb8,0x6e,0x33,0xf2,0x5a,0xb5,0x22,0x34,0xfb,0x98,0x88,0x82,0x53,0x87,0x9f, + 0xdc,0x3f,0x77,0x61,0x43,0xf8,0xa,0x8b,0xe8,0xdc,0xdc,0x5c,0xf7,0xc9,0x93,0x27, + 0x77,0x39,0x8e,0x33,0x12,0x45,0xd1,0x5a,0xa5,0x94,0xa,0xc3,0x50,0x70,0xce,0xab, + 0x94,0xd2,0xe7,0xb3,0xd9,0xec,0xd4,0xf0,0xf0,0xf0,0xc2,0xc8,0xc8,0xc8,0x22,0x21, + 0x44,0x5c,0xb8,0x94,0xef,0xdb,0xb7,0xef,0x8d,0xdb,0x69,0x7f,0xc7,0x1d,0xef,0x1, + 0x0,0xdc,0x7f,0xff,0xd7,0xda,0xc7,0xde,0xf2,0x47,0x6b,0xd2,0xa6,0x3d,0xd0,0xa5, + 0xe8,0x0,0xd,0x7c,0xc2,0xfd,0x66,0xa3,0xf1,0xc4,0x53,0x3f,0x7a,0x51,0x5f,0xf3, + 0xee,0xdd,0xef,0xc0,0x3,0xf,0x7c,0xa6,0xad,0x29,0xaf,0x0,0xa5,0xb9,0xae,0xdb, + 0x31,0x39,0x39,0x99,0x23,0x84,0x60,0xdd,0xba,0x75,0x22,0x1e,0x8f,0x3b,0x0,0xa, + 0x2b,0x99,0x7c,0xdb,0xe,0x1e,0x3c,0x8,0x0,0xb8,0xea,0xaa,0xab,0xde,0x58,0x9d, + 0xf6,0xbf,0x8e,0x69,0x34,0xd1,0x0,0xd1,0x1d,0x40,0x5b,0x2e,0x23,0x5e,0x32,0xb9, + 0x57,0x30,0xd9,0x6a,0xb5,0x4a,0x9c,0xf3,0xf2,0x6a,0x11,0x1a,0x8f,0xc7,0xd5,0xcb, + 0xf5,0x10,0xfc,0x7f,0x67,0xef,0x7c,0xe7,0xaf,0xf7,0x4a,0xd3,0xf5,0xd7,0x5f,0x8f, + 0xeb,0xaf,0xbf,0xbe,0x2d,0x93,0x2a,0xa5,0xda,0x6f,0xf7,0xfc,0xba,0xf6,0x4b,0xda, + 0x96,0xdf,0x98,0x2e,0x76,0xeb,0xad,0xb7,0x2,0x0,0xbe,0xf9,0xcd,0x6f,0x2,0x0, + 0xde,0xfe,0xf6,0xb7,0x53,0xc6,0x98,0x61,0x18,0x6,0x4b,0xa5,0x52,0x9a,0x52,0x4a, + 0xb5,0x5a,0x2d,0x7e,0xfc,0xf8,0xf1,0x70,0x6c,0x6c,0xac,0xad,0xcd,0x9c,0x3f,0x7f, + 0x1e,0x7d,0x7d,0x7d,0x2f,0x9a,0xf4,0xf4,0xf4,0xb4,0x3e,0x39,0x39,0xa9,0xd7,0x6a, + 0x35,0x16,0x45,0x11,0x31,0xc,0x43,0xd9,0xb6,0x2d,0xe2,0xf1,0x78,0x74,0xe5,0x95, + 0x57,0x46,0x8c,0x31,0xf5,0x4a,0xbb,0xc1,0x6f,0x78,0x17,0xbb,0xe9,0xa6,0x9b,0x8, + 0xa5,0x34,0x47,0x29,0x5d,0x4b,0x29,0xed,0x26,0x84,0x18,0x0,0x22,0x4d,0xd3,0x2a, + 0xdd,0xdd,0xdd,0x33,0x63,0x63,0x63,0x65,0x0,0xd1,0xcb,0x6f,0x31,0x5,0xac,0xd9, + 0x6c,0xae,0x89,0xa2,0x68,0xad,0x10,0x22,0x2f,0xa5,0xd4,0x38,0xe7,0x51,0x14,0x45, + 0x4d,0xd7,0x75,0xe7,0x46,0x47,0x47,0x97,0x0,0xb4,0x5e,0xab,0xb1,0xbf,0xe6,0xab, + 0xd8,0x2d,0xb7,0xdc,0xc2,0x74,0x5d,0xcf,0x12,0x42,0x86,0xd3,0xe9,0x74,0x4f,0x2c, + 0x16,0x4b,0xb,0x21,0xa8,0xeb,0xba,0x42,0x4a,0xe9,0xc,0xf,0xf,0x97,0xf2,0xf9, + 0xfc,0x1c,0x63,0x6c,0xe1,0x83,0x1f,0xfc,0xa0,0xc3,0x39,0x6f,0xb3,0x61,0x7a,0x7a, + 0x3a,0x76,0xe6,0xcc,0x99,0xee,0xd9,0xd9,0xd9,0xf5,0x9e,0xe7,0x75,0x9,0x21,0xe2, + 0x2b,0x12,0xaa,0xe0,0x9c,0x7b,0x94,0xd2,0x9a,0x6d,0xdb,0x95,0x44,0x22,0x51,0x15, + 0x42,0x54,0x86,0x86,0x86,0x9c,0x6b,0xaf,0xbd,0x36,0xbc,0xb0,0xfc,0xb9,0xf0,0xfb, + 0xd,0x1,0xd0,0x4b,0xa9,0xbd,0x77,0xef,0xde,0xb4,0xae,0xeb,0xfd,0x86,0x61,0x6c, + 0xec,0xea,0xea,0x4a,0xa5,0xd3,0x69,0x52,0xa9,0x54,0x56,0xfb,0xa,0xe5,0xae,0x5d, + 0xbb,0x78,0x36,0x9b,0x2d,0x28,0xa5,0xa6,0x1d,0xc7,0x99,0xbb,0xf5,0xd6,0x5b,0x7d, + 0x0,0x28,0x95,0x4a,0xda,0x91,0x23,0x47,0x7a,0xaa,0xd5,0xea,0xd0,0xdc,0xdc,0x5c, + 0x6f,0x18,0x86,0x36,0x21,0x4,0xba,0xae,0xab,0x20,0x8,0x54,0x18,0x86,0xca,0x34, + 0x4d,0x69,0x9a,0xa6,0xaf,0xeb,0x7a,0x3d,0xc,0xc3,0x45,0xd3,0x34,0x8b,0x5b,0xb6, + 0x6c,0xa9,0x19,0x86,0x11,0x5e,0x77,0xdd,0x75,0xaf,0x4a,0x40,0x7a,0xcd,0x5c,0xec, + 0xc3,0x1f,0xfe,0x30,0x74,0x5d,0x67,0xb,0xb,0xb,0x59,0x4a,0x69,0x2e,0x9b,0xcd, + 0xfa,0x5d,0x5d,0x5d,0x7e,0x3c,0x1e,0x17,0x85,0x42,0x1,0x89,0x44,0x2,0xc3,0xc3, + 0xc3,0x64,0xd3,0xa6,0x4d,0x5a,0x2a,0x95,0xd2,0x39,0xe7,0xdd,0xbe,0xef,0xb7,0xe, + 0x1f,0x3e,0x5c,0xfe,0xc8,0x47,0x3e,0x12,0xed,0xdf,0xbf,0x3f,0x5e,0x28,0x14,0x32, + 0x61,0x18,0x5a,0x0,0xea,0xc9,0x64,0xb2,0x9e,0xcb,0xe5,0x64,0x2a,0x95,0x6a,0xef, + 0x6a,0x94,0x4a,0x25,0xb2,0xb8,0xb8,0x48,0x8a,0xc5,0x22,0x15,0x42,0xac,0xd1,0x75, + 0xdd,0xae,0xd5,0x6a,0x96,0xae,0xeb,0xb,0x0,0xc2,0x37,0x24,0x40,0xab,0xec,0x19, + 0x1c,0x1c,0xd4,0x46,0x47,0x47,0x53,0x86,0x61,0xd8,0xb6,0x6d,0x8b,0x7c,0x3e,0xdf, + 0x48,0x26,0x93,0x52,0x29,0x25,0x9,0x21,0xe8,0xea,0xea,0xc2,0xf0,0xf0,0x30,0x49, + 0xa5,0x52,0xc4,0xb6,0x6d,0xa6,0x94,0x52,0xf1,0x78,0x3c,0xde,0xd1,0xd1,0xe1,0xdc, + 0x70,0xc3,0xd,0xf2,0xf8,0xf1,0xe3,0x9,0xa5,0x14,0xd3,0x75,0xdd,0x4f,0xa7,0xd3, + 0xc2,0x30,0xc,0x69,0x59,0x96,0x8a,0xc7,0xe3,0x48,0xa5,0x52,0x30,0xc,0x3,0x1d, + 0x1d,0x1d,0xa4,0xb7,0xb7,0x57,0x2b,0x97,0xcb,0x64,0x71,0x71,0x51,0x5b,0x5a,0x5a, + 0x62,0xb,0xb,0xb,0x29,0x42,0x88,0xf7,0xbe,0xf7,0xbd,0xaf,0xf6,0xd5,0xaf,0x7e, + 0x35,0x7c,0xc3,0x0,0x74,0xe7,0x9d,0x77,0xe2,0x73,0x9f,0xfb,0x5c,0xfb,0x77,0xa1, + 0x50,0x60,0x9c,0xf3,0xb8,0x69,0x9a,0x24,0x99,0x4c,0x3a,0xb9,0x5c,0x4e,0x18,0x86, + 0xa1,0x5c,0xd7,0x25,0xd9,0x6c,0x16,0x7d,0x7d,0x7d,0xe8,0xe9,0xe9,0x59,0xf1,0x4a, + 0x45,0x57,0x74,0x66,0x26,0xa5,0x34,0x7d,0xdf,0x17,0x73,0x73,0x73,0x86,0x69,0x9a, + 0x3c,0x93,0xc9,0x34,0x32,0x99,0x8c,0x50,0x4a,0xc1,0xf3,0x3c,0xac,0xbe,0xe9,0x93, + 0xcb,0xe5,0xb0,0x6e,0xdd,0x3a,0x64,0xb3,0x59,0x84,0x61,0x88,0xe7,0x9f,0x7f,0x1e, + 0x4f,0x3d,0xf5,0x14,0x2b,0x97,0xcb,0x9a,0x10,0x22,0x11,0x45,0x51,0xb8,0x22,0xce, + 0x4b,0x0,0x78,0xeb,0x5b,0xdf,0xa,0x0,0xf8,0xe1,0xf,0x7f,0xf8,0xfb,0x77,0xb1, + 0x7d,0xfb,0xf6,0xb1,0x72,0xb9,0x6c,0xb,0x21,0x34,0xc3,0x30,0x82,0x54,0x2a,0xe5, + 0xaf,0x6e,0xc3,0x74,0x74,0x74,0x60,0xcd,0x9a,0x35,0xc8,0xe7,0xf3,0xed,0x46,0x83, + 0x28,0x8a,0x40,0x29,0x85,0x6d,0xdb,0x6a,0x66,0x66,0x86,0x35,0x9b,0x4d,0xbb,0xd1, + 0x68,0xa8,0x74,0x3a,0xed,0xad,0xf6,0x42,0x3,0x80,0xe3,0x38,0x20,0x84,0x20,0x9d, + 0x4e,0xb7,0xbb,0x58,0xa3,0x28,0x42,0x32,0x99,0xc4,0xd6,0xad,0x5b,0xa1,0xeb,0x3a, + 0x62,0xb1,0x18,0x79,0xfa,0xe9,0xa7,0xb5,0x20,0x8,0xac,0xf7,0xbc,0xe7,0x3d,0xa1, + 0x69,0x9a,0xde,0x97,0xbe,0xf4,0xa5,0xdf,0x3a,0x1e,0xfd,0xce,0x72,0xc7,0xb5,0xd7, + 0x5e,0x8b,0xc1,0xc1,0x41,0x7c,0xfb,0xdb,0xdf,0x6,0x0,0xdc,0x75,0xd7,0x5d,0x5a, + 0x18,0x86,0x26,0x0,0x4b,0xd3,0x34,0xcd,0x34,0x4d,0x6e,0x9a,0x26,0xf,0xc3,0x90, + 0x7b,0x9e,0xc7,0x85,0x10,0x3c,0x9b,0xcd,0xf2,0x54,0x2a,0xc5,0x2d,0xcb,0xe2,0x94, + 0x52,0xce,0x18,0xe3,0xba,0xae,0x73,0xc3,0x30,0xe4,0xd4,0xd4,0x94,0x7c,0xee,0xb9, + 0xe7,0xc8,0xe2,0xe2,0x22,0xd1,0x75,0x5d,0x24,0x12,0x9,0xee,0xfb,0x3e,0xaf,0x54, + 0x2a,0xbc,0x50,0x28,0xf0,0xc5,0xc5,0x45,0x3e,0x3f,0x3f,0xcf,0x8b,0xc5,0x22,0xf, + 0x82,0x80,0x5b,0x96,0xc5,0x33,0x99,0xc,0x4f,0x24,0x12,0x3c,0x93,0xc9,0x70,0xd3, + 0x34,0x79,0xb9,0x5c,0x96,0xbe,0xef,0xab,0x7a,0xbd,0x8e,0x66,0xb3,0xc9,0x53,0xa9, + 0x94,0x7a,0xfc,0xf1,0xc7,0x71,0xf6,0xec,0x59,0xec,0xdd,0xbb,0x17,0xa3,0xa3,0xa3, + 0xaf,0x1f,0x83,0xe,0x1c,0x38,0xf0,0xf3,0xa2,0xf4,0xbd,0xef,0x25,0xad,0x56,0x4b, + 0x97,0x52,0xb2,0x95,0x3d,0xf5,0x20,0x8a,0x22,0x2c,0x2e,0x2e,0x2a,0x42,0x8,0xa2, + 0x28,0x2,0x63,0xcb,0x9b,0x88,0x9b,0x36,0x6d,0xc2,0xe0,0xe0,0x20,0x28,0xa5,0xed, + 0xe6,0x28,0xce,0x39,0xa9,0xd5,0x6a,0xe0,0x9c,0x2b,0x29,0x65,0xc8,0x39,0x87,0xef, + 0xfb,0xca,0x71,0x1c,0xd4,0xeb,0x75,0xb4,0x5a,0x2d,0x68,0x9a,0x86,0x46,0xa3,0x1, + 0x29,0x25,0xa6,0xa6,0xa6,0x10,0x86,0x21,0x4c,0xd3,0x6c,0xb7,0xc3,0x5c,0x74,0xd1, + 0x45,0xf0,0x3c,0x8f,0x44,0x51,0xa4,0x55,0x2a,0x15,0x2a,0xa5,0xd4,0xb3,0xd9,0xac, + 0x4,0x20,0x0,0xbc,0xec,0x1b,0x3d,0xaf,0x8b,0x60,0xb6,0x75,0xeb,0x56,0x62,0x59, + 0x16,0xb3,0x2c,0x4b,0x77,0x1c,0x47,0xab,0xd5,0x6a,0x52,0x4a,0xc9,0x4b,0xa5,0x92, + 0x28,0x97,0xcb,0x32,0x16,0x8b,0x49,0xc7,0x71,0xe4,0xc4,0xc4,0x84,0x3c,0x78,0xf0, + 0xa0,0x6c,0x34,0x1a,0x32,0x99,0x4c,0x4a,0xc3,0x30,0x24,0xa5,0x54,0x2a,0xa5,0xa4, + 0x10,0x42,0x9c,0x39,0x73,0x46,0x8c,0x8e,0x8e,0xca,0x66,0xb3,0x29,0x0,0x8,0x42, + 0x88,0x8c,0xa2,0x48,0xe6,0xf3,0x79,0x39,0x34,0x34,0x24,0x7b,0x7a,0x7a,0x64,0x2a, + 0x95,0x92,0x9c,0x73,0x39,0x3e,0x3e,0x2e,0xc7,0xc6,0xc6,0xe4,0xdc,0xdc,0x9c,0x4c, + 0x24,0x12,0x32,0x1e,0x8f,0xcb,0x64,0x32,0x29,0x7,0x6,0x6,0xb8,0x94,0x52,0xd4, + 0x6a,0x35,0x51,0xad,0x56,0x11,0x86,0x21,0x76,0xef,0xde,0xad,0x76,0xec,0xd8,0xa1, + 0x4e,0x9c,0x38,0xf1,0x1b,0xcd,0xeb,0xff,0x1,0x2f,0xb7,0x1a,0xa6,0x71,0x7f,0x92, + 0xdf,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/yellowframe.png + 0x0,0x0,0x7,0xce, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x16,0x25,0x0,0x0,0x16,0x25,0x1, + 0x49,0x52,0x24,0xf0,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xe,0x16,0x8,0x4f,0xc5,0x74,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x7,0x29, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9c,0xbb,0x72,0x1c,0x45,0x14,0x86,0xbf,0xbf, + 0x3d,0xf6,0x2a,0x21,0x84,0x84,0x48,0xe5,0xd8,0x76,0x46,0xf1,0x8,0x14,0x4f,0xcc, + 0x23,0x50,0x64,0xe0,0x8c,0xb2,0x8b,0x22,0x20,0xc1,0x19,0x9,0x72,0x19,0xf7,0x4f, + 0xd0,0xa7,0x2f,0x33,0xda,0xcb,0xac,0x6c,0x81,0x76,0x57,0x13,0xa8,0x56,0xbb,0xd3, + 0xb7,0xbf,0xcf,0xbd,0xcf,0x69,0xe5,0x37,0xd7,0x20,0x92,0xf0,0xb,0xac,0x6f,0x31, + 0x5f,0x5a,0x8,0x61,0xcc,0xbd,0x3c,0x12,0xd4,0xbe,0x7d,0x6c,0xbb,0xda,0xc6,0x9f, + 0x36,0xbe,0x6d,0x1,0x96,0xf4,0xce,0xf6,0x8f,0xc0,0x6b,0x49,0x59,0x7e,0x7b,0x9d, + 0xc0,0xdf,0xd9,0x7a,0x85,0xf8,0x0,0x18,0x1b,0x5b,0x6d,0x2,0x9f,0xe7,0xe9,0x7d, + 0x4a,0xf1,0x79,0xe5,0xba,0x6c,0xa2,0x5d,0x69,0x60,0xc5,0x77,0x6,0x74,0xfc,0x3c, + 0x4a,0x1f,0x8a,0xa6,0x96,0xa4,0xa7,0x36,0x3f,0x83,0x7f,0x98,0x6c,0xbf,0x0,0x5e, + 0x61,0xfe,0x2,0x67,0x8c,0x24,0x59,0x89,0xcf,0x42,0x20,0x6d,0xbe,0x56,0x1,0x62, + 0xa0,0x11,0xb3,0x6e,0x41,0xe3,0xc6,0x4,0x75,0x28,0x89,0xb2,0xc7,0x47,0xcf,0xa7, + 0x90,0x7e,0xa2,0xa0,0x6c,0x84,0x21,0x1,0x2f,0x41,0x7f,0x4c,0xc0,0xb7,0xa0,0xf, + 0x12,0xd9,0xe2,0x3d,0xf0,0xf,0x90,0x1c,0x83,0xcb,0x9f,0x42,0x13,0xa5,0x83,0xb6, + 0x17,0xd,0x85,0xbe,0x41,0xf6,0xba,0x7e,0xd4,0xc1,0x71,0xb4,0x3b,0x9a,0x40,0xc6, + 0xd,0xa8,0xf3,0x0,0x12,0xf8,0x4a,0xd2,0x7,0xe0,0x9b,0x49,0xd2,0x97,0xc6,0x7f, + 0x3b,0xb,0x4b,0x1f,0x25,0x6e,0x6c,0xbb,0xc0,0x26,0x28,0xfc,0xc6,0x5d,0xf8,0x47, + 0x80,0x2c,0x2c,0x47,0xf3,0xca,0x86,0x85,0x65,0xca,0xb,0xeb,0xa9,0xcc,0x8b,0x2f, + 0x75,0xe4,0xee,0xa4,0x3a,0xb6,0xca,0x3c,0x8c,0x65,0x73,0x25,0x64,0xdb,0x6,0xbe, + 0x9a,0x6c,0xcb,0x88,0xa4,0xc0,0xcf,0xb2,0xe1,0x26,0x21,0x87,0x38,0xc1,0xa5,0xf5, + 0xdd,0x79,0xa6,0x74,0x23,0xb4,0x87,0x4f,0xee,0x49,0x80,0x2f,0xe6,0x41,0x23,0x4c, + 0x91,0x4,0x9b,0xd8,0x27,0x72,0x6,0x9,0x4d,0x20,0xcb,0xe0,0x14,0x82,0xa,0x23, + 0x64,0x8b,0x1b,0x4c,0x6e,0xd3,0xd7,0x1e,0x3a,0xde,0x4b,0xbb,0xe,0xbe,0x8d,0xcf, + 0xb,0x81,0xe0,0x5d,0xfd,0xdf,0xd3,0x63,0x17,0x21,0x9,0xbe,0xa,0x21,0x5f,0x27, + 0x87,0x90,0x27,0xa0,0x89,0x6b,0x9,0x54,0x99,0xcb,0xce,0x86,0x1b,0x41,0xd6,0x6c, + 0x5,0x3,0xa9,0xdb,0x87,0x69,0xd7,0x6a,0x4d,0xda,0x87,0xa1,0x9b,0x99,0x1a,0xbe, + 0x7,0x50,0x1c,0x83,0x35,0x22,0x97,0x64,0x7c,0xd5,0xf6,0x20,0x4,0x5b,0xb0,0x10, + 0xd3,0x8c,0x9e,0x5c,0x74,0x5b,0x88,0x10,0x84,0xb2,0xe0,0xc6,0x38,0x17,0x61,0x22, + 0x82,0x93,0x62,0xee,0x3a,0x4c,0x20,0x23,0x5e,0x62,0x31,0x5c,0x8,0xdc,0x5,0x40, + 0xfb,0xa5,0xe2,0x11,0xc0,0x39,0xa4,0x70,0x9f,0x73,0x42,0xda,0x64,0x1b,0xf5,0x1, + 0x47,0xc5,0x57,0x1,0x19,0x16,0x67,0x37,0x15,0xa0,0x32,0xd3,0xc,0xba,0x31,0xe4, + 0x6e,0x50,0x19,0xa3,0x81,0x2f,0x2b,0xf9,0xfb,0x28,0xf5,0x17,0x3,0x15,0x3a,0xf3, + 0xa1,0xd6,0x4d,0x10,0x96,0xc5,0xb0,0xe6,0xfd,0x51,0xc3,0x39,0x81,0x36,0x45,0xdb, + 0x2e,0x2c,0xbc,0xfa,0x85,0x35,0x2,0x32,0x9a,0x71,0x75,0x17,0x1b,0x7b,0x65,0xc1, + 0x7b,0xf0,0xc7,0x80,0x4a,0xe,0xed,0xa3,0xc2,0x64,0x6a,0x8b,0x3c,0xd6,0x40,0x19, + 0xc6,0xd2,0x3a,0x20,0x63,0xbc,0xed,0xef,0x9b,0x99,0x9a,0x77,0x61,0x7,0x25,0xe0, + 0xaa,0x8e,0xdb,0x8d,0x4e,0xf,0x12,0xae,0x6c,0xf0,0xb4,0x4a,0xf9,0x17,0xad,0xfb, + 0x11,0xeb,0xbd,0xe5,0x5c,0xd0,0x98,0xa9,0x74,0x49,0x77,0x54,0x15,0x5a,0x2b,0x54, + 0xab,0x10,0x8,0x86,0x67,0xbb,0x59,0x56,0x48,0xae,0xf3,0x96,0xb1,0xb0,0x37,0xcb, + 0xc5,0xcc,0xa8,0xce,0x85,0x3e,0xc5,0x3e,0x40,0xa2,0x8d,0xc2,0x3a,0x2b,0xaf,0x3b, + 0xcb,0xba,0x31,0xce,0x85,0x90,0x42,0x54,0xba,0x9b,0x60,0xf7,0xa8,0x1f,0x3a,0x25, + 0xb9,0xac,0xca,0x87,0x55,0x4a,0x92,0xb4,0x91,0xbb,0xf9,0xbf,0x65,0x8e,0x33,0x41, + 0x38,0xad,0xd9,0xc1,0xf0,0x3b,0x14,0x2,0x37,0x3b,0xfb,0xbd,0x9f,0x74,0xa2,0x95, + 0x84,0x33,0xe4,0xfb,0xb4,0x25,0x34,0x68,0xc3,0x58,0x5c,0xce,0x3b,0xd4,0xbc,0x12, + 0xc9,0x1f,0x71,0xd2,0xb3,0x71,0xd1,0xde,0xe9,0x27,0x75,0x76,0x98,0x8e,0x10,0xd7, + 0xb3,0xff,0xa6,0xe7,0xbf,0xf3,0xd0,0x9f,0xfc,0xf6,0xba,0x93,0xc6,0x4e,0xa0,0xdd, + 0xd8,0x51,0x5a,0xd,0xc8,0x12,0x18,0x71,0xa,0x8f,0x97,0x9e,0xe1,0x1e,0x67,0xaf, + 0x8a,0xa8,0xb4,0xc6,0xb0,0xd1,0x4c,0x61,0x9f,0xce,0x73,0xb4,0xe3,0xb7,0x93,0x65, + 0x34,0x98,0xd5,0xea,0x91,0xa2,0xc1,0xca,0x3d,0x9b,0x67,0xdc,0x70,0x1d,0xa4,0x10, + 0x2f,0xac,0xc3,0x73,0x43,0x63,0x16,0xde,0x28,0xdb,0x3e,0x1d,0xc,0xb5,0xcd,0x58, + 0xc6,0x27,0x23,0x3f,0x8e,0x8c,0x27,0x36,0x50,0xd2,0xe1,0xf7,0xd5,0x2,0x3b,0x12, + 0x67,0xfe,0xac,0x0,0xe4,0xbf,0x9,0x56,0xfc,0x9f,0x18,0x44,0x28,0x31,0xe2,0x34, + 0xd3,0x21,0xb3,0xc3,0xbb,0x22,0x56,0xe7,0xc4,0x32,0x43,0x9c,0xe6,0x30,0xcb,0xdc, + 0xc1,0xeb,0x3e,0x41,0x54,0xda,0xa7,0xc4,0xe3,0x33,0x7b,0x1e,0x1,0x79,0x4,0xe4, + 0x11,0x90,0x47,0x40,0xb6,0x9b,0xb,0xeb,0x74,0xe4,0x74,0xde,0x78,0x8c,0x41,0x5f, + 0x5d,0x36,0x85,0xf8,0xed,0x75,0x9,0x4f,0x2e,0xa2,0xf9,0x32,0x28,0xd3,0xcf,0x69, + 0x17,0xa9,0x4,0xe7,0xcd,0x32,0x11,0x29,0xf5,0xcc,0x9a,0xf2,0x3c,0x3e,0x5d,0x83, + 0xe9,0xf6,0x68,0xba,0x7b,0x11,0xf,0xbb,0x1d,0x44,0x39,0x39,0x53,0xeb,0xf9,0x6f, + 0xdd,0x71,0xb3,0xbb,0x89,0x29,0x21,0xd9,0x35,0x25,0xa3,0xfe,0x58,0xcf,0x9e,0x53, + 0x1,0xb2,0x46,0x8d,0x16,0xde,0x6c,0x3d,0x6b,0xd1,0x49,0x62,0xb2,0xc5,0x10,0x2d, + 0x0,0x39,0xbb,0x3b,0xab,0x96,0xac,0x2,0x8d,0x30,0x93,0x6a,0xf0,0xd6,0x52,0xf1, + 0x71,0x1c,0x3f,0x95,0xf6,0x2a,0xe4,0x64,0x49,0xa7,0x69,0xbb,0xcf,0x5c,0xf4,0x72, + 0x8,0x37,0xcb,0xc5,0x88,0x35,0xb6,0xa8,0x7b,0xf5,0xf2,0xe2,0x4,0xb3,0xa5,0xd, + 0x75,0x9c,0xce,0xcc,0x67,0x69,0xa7,0x75,0x9d,0x74,0x1c,0x19,0x38,0x4d,0xa8,0xda, + 0xf3,0xe0,0xd8,0xd8,0xfe,0xec,0x43,0x20,0x35,0xb7,0xc9,0x85,0x8d,0xd2,0x48,0x55, + 0x17,0xb0,0x78,0x84,0x49,0xc,0x59,0x85,0x1e,0x13,0xc,0x7d,0xe6,0x86,0xd9,0x6e, + 0x99,0xa2,0x9a,0x19,0xd0,0x58,0x26,0xe2,0x22,0x17,0xe7,0xcb,0x84,0x68,0x28,0x19, + 0x5d,0x11,0x4b,0x6d,0xb2,0x52,0xea,0x32,0xe4,0xd2,0x40,0x19,0x84,0x44,0xc9,0xf, + 0xc0,0x3d,0x61,0xe6,0x3e,0x33,0x78,0x4e,0x82,0x89,0x86,0x84,0x81,0xd4,0x12,0x62, + 0x8f,0x71,0x9,0xcf,0x90,0x66,0x1c,0xe9,0xdb,0x69,0xe1,0xf7,0x5c,0x20,0x16,0x3d, + 0x59,0xc6,0x34,0xc3,0xac,0x39,0xcb,0x17,0xc7,0x34,0xe,0x7f,0xa7,0x7a,0x2d,0x69, + 0x4,0xe9,0x52,0x19,0xa6,0xca,0xd1,0x96,0x41,0x24,0x5d,0x30,0x10,0xc3,0x91,0xe4, + 0xaa,0x74,0x88,0xcb,0xb0,0x5d,0xdd,0x94,0xf0,0xf4,0x88,0x47,0x78,0xf4,0x1,0x4a, + 0xc8,0x10,0xf,0xd1,0xa3,0xcb,0x12,0x24,0xcb,0xd5,0x4e,0xb5,0x7c,0x43,0x40,0xe, + 0x9b,0x6d,0x9b,0x70,0x3d,0x4b,0xbb,0x4d,0x35,0xca,0xd8,0x53,0x3e,0x26,0x45,0xba, + 0xb6,0xbd,0x7f,0xc1,0x71,0x24,0x1c,0x7f,0x7d,0x4e,0x98,0xb4,0x6c,0xa9,0xee,0xdc, + 0xb5,0x60,0xc8,0x16,0xdd,0x5b,0xb3,0x72,0xd5,0x8c,0x15,0x2b,0x9d,0xf,0xbf,0xa8, + 0x16,0x44,0x44,0x90,0x79,0x72,0xcd,0xfd,0x1c,0x59,0x66,0x2b,0xab,0xd8,0x35,0xc0, + 0xea,0x53,0xc9,0x42,0xc,0xaa,0x3f,0x58,0xee,0xa3,0x6a,0xa6,0x8b,0xa9,0xe5,0xb3, + 0xef,0xc8,0x1e,0xef,0x19,0x47,0x52,0xd4,0x96,0x9c,0x4,0x1a,0xff,0xfc,0x7a,0xbd, + 0x2a,0x5b,0x9c,0x5a,0xec,0x30,0x56,0x43,0x68,0x4c,0x3f,0xf5,0x7e,0xbc,0x4b,0xc8, + 0xc0,0xcf,0xf2,0x9b,0xeb,0x7,0x69,0xeb,0xf7,0x68,0x3a,0x80,0xd3,0x98,0x84,0xbf, + 0x7d,0x79,0x1a,0x2a,0x31,0x6a,0xc4,0xec,0x56,0x65,0xc2,0xc2,0xb,0xac,0x41,0xa6, + 0x72,0x9c,0xf1,0xc,0x49,0x63,0x89,0xcd,0x83,0x93,0x92,0x2d,0x86,0x2c,0x6c,0x52, + 0xb,0xb2,0x6f,0xd3,0xb7,0x75,0x1d,0x21,0x2b,0xa7,0x15,0x56,0x4b,0x4d,0x58,0x4d, + 0x88,0xcd,0xf8,0xcb,0x43,0x65,0x9e,0x59,0x40,0x5d,0x43,0xfa,0xa9,0x6e,0x3,0x51, + 0x49,0x4a,0xcd,0xe,0xd9,0x26,0x42,0x17,0xe5,0x63,0x16,0x89,0x52,0xbd,0xd8,0x48, + 0xeb,0x21,0x9f,0x4f,0x78,0xf8,0x23,0x5a,0x49,0x9c,0xb6,0x5a,0x53,0xb,0x25,0x32, + 0xed,0x90,0xa0,0x51,0x20,0x6b,0x84,0x92,0xcd,0xa6,0x16,0xd9,0x74,0x7b,0xe4,0x14, + 0x6c,0xc,0x2d,0xec,0xd,0xa5,0x43,0x49,0x73,0xd3,0x52,0xb9,0x6a,0x2e,0x80,0x65, + 0xd8,0x7c,0x4a,0x95,0xea,0x83,0x30,0xcb,0x67,0x84,0x1f,0x82,0xd6,0x43,0x52,0xb2, + 0xfa,0x4b,0x53,0xf,0xd,0x75,0xd8,0x42,0x30,0x4b,0xe8,0xca,0x83,0x2f,0x78,0xb2, + 0xf6,0xe9,0xac,0x2,0x54,0xd8,0x4e,0x95,0x82,0xba,0x7e,0x51,0xf3,0x76,0xe5,0x99, + 0xec,0x6c,0x5d,0x5c,0xcd,0x74,0xd5,0xa9,0x87,0xd3,0x6e,0x8b,0x8f,0x99,0x52,0xa8, + 0xf6,0xe9,0x54,0x89,0xa7,0x1f,0xff,0x5a,0x58,0x9b,0x82,0xe6,0xb2,0x7e,0xf4,0x2e, + 0xc2,0x74,0xc8,0x9,0x1f,0xf3,0xc3,0xb7,0x65,0x4,0xaf,0xc9,0x10,0xde,0xf6,0x8e, + 0xe,0xbb,0xb2,0xed,0xde,0x81,0xc1,0x91,0xb,0x2e,0xc8,0xd4,0x32,0x2d,0xe4,0xc9, + 0xf2,0x3b,0x59,0x5f,0xc4,0x17,0x9,0xeb,0xaa,0xe3,0xd7,0x6b,0xff,0x4b,0xd9,0xdd, + 0xa8,0x6c,0xf7,0x97,0x76,0xb7,0x8b,0x14,0xa4,0x28,0xab,0x2f,0xb7,0x4e,0xf4,0x42, + 0xbd,0x28,0xb2,0xe,0xa4,0xa4,0x72,0xbe,0xa,0xb2,0xf6,0x28,0x74,0x7b,0x28,0xc7, + 0xad,0x70,0x7b,0xc7,0x7c,0xaa,0x8b,0x32,0x16,0x61,0xb6,0x35,0x35,0x2c,0x9f,0x54, + 0x8a,0x10,0xfc,0x39,0xd9,0xfc,0x8,0xfe,0x3e,0x5c,0xb8,0xcd,0x1,0xbd,0x3e,0xc8, + 0xe8,0x5e,0x3b,0x5b,0x8b,0x6f,0x47,0xd,0x56,0xeb,0x26,0x6b,0xed,0x5f,0xaf,0x69, + 0xf4,0x60,0x36,0x85,0x9f,0xd9,0x4e,0x46,0x34,0xaf,0x8c,0xdf,0x13,0xe3,0xaa,0x2e, + 0x47,0x17,0xf8,0x83,0x45,0x66,0x8d,0x6c,0x61,0xc,0x19,0x66,0x65,0xed,0xe5,0x96, + 0x83,0x52,0xe4,0x6c,0x93,0x84,0x9e,0x22,0x7e,0x9a,0x80,0xd7,0xc0,0xd7,0xc0,0x4b, + 0xe3,0xf,0x8e,0xbb,0x0,0x6a,0x3a,0x92,0x34,0xae,0xb4,0xd7,0xa7,0xb5,0x4b,0x4e, + 0x16,0x1a,0xbb,0x55,0x3f,0xb6,0x4b,0x50,0xb6,0xb4,0x1f,0x4d,0x0,0xab,0x73,0x53, + 0x1a,0xa8,0x60,0x4b,0xf5,0x45,0xef,0xb3,0xab,0x3d,0xcf,0x65,0xdf,0x68,0x35,0x2c, + 0xc6,0x99,0xb3,0x50,0x1b,0xba,0x50,0xe9,0x53,0xc4,0x2f,0x98,0xd7,0x93,0x20,0x23, + 0x7e,0x10,0xfc,0x61,0xeb,0x1b,0xd9,0x5f,0x95,0x88,0x51,0x0,0x33,0x92,0x86,0x35, + 0xc,0x36,0x18,0x6e,0xc3,0x8d,0x34,0x89,0xf9,0x4,0x67,0xc5,0x8b,0xe3,0xad,0x35, + 0xed,0x3c,0xb5,0x4,0x7a,0xb5,0x38,0x3e,0x54,0xba,0x2d,0x4b,0x6e,0x5d,0xac,0xc2, + 0xb2,0x34,0x52,0x31,0x7e,0xdf,0xb8,0x36,0xcd,0x59,0xf7,0xf5,0x8a,0x19,0x1b,0xf4, + 0xa7,0xc4,0x4f,0xb6,0x5f,0xdb,0xe4,0x7f,0x1,0x38,0xa8,0xd4,0xa4,0x57,0x97,0x3b, + 0xbf,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/online.png + 0x0,0x0,0xb,0x7d, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x14,0xc3,0x0,0x0,0x14,0xc3, + 0x1,0x15,0x70,0x4d,0x42,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66, + 0x74,0x77,0x61,0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61, + 0x70,0x65,0x2e,0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0xa,0xfa,0x49,0x44, + 0x41,0x54,0x68,0x81,0xd5,0x9a,0x69,0x8c,0x1c,0xc7,0x75,0xc7,0x7f,0x55,0xdd,0x33, + 0x3b,0x17,0xf7,0xe0,0xf2,0xda,0x25,0x97,0xa2,0x49,0x2e,0x21,0x2f,0xa5,0x68,0x15, + 0x2a,0x8e,0x68,0x51,0x16,0x96,0x87,0x65,0x48,0xf9,0x40,0x59,0xc8,0x81,0x20,0xb6, + 0x1,0xfb,0x4b,0x80,0x7c,0x15,0x92,0x0,0x51,0x88,0x24,0xa6,0x8c,0xc8,0xa0,0x81, + 0x18,0xc8,0x97,0x8,0xf0,0x7,0x3,0x44,0xa0,0x0,0x56,0xa4,0x40,0x92,0x21,0x85, + 0xb4,0x68,0x99,0x94,0x28,0x24,0x64,0xc4,0x43,0xa2,0x28,0x53,0x94,0x78,0x48,0x33, + 0xbb,0x3c,0x76,0xb9,0xbb,0x73,0x4f,0x57,0xbd,0x7c,0x98,0xee,0x99,0x9e,0xde,0x99, + 0x3d,0x48,0x2a,0x40,0x7a,0xf1,0xd0,0x5d,0x47,0x77,0xfd,0xff,0xef,0xbd,0xaa,0x7a, + 0xaf,0x66,0x95,0x88,0xf0,0xff,0xf9,0x72,0xef,0xe6,0xc7,0x1e,0x3f,0xa0,0xd2,0xd5, + 0x2,0x43,0xda,0x71,0x7,0xad,0x95,0x1,0xad,0x64,0x0,0xc0,0x8a,0xca,0x69,0xad, + 0x72,0xd6,0x78,0xd9,0x78,0x9a,0xab,0x6f,0x3e,0x23,0x85,0xbb,0x35,0xa6,0xba,0x53, + 0xb,0xec,0x7a,0x4e,0xdd,0x63,0x45,0xef,0xd5,0xa2,0x9e,0x12,0x78,0x14,0xd0,0xb, + 0xbc,0x62,0x15,0x1c,0xb5,0x4a,0x5e,0xd6,0xca,0xbe,0xf2,0xab,0xbf,0x91,0xcb,0x77, + 0x32,0xfe,0x6d,0x13,0x18,0xdb,0xef,0xee,0xd5,0xc8,0x3e,0x11,0xf5,0x20,0xc0,0xe0, + 0xc0,0x5a,0x73,0xef,0xe6,0xad,0x4e,0x7f,0xcf,0x4a,0xd2,0xc9,0x6e,0xd2,0x89,0x6e, + 0x92,0x5d,0x19,0x0,0x4a,0x95,0x3c,0x85,0xf2,0xc,0x85,0xd2,0xc,0x37,0xa7,0xaf, + 0x73,0xfe,0x93,0xf,0x4d,0x36,0xf7,0x85,0x3,0xa0,0x94,0xbc,0x6f,0x51,0xff,0x70, + 0xe4,0x59,0xef,0x95,0xff,0x13,0x2,0x3b,0x7f,0x18,0x7b,0x4,0x25,0x7,0x10,0x1e, + 0x1e,0x18,0x18,0x34,0xa3,0x23,0xdb,0x9c,0xcd,0x6b,0xef,0x23,0x9d,0xe8,0x6,0xc0, + 0x8a,0x1,0x51,0x88,0x8,0xc1,0xb7,0x95,0x52,0x28,0xa5,0x40,0x9,0x5a,0x39,0x0, + 0x14,0xca,0x33,0x7c,0xf2,0xc5,0x7,0x9c,0x3a,0x77,0xd2,0xe4,0x72,0x59,0x7,0xc5, + 0x7b,0x88,0x7a,0xe6,0xad,0xbf,0xad,0xbd,0xf3,0xa5,0x10,0xd8,0xf3,0xbc,0xea,0x31, + 0x55,0xe7,0x67,0xc0,0xd3,0x7d,0x7d,0xcb,0xcd,0xd8,0xf6,0x3d,0xce,0x96,0x75,0xa3, + 0x8,0x82,0x58,0x8b,0x31,0x6,0x63,0xcc,0xa2,0xbe,0xe5,0x38,0xe,0x8e,0xe3,0xa0, + 0xb4,0x46,0xa1,0xf8,0xed,0xe7,0xa7,0x38,0x72,0xfc,0x90,0x99,0x9a,0x9a,0x74,0x80, + 0x97,0x9c,0xb8,0xf9,0xc1,0xa1,0xbf,0x92,0xe9,0xbb,0x46,0xe0,0xb1,0xfd,0x6a,0xd8, + 0xc5,0x7d,0x5d,0x29,0xb5,0x69,0xf7,0x63,0xdf,0xd2,0xa3,0x9b,0xbf,0x8e,0x52,0x1a, + 0xe3,0x19,0x3c,0xaf,0xb6,0x28,0xd0,0x1d,0xc9,0xb8,0x31,0x5c,0xd7,0xc1,0x5a,0xc3, + 0xe9,0x8b,0xc7,0x39,0xfc,0xf6,0x1b,0x56,0x44,0x2e,0x7a,0x78,0x4f,0xbe,0xfd,0xac, + 0x5c,0xb8,0x63,0x2,0x63,0xfb,0x63,0xbb,0xb5,0xc8,0x4b,0xa9,0x4c,0x26,0xfd,0x47, + 0x4f,0x7e,0xc7,0x59,0xdd,0xb3,0x1e,0x63,0xea,0xc0,0x6f,0x77,0xfe,0x48,0xe4,0x41, + 0x29,0x85,0xeb,0xc6,0x70,0xb4,0xc3,0xf8,0xf4,0x65,0x7e,0xf1,0xcb,0x83,0xa6,0x58, + 0xc8,0x17,0xac,0x52,0x4f,0x1f,0x79,0xb6,0x76,0xf8,0xb6,0x9,0x8c,0xed,0x8f,0xed, + 0x56,0xc8,0x1b,0x83,0x3,0x83,0x3c,0xbd,0xe7,0x7b,0x4e,0xaa,0x6b,0x19,0xb5,0x6a, + 0xd,0x6b,0x17,0xe7,0x2a,0xf3,0x81,0xe,0x37,0x4,0x55,0x5a,0x3b,0xc4,0x63,0x31, + 0xa,0x95,0x59,0x5e,0x3e,0xfc,0x73,0x93,0x9d,0xc8,0x22,0xa8,0x6f,0xcd,0x47,0xa2, + 0x23,0x81,0xc7,0xf6,0xab,0x61,0x57,0x9c,0x13,0x3,0x83,0x83,0xe9,0x3f,0x7d,0xe2, + 0xcf,0x1d,0x47,0x6b,0xaa,0x95,0xa5,0x69,0x7d,0x31,0xa0,0xa3,0xed,0x4a,0x29,0xe2, + 0xf1,0x18,0xc6,0x1a,0x5e,0x7c,0xe3,0x5f,0x4c,0x6e,0x3c,0x5b,0xf0,0x94,0x79,0xa8, + 0x93,0x3b,0xb5,0x5d,0xb3,0xf7,0x3c,0xaf,0x7a,0x5c,0xdc,0xd7,0xd3,0x99,0x65,0xe9, + 0x6f,0xef,0xfe,0x9e,0xe3,0x68,0x4d,0xa5,0xbc,0x38,0xf0,0x12,0x88,0x84,0xa,0x1, + 0xe8,0x40,0x5a,0x3a,0xb6,0xb6,0x5b,0x2b,0x94,0xcb,0x55,0xb4,0xd2,0xec,0x1d,0xfb, + 0xae,0x93,0x4e,0x2f,0x4b,0xbb,0xb8,0xaf,0xef,0x79,0x5e,0xf5,0x2c,0x9a,0x80,0xa9, + 0x3a,0x3f,0xd3,0x4a,0x6f,0xfa,0xc3,0x27,0xbe,0xeb,0xa4,0xba,0x32,0x54,0x2a,0x15, + 0x2c,0x1e,0x16,0xd3,0x5e,0xa4,0x29,0x22,0x6,0x6b,0x5b,0xeb,0x82,0xb2,0x44,0xca, + 0xad,0xed,0x5e,0x53,0xac,0x47,0xa5,0x5c,0x21,0x19,0xcf,0xf0,0xed,0x6f,0x7e,0xc7, + 0xd1,0x4a,0x6f,0xf2,0x57,0xc0,0x39,0xd7,0x1c,0x17,0xda,0xf9,0xc3,0xd8,0x23,0x20, + 0xc7,0xbe,0xb9,0xf3,0x49,0x7e,0x77,0xf3,0xe,0x2a,0xb5,0x22,0x35,0xcf,0xeb,0xa0, + 0xeb,0x39,0xb7,0x25,0xb9,0xb,0xf8,0x96,0xea,0xd0,0xee,0x38,0x2e,0x89,0x58,0x8a, + 0x53,0x17,0x8f,0x71,0xf8,0xd8,0x2f,0x1,0xb5,0x23,0xba,0x4f,0xcc,0xb5,0x80,0x92, + 0x3,0x7d,0x7d,0xcb,0xcd,0xe8,0xa6,0xed,0x54,0xbd,0xa,0x55,0xaf,0x82,0x60,0x10, + 0x22,0x5a,0x9a,0x47,0xd3,0xb,0x6a,0xde,0x36,0x45,0x22,0x65,0x23,0xbe,0x58,0x43, + 0xb5,0x56,0xa1,0x52,0xab,0x70,0xff,0xc6,0xed,0xf4,0xf6,0xf4,0x19,0x94,0x1c,0x88, + 0xc2,0x6d,0x21,0x30,0xb6,0xdf,0xdd,0x8b,0xf0,0xf0,0xd8,0xf6,0x3d,0xe,0x28,0x2a, + 0xb5,0x42,0xb,0x18,0x11,0x8b,0xd,0xc4,0x5a,0x8c,0x34,0xc5,0xda,0x66,0x7d,0x20, + 0x46,0x2c,0xc6,0x5a,0x8c,0x8d,0x80,0x97,0x10,0x50,0x69,0x25,0x1d,0x75,0xc1,0x4a, + 0xad,0x0,0xa2,0x78,0xf4,0xa1,0x3d,0xe,0xc2,0xc3,0x63,0xfb,0xdd,0xbd,0x61,0xcc, + 0x6e,0x2b,0x1b,0xd9,0xb7,0x66,0x60,0xad,0x19,0x5e,0x3b,0xea,0x94,0xbd,0x2,0x9e, + 0xad,0xcd,0x6f,0xe6,0x79,0xdd,0x43,0xe6,0x75,0x8f,0x68,0x5b,0xa7,0xbe,0x16,0x43, + 0xa5,0x56,0x62,0x78,0x70,0x94,0x35,0x2b,0x8f,0x9a,0x89,0x1b,0xd9,0x7d,0x40,0x23, + 0x6e,0x6a,0x58,0x60,0xd7,0x73,0xea,0x1e,0x11,0xf5,0xe0,0xe8,0xc8,0x36,0x7,0x84, + 0x52,0x75,0xb6,0xa9,0xd1,0x88,0x66,0xc3,0xf5,0x22,0xe1,0x72,0xd8,0x5,0x5a,0xad, + 0x15,0xf4,0xf,0xac,0x62,0x23,0xd6,0x8c,0x5a,0x37,0xfc,0x5e,0xa9,0x32,0x8b,0x88, + 0x70,0xff,0x96,0x87,0x1c,0x11,0xf5,0xe0,0xae,0xe7,0xd4,0x3d,0x73,0x2c,0x60,0x45, + 0xef,0x55,0xc0,0xc6,0x81,0x11,0xaa,0x5e,0x19,0x63,0x43,0x21,0x42,0x78,0xe9,0x6b, + 0xa3,0xa5,0xb6,0x13,0x58,0x22,0x8f,0x1d,0xfb,0x36,0x1b,0x3a,0x8e,0x21,0x50,0xf3, + 0xca,0x6c,0x58,0xfd,0x55,0xe0,0x55,0xac,0xe8,0xbd,0xc0,0x4f,0x5b,0x2c,0xa0,0x45, + 0x3d,0x35,0x38,0xb0,0xd6,0xa4,0x13,0xbd,0x54,0xbc,0x22,0xd6,0x4a,0x53,0x44,0x10, + 0xff,0x5e,0x17,0xdf,0xb7,0xc3,0xfe,0x1f,0xd1,0x78,0xa7,0xf9,0x21,0xd6,0xb6,0xcc, + 0x87,0xfa,0x1c,0x69,0x3f,0x8f,0x4c,0x68,0x1e,0x95,0x6b,0x45,0x32,0x89,0x5e,0xd6, + 0xac,0x1a,0x34,0x5a,0xd4,0x53,0x2d,0x2e,0xf4,0xf8,0x1,0x95,0x16,0x78,0x74,0xcb, + 0xc6,0x11,0x7,0x81,0x52,0xad,0xd0,0x5c,0x79,0x82,0x75,0x1e,0xf,0xc1,0x43,0xc4, + 0x43,0xc4,0x80,0xdf,0x2e,0x62,0xda,0xf4,0xf5,0xeb,0xa5,0xd9,0x1e,0xd4,0xd7,0x27, + 0x6a,0xdd,0x65,0x4,0xb,0xc1,0xb3,0x5f,0x16,0xb1,0x58,0x9a,0xee,0x19,0xd4,0x97, + 0xaa,0x79,0x40,0xd8,0x3c,0x34,0xe2,0x8,0x3c,0xfa,0xf8,0x1,0x95,0x6e,0xb8,0x50, + 0xb5,0xc0,0x90,0xd2,0xe8,0xfe,0xee,0x55,0xd4,0x4c,0x5,0x63,0xab,0xd,0x7b,0x46, + 0x27,0xe9,0x52,0x5c,0xe9,0xf6,0x26,0x7f,0xe8,0xbd,0x8,0x86,0x9a,0x57,0xa1,0xaf, + 0x7b,0x15,0x80,0xae,0x16,0x18,0x2,0xce,0xbb,0x0,0xda,0x71,0x7,0x45,0x84,0x74, + 0xb2,0x1b,0x2b,0x1e,0x46,0x4c,0xcb,0x60,0x51,0x10,0x2d,0xae,0xde,0xb6,0x9f,0xb4, + 0x25,0xdb,0x52,0x9e,0x77,0x15,0x92,0xb6,0x64,0x8d,0x18,0xd2,0x5d,0xcb,0x8,0x30, + 0x37,0x8,0x58,0x2b,0x3,0x4a,0x41,0x32,0x96,0xc1,0xb3,0x1e,0x62,0xcd,0x9c,0xc1, + 0x16,0xd6,0x98,0x74,0xee,0xd7,0x69,0x42,0x2f,0xc1,0x42,0x2,0x78,0xc6,0x23,0x15, + 0xaf,0xa7,0xa9,0xd6,0xd6,0xf,0xc,0xea,0x16,0x50,0x32,0x20,0x28,0x92,0xf1,0xc, + 0x25,0x6f,0x1a,0xe3,0x87,0xcb,0x8b,0xd2,0xd8,0x22,0x42,0x87,0xce,0x6e,0xd7,0xba, + 0x57,0xcc,0x37,0x1e,0x2,0x9e,0x57,0x25,0x15,0xab,0xc7,0x74,0xc1,0x89,0x47,0xeb, + 0xb1,0x8a,0xaa,0xbf,0x67,0xc3,0x4,0x42,0xf,0x4b,0xd5,0xd8,0xdd,0x0,0xdd,0xba, + 0x4,0x47,0x3b,0xf8,0x4,0xac,0xa8,0x9c,0x52,0x50,0x2c,0xe7,0xd1,0x8e,0x83,0x91, + 0xf6,0x88,0x6e,0xcb,0xa7,0xa3,0x8b,0xc1,0x2,0x6e,0x35,0x1f,0x79,0x8d,0x4b,0xb1, + 0x92,0x27,0xc0,0xdc,0x20,0xa0,0xb5,0xca,0x89,0x8,0xc5,0xf2,0x2c,0x3d,0x99,0x3e, + 0x7f,0x99,0x6c,0xef,0xd3,0x5f,0x2a,0xe8,0xe,0xfd,0x83,0xef,0x3a,0xca,0x61,0xa6, + 0x7c,0x8b,0x0,0x73,0x83,0x80,0x35,0x5e,0x56,0x69,0x87,0x7c,0x69,0x86,0xde,0xcc, + 0xa,0x8c,0xf5,0x5a,0x3e,0xb6,0xa4,0xc1,0x16,0x49,0x76,0xae,0x7b,0x4,0xf5,0xd2, + 0x2,0x3a,0xdc,0x5f,0x2b,0x97,0x7c,0x69,0x86,0x0,0x73,0x83,0x40,0x3c,0xcd,0xd5, + 0x5a,0x9,0x7b,0xf3,0xd6,0x35,0xbd,0x71,0xcd,0x56,0x94,0x68,0x3c,0xf1,0x3a,0xf8, + 0xf0,0xfc,0x9a,0xee,0xec,0xfb,0xb,0x83,0x9e,0xcf,0x42,0x5a,0xc7,0x88,0x39,0x49, + 0x26,0x67,0xaf,0x3,0xd8,0x78,0x9a,0xab,0xe0,0xef,0xc4,0x6f,0x3e,0x23,0x5,0x5, + 0x47,0x2f,0x5c,0x39,0x67,0x10,0x45,0x2a,0xde,0xb,0x12,0xda,0x69,0x23,0x21,0xae, + 0xe0,0xe7,0x4,0x78,0x8d,0x10,0x58,0xfc,0xd8,0x3e,0xfa,0x9e,0x84,0x73,0x84,0x96, + 0x1d,0xd9,0xdf,0xd5,0xad,0xd7,0x1c,0x23,0x94,0xdd,0x49,0x24,0xfc,0xce,0xc4,0x7a, + 0x41,0x14,0x9f,0x7e,0x71,0xce,0x28,0x38,0x1a,0x9c,0xaf,0x36,0x83,0x39,0x25,0x2f, + 0x8f,0x4f,0x64,0x1f,0x9b,0x2d,0x4d,0x93,0x89,0xf5,0x33,0x55,0xcc,0x46,0x7c,0x58, + 0xe6,0xb8,0xc3,0x7c,0xee,0xb2,0x18,0x9f,0x6e,0xa7,0xe9,0x4e,0x16,0x5c,0x96,0xe8, + 0x27,0x5f,0xbe,0xc5,0xc4,0xcd,0xac,0x23,0x4a,0x5e,0xe,0x9a,0x9a,0xc1,0x9c,0xb2, + 0xaf,0x0,0x7c,0x96,0x3d,0x47,0xca,0x67,0x6b,0xad,0xc1,0x9a,0x20,0x5b,0xb2,0xad, + 0x41,0x5c,0x10,0x6c,0x19,0x3f,0x3c,0x36,0x76,0x6e,0x60,0x66,0x6d,0xe3,0x7d,0x63, + 0xea,0x59,0x96,0xb1,0xcd,0x8c,0xcb,0xf8,0xdf,0x37,0xa1,0xf6,0x76,0x59,0x1b,0x28, + 0xd2,0xf1,0x5e,0x2e,0x4d,0x7c,0xd4,0x82,0xb5,0x85,0x40,0xfd,0x94,0x58,0x4e,0x9d, + 0xbd,0x70,0xc2,0x28,0x81,0xfe,0xd4,0xba,0x66,0xf6,0x64,0x5b,0x7,0x69,0x3b,0x58, + 0x78,0x50,0x53,0x4f,0xcc,0x8d,0xf5,0x1a,0x60,0xed,0x12,0x41,0x87,0xb3,0xb4,0x95, + 0xcb,0x86,0x50,0x28,0xce,0x7d,0x76,0xd2,0x20,0x72,0xe6,0xad,0x67,0x19,0x9f,0x43, + 0x40,0x29,0x15,0x2f,0x4d,0xab,0x3,0x13,0x37,0x72,0xce,0x85,0xec,0x19,0xfa,0x13, + 0xeb,0x71,0x54,0xac,0xa1,0xe1,0x86,0xa6,0xa3,0x21,0x6f,0xa3,0x3d,0x8,0x8f,0x4d, + 0x33,0x69,0x69,0x69,0xf,0x2c,0x12,0xa,0xab,0xdb,0x25,0x4a,0x11,0x71,0x74,0x8c, + 0x15,0xe9,0xf5,0x5c,0xc8,0x9d,0xe6,0xda,0x64,0xce,0x99,0xbd,0xae,0xfe,0x9,0x48, + 0x2a,0xa5,0x62,0xd,0x2,0x4a,0x29,0xd,0xc4,0xdf,0xfb,0x89,0x39,0x6c,0x6b,0xf2, + 0xfe,0xb1,0x93,0x87,0xac,0x8,0xac,0x4a,0x6f,0x9c,0x3b,0xa1,0x5a,0x2c,0xd1,0x46, + 0xd3,0x11,0x4b,0xb5,0xba,0x61,0xc4,0x7d,0xa2,0x87,0x0,0x6d,0x64,0xa0,0x7b,0x23, + 0x8,0x1c,0x3f,0x7b,0xd8,0x9a,0xaa,0x9c,0x3e,0xf1,0xcf,0xe6,0xd7,0x40,0x17,0xd0, + 0xa5,0x7c,0xe0,0x0,0xb1,0x40,0x6e,0xfc,0x56,0xfd,0x78,0x3a,0x3f,0xa5,0xcf,0x7c, + 0xf6,0x2e,0xfd,0xc9,0x21,0xba,0xe3,0xab,0x22,0xc9,0x46,0x78,0x55,0xa,0xa5,0x95, + 0x91,0x54,0x33,0x7c,0x6f,0x49,0x6e,0x82,0x78,0x7f,0x11,0x7f,0x3d,0xc9,0x55,0xf4, + 0xa7,0xd7,0x73,0xf6,0xf2,0x3b,0xcc,0x14,0xa6,0xf4,0xb5,0xb3,0xea,0xa7,0x61,0xac, + 0x80,0xab,0x43,0xae,0xe4,0x0,0xce,0x87,0xff,0x66,0x4e,0x57,0xb,0xbc,0x75,0xf4, + 0xe4,0x7f,0xda,0xf1,0xa9,0x2b,0x6c,0xe8,0x7b,0x80,0x2e,0x9d,0xaa,0x6b,0xda,0x78, + 0x4d,0xed,0xcd,0x37,0x37,0x22,0x13,0x76,0x21,0x2d,0xb7,0x93,0x84,0x9b,0x66,0xe3, + 0xf2,0x51,0x26,0xa6,0xaf,0x70,0xec,0xd4,0x21,0xa9,0xcc,0xf2,0xf6,0xf9,0xff,0x30, + 0x67,0x3,0x9c,0x81,0x4,0x4,0x94,0x2f,0x0,0xea,0xc3,0x17,0xcd,0x7e,0xaf,0x6a, + 0xb3,0xaf,0xfe,0xe6,0xa0,0x2d,0x95,0xf3,0xc,0xf7,0x7f,0xd,0xad,0x62,0x5f,0x3a, + 0xe8,0x40,0x5c,0x1d,0x63,0xcb,0xca,0xaf,0x51,0xaa,0xe6,0x79,0xed,0x9d,0x83,0xd6, + 0xab,0xda,0xdc,0x7,0xff,0x6a,0x7e,0x1c,0xc5,0x19,0x9e,0xc4,0x36,0x2c,0xb7,0x2e, + 0x33,0x73,0xe1,0xd,0xf3,0x97,0xc5,0x62,0xa1,0xfc,0xda,0xbb,0x7,0xad,0x43,0x8c, + 0x91,0x95,0xdf,0x20,0xe1,0x64,0x5a,0xf,0xac,0xec,0xdc,0x4d,0xec,0x4e,0x25,0x15, + 0xcb,0xb0,0x75,0xf5,0x37,0x70,0x54,0x8c,0xd7,0xdf,0x3b,0x68,0x8b,0xc5,0x42,0xe5, + 0xe3,0xd7,0xcc,0xbe,0x99,0x2f,0x98,0x8d,0xe2,0x4,0x4c,0x40,0xc0,0x0,0x5e,0x48, + 0x6a,0xd9,0xff,0xe2,0xd2,0xe7,0x27,0xe4,0xef,0x26,0x6e,0xe6,0x78,0xe9,0xed,0x17, + 0xac,0xe7,0x79,0xdc,0xb7,0x66,0x27,0x7d,0x5d,0x83,0x2d,0xab,0x49,0xa7,0xd5,0xe3, + 0x76,0xa4,0x37,0x39,0xc8,0xfd,0x6b,0x76,0x62,0x8c,0xc7,0xbf,0x1f,0x7d,0xc1,0x4e, + 0x4c,0xe6,0xb8,0xfa,0x9e,0xfc,0x68,0xe2,0x7d,0x2e,0x5,0xb8,0x22,0x38,0x3d,0x15, + 0xfa,0x1d,0x2b,0x9,0xa4,0x7c,0x49,0x3,0x49,0x20,0x35,0xfc,0xa4,0xde,0xb1,0xf6, + 0xf7,0xd4,0xbe,0x54,0x2a,0x9d,0xf8,0x83,0x47,0xfe,0x4c,0xaf,0xee,0x59,0xcf,0xf8, + 0xec,0x45,0x2e,0x4d,0x9e,0xa1,0x66,0xca,0xdc,0x8d,0x2b,0xe6,0x24,0xd8,0xb0,0xfc, + 0x77,0x58,0xb3,0x6c,0x13,0x13,0xd3,0x57,0x78,0xf5,0x9d,0x83,0xb6,0x54,0x2c,0x54, + 0xae,0x1c,0x97,0x7f,0xfc,0xf4,0x4d,0x7b,0x1c,0x28,0xfa,0x52,0x2,0xa,0xfe,0xf3, + 0x8c,0x88,0xd4,0xc2,0x4,0x54,0x88,0x40,0x2a,0x20,0x0,0x24,0xd7,0x6c,0x63,0xf3, + 0x96,0x27,0x9c,0x1f,0xb9,0x71,0x3d,0xb0,0x63,0x74,0x8f,0xba,0xef,0x9e,0xaf,0xa3, + 0x80,0xcf,0xa7,0xcf,0x73,0x75,0xfa,0x43,0x3c,0x53,0xbd,0x2d,0xe0,0xae,0x13,0x67, + 0xa8,0x67,0x2b,0xeb,0x7a,0xee,0x45,0x80,0xf,0x2e,0xbf,0xcb,0xb1,0x53,0x87,0xc4, + 0xab,0xd8,0xf1,0xf3,0xaf,0x9a,0xbf,0xbf,0x76,0x9a,0x8b,0x3e,0xe8,0x52,0x88,0x40, + 0x11,0x98,0x1,0x2a,0x22,0xd2,0x7a,0x3a,0x1d,0x22,0x91,0x8c,0x4a,0xf7,0x5a,0xfa, + 0xb7,0xfe,0x89,0xf3,0xd7,0x89,0x1e,0x76,0x74,0xa7,0xfb,0xec,0xf6,0xfb,0x77,0xeb, + 0xe1,0x81,0x7,0xb0,0x58,0xa6,0x8a,0x59,0xae,0x17,0xae,0x72,0xa3,0x70,0x75,0x41, + 0xab,0xc4,0x9c,0x4,0x2b,0xd2,0x43,0xac,0x4c,0xf,0xd1,0x97,0x1a,0x44,0xa3,0xb9, + 0x90,0x3b,0xcd,0xbb,0x67,0xf,0xdb,0xd9,0xc2,0x94,0x2e,0x4f,0x71,0xfc,0xec,0x8b, + 0xe6,0x27,0xf9,0x1c,0x37,0x81,0x72,0x88,0x40,0x20,0x33,0x40,0xb5,0xa1,0xf8,0x76, + 0x3f,0x5a,0x28,0xa5,0xba,0x42,0xe0,0x13,0x61,0xd9,0xf4,0xb8,0xde,0x36,0xf8,0x20, + 0x7f,0xe1,0xa6,0xd4,0xbd,0xab,0x96,0xf,0xd8,0x91,0xaf,0x6c,0xd3,0x1b,0x56,0x7f, + 0x95,0x4c,0xa2,0x17,0x44,0x28,0xd6,0x66,0xa8,0x78,0x5,0x2a,0xa6,0x44,0xd5,0x2b, + 0x1,0x10,0x77,0x93,0x74,0x39,0x49,0xba,0xdc,0x34,0xa9,0x58,0x37,0x28,0x45,0xbe, + 0x7c,0x8b,0x4b,0x13,0x1f,0x71,0xee,0xb3,0x93,0xf6,0xda,0x64,0x4e,0xd7,0xa,0xf2, + 0x71,0xf6,0x4,0x2f,0x7c,0xfa,0x2b,0xfb,0x3f,0x40,0xc5,0x7,0x1f,0x96,0x3c,0x50, + 0x10,0x11,0xdb,0x82,0xb5,0xd3,0xaf,0x2e,0xbe,0x35,0x12,0x3e,0x89,0x2e,0xff,0xb9, + 0xb,0x88,0x3,0x5d,0x23,0x7f,0xac,0x77,0xad,0x18,0xe6,0xfb,0x4e,0x5c,0xd,0x3, + 0xac,0x5e,0x3e,0x68,0x37,0xae,0x1b,0xd1,0xcb,0x33,0x2b,0x49,0x25,0xba,0x49,0x75, + 0x2d,0x23,0xd9,0x95,0x6,0xa0,0x54,0x29,0x50,0xac,0xcc,0x52,0x2c,0xcf,0x30,0x99, + 0xbf,0xce,0xa7,0x9f,0x9f,0xb3,0x13,0x93,0x59,0xd,0x60,0x2a,0xf2,0xc9,0xf5,0x8f, + 0xf9,0xf9,0x47,0xbf,0xb0,0x47,0x80,0xaa,0xf,0x3e,0xb8,0x7,0x16,0xc8,0x3,0x5e, + 0x5b,0x65,0x2f,0xf4,0xb3,0x51,0x9d,0x7,0xae,0x4f,0x20,0xe5,0x13,0x88,0xe3,0xef, + 0x86,0xeb,0x7e,0x9f,0xf5,0xab,0x47,0xf5,0xae,0xf4,0x72,0xc6,0x74,0x52,0x3d,0xa0, + 0x16,0xf8,0x57,0x3,0x1,0x6b,0x4b,0x72,0x26,0x7f,0x93,0x5f,0x8f,0xbf,0x6f,0x8f, + 0x64,0xff,0x9b,0xab,0xd4,0x57,0x97,0x40,0xaa,0xd4,0xfd,0xbc,0x0,0xd4,0xa2,0x1a, + 0x5f,0x32,0x81,0xe,0x64,0x2,0x8b,0xc4,0xfc,0xb2,0xb,0x38,0xbd,0x1b,0xc8,0xf4, + 0xf,0xb3,0x36,0xb5,0xc2,0x59,0xed,0x26,0x65,0x55,0x3c,0xc9,0x4a,0x1,0x55,0x2b, + 0x71,0xad,0x56,0x54,0x37,0x8a,0x37,0xcc,0xf8,0xe4,0x5,0xb2,0xb7,0x2e,0x53,0xa0, + 0xbe,0x74,0x87,0x97,0xef,0x22,0x75,0x8d,0xd7,0x64,0x9,0xa0,0xee,0xe8,0x9f,0x3d, + 0x7c,0x37,0x53,0xd4,0xb5,0xde,0x8,0x47,0x22,0x2,0xfe,0xa6,0x13,0x12,0x1b,0xba, + 0x5b,0x60,0x29,0x98,0x5b,0xae,0xff,0x5,0x79,0x88,0xdc,0x2f,0xf,0x2c,0xc4,0xde, + 0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/restore.png + 0x0,0x0,0x9,0x8, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd8,0xc,0x2, + 0x8,0x24,0x16,0x56,0x6f,0x14,0x27,0x0,0x0,0x8,0x88,0x49,0x44,0x41,0x54,0x68, + 0xde,0xed,0x59,0xdb,0x6e,0x1b,0x47,0x12,0xad,0xea,0x9e,0x9e,0x19,0x5e,0x86,0x23, + 0xca,0xba,0x90,0xba,0x58,0x80,0x9,0x46,0x41,0x94,0x88,0x8e,0x42,0x29,0xab,0x37, + 0xaf,0xbf,0x21,0x9,0xf2,0x17,0xfb,0xb,0xf9,0x9e,0xe4,0xf,0xd6,0x6f,0x6,0x12, + 0x38,0x9,0x25,0x67,0x23,0x47,0x6b,0x4b,0xe6,0xda,0xb0,0x25,0x42,0xa2,0x24,0x5e, + 0x44,0xce,0xc,0x67,0xa6,0xbb,0x6b,0x1f,0x4c,0xa,0x8c,0x93,0x28,0xb6,0x48,0x23, + 0x36,0x90,0x2,0xe6,0x89,0x68,0xa2,0x4e,0x57,0xd5,0xa9,0xaa,0xd3,0x48,0x44,0x80, + 0x88,0x30,0x8a,0x11,0x11,0xf3,0x3c,0x6f,0x46,0x6b,0xbd,0xa9,0xb5,0xbe,0x15,0x86, + 0x61,0x21,0x8e,0xe3,0x96,0x61,0x18,0xbb,0xae,0xeb,0x56,0x2c,0xcb,0xfa,0x5,0x11, + 0xeb,0x88,0x18,0xc3,0x98,0x8d,0xc1,0x3b,0x6e,0x63,0x1,0xf0,0xcd,0x37,0xdf,0x20, + 0x22,0x1a,0xe9,0x74,0x3a,0x85,0x88,0xb3,0xd5,0x6a,0xf5,0xfd,0x3b,0x77,0xee,0x6c, + 0xde,0xbd,0x7b,0xf7,0x9f,0xf5,0x7a,0xfd,0x36,0x0,0xdc,0x22,0xa2,0x9b,0x44,0x94, + 0x1d,0x37,0x0,0x63,0x1c,0x7f,0xf2,0xf9,0xe7,0x9f,0x13,0x11,0x69,0x0,0xe8,0x31, + 0xc6,0xbc,0xc7,0x8f,0x1f,0xeb,0xbb,0x77,0xef,0xce,0x24,0x93,0xc9,0xa4,0x61,0x18, + 0x9,0xad,0x75,0x3e,0x93,0xc9,0xe4,0xb3,0xd9,0xac,0xad,0xb5,0xde,0x45,0xc4,0x6, + 0x22,0xd2,0x5b,0x3,0x0,0x0,0x20,0x8,0x2,0x48,0x24,0x12,0x8a,0x31,0xa6,0x7c, + 0xdf,0x87,0x5a,0xad,0x96,0xf2,0x7d,0xdf,0x55,0x4a,0x99,0xcd,0x66,0xd3,0x59,0x5d, + 0x5d,0x4d,0xbd,0xf7,0xde,0x7b,0x19,0xc7,0x71,0x26,0x89,0xe8,0xa7,0xaf,0xbf,0xfe, + 0xfa,0xe0,0x8b,0x2f,0xbe,0x50,0x6f,0x5,0x0,0x44,0xd4,0x44,0x14,0x11,0x51,0x8c, + 0x88,0xda,0x30,0xc,0xd2,0x5a,0xc3,0xd1,0xd1,0x11,0x44,0x51,0x94,0xed,0x76,0xbb, + 0xd4,0xe9,0x74,0x44,0xb7,0xdb,0x9d,0x5a,0x5a,0x5a,0xba,0x96,0xcb,0xe5,0xd2,0x9f, + 0x7d,0xf6,0xd9,0x7d,0x22,0xaa,0x1,0x80,0x37,0x4a,0x71,0x8f,0x2d,0x2,0x44,0x44, + 0x0,0x40,0x8c,0x31,0x1a,0xb0,0x9a,0xd6,0x1a,0x3c,0xcf,0xc3,0x6a,0xb5,0x9a,0xed, + 0xf5,0x7a,0xf6,0xf1,0xf1,0x71,0x66,0x6d,0x6d,0xcd,0xdc,0xd8,0xd8,0x48,0x2c,0x2e, + 0x2e,0xce,0x10,0xd1,0x6e,0x18,0x86,0x8f,0x88,0xe8,0xf0,0xaa,0x20,0xfe,0x10,0x80, + 0xd6,0xda,0xf2,0x7d,0x3f,0x6b,0x18,0x86,0x6b,0x9a,0xa6,0x9,0x0,0x8,0x0,0xba, + 0xff,0x5d,0xf8,0x8d,0x88,0x44,0x44,0x6,0x22,0x4e,0x10,0x51,0xde,0x34,0x4d,0x6e, + 0x9a,0x66,0x84,0x88,0x5a,0x8,0x1,0x88,0x8,0x9d,0x4e,0x87,0x55,0xab,0xd5,0x64, + 0xab,0xd5,0x42,0xdf,0xf7,0x8d,0x20,0x8,0xb2,0xab,0xab,0xab,0xb9,0xc5,0xc5,0xc5, + 0x99,0x6c,0x36,0x9b,0x26,0xa2,0x84,0xd6,0xfa,0x19,0x63,0xcc,0x1b,0x1b,0x80,0x93, + 0x93,0x93,0xac,0x10,0x62,0x43,0x4a,0xb9,0x12,0x86,0xe1,0x84,0x69,0x9a,0xdc,0x30, + 0xc,0xc5,0x18,0xa3,0x97,0x6f,0x5e,0x6b,0xcd,0x18,0x63,0x2,0x11,0x6d,0x0,0xc8, + 0xc4,0x71,0x2c,0xb5,0xd6,0xaa,0x9f,0x5e,0xc0,0x18,0x3,0xa5,0x14,0x36,0x9b,0xcd, + 0xc4,0xce,0xce,0x8e,0x79,0x7a,0x7a,0x9a,0x3a,0x3c,0x3c,0x14,0x9b,0x9b,0x9b,0xbc, + 0x54,0x2a,0x39,0x8e,0xe3,0xcc,0x31,0xc6,0x7e,0x20,0xa2,0x1d,0x44,0xf4,0xc7,0x2, + 0xc0,0xb6,0xed,0xc,0x11,0xad,0x70,0xce,0x37,0xc3,0x30,0x74,0x9f,0x3c,0x79,0x92, + 0x3c,0x38,0x38,0xb0,0xdb,0xed,0xb6,0xf8,0xa3,0xa0,0x99,0xa6,0x19,0x6,0x41,0xa0, + 0x7f,0xfe,0xf9,0x67,0xb7,0xd7,0xeb,0x31,0xc3,0x30,0x80,0x31,0x6,0x8c,0x31,0x20, + 0x22,0x90,0x52,0xe2,0xc9,0xc9,0x89,0xd1,0x6a,0xb5,0x92,0x9d,0x4e,0x67,0xd6,0xf7, + 0x7d,0xd1,0x6e,0xb7,0xb3,0xc5,0x62,0x71,0x7a,0x61,0x61,0x21,0x91,0x4e,0xa7,0x53, + 0x5a,0xeb,0x3d,0x0,0x38,0x63,0x8c,0x5,0xa3,0x2,0x30,0xa3,0x28,0x9a,0x90,0x52, + 0x66,0xe,0xf,0xf,0xed,0x6f,0xbf,0xfd,0x36,0xb3,0xb5,0xb5,0x35,0x53,0xaf,0xd7, + 0x53,0x5a,0x6b,0x6,0x0,0x30,0x1c,0x8d,0x7e,0xd,0x48,0xa5,0x94,0xf6,0x7d,0x9f, + 0xf7,0x7a,0x3d,0x31,0x48,0xa1,0xe1,0x48,0x0,0x0,0x28,0xa5,0x58,0xad,0x56,0x4b, + 0x7b,0x9e,0x67,0x9e,0x9e,0x9e,0x5a,0xa7,0xa7,0xa7,0x7c,0x7d,0x7d,0x3d,0x31,0x3f, + 0x3f,0x3f,0xe7,0xba,0xee,0x7d,0xa5,0xd4,0xf6,0xf1,0xf1,0xf1,0x93,0xd9,0xd9,0xd9, + 0xee,0x95,0x1,0x8,0x21,0x50,0x4a,0xc9,0x8f,0x8e,0x8e,0xec,0xed,0xed,0xed,0xf4, + 0xbd,0x7b,0xf7,0x32,0xf,0x1f,0x3e,0x74,0xce,0xcf,0xcf,0xf9,0xb0,0x53,0x2f,0xa5, + 0x93,0x40,0x44,0xe0,0x9c,0x83,0x10,0xe2,0xe2,0xe6,0x87,0xd8,0xa,0x38,0xe7,0x40, + 0x44,0x10,0x86,0x21,0xd4,0xeb,0x75,0x33,0x8a,0xa2,0x6c,0x10,0x4,0xbc,0xd5,0x6a, + 0x4d,0x2e,0x2f,0x2f,0xcf,0x16,0xa,0x85,0x89,0x7c,0x3e,0x9f,0x99,0x9e,0x9e,0x9e, + 0x69,0xb5,0x5a,0x4f,0x33,0x99,0x4c,0xed,0xb2,0x68,0x5c,0xc6,0x42,0xda,0x34,0x4d, + 0x55,0xab,0xd5,0xac,0x9d,0x9d,0x9d,0xc9,0xe7,0xcf,0x9f,0xbb,0x52,0x4a,0x36,0xb8, + 0xd5,0xcb,0xe6,0xa7,0xc1,0xef,0xc3,0xce,0xbf,0x6c,0x9c,0x73,0x0,0x0,0x38,0x3f, + 0x3f,0x37,0x77,0x77,0x77,0xaf,0x35,0x1a,0x8d,0x44,0xb3,0xd9,0x44,0x21,0x4,0x4c, + 0x4f,0x4f,0xdb,0x0,0x30,0x25,0x84,0x48,0x9d,0x9d,0x9d,0x5,0x0,0x70,0x35,0x0, + 0x0,0x40,0x8d,0x46,0xc3,0x3c,0x38,0x38,0x70,0xcf,0xce,0xce,0x12,0x88,0x8,0xc3, + 0x69,0x31,0x42,0xdf,0xb8,0x0,0x18,0x86,0x21,0x4,0x41,0x80,0x5a,0x6b,0x3e,0x33, + 0x33,0x93,0xf0,0x3c,0x6f,0x52,0x6b,0x1d,0x3,0x80,0x4f,0x44,0xcf,0xd2,0xe9,0xb4, + 0x75,0xe5,0x3e,0xc0,0x18,0x83,0x28,0x8a,0x78,0x10,0x4,0x42,0x4a,0xf9,0x1b,0xe7, + 0x89,0x8,0xb4,0xd6,0xbf,0xb9,0xe9,0x41,0xaa,0x5c,0xd2,0x33,0x2e,0xce,0x98,0xa6, + 0x9,0x96,0x65,0x51,0x2e,0x97,0x53,0xb9,0x5c,0x2e,0x48,0xa5,0x52,0xd,0xc6,0xd8, + 0x1,0x0,0x3c,0x47,0xc4,0x93,0x6e,0xb7,0x1b,0x8e,0xd4,0xc8,0x6,0x4e,0x6a,0xad, + 0x7f,0xe3,0x24,0x11,0x81,0x52,0xa,0x94,0x52,0x17,0xe,0xd,0x9c,0x1f,0x66,0x9f, + 0xdf,0x33,0xa5,0x5e,0x4c,0x11,0x13,0x13,0x13,0x51,0xa1,0x50,0x38,0xff,0xe8,0xa3, + 0x8f,0xba,0xcb,0xcb,0xcb,0xf5,0xeb,0xd7,0xaf,0xff,0xd7,0x30,0x8c,0x2d,0x0,0xd8, + 0x8d,0xe3,0xf8,0xe9,0xb5,0x6b,0xd7,0x9a,0x23,0x1,0x18,0xb0,0xc7,0x80,0x41,0x86, + 0x41,0x9,0x21,0xb4,0xeb,0xba,0x51,0x32,0x99,0x54,0x8c,0x31,0xde,0x6f,0x80,0xca, + 0xf7,0x7d,0xde,0xed,0x76,0x4d,0x29,0x25,0xfb,0xbd,0x73,0x0,0x0,0x96,0x65,0xc1, + 0xc4,0xc4,0x44,0xb8,0xbc,0xbc,0xdc,0x2c,0x97,0xcb,0xb5,0x4f,0x3e,0xf9,0xe4,0x70, + 0x7e,0x7e,0xbe,0xea,0xba,0xee,0x7d,0xc6,0xd8,0xf6,0xc9,0xc9,0xc9,0xd3,0x91,0x58, + 0xe8,0xcf,0xa2,0x22,0xa5,0x84,0x4c,0x26,0x13,0xad,0xaf,0xaf,0x1f,0xde,0xbc,0x79, + 0xb3,0x6d,0x9a,0x26,0x47,0x44,0xea,0xf5,0x7a,0xba,0x52,0xa9,0x64,0x2b,0x95,0xca, + 0x5c,0xab,0xd5,0xb2,0x6,0xbd,0x60,0x38,0x92,0x42,0x8,0x3d,0x37,0x37,0xe7,0x97, + 0x4a,0xa5,0x46,0xb9,0x5c,0x3e,0x2e,0x16,0x8b,0x4f,0x16,0x16,0x16,0xb6,0xd2,0xe9, + 0x74,0x5,0x0,0xf6,0x0,0xe0,0x6c,0x76,0x76,0x76,0xb4,0x3e,0x70,0x99,0x69,0xad, + 0x41,0x4a,0x9,0xa9,0x54,0x4a,0x7d,0xfc,0xf1,0xc7,0xad,0x2f,0xbf,0xfc,0xf2,0x21, + 0x0,0xc,0x42,0x3d,0x15,0x45,0xd1,0xfb,0xf,0x1e,0x3c,0xc8,0x49,0x29,0x2f,0x9c, + 0x27,0x22,0x10,0x42,0x90,0xeb,0xba,0x2a,0x9f,0xcf,0xf7,0x3e,0xfc,0xf0,0xc3,0xe3, + 0xcd,0xcd,0xcd,0x6a,0xa9,0x54,0xda,0x77,0x1c,0xe7,0x11,0x63,0xec,0x7,0x44,0x1c, + 0x5f,0x27,0x7e,0xa5,0x6d,0x88,0x31,0xce,0x5f,0x54,0xeb,0x9,0x0,0xfc,0xd8,0x5f, + 0x90,0xfe,0x21,0x84,0x30,0x6,0x29,0x35,0x94,0x6e,0x94,0xcd,0x66,0xfd,0x95,0x95, + 0x95,0x4e,0xb9,0x5c,0x6e,0xae,0xae,0xae,0x3e,0xb9,0x7e,0xfd,0xfa,0x7f,0x5c,0xd7, + 0xad,0x20,0xe2,0x2e,0x11,0x3d,0x7f,0x5d,0xe7,0x47,0x2,0xd0,0x67,0x23,0x16,0xc7, + 0xb1,0x49,0x44,0x21,0x22,0x3e,0x7,0x0,0x23,0xc,0xc3,0x38,0x8a,0x22,0x93,0x88, + 0x58,0x1c,0xc7,0x60,0x18,0x6,0x38,0x8e,0xa3,0xe7,0xe7,0xe7,0x83,0x62,0xb1,0xd8, + 0x5a,0x5b,0x5b,0x7b,0xb6,0xb1,0xb1,0xf1,0x70,0x71,0x71,0x71,0x7,0x0,0x76,0xc3, + 0x30,0x7c,0x64,0xdb,0xf6,0x21,0x63,0x6c,0xbc,0xd3,0xe8,0x55,0x30,0xd,0xd7,0xc8, + 0x80,0x86,0x53,0xa9,0x14,0x15,0xa,0x85,0x66,0xb9,0x5c,0xae,0x97,0x4a,0xa5,0xfa, + 0xd2,0xd2,0xd2,0x2f,0xd3,0xd3,0xd3,0xdf,0x1,0xc0,0x7d,0x44,0xac,0xd9,0xb6,0xfd, + 0xd7,0xed,0x3,0x43,0x14,0xc9,0x10,0xd1,0x24,0x22,0x4e,0x44,0x4c,0x4a,0x89,0x8c, + 0x31,0xc8,0xe5,0x72,0xb0,0xb2,0xb2,0xd2,0x5c,0x5f,0x5f,0x3f,0x2c,0x95,0x4a,0x7b, + 0xc5,0x62,0x71,0xd7,0x71,0x9c,0x2d,0x44,0xfc,0x9,0x0,0xe,0x10,0x51,0xbf,0x35, + 0x2b,0xe5,0x20,0xa,0x5a,0x6b,0xb4,0x6d,0x9b,0x72,0xb9,0x9c,0x97,0x4e,0xa7,0x83, + 0xdb,0xb7,0x6f,0x57,0xd7,0xd6,0xd6,0xaa,0x99,0x4c,0x66,0xc7,0x71,0x9c,0xef,0x1, + 0x60,0x17,0x0,0xde,0xbe,0x9d,0x78,0x10,0x9,0xad,0x35,0x2b,0x14,0xa,0x91,0xd6, + 0xfa,0x28,0x95,0x4a,0x3d,0x2b,0x97,0xcb,0xdb,0xfd,0x7c,0xdf,0x43,0xc4,0xc7,0x88, + 0xd8,0x7c,0xeb,0x54,0x89,0x7e,0x3a,0x61,0x10,0x4,0x6,0x11,0xc1,0xf2,0xf2,0xf2, + 0xc9,0x8d,0x1b,0x37,0xea,0x9c,0xf3,0x1d,0xd7,0x75,0x7f,0x4,0x80,0x37,0x26,0x6c, + 0x8d,0x3,0x0,0x69,0xad,0x19,0xe7,0x9c,0x2b,0xa5,0xc,0x44,0x8c,0x53,0xa9,0x54, + 0xd5,0xb2,0xac,0xa,0x63,0x6c,0x1b,0x0,0x9e,0xf6,0x65,0x14,0x5,0x6f,0xc0,0x46, + 0x2,0xd0,0xa7,0xd2,0x1,0xfb,0xc4,0x0,0x70,0xa6,0xb5,0xde,0x7,0x80,0x48,0x29, + 0xf5,0x3d,0xe7,0x7c,0x1f,0x11,0x7b,0x6f,0x52,0x99,0x33,0xc6,0x40,0x9d,0x8c,0x31, + 0xa6,0x0,0xa0,0xed,0x38,0xce,0xd3,0xf3,0xf3,0xf3,0x9a,0xd6,0x5a,0xb,0x21,0x6a, + 0x6f,0xda,0xf9,0x71,0x44,0x0,0xf1,0x45,0x18,0x8,0x0,0x7c,0x44,0x3c,0x5,0x80, + 0xd3,0x77,0x4e,0x1b,0x7d,0xe7,0xc5,0xdd,0x77,0x1a,0x40,0x5f,0x89,0xa3,0xbf,0xa, + 0xc0,0x48,0x35,0x20,0xa5,0xc,0xc3,0x30,0xc,0xa4,0x94,0x37,0xc,0xc3,0xf8,0x57, + 0xbb,0xdd,0x96,0x5a,0x6b,0x1c,0x9e,0x8b,0x5e,0xe3,0x22,0x93,0x0,0xd0,0x60,0x8c, + 0xdd,0xc9,0x64,0x32,0xff,0x46,0xc4,0x68,0x2c,0x0,0x6,0xb3,0xfc,0xf0,0x6a,0xc8, + 0x18,0x3,0xce,0x39,0x78,0x9e,0x67,0x54,0x2a,0x95,0x49,0xcf,0xf3,0x56,0x2c,0xcb, + 0x12,0x51,0x14,0xd9,0x83,0x63,0xaf,0xea,0x79,0x14,0x45,0xcc,0xb2,0x2c,0x28,0x16, + 0x8b,0xf0,0xc1,0x7,0x1f,0x3c,0xca,0xe5,0x72,0x5b,0x44,0x84,0x6f,0x34,0x2,0x8c, + 0x31,0x10,0x42,0x80,0xef,0xfb,0xe6,0xf6,0xf6,0xf6,0xdc,0x83,0x7,0xf,0x88,0x73, + 0xce,0x5e,0x37,0x25,0xfb,0xaa,0x4,0x4b,0x26,0x93,0x70,0xeb,0xd6,0xad,0xd6,0xe2, + 0xe2,0xa2,0xcc,0xe5,0x72,0xe1,0xeb,0xa4,0xa4,0x31,0x42,0xee,0x83,0x52,0xa,0xdb, + 0xed,0xb6,0x18,0x2c,0xf5,0xaf,0x2b,0xb7,0x10,0x11,0xf4,0x7a,0x3d,0x48,0xa5,0x52, + 0xd0,0x68,0x34,0xb4,0x94,0x32,0x6,0x0,0x39,0xae,0x1a,0x18,0x4c,0x96,0x3a,0x9d, + 0x4e,0x47,0xa6,0x69,0x1a,0x83,0x75,0x72,0xb0,0x26,0x32,0xc6,0xc0,0x34,0xcd,0x4b, + 0x5,0xac,0x57,0x19,0xc7,0x6d,0xdb,0x6,0x21,0xc4,0xd8,0x59,0x8,0xb5,0xd6,0x38, + 0x39,0x39,0x19,0xe5,0xf3,0xf9,0x8e,0xeb,0xba,0x41,0xbf,0x70,0x7f,0x25,0xb1,0xc, + 0xab,0x16,0xa3,0x7c,0x7f,0xa6,0xf6,0x5d,0x29,0x2,0x52,0x4a,0xcc,0xe7,0xf3,0xbd, + 0x52,0xa9,0xd4,0xe8,0x74,0x3a,0x6a,0x6f,0x6f,0xf,0x5b,0xad,0x96,0x3d,0xd0,0x82, + 0xc6,0x30,0xc1,0x42,0x1c,0xc7,0x10,0xc7,0xf1,0xaf,0xb4,0xa5,0xb1,0x0,0x88,0xe3, + 0x98,0xb4,0xd6,0xe1,0xec,0xec,0xec,0x79,0xb9,0x5c,0x8e,0xa4,0x94,0x21,0x11,0xe1, + 0xfe,0xfe,0x7e,0xb6,0xdd,0x6e,0xdb,0x51,0x14,0x8d,0xe3,0x7d,0xf9,0x42,0x18,0x7b, + 0x59,0x38,0x1b,0x19,0x80,0xe7,0x79,0x1d,0xce,0xf9,0xff,0x1c,0xc7,0x99,0x2a,0x14, + 0xa,0x79,0x0,0xe0,0xa6,0x69,0xb6,0xa7,0xa6,0xa6,0xf8,0xd1,0xd1,0x91,0xa,0x82, + 0x40,0xc0,0x8b,0x17,0x9a,0x91,0x0,0xf4,0x7a,0x3d,0x23,0x99,0x4c,0xea,0xa5,0xa5, + 0x25,0xb4,0x2c,0xcb,0x6,0x0,0x6b,0x2c,0x34,0x1a,0x4,0xc1,0x69,0x26,0x93,0xa9, + 0x20,0x22,0x63,0x8c,0x95,0xf3,0xf9,0xbc,0xfd,0xe9,0xa7,0x9f,0xea,0x42,0xa1,0x70, + 0xee,0x79,0x1e,0x8f,0xa2,0x68,0x2c,0x63,0x88,0x52,0xa,0xd,0xc3,0xc0,0xb9,0xb9, + 0x39,0xe1,0xba,0x6e,0xd4,0x7f,0xed,0x79,0xf5,0x81,0xf2,0x32,0xfa,0xd3,0x5a,0x27, + 0x5a,0xad,0x56,0x91,0x73,0x5e,0x12,0x42,0x2c,0x98,0xa6,0xc9,0xfb,0x8f,0x1a,0x7a, + 0x9c,0xe3,0x83,0x52,0x8a,0x29,0xa5,0x92,0x61,0x18,0x76,0xa4,0x94,0xf7,0xb2,0xd9, + 0xec,0x77,0xaf,0xba,0xbd,0xfd,0x99,0x3a,0x1d,0x68,0xad,0xf7,0x7d,0xdf,0xaf,0x23, + 0xa2,0xdd,0x7f,0x9c,0x18,0xfb,0xec,0xc3,0x39,0x87,0x38,0x8e,0xd,0xa5,0x94,0x66, + 0x8c,0xb5,0xbf,0xfa,0xea,0x2b,0xf5,0xda,0x5c,0xfc,0xf7,0x38,0xfd,0x37,0x80,0xab, + 0xd9,0xff,0x1,0x9f,0x9d,0x96,0x85,0x8a,0x8f,0x6c,0x16,0x0,0x0,0x0,0x0,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/redframe.png + 0x0,0x0,0x4,0xe2, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x16,0x25,0x0,0x0,0x16,0x25,0x1, + 0x49,0x52,0x24,0xf0,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xe,0xd,0x82,0x2a,0xc,0x98,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x4,0x3d, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9c,0x3f,0x93,0xdc,0x44,0x10,0xc5,0x7f,0x4f, + 0x9e,0xfb,0x93,0x38,0xc3,0x24,0x7c,0x6,0xe3,0x8c,0xba,0x2a,0x2,0xa7,0x14,0x9f, + 0x98,0x90,0x3,0x4c,0x39,0x27,0x73,0x42,0x2,0x81,0xcb,0x8e,0x8,0xc0,0x2e,0xfb, + 0xd4,0x4,0x9a,0x91,0x7a,0x47,0x23,0xed,0x4a,0x7,0x55,0xab,0xd5,0x28,0x39,0xed, + 0x69,0x56,0x3b,0xf3,0xf4,0xfa,0x75,0xf7,0xcc,0xb4,0x74,0xf,0x0,0xd,0xf0,0xdc, + 0xe0,0xce,0xe0,0x99,0x40,0x2,0x63,0xa3,0x47,0xde,0x71,0x15,0xae,0xb,0x1a,0x83, + 0xcf,0x6,0x6f,0x5,0xaf,0x4,0x6f,0xc,0x5a,0xfd,0xd8,0x81,0xf1,0x9d,0xe0,0x85, + 0xc1,0x27,0xc0,0x34,0x7c,0x69,0x93,0x60,0x28,0x3,0x46,0x33,0xed,0xac,0xfb,0x73, + 0x2d,0xf8,0x5,0xf8,0x39,0x0,0xcf,0x81,0x17,0xc0,0x5f,0x40,0x3b,0xb4,0xdb,0x30, + 0x45,0x32,0x30,0x4a,0xe3,0xd0,0xe1,0xf9,0xdf,0x6,0xdf,0xa,0xfe,0x8,0xc0,0x9d, + 0xe0,0x93,0x41,0x2b,0xf8,0x48,0x47,0xa3,0x86,0xd,0xb2,0xc4,0xf7,0xd7,0xb3,0x24, + 0x67,0x8d,0x1b,0x93,0xc5,0xb1,0xde,0xd2,0x61,0x70,0x17,0x80,0x67,0xc0,0x3f,0x11, + 0xc9,0x7,0xe0,0x43,0x2,0xb5,0xd9,0x18,0x2b,0x34,0x36,0x7,0x34,0x66,0x83,0x6f, + 0x23,0x75,0x60,0x98,0xa0,0x35,0xf8,0x22,0x8,0x94,0x2e,0xc6,0x86,0xd6,0x44,0x50, + 0xf2,0x1b,0x6f,0xd,0x18,0xcd,0x88,0x6d,0x1c,0xf7,0x8d,0x1c,0x8b,0x80,0x26,0x24, + 0x11,0x4d,0xe3,0x8e,0xe7,0x2d,0x9d,0xf9,0xb4,0x5b,0x15,0xd7,0x23,0x66,0xa5,0x68, + 0x26,0xd8,0x40,0x8,0x0,0x82,0x65,0x8d,0x9b,0xd8,0x48,0x1d,0x28,0x1f,0x22,0x38, + 0x6c,0x51,0x53,0xf2,0x7e,0x6b,0x60,0xc6,0xad,0x1b,0xcb,0xc1,0xb0,0x42,0xc9,0x3d, + 0xb9,0x41,0xf7,0xa0,0x6c,0xd1,0x7c,0x3c,0x10,0xc9,0x24,0x4,0x37,0x53,0x66,0xd6, + 0x26,0x40,0x54,0x30,0x33,0x37,0xf0,0xd6,0xa,0xa0,0x6c,0x49,0x4b,0x18,0x82,0xcf, + 0x9b,0x82,0xc7,0x39,0x18,0x52,0xf0,0x22,0x43,0x41,0x99,0xe3,0xe7,0xd6,0x3a,0x4d, + 0x79,0x48,0xcd,0x6d,0x1b,0x60,0x98,0xd,0x60,0xdc,0x52,0xf0,0x3e,0x96,0x11,0x20, + 0x70,0xe8,0x93,0x35,0x63,0xe,0xf,0x49,0x68,0xb5,0x2d,0x76,0x88,0x68,0x26,0x73, + 0x26,0x9f,0xf4,0x33,0x4c,0x5,0x30,0x14,0x22,0x3d,0x39,0xf3,0xd1,0x99,0x6b,0x47, + 0xca,0x57,0xbc,0x66,0xe4,0xe3,0xb3,0x42,0x0,0x17,0xe6,0x92,0xa0,0x9,0xd0,0xdb, + 0x16,0x3e,0x6a,0x3,0x81,0x9b,0x75,0x39,0x4a,0x6f,0xe2,0x3a,0x21,0xc2,0xd,0x6b, + 0x54,0xfb,0x9,0xf0,0x72,0x3,0x66,0x73,0x7f,0x24,0xc1,0x53,0xe1,0x7a,0xb3,0x4, + 0x8c,0x4b,0x3d,0x94,0xe9,0xc8,0x6e,0x8f,0x92,0xa6,0xec,0x1a,0x10,0x15,0xd8,0xbf, + 0x6b,0x40,0x12,0x1e,0xde,0x1d,0x57,0x40,0x32,0xc6,0xec,0x1e,0x10,0x73,0x32,0x62, + 0x15,0x90,0x71,0xf8,0x5e,0x4d,0x26,0xcb,0x6d,0x2a,0x20,0x9d,0xa8,0xf6,0xc9,0xea, + 0xee,0xe3,0x90,0x68,0x36,0xfd,0x2a,0x43,0xd8,0x33,0x20,0x4e,0x3f,0xb4,0x2a,0x97, + 0xb9,0x60,0xa6,0xd8,0xde,0xdd,0xae,0x9f,0xc,0x3b,0xc8,0xfb,0x9a,0xfd,0x92,0xe2, + 0x70,0xe,0x59,0xd5,0xed,0x96,0x13,0xbc,0x1a,0x98,0x65,0x9f,0x6b,0x1c,0x52,0x1, + 0xa9,0x80,0x1c,0xd,0xcc,0xfc,0x51,0x3,0x33,0x1e,0x31,0xc9,0x7c,0xa1,0x1e,0xa6, + 0xc7,0x63,0xf7,0xc9,0x9d,0xdb,0x52,0x65,0x35,0xfd,0x9f,0x70,0xbf,0x35,0xe,0x89, + 0x4b,0xb8,0x35,0xfd,0x1f,0x74,0x44,0xc,0x9b,0x86,0xaa,0xa8,0xe6,0x4b,0x11,0xcd, + 0xda,0x1b,0x5d,0x92,0xdb,0xd5,0x63,0x0,0xb9,0xb4,0x3d,0x67,0x49,0x43,0x16,0xbb, + 0x5d,0xb9,0xcd,0x7a,0xba,0x50,0xd3,0x59,0x3a,0x85,0x98,0xa6,0xd9,0xac,0xbd,0x40, + 0x4f,0xb3,0x6a,0xf5,0x3f,0x52,0x4b,0x97,0xc6,0x90,0x9a,0xcb,0xcc,0x38,0x89,0x1a, + 0xa9,0x66,0xde,0xa6,0x2,0x92,0x81,0x52,0x1,0x71,0x2e,0xb7,0x2,0xc2,0xb8,0xa4, + 0xa4,0x26,0x77,0xd9,0xe7,0x6a,0x32,0x6b,0x1,0xd9,0x6a,0x15,0xc4,0xff,0x1a,0x87, + 0x9c,0xfb,0xc6,0xff,0x9f,0xe8,0x2a,0x1a,0x3e,0x3,0x57,0x8c,0xeb,0xee,0x74,0x42, + 0xc6,0x1b,0x96,0x2,0x1e,0xcb,0x3b,0xaf,0xef,0xcf,0x10,0x90,0x94,0x52,0x5c,0xd, + 0x3,0x4d,0xb5,0x83,0x36,0x51,0x73,0x37,0xda,0xbc,0xbb,0x34,0x52,0x55,0xdc,0x2e, + 0xbd,0x89,0x6a,0x8,0x57,0x23,0x33,0xb7,0xa3,0xf9,0x20,0x61,0xd,0xa7,0xd0,0x22, + 0xde,0xb0,0x49,0x35,0x6a,0xe7,0x2a,0x2b,0x5,0x16,0xa4,0xc9,0xe3,0xe6,0xc8,0xf8, + 0xfa,0x7,0x1c,0x4e,0xf4,0xd1,0x7d,0xbd,0x49,0xa9,0xd2,0xf1,0xdc,0x62,0x8a,0xd2, + 0xc4,0x4f,0xde,0xe5,0x89,0xba,0xa0,0x32,0x20,0x19,0xbd,0x1a,0x5f,0xbd,0xb8,0x36, + 0xe8,0x29,0x95,0xa8,0x95,0x84,0xee,0xd8,0xf5,0x53,0x3d,0xe1,0xc4,0x79,0xe3,0x37, + 0xc7,0x94,0x4a,0xeb,0x8e,0x31,0x44,0x38,0x30,0x96,0x76,0x74,0xea,0x47,0x97,0x56, + 0x28,0x3c,0x96,0x31,0xf9,0x3,0xce,0xc0,0x92,0xb9,0xdd,0xcc,0x61,0x86,0x46,0xb2, + 0x68,0x26,0x73,0xe8,0x3f,0xa2,0xa3,0xa3,0x92,0x7a,0xfd,0xc7,0x1e,0x7e,0x6,0xf0, + 0x6,0xc6,0x55,0x99,0x89,0x21,0x2a,0xdc,0x40,0x6,0xb7,0x6b,0xa8,0x3b,0xc5,0xa4, + 0x3c,0x67,0x28,0x31,0xc1,0xa6,0xc5,0x71,0xd5,0x6f,0x1e,0xb9,0x96,0xb6,0x55,0xc9, + 0xaf,0xf1,0x6,0x5c,0x5,0x77,0xfa,0x4e,0xae,0x19,0x4b,0x3a,0x38,0x45,0x79,0xcd, + 0x8,0xd9,0x1c,0x70,0xac,0x34,0xcd,0x92,0xc0,0xaa,0xc,0x4a,0xeb,0xa8,0xd8,0x6, + 0x83,0x77,0x82,0xa7,0xce,0x3d,0x25,0x66,0xa8,0xf0,0xe4,0x46,0x63,0xf5,0x60,0x7a, + 0x53,0xc8,0xd7,0x4d,0x5d,0xc7,0x47,0x8c,0x74,0x1d,0x9d,0x24,0x98,0xb9,0x77,0x9a, + 0x4c,0x15,0x4b,0xaa,0x1c,0x9d,0xfa,0xbe,0xe4,0x6c,0x6c,0x5,0x4f,0x6c,0xc8,0xfc, + 0xdf,0x7,0xe0,0x35,0xf0,0x7d,0xfc,0xc7,0xcd,0x9,0xf4,0x3c,0x78,0xd9,0xca,0x4, + 0x23,0x64,0x13,0xda,0xa8,0xa1,0x74,0xb4,0xe4,0x61,0xbc,0xae,0xc8,0x83,0xec,0xbe, + 0xd7,0x9f,0xcf,0x15,0x4d,0xfa,0xf7,0x83,0xa8,0xb0,0x5a,0xe0,0x41,0x8a,0x6d,0xae, + 0x80,0xd7,0x1,0xf8,0xcd,0xe0,0x2b,0xe0,0xeb,0xf8,0xda,0x8c,0x7e,0x56,0xbd,0x44, + 0xf3,0xec,0xe5,0x1,0x23,0x3d,0x98,0xa,0x94,0xe6,0x12,0x2f,0x3f,0x31,0x63,0x27, + 0x98,0x52,0xbe,0xa8,0x64,0x47,0x42,0x7,0x9b,0xef,0xb7,0x4,0xd7,0xc0,0x2b,0xe0, + 0xf7,0x10,0x69,0xf3,0x83,0xc1,0x9f,0x2d,0x7c,0x3,0x7c,0xe9,0x9f,0xc8,0xd4,0x1b, + 0x16,0x1a,0x46,0x6f,0x5b,0x58,0xa4,0x39,0xa7,0x78,0xad,0x39,0x40,0x4f,0x11,0xe5, + 0x63,0x31,0x49,0xcc,0x3,0xdf,0x2,0xbf,0x2,0x6f,0x0,0xfb,0x17,0xef,0x49,0x9c, + 0x3e,0x89,0xa6,0xed,0x61,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82, + // /home/maemo/tietoopcom/resources/general.png + 0x0,0x0,0x1b,0xbd, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x48,0x0,0x0,0x0,0x3e,0x8,0x6,0x0,0x0,0x0,0x88,0x96,0x5d,0x9b, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0x2, + 0xf,0x7,0x3a,0x96,0x5d,0x5d,0x54,0x0,0x0,0x1b,0x3d,0x49,0x44,0x41,0x54,0x78, + 0xda,0xed,0x7b,0x59,0x6f,0x1c,0xe7,0xb9,0xe6,0x53,0xfb,0xd2,0xfb,0x42,0x76,0xb3, + 0xb9,0x4b,0x24,0x25,0x59,0xa2,0xa5,0x58,0xa6,0x6d,0x25,0x1e,0x38,0xe,0x92,0x8b, + 0xe4,0x22,0x48,0x6e,0x92,0xf3,0xb,0xce,0x6d,0x2e,0xe7,0xf,0x4,0xf9,0x13,0xb9, + 0x3b,0x37,0xc1,0x49,0x70,0x32,0x83,0x9c,0x8b,0x24,0x90,0x6,0x48,0x2,0x5b,0x93, + 0x28,0xb6,0x45,0x49,0x76,0xc4,0x88,0x16,0x29,0x91,0xec,0x7d,0xad,0xae,0x7d,0x9f, + 0x8b,0xe6,0xf7,0xb9,0xba,0x45,0xca,0xf6,0x19,0xf,0x30,0x1,0xd2,0x40,0x3,0xec, + 0x62,0x57,0x7d,0x55,0xef,0xf7,0x2e,0xcf,0xf3,0xbc,0x6f,0x3,0xff,0x7c,0xfd,0xf3, + 0xf5,0xcf,0xd7,0x57,0xf8,0x8a,0xe3,0xf8,0x9f,0x46,0xf8,0x32,0x2f,0x26,0x8,0x2, + 0xe6,0xe7,0x3f,0xff,0x39,0x77,0x70,0x70,0x90,0x6e,0x34,0x1a,0x7c,0xa7,0xd3,0x61, + 0x58,0x96,0xfd,0xca,0x2d,0x9b,0x3c,0x3f,0x8a,0xa2,0xaf,0x6c,0x47,0xcf,0xfa,0x7f, + 0x1c,0xc7,0x8,0xc3,0x10,0x51,0x14,0x81,0x65,0x59,0x4,0x41,0x80,0x20,0x8,0xc0, + 0xb2,0x2c,0x38,0x8e,0x3,0xcb,0xb2,0xf4,0x7f,0xe4,0x59,0xe3,0x38,0xa6,0xe7,0xad, + 0xad,0xad,0x31,0xeb,0xeb,0xeb,0xd1,0xf6,0xf6,0xb6,0xc1,0xfb,0xbe,0xaf,0x46,0x51, + 0xb4,0x0,0xe0,0x5f,0x1,0x6c,0x0,0x60,0x1,0xc4,0xc,0xc3,0x7c,0x25,0xc6,0x61, + 0x18,0xe6,0x85,0xf3,0x93,0xd7,0xfe,0xbf,0x75,0xf7,0xb3,0xae,0x4f,0x8e,0x27,0xdf, + 0x2c,0xcb,0xd2,0xbf,0x93,0xf7,0x30,0xfb,0x9c,0xc,0xc3,0x30,0x41,0x10,0xc8,0x9e, + 0xe7,0xb5,0xc3,0x30,0xfc,0x37,0xfe,0x67,0x3f,0xfb,0x99,0xda,0xed,0x76,0xe7,0x6c, + 0xdb,0xfe,0x76,0x14,0x45,0x57,0xb3,0xd9,0xac,0x7f,0xba,0x68,0xfc,0xff,0x22,0x36, + 0xbf,0xec,0x75,0xbe,0xc8,0xf7,0xcf,0x33,0x10,0x79,0xf1,0x3c,0xf,0x96,0x65,0xe1, + 0xfb,0x3e,0xa2,0x28,0x42,0x1c,0xc7,0x60,0x59,0x16,0x71,0x1c,0x23,0x8a,0x22,0xfa, + 0xdd,0x53,0x2f,0x62,0x44,0x51,0x54,0x2d,0xcb,0x3a,0x7e,0xf4,0xe8,0xd1,0xff,0xe6, + 0x7f,0xf3,0x9b,0xdf,0x8,0xc5,0x62,0x51,0x91,0x65,0xb9,0x96,0x4e,0xa7,0xc5,0x6c, + 0x36,0x2b,0x12,0x77,0xfb,0x47,0x49,0x58,0x67,0x79,0xa8,0xa2,0x28,0x90,0x24,0x9, + 0xbe,0xef,0x43,0x55,0x55,0x28,0x8a,0x2,0xd7,0x75,0xe1,0x38,0xe,0xc2,0x30,0x84, + 0x28,0x8a,0xb0,0x6d,0x1b,0x96,0x65,0xbd,0x70,0x2e,0xcb,0xb2,0x30,0xc,0x23,0x73, + 0x7c,0x7c,0x9c,0xe7,0x1f,0x3d,0x7a,0xe4,0x5d,0xbb,0x76,0xcd,0xcf,0xe7,0xf3,0xa1, + 0x24,0x49,0xd4,0x9a,0x51,0x14,0x4d,0xe5,0x8a,0xa4,0x7b,0xce,0x5e,0xec,0xff,0x27, + 0x43,0x9d,0x86,0x9,0xe6,0xe6,0xe6,0x50,0xad,0x56,0x31,0x1a,0x8d,0x20,0xcb,0x32, + 0x32,0x99,0xc,0x4,0x41,0x80,0xeb,0xba,0xf0,0x3c,0xf,0xa2,0x28,0xa2,0x5e,0xaf, + 0xe3,0xf8,0xf8,0x18,0x61,0x18,0xd2,0x67,0x21,0x39,0xcb,0x71,0x9c,0xa8,0xd7,0xeb, + 0x39,0x7c,0x2a,0x95,0x62,0x0,0x20,0x8,0x82,0x98,0x24,0xb6,0x28,0x8a,0x68,0x92, + 0x23,0xbb,0x43,0x12,0x5c,0xd2,0x48,0x9e,0xe7,0xc1,0xf7,0x7d,0x4,0x41,0x30,0xb5, + 0x8b,0x5f,0x26,0xc7,0xcc,0x7e,0xf7,0x3c,0xaf,0x3d,0xef,0x9a,0x67,0x1d,0x8f,0xe3, + 0x18,0xb2,0x2c,0x23,0x8e,0x63,0x18,0x86,0x1,0x86,0x61,0x20,0xcb,0x32,0x54,0x55, + 0x45,0x14,0x45,0x8,0x82,0x0,0xb2,0x2c,0xc3,0xb6,0xed,0x33,0xd,0x1c,0x86,0x21, + 0x7c,0xdf,0x8f,0xa3,0x28,0x2,0xff,0xe3,0x1f,0xff,0x78,0xc3,0x34,0xcd,0x15,0xcb, + 0xb2,0x4,0x45,0x51,0xc0,0xf3,0x3c,0x4d,0x7c,0x24,0x56,0x1,0x20,0xc,0x43,0x6a, + 0x8,0x86,0x61,0x10,0x4,0x1,0x6c,0xdb,0x86,0x69,0x9a,0x53,0xc7,0xbf,0xac,0x91, + 0xce,0x4a,0xac,0x9f,0x77,0xfe,0xcb,0x36,0x83,0xdc,0xfb,0xf1,0xf1,0x31,0xda,0xed, + 0x36,0xbd,0x6f,0x0,0x50,0x14,0x85,0x3e,0xf,0xc7,0x71,0xf4,0x3d,0x93,0x83,0x20, + 0x8,0x2,0xb2,0xd9,0x2c,0x9f,0x4a,0xa5,0x16,0xf9,0xd5,0xd5,0xd5,0xff,0xce,0xf3, + 0x7c,0x36,0x9d,0x4e,0x67,0x48,0x4c,0xca,0xb2,0x4c,0x2d,0x9e,0x4e,0xa7,0x11,0x4, + 0x1,0x3a,0x9d,0xe,0xf6,0xf6,0xf6,0x60,0xdb,0x36,0x18,0x86,0xa1,0xf1,0x1b,0xc7, + 0x31,0x4a,0xa5,0x12,0x38,0x8e,0x3b,0xd3,0x23,0xce,0x7a,0xe0,0xe4,0xb1,0xa4,0x87, + 0xf2,0x3c,0xf,0x51,0x14,0x21,0x8,0x2,0xad,0x3a,0x24,0xdc,0x49,0x42,0xd,0x82, + 0x0,0xbe,0xef,0x23,0xc,0x43,0x7a,0x6e,0x32,0xb4,0x92,0x9f,0x67,0x3d,0x83,0xac, + 0x13,0x86,0x21,0x6,0x83,0x1,0x24,0x49,0x42,0x36,0x9b,0x5,0xc7,0x71,0x74,0xd, + 0x9e,0xe7,0x51,0xab,0xd5,0x50,0xad,0x56,0xd3,0x0,0xfe,0x85,0xf,0xc3,0x70,0x5b, + 0x55,0x55,0xf1,0xca,0x95,0x2b,0x82,0xae,0xeb,0x38,0x39,0x39,0x41,0x1c,0xc7,0x50, + 0x55,0x15,0xf9,0x7c,0x1e,0xf9,0x7c,0x1e,0xae,0xeb,0x52,0x63,0x90,0xac,0x6f,0x59, + 0x16,0x38,0x8e,0xc3,0xca,0xca,0xa,0xbe,0xf1,0x8d,0x6f,0x20,0x9d,0x4e,0xc3,0x75, + 0xdd,0xa9,0x7,0x4b,0x96,0xd6,0x97,0x79,0x57,0xb2,0xc,0x9b,0xa6,0x9,0xc3,0x30, + 0xa6,0x42,0x97,0x60,0x17,0x9e,0xe7,0xa1,0x28,0xa,0x4d,0xc0,0xc4,0xc0,0x24,0x1d, + 0x24,0xbd,0x2b,0x99,0x43,0xc9,0x7d,0x87,0x61,0x8,0x59,0x96,0x61,0x9a,0x26,0xde, + 0x7b,0xef,0x3d,0x68,0x9a,0x46,0xd,0x4b,0x8c,0x48,0xc,0xb4,0xb1,0xb1,0xc1,0xb7, + 0x5a,0xad,0x25,0xde,0x71,0x9c,0x20,0x95,0x4a,0xb1,0xa5,0x52,0x9,0x3c,0xcf,0xa3, + 0xd5,0x6a,0x61,0x30,0x18,0xc0,0x75,0x5d,0x30,0xc,0x83,0x28,0x8a,0xe0,0x38,0xe, + 0x34,0x4d,0x43,0x18,0x86,0x74,0x71,0xd7,0x75,0x51,0x28,0x14,0x70,0xe9,0xd2,0x25, + 0xfc,0xf0,0x87,0x3f,0x44,0x2e,0x97,0x83,0x6d,0xdb,0x53,0x60,0xec,0xcb,0x26,0xf0, + 0x4e,0xa7,0x83,0xa3,0xa3,0x23,0x34,0x9b,0x4d,0x9a,0x4c,0x1,0x20,0x95,0x4a,0x41, + 0x96,0x65,0xa4,0x52,0x29,0x94,0xcb,0x65,0xcc,0xcf,0xcf,0xa3,0x50,0x28,0x7c,0xa9, + 0x5c,0x47,0xc,0x24,0x8a,0x22,0x4c,0xd3,0xc4,0x70,0x38,0xc4,0x27,0x9f,0x7c,0x2, + 0xc7,0x71,0xa6,0x3c,0x8f,0xe7,0x79,0xe4,0xf3,0x79,0xcc,0xcf,0xcf,0xa3,0xd3,0xe9, + 0x80,0x7,0x10,0x2,0x88,0xe2,0x38,0x8e,0x1d,0xc7,0x41,0xaf,0xd7,0xc3,0xa7,0x9f, + 0x7e,0x8a,0x38,0x8e,0x69,0xe6,0xf,0xc3,0x10,0xae,0xeb,0x52,0x34,0x4a,0x62,0x9a, + 0xe4,0x26,0xd7,0x75,0xe1,0xfb,0x3e,0x6c,0xdb,0xa6,0x98,0x23,0x59,0x15,0x92,0x9f, + 0xcf,0xa,0x39,0xd7,0x75,0xf1,0xf8,0xf1,0x63,0xfc,0xea,0x57,0xbf,0x42,0xaf,0xd7, + 0x43,0x26,0x93,0x41,0xb9,0x5c,0xa6,0x1e,0xac,0x28,0xa,0x44,0x51,0x44,0x10,0x4, + 0xe8,0x76,0xbb,0x68,0x36,0x9b,0xf0,0x3c,0xf,0x9e,0xe7,0xa1,0x5c,0x2e,0x63,0x79, + 0x79,0x19,0xd5,0x6a,0x15,0x3c,0xcf,0xd3,0x6b,0x6,0x41,0x40,0xc3,0x30,0x59,0x78, + 0x4,0x41,0xa0,0xa5,0xfe,0x2c,0x6f,0x26,0x9e,0x44,0x43,0x2e,0x8e,0xe3,0x28,0x8a, + 0xa2,0x38,0x8,0x2,0x78,0x9e,0x47,0x73,0x8a,0x20,0x8,0x90,0x24,0x89,0x1e,0xcb, + 0x66,0xb3,0x50,0x55,0x15,0x71,0x1c,0x63,0x30,0x18,0x60,0x38,0x1c,0xd2,0x45,0x9, + 0x94,0x27,0x21,0xf1,0x32,0x3,0x11,0xaf,0x9a,0xfd,0xc,0x0,0xa6,0x69,0xc2,0x71, + 0x1c,0x54,0xab,0x55,0x5c,0xb9,0x72,0x5,0xf3,0xf3,0xf3,0x50,0x14,0x5,0xe9,0x74, + 0x9a,0xe6,0x8e,0x20,0x8,0xa0,0xeb,0x3a,0xa2,0x28,0x82,0xef,0xfb,0xe8,0xf5,0x7a, + 0xd0,0x34,0xd,0x4f,0x9f,0x3e,0x45,0xb5,0x5a,0xc5,0xc2,0xc2,0x2,0xd2,0xe9,0x34, + 0x35,0x12,0x31,0xe,0x9,0x45,0x52,0x79,0x5f,0x46,0x77,0x92,0x55,0x9c,0x27,0x17, + 0x20,0xee,0x5c,0x2a,0x95,0xb0,0xb9,0xb9,0x89,0x4c,0x26,0x3,0x96,0x65,0x31,0x1c, + 0xe,0x69,0x4e,0x2a,0x95,0x4a,0x8,0x82,0x0,0x4f,0x9f,0x3e,0xc5,0xc1,0xc1,0xc1, + 0x14,0xc,0x38,0xb,0xda,0xbf,0xcc,0x7b,0x92,0x6e,0x2d,0x49,0x12,0xd6,0xd6,0xd6, + 0xf0,0xee,0xbb,0xef,0xa2,0xd9,0x6c,0xa2,0x50,0x28,0xe0,0xed,0xb7,0xdf,0x46,0xa9, + 0x54,0x3a,0xf3,0xe6,0x9,0xe0,0x73,0x1c,0x7,0xcf,0x9e,0x3d,0xc3,0xfe,0xfe,0x3e, + 0x9a,0xcd,0x26,0xe6,0xe7,0xe7,0x71,0xed,0xda,0x35,0x5c,0xbe,0x7c,0x19,0xaa,0xaa, + 0x82,0xe7,0x79,0xea,0xed,0x24,0x77,0xce,0x6e,0xca,0x6c,0x6e,0x4c,0xde,0x57,0x18, + 0x86,0x13,0x3,0x9d,0x2,0x23,0x64,0x32,0x19,0x6c,0x6c,0x6c,0x80,0xe4,0x23,0xc7, + 0x71,0xe8,0xc5,0xd3,0xe9,0x34,0x2a,0x95,0xa,0xad,0x60,0xb2,0x2c,0xc3,0xb2,0x2c, + 0xba,0xf0,0xe7,0xbd,0xcf,0x2a,0xe9,0xc9,0x1b,0xcd,0xe7,0xf3,0x78,0xf7,0xdd,0x77, + 0xf1,0xfe,0xfb,0xef,0xe3,0x6f,0x7f,0xfb,0x1b,0xde,0x7b,0xef,0x3d,0xec,0xec,0xec, + 0xa0,0x56,0xab,0xbd,0x50,0xde,0x65,0x59,0x86,0x24,0x49,0x48,0xa5,0x52,0x48,0xa5, + 0x52,0xa8,0x56,0xab,0x78,0xf2,0xe4,0x9,0xf6,0xf6,0xf6,0x70,0xe7,0xce,0x1d,0xc, + 0x6,0x3,0x6c,0x6f,0x6f,0xd3,0x73,0x7d,0xdf,0x7f,0x29,0xe0,0x3d,0x2f,0x67,0x4d, + 0x79,0x50,0x10,0x4,0x10,0x45,0x11,0x92,0x24,0x51,0x20,0x55,0x2c,0x16,0xa1,0x28, + 0xa,0x0,0x40,0x10,0x4,0x70,0x1c,0x7,0xdf,0xf7,0xa7,0x2a,0xcb,0x79,0xe4,0x70, + 0x16,0xd3,0xcc,0x7a,0x57,0x1c,0xc7,0xb4,0x52,0x91,0x5d,0x96,0x24,0x9,0x95,0x4a, + 0x5,0xc7,0xc7,0xc7,0x78,0xf8,0xf0,0x21,0x5c,0xd7,0xc5,0xad,0x5b,0xb7,0xb0,0xb4, + 0xb4,0x34,0x55,0xb1,0x18,0x86,0x1,0xc7,0x71,0x10,0x4,0x1,0xa2,0x28,0x42,0x96, + 0x65,0x7a,0x6f,0x7f,0xff,0xfb,0xdf,0xf1,0xe8,0xd1,0x23,0x7a,0xcf,0xb9,0x5c,0xe, + 0x3c,0xcf,0x4f,0x6d,0xe4,0x17,0x49,0xea,0x34,0xc4,0x92,0xbc,0xcb,0xf7,0x7d,0x18, + 0x86,0x81,0x6e,0xb7,0x8b,0xa5,0xa5,0x25,0xac,0xae,0xae,0x22,0x95,0x4a,0x81,0xe7, + 0x79,0x84,0x61,0x88,0x4e,0xa7,0x3,0x4d,0xd3,0x30,0x1a,0x8d,0xa8,0x91,0xce,0xf3, + 0x94,0x24,0xd0,0x3c,0x8b,0x55,0x47,0x51,0x4,0xdb,0xb6,0x31,0x1a,0x8d,0x60,0x59, + 0x16,0x82,0x20,0x0,0xc7,0x71,0x50,0x55,0x15,0x5b,0x5b,0x5b,0x38,0x3c,0x3c,0xc4, + 0x9f,0xff,0xfc,0x67,0x8c,0x46,0x23,0x7c,0xef,0x7b,0xdf,0xc3,0xe2,0xe2,0x22,0x18, + 0x86,0xa1,0x89,0x37,0x8,0x2,0xfa,0xe0,0x51,0x14,0xa1,0x52,0xa9,0x60,0x67,0x67, + 0x7,0xf9,0x7c,0x1e,0xb7,0x6f,0xdf,0xc6,0x83,0x7,0xf,0x20,0x8,0x2,0x76,0x76, + 0x76,0xa0,0xaa,0x2a,0x7c,0xdf,0x3f,0x77,0x43,0x67,0xc1,0xe7,0x94,0x7,0x25,0x41, + 0x54,0x18,0x86,0x70,0x1c,0x7,0xe3,0xf1,0x18,0xb9,0x5c,0xe,0x9a,0xa6,0xa1,0xd5, + 0x6a,0x41,0x14,0x45,0xa8,0xaa,0xa,0x5d,0xd7,0x61,0x59,0x16,0x2d,0xe7,0xc9,0x84, + 0x7b,0xde,0xc2,0x64,0xa7,0x93,0xb,0x13,0x3d,0xc6,0xb6,0x6d,0xf4,0x7a,0x3d,0x98, + 0xa6,0x49,0x71,0x13,0xf1,0x88,0xd7,0x5f,0x7f,0x1d,0xf7,0xef,0xdf,0xc7,0xdd,0xbb, + 0x77,0x31,0x1c,0xe,0xf1,0xad,0x6f,0x7d,0xb,0x3b,0x3b,0x3b,0x90,0x65,0x99,0x56, + 0xb0,0x64,0x4e,0xf1,0x3c,0xf,0x92,0x24,0xa1,0x56,0xab,0x61,0x7b,0x7b,0x1b,0x9f, + 0x7e,0xfa,0x29,0x76,0x77,0x77,0xb1,0xbe,0xbe,0x8e,0x5a,0xad,0x6,0x9e,0xe7,0xe9, + 0x39,0x5f,0x24,0xc4,0x28,0x2e,0x4a,0x7e,0x20,0x6e,0x45,0x28,0x87,0xe7,0x79,0xb4, + 0x24,0x92,0x7,0x95,0x65,0x19,0xa2,0x28,0x7e,0xae,0x14,0x41,0xc2,0x80,0x20,0x5f, + 0x8e,0xe3,0xc0,0xf3,0x3c,0x38,0x8e,0x9b,0x32,0x6,0x31,0x9e,0xe7,0x79,0x34,0xf4, + 0x4,0x41,0xc0,0xd2,0xd2,0x12,0xc6,0xe3,0x31,0x74,0x5d,0xa7,0x21,0x3,0x0,0xaf, + 0xbc,0xf2,0xa,0x14,0x45,0x99,0x42,0xc7,0x49,0x2f,0x90,0x65,0x19,0x17,0x2e,0x5c, + 0x40,0xa7,0xd3,0x41,0xb3,0xd9,0xc4,0xf1,0xf1,0x31,0xd2,0xe9,0x34,0xf2,0xf9,0xfc, + 0x54,0x2e,0x3a,0x2b,0xf4,0x49,0xd1,0x99,0x2a,0xf3,0xb3,0x24,0x8d,0x65,0x59,0x54, + 0xab,0x55,0x5a,0xea,0x73,0xb9,0x1c,0x0,0x40,0x14,0x45,0x64,0x32,0x19,0x78,0x9e, + 0x87,0xf1,0x78,0x4c,0xbf,0x7f,0x5e,0xf2,0x63,0x18,0x6,0x82,0x20,0x60,0x38,0x1c, + 0xa2,0xdb,0xed,0xd2,0xf2,0xbd,0xb0,0xb0,0x40,0x35,0x9a,0x5c,0x2e,0x87,0x20,0x8, + 0xc0,0x30,0xc,0x86,0xc3,0x21,0x3d,0x9f,0x0,0xba,0x2b,0x57,0xae,0x20,0x9d,0x4e, + 0xe3,0xf6,0xed,0xdb,0xf8,0xe0,0x83,0xf,0xd0,0xef,0xf7,0xf1,0xa3,0x1f,0xfd,0x88, + 0x56,0x29,0xcf,0xf3,0x10,0x45,0x11,0x35,0x3e,0xc1,0x6a,0x4,0xe8,0xd,0x87,0x43, + 0x1c,0x1d,0x1d,0xa1,0x52,0xa9,0x60,0x6e,0x6e,0xe,0xae,0xeb,0x9e,0xeb,0xe9,0x67, + 0x79,0x4f,0x1c,0xc7,0x60,0x93,0x49,0x3a,0x8,0x2,0x8,0x82,0x80,0xcd,0xcd,0x4d, + 0xac,0xaf,0xaf,0x23,0x93,0xc9,0xc0,0x75,0x5d,0x98,0xa6,0x9,0x96,0x65,0xb1,0xb2, + 0xb2,0x82,0xf5,0xf5,0x75,0x94,0x4a,0x25,0x6a,0xf1,0xf3,0x68,0x4,0xf1,0x20,0x4d, + 0xd3,0xf0,0xfe,0xfb,0xef,0xe3,0xa7,0x3f,0xfd,0x29,0x7e,0xf1,0x8b,0x5f,0xa0,0xd3, + 0xe9,0xd0,0xef,0xb2,0x2c,0x8b,0x42,0xa1,0x40,0x91,0x71,0x12,0xe0,0x79,0x9e,0x7, + 0x8e,0xe3,0xb0,0xb0,0xb0,0x80,0x77,0xde,0x79,0x7,0xb5,0x5a,0xd,0x4f,0x9e,0x3c, + 0xc1,0x2f,0x7f,0xf9,0x4b,0xfc,0xe9,0x4f,0x7f,0xc2,0x60,0x30,0xa0,0xeb,0x13,0xba, + 0x40,0xc8,0x67,0x18,0x86,0x50,0x55,0x15,0x85,0x42,0x1,0x86,0x61,0xbc,0xc0,0xda, + 0x5f,0x16,0x62,0x49,0xda,0x1,0x60,0x12,0x62,0xe4,0x1f,0x84,0x73,0xf5,0xfb,0x7d, + 0xa,0xc8,0x46,0xa3,0x11,0x4d,0x88,0xbd,0x5e,0xf,0x61,0x18,0x42,0xd3,0x34,0x5a, + 0x79,0xce,0x2b,0xe1,0xe4,0xb8,0x65,0x59,0x38,0x3a,0x3a,0xc2,0x47,0x1f,0x7d,0x4, + 0x86,0x61,0x70,0xe9,0xd2,0x25,0xdc,0xb8,0x71,0x3,0xd5,0x6a,0x95,0xee,0x7c,0x3e, + 0x9f,0xa7,0x89,0x57,0xd7,0xf5,0x29,0x75,0x40,0x14,0x45,0x5c,0xbc,0x78,0x11,0x86, + 0x61,0xc0,0x34,0x4d,0xec,0xed,0xed,0x21,0x9d,0x4e,0xa3,0x54,0x2a,0xe1,0xd2,0xa5, + 0x4b,0x10,0x4,0x81,0x26,0x54,0x42,0x73,0x48,0x15,0xce,0xe5,0x72,0xe8,0xf5,0x7a, + 0x53,0x6,0x3a,0x8f,0x4c,0x9f,0xe7,0x41,0x34,0x7,0x71,0x1c,0x7,0xd7,0x75,0x71, + 0x72,0x72,0x2,0xc3,0x30,0x90,0xcb,0xe5,0x20,0x8a,0x22,0xc6,0xe3,0x31,0xa2,0x28, + 0x82,0xae,0xeb,0xe8,0x74,0x3a,0xf0,0x7d,0x1f,0xf5,0x7a,0x1d,0xb6,0x6d,0xbf,0x50, + 0xea,0xcf,0x7a,0x11,0xd4,0x5a,0xad,0x56,0x61,0xdb,0x36,0x3e,0xfc,0xf0,0x43,0x44, + 0x51,0x84,0x1b,0x37,0x6e,0x60,0x79,0x79,0x99,0x86,0x6f,0xb9,0x5c,0xa6,0x39,0x70, + 0x34,0x1a,0x51,0xf0,0xca,0xb2,0x2c,0x24,0x49,0xc2,0xa5,0x4b,0x97,0xc0,0xf3,0x3c, + 0x7e,0xff,0xfb,0xdf,0xa3,0xd9,0x6c,0xe2,0xe0,0xe0,0x80,0x56,0xd9,0x24,0x89,0x26, + 0x88,0x5b,0x10,0x4,0xa8,0xaa,0x4a,0x65,0x19,0xc2,0x2d,0xcf,0x2a,0x28,0xb3,0xb9, + 0x74,0xca,0x83,0xc2,0x30,0x4,0x79,0x13,0xe4,0xf9,0xf0,0xe1,0x43,0x0,0x31,0x52, + 0xa9,0x14,0x54,0x45,0x1,0x73,0x5a,0x75,0x7c,0x3f,0x80,0xe7,0xb9,0xb4,0x9a,0x65, + 0xb3,0xd9,0x33,0x77,0x80,0xb8,0x3b,0x49,0xbe,0x0,0xb0,0xb1,0xb1,0x81,0xd7,0x5e, + 0x7b,0xd,0x57,0xaf,0x5e,0xc5,0xfd,0xfb,0xf7,0x31,0x1c,0xe,0xf1,0xc6,0x1b,0x6f, + 0xe0,0xf2,0xe5,0xcb,0xb4,0xda,0x95,0x4a,0xa5,0x29,0x3a,0x41,0xc8,0xa3,0xe3,0x38, + 0x50,0x55,0x15,0x2b,0x2b,0x2b,0x58,0x5b,0x5b,0x43,0x2a,0x95,0xa2,0x74,0x22,0x29, + 0xf2,0x25,0x69,0x5,0xa1,0xb,0x24,0x57,0x26,0xf9,0xe3,0x17,0x11,0xe8,0xa8,0x7, + 0x91,0x98,0x4f,0x8a,0xd7,0x9a,0xa6,0x21,0x9b,0xcd,0xa0,0x50,0xc8,0x43,0x96,0x64, + 0xf8,0xa7,0xf9,0x89,0x30,0x76,0xdf,0xf7,0xa7,0x2c,0x3f,0x5b,0x51,0x8,0x7,0x22, + 0xee,0xcf,0x71,0x1c,0xf2,0xf9,0x3c,0xb6,0xb6,0xb6,0x70,0xf3,0xe6,0x4d,0xf4,0x7a, + 0x3d,0x74,0x3a,0x1d,0xfc,0xf5,0xaf,0x7f,0x85,0x28,0x8a,0x58,0x5e,0x5e,0xa6,0xdc, + 0xaf,0x58,0x2c,0xd2,0x7,0x22,0xf8,0x48,0x10,0x4,0x7a,0xcd,0x5c,0x2e,0x47,0xe5, + 0x54,0x92,0x6f,0x92,0x15,0x98,0x18,0x86,0x7c,0x26,0x58,0x8d,0x14,0xa0,0x2f,0xaa, + 0x48,0x4e,0x19,0x88,0xc4,0x3c,0x59,0x2c,0x95,0x4a,0x61,0x7b,0x7b,0x1b,0x6f,0xbc, + 0xb1,0x3,0xcb,0x9a,0x80,0x39,0xe2,0x5,0x86,0x61,0xe0,0xc1,0x83,0x87,0x68,0xb5, + 0xda,0x2f,0xe8,0xd6,0x4,0x18,0x1a,0x86,0x1,0xc7,0x71,0x28,0x90,0x23,0x28,0x97, + 0x65,0x59,0x94,0x4a,0x25,0x7c,0xff,0xfb,0xdf,0xc7,0xed,0xdb,0xb7,0x69,0x5e,0x7a, + 0xf3,0xcd,0x37,0xb1,0xb9,0xb9,0x49,0xa5,0xd,0xe2,0xc9,0xed,0x76,0x9b,0x16,0x8, + 0x4d,0xd3,0xd0,0x6e,0xb7,0xc1,0xb2,0x2c,0x2a,0x95,0xa,0x6a,0xb5,0x1a,0x35,0x10, + 0xf1,0xa4,0xa4,0xa8,0x46,0x9e,0x89,0x30,0x80,0x2f,0xda,0x29,0x99,0x6d,0x58,0xf0, + 0xc9,0xba,0x9f,0x4c,0x76,0xa2,0x28,0x22,0x95,0x4e,0x43,0x55,0xd3,0xc8,0x64,0xb3, + 0x40,0x1c,0x23,0x9d,0x4e,0x23,0xc,0xa3,0x29,0x22,0x98,0xf4,0x22,0x12,0x5a,0xae, + 0xeb,0xa2,0xdf,0xef,0xc3,0x75,0x5d,0xb4,0xdb,0x6d,0xd8,0xb6,0x3d,0xb5,0x68,0x3a, + 0x9d,0xc6,0x5b,0x6f,0xbd,0x5,0x55,0x55,0x71,0xef,0xde,0x3d,0x68,0x9a,0x86,0xc1, + 0x60,0x80,0x9b,0x37,0x6f,0x52,0x55,0x71,0x61,0x61,0x1,0xa2,0x28,0xa2,0xd5,0x6a, + 0xa1,0xdb,0xed,0xe2,0xd9,0xb3,0x67,0x18,0x8f,0xc7,0xb8,0x78,0xf1,0x22,0xd6,0xd7, + 0xd7,0x91,0x4a,0xa5,0x5e,0x8,0xa3,0xa4,0x27,0x9d,0x85,0xe1,0xce,0xd2,0xce,0x93, + 0x91,0x90,0xac,0x60,0x49,0xb9,0xe3,0xcc,0xec,0x6d,0xdb,0x36,0xb4,0xd1,0x8,0x3c, + 0x27,0xc0,0xf,0x7c,0xea,0x9,0x9a,0xa6,0xc1,0x34,0xcd,0xa9,0x12,0x3f,0xbb,0x28, + 0x41,0xc9,0x96,0x65,0x61,0x30,0x18,0xc0,0x71,0x1c,0xba,0x28,0xc9,0x4b,0x73,0x73, + 0x73,0xb8,0x71,0xe3,0x6,0xd5,0x77,0x1e,0x3e,0x7c,0x88,0x4c,0x26,0x83,0xb,0x17, + 0x2e,0x50,0x71,0xcc,0x75,0x5d,0x84,0x61,0x88,0x7a,0xbd,0xe,0xc3,0x30,0x50,0x2c, + 0x16,0xb1,0xb9,0xb9,0x89,0x4a,0xa5,0xf2,0x2,0x25,0x48,0xb2,0x76,0xdf,0xf7,0xe1, + 0x79,0x1e,0xc5,0x58,0x84,0xb3,0x25,0xfb,0x62,0x67,0xb5,0x8a,0xce,0xb2,0x5,0x7f, + 0x96,0x5b,0x45,0x51,0x8,0x43,0xd7,0xd1,0x69,0x77,0x10,0x45,0x11,0x2c,0xcb,0x42, + 0x18,0x46,0x98,0xaf,0x54,0xa0,0xeb,0x3a,0xfa,0xfd,0x3e,0x7c,0xdf,0xa7,0x28,0xf8, + 0x2c,0xfe,0x5,0x80,0x56,0xf,0x72,0x53,0x44,0x35,0x68,0xb7,0xdb,0x50,0x14,0x5, + 0xf9,0x7c,0x1e,0x3f,0xf8,0xc1,0xf,0x70,0xef,0xde,0x3d,0xec,0xee,0xee,0xe2,0xee, + 0xdd,0xbb,0xf0,0x7d,0x1f,0xd7,0xaf,0x5f,0x7,0x0,0x18,0x86,0x81,0x76,0xbb,0x8d, + 0x76,0xbb,0x8d,0x5a,0xad,0x86,0xaf,0x7d,0xed,0x6b,0x58,0x59,0x59,0xa1,0x5e,0x4a, + 0x28,0xb,0xc9,0xa3,0x44,0x5b,0x26,0xeb,0x92,0x24,0x2f,0x8a,0x22,0xd5,0xcc,0x67, + 0x39,0xd7,0x17,0xa6,0x1a,0xc9,0xa,0xc0,0xf3,0x3c,0x2a,0xd5,0xa,0x36,0xb7,0x36, + 0xe1,0x38,0x2e,0x4c,0xd3,0x2,0x62,0x60,0x71,0x69,0x11,0xba,0xae,0xc3,0xf3,0x3c, + 0x7c,0xf2,0xc9,0x27,0xd4,0x65,0x93,0x2e,0x99,0xac,0x20,0xae,0xeb,0x42,0x10,0x4, + 0x64,0x32,0x19,0x5a,0xf9,0x48,0xe2,0x1d,0x8d,0x46,0xf0,0x3c,0xf,0x95,0x4a,0x5, + 0xd7,0xaf,0x5f,0x47,0x2a,0x95,0xc2,0x47,0x1f,0x7d,0x84,0xf7,0xdf,0x7f,0x1f,0x4f, + 0x9e,0x3c,0x41,0xa1,0x50,0x80,0x69,0x9a,0xb0,0x2c,0xb,0x3b,0x3b,0x3b,0x58,0x5e, + 0x5e,0xa6,0x9e,0x43,0x10,0x34,0x9,0xa7,0xa4,0x80,0xef,0x79,0x1e,0x46,0xa3,0x11, + 0x5c,0xd7,0xa5,0x69,0xe0,0x2c,0x12,0xfd,0x79,0x79,0x68,0x2a,0xc4,0xce,0xaa,0x46, + 0x51,0x74,0x6a,0x41,0x6e,0xb2,0x3,0xe4,0x7a,0xe7,0x75,0xc,0x66,0xdf,0x4,0xd, + 0xcb,0xb2,0x8c,0x7c,0x3e,0x8f,0xc3,0xc3,0x43,0x8c,0xc7,0x63,0x58,0x96,0x5,0x41, + 0x10,0x68,0x8,0x8a,0xa2,0x88,0x62,0xb1,0x88,0x57,0x5e,0x79,0x5,0xa3,0xd1,0x8, + 0x87,0x87,0x87,0x68,0x34,0x1a,0xf0,0x7d,0x1f,0xa9,0x54,0xa,0xb5,0x5a,0xd,0x17, + 0x2f,0x5e,0x44,0x36,0x9b,0x45,0x1c,0xc7,0x54,0x83,0x4a,0x96,0x78,0x92,0xff,0x4c, + 0xd3,0xa4,0x21,0x4d,0x48,0x2f,0xd9,0x28,0xd2,0x41,0x3d,0xaf,0x97,0x7f,0x2e,0x50, + 0x4c,0x26,0x2b,0x12,0x1a,0x9e,0xe7,0xa3,0x51,0x6f,0xe0,0xf1,0xdf,0x1e,0x53,0xb0, + 0xe5,0x7,0x21,0x34,0x6d,0x84,0xe1,0x70,0x88,0xc3,0xc3,0x43,0xd8,0xb6,0xd,0x41, + 0x10,0xa6,0x12,0x5b,0xd2,0xd0,0x24,0x9c,0x44,0x51,0x44,0x36,0x9b,0x85,0x6d,0xdb, + 0xe8,0xf7,0xfb,0x18,0x8f,0xc7,0x28,0x97,0xcb,0x70,0xdd,0x9,0x9e,0x6a,0x36,0x9b, + 0x88,0xa2,0x8,0x85,0x42,0x1,0xb7,0x6e,0xdd,0xc2,0xda,0xda,0x1a,0x7a,0xbd,0x1e, + 0x52,0xa9,0x14,0x4a,0xa5,0x12,0x72,0xb9,0x1c,0xe2,0x38,0x86,0xe3,0x38,0x53,0x88, + 0x38,0xe9,0xf5,0x84,0xb6,0xf4,0xfb,0x7d,0x34,0x1a,0xd,0x5a,0x2d,0x53,0xa9,0x14, + 0x55,0x27,0x1a,0x8d,0x6,0xca,0xe5,0x32,0xd,0xb5,0x2f,0xda,0xa7,0xe3,0x93,0xc6, + 0x89,0xa2,0x53,0x99,0x91,0xe7,0xb0,0xb4,0xbc,0x84,0x6b,0xd7,0xae,0xc1,0xb2,0x27, + 0x1d,0xd,0x0,0xd8,0xda,0xda,0xa2,0x7a,0xf0,0xde,0xde,0xde,0xb,0x49,0x6f,0xf6, + 0x1d,0x4,0x1,0x24,0x49,0x82,0x24,0x49,0x94,0xb8,0x9e,0x9c,0x9c,0x60,0x61,0x61, + 0x1,0x8a,0xa2,0x50,0x7a,0x43,0x72,0x5a,0x2e,0x97,0xc3,0xc2,0xc2,0x2,0x4a,0xa5, + 0x12,0x7d,0x70,0xdb,0xb6,0xa9,0x8e,0x9c,0x24,0xc7,0x24,0x21,0x93,0x3c,0x34,0x18, + 0xc,0x4e,0x29,0x92,0x8f,0x6a,0x75,0x1,0x85,0x42,0x1,0x1c,0xc7,0x61,0x7e,0x7e, + 0x1e,0xa6,0x69,0xe2,0xe9,0xd3,0xa7,0x94,0x70,0x27,0xcb,0xfe,0xac,0x47,0xcd,0x4a, + 0xc8,0xfc,0xb4,0x90,0xf5,0x59,0xb9,0x16,0x4,0x1,0x8a,0xaa,0x82,0x61,0x3e,0xeb, + 0x62,0x10,0x6f,0x22,0xa,0x1e,0x89,0xef,0x59,0xfd,0x99,0x80,0x3e,0xb2,0x38,0xc7, + 0x71,0xa8,0x9c,0x26,0xf8,0x4f,0x3e,0xf9,0x4,0xd7,0xaf,0x5f,0x87,0xa2,0x28,0x90, + 0x65,0x19,0xae,0xeb,0xc2,0x30,0xc,0x9a,0xcf,0x8,0xe,0x22,0x65,0x9a,0x74,0x4c, + 0xce,0x6b,0x3e,0x92,0x6e,0xa,0x81,0x15,0x82,0x20,0x22,0xc,0x22,0x68,0x9a,0xe, + 0x86,0x65,0xa0,0x28,0xea,0x29,0xe1,0x36,0xd0,0x6a,0xb5,0x28,0x2,0x7f,0x19,0xcd, + 0x48,0x4a,0xc2,0x7c,0x92,0x79,0x13,0xd4,0x19,0x4,0x21,0x8e,0x8e,0x8e,0xf0,0x60, + 0x77,0x17,0xc5,0x62,0x1,0x0,0x3,0xdf,0xf,0xb0,0xbb,0x7b,0x1f,0xfd,0xfe,0x0, + 0x4f,0x9f,0x3e,0x9d,0xe2,0x62,0xc9,0x5e,0x18,0xc3,0x30,0x54,0x2f,0x26,0xa5,0x15, + 0x0,0x2e,0x5c,0xb8,0x80,0xfb,0xf7,0xef,0xe3,0xc3,0xf,0x3f,0xc4,0x77,0xbe,0xf3, + 0x1d,0x2c,0x2f,0x2f,0xa3,0x50,0x28,0xa0,0xd3,0xe9,0x50,0xcd,0xa8,0xd7,0xeb,0x61, + 0x30,0x18,0x50,0x5d,0xe8,0xac,0x56,0x74,0xf2,0x38,0xcb,0xb2,0xa7,0x3d,0xae,0x1, + 0xc,0x43,0x87,0x28,0x88,0x60,0x59,0x1,0x4f,0x9f,0x3e,0x87,0x69,0x5a,0x50,0x14, + 0x9,0x17,0x2f,0xae,0x23,0x9b,0xc9,0xc2,0x95,0x24,0x9c,0x9c,0x1c,0x43,0x55,0x15, + 0x64,0xb3,0xb9,0x73,0xa5,0x8e,0x59,0x8c,0x34,0xe5,0x41,0xc4,0x48,0x71,0x1c,0xa3, + 0x5e,0xaf,0xc3,0x75,0x1c,0xa4,0x52,0x29,0x30,0x2c,0x8b,0x30,0x8,0x11,0x9e,0x96, + 0x50,0xc2,0xe6,0x59,0x96,0x85,0x6d,0xdb,0x18,0x8f,0xc7,0xe0,0x38,0xe,0xa6,0x69, + 0xd2,0x8e,0x3,0xc9,0x41,0xa6,0x69,0x82,0xe3,0x38,0xea,0x75,0xad,0x56,0xb,0x77, + 0xef,0xde,0xa5,0x46,0x32,0x4d,0x13,0xe3,0xf1,0x98,0x8a,0x6a,0xb3,0x6d,0xa1,0xf3, + 0xc8,0x65,0x52,0xfd,0x34,0xc,0x3,0xc,0x58,0xc,0x87,0x3a,0xc,0xdd,0x82,0xef, + 0x7b,0x70,0x1d,0x7,0x96,0x65,0xc0,0x73,0x3d,0xac,0xae,0x2d,0x63,0xbe,0x52,0x46, + 0x10,0xf8,0x18,0xc,0x86,0x68,0xb5,0xda,0x94,0x10,0x27,0x3b,0x1f,0x49,0xe9,0x84, + 0xac,0x3b,0xe5,0x41,0x84,0xb3,0x4,0x41,0x40,0x6f,0x9c,0xe3,0xf8,0x29,0xeb,0xce, + 0xca,0xa6,0x9d,0x4e,0x7,0xf7,0xee,0xdd,0xa3,0xad,0x67,0xa2,0x5f,0x6b,0x9a,0x86, + 0x83,0x83,0x3,0x18,0x86,0x41,0x19,0xf9,0x68,0x34,0xc2,0x68,0x34,0xc2,0x1f,0xfe, + 0xf0,0x7,0x54,0xab,0x55,0x2c,0x2e,0x2e,0xa2,0x54,0x2a,0x81,0x65,0x59,0x8c,0xc7, + 0xe3,0xa9,0xf6,0xcc,0xec,0xdf,0x49,0x23,0x91,0xa,0x69,0x9a,0xe6,0xa4,0x6f,0x17, + 0xc5,0xf0,0xbd,0x10,0xae,0xeb,0x23,0x6,0x50,0x9e,0x2b,0xc2,0xf3,0x5c,0xc,0x47, + 0x1a,0x7a,0xbd,0x1e,0x38,0x9e,0x87,0x20,0x8a,0xc8,0x64,0x54,0x4,0x61,0x40,0xb5, + 0x75,0xdf,0xf7,0x21,0x8a,0xe2,0x14,0x7f,0x23,0x58,0x8a,0x44,0x6,0x9f,0x9c,0xc2, + 0x4a,0x8e,0xb4,0x4c,0x2a,0x4,0x8b,0x28,0xf2,0xcf,0x6c,0xd7,0x10,0x45,0xaf,0xd1, + 0x68,0xe0,0xd7,0xbf,0xfe,0xf5,0xb,0x3b,0x1d,0x4,0x1,0xd5,0x62,0x48,0x1e,0xf2, + 0x3c,0xf,0xae,0xeb,0xe2,0xde,0xbd,0x7b,0x98,0x9b,0x9b,0xc3,0xc2,0xc2,0x2,0x6e, + 0xdc,0xb8,0x41,0x1b,0x92,0x4,0x23,0x25,0x7,0xd,0x66,0x43,0x81,0x78,0x26,0x41, + 0xe7,0xb2,0x24,0x83,0x1,0x87,0x41,0xaf,0x85,0x4c,0x3a,0x8d,0xda,0x52,0x15,0xc5, + 0x62,0x1e,0x96,0x65,0xa1,0xd1,0x68,0xe0,0xe9,0xd3,0x67,0xe8,0x74,0x3b,0x70,0x1c, + 0x7,0xd7,0xaf,0x5f,0x43,0x2a,0xa3,0x42,0x94,0x44,0xca,0xd7,0x88,0x7,0x11,0xb0, + 0x49,0xc2,0x9b,0xe7,0xf9,0xc9,0x9b,0x61,0x18,0x96,0xe3,0x38,0x46,0x51,0x14,0x64, + 0xb3,0x59,0x94,0xcb,0x65,0x9a,0x13,0x78,0x9e,0x4b,0x54,0xa9,0x17,0xf5,0x66,0x49, + 0x14,0xc1,0x9d,0x2e,0x90,0x24,0xad,0x24,0x81,0xa7,0x52,0x29,0xda,0xb5,0x48,0xaa, + 0x7d,0xfd,0x7e,0x1f,0x1f,0x7d,0xf4,0x11,0xc2,0x30,0x84,0x6d,0xdb,0x78,0xe5,0x95, + 0x57,0xb0,0xb2,0xb2,0x2,0x5d,0xd7,0x13,0x9b,0x13,0xbd,0x30,0xab,0x44,0x8c,0xc7, + 0xf3,0x3c,0xe5,0x83,0xb6,0xe5,0xc0,0xb5,0x3c,0xcc,0x95,0xcb,0x58,0x5c,0xae,0x61, + 0x71,0x79,0x1,0x41,0xe0,0x43,0x10,0x78,0x1a,0xd,0xc7,0xc7,0x75,0xe8,0x63,0x1d, + 0x7b,0x7b,0x4f,0xb0,0xba,0xb6,0x8c,0x72,0xa9,0x8c,0xb7,0xde,0x7a,0xb,0xfb,0xfb, + 0xfb,0x68,0x34,0x1a,0x74,0x92,0x85,0xe3,0x38,0x88,0xa2,0x88,0x52,0xa9,0x84,0x74, + 0x3a,0xd,0x49,0x92,0xc0,0x87,0x61,0xc8,0x47,0x51,0xc4,0x31,0xc,0xc3,0x10,0x54, + 0xbb,0xbc,0xbc,0x8c,0x20,0xf8,0x4c,0xd2,0x98,0xdc,0x28,0x9,0x31,0x0,0x88,0xc1, + 0x71,0x13,0x2f,0x52,0x64,0x65,0x2,0x2a,0x91,0x60,0xc0,0x89,0x36,0xd1,0xd1,0xd1, + 0x11,0x3a,0x9d,0xe,0xad,0x6e,0x71,0x1c,0xa3,0x58,0x2c,0xa2,0xd1,0x68,0x60,0x77, + 0x77,0x17,0xd9,0x6c,0x16,0xc3,0xe1,0x8,0x9b,0x9b,0x9b,0xe0,0x79,0x6e,0xaa,0xf5, + 0x3b,0xdb,0xd6,0x26,0x65,0x3e,0xd9,0x3c,0x8,0xfd,0x8,0xe,0xe7,0x40,0x55,0x54, + 0x94,0x4a,0x45,0x14,0xb,0x79,0x68,0xba,0x8e,0x30,0x8c,0x91,0xcf,0x7d,0x36,0xe9, + 0x71,0x12,0xd7,0x27,0xc3,0x8,0x3c,0x7,0x59,0x5a,0xc7,0xe6,0xc6,0x26,0xe2,0x38, + 0xa6,0x7a,0x15,0x91,0x7e,0x55,0x55,0xc5,0xda,0xda,0x1a,0x54,0x55,0x9d,0x40,0x1e, + 0xd7,0x75,0x63,0xdb,0xb6,0x63,0x5d,0xd7,0x71,0xe9,0xd2,0x25,0x6c,0x6c,0x6c,0x50, + 0x92,0x18,0xc7,0x49,0x8c,0xf3,0x2,0xe6,0xa4,0xc7,0x67,0x4b,0xa5,0x28,0x8a,0x8, + 0xc3,0x10,0xed,0x76,0x1b,0x92,0x24,0x4d,0x49,0x21,0x1c,0xc7,0x51,0xf1,0xbe,0xd1, + 0x68,0xe0,0x8f,0x7f,0xfc,0x23,0xee,0xdf,0xdf,0xc5,0xc5,0x8b,0x17,0x70,0xe1,0xc2, + 0x5,0xa4,0xd3,0xe9,0x17,0x3a,0xc,0x64,0x93,0x38,0x8e,0x43,0x36,0x9b,0xc5,0xdc, + 0xdc,0x1c,0x8a,0xc5,0x22,0xa2,0x38,0x82,0x24,0x8b,0x50,0x53,0xa,0x3c,0xc7,0x87, + 0x65,0x98,0xb0,0x4c,0x7,0x92,0x28,0x1,0x31,0x10,0x47,0x11,0xc0,0x4c,0xee,0x95, + 0xe7,0x39,0x1c,0x3c,0x7d,0x8e,0x56,0xb3,0x3,0xc7,0x76,0x71,0xfd,0xc6,0x36,0x56, + 0x57,0x57,0xa1,0x28,0x32,0x8e,0x8f,0x4f,0xb0,0xba,0xba,0x8a,0x1b,0x37,0x6e,0xa0, + 0x58,0x2c,0x2,0x0,0x4e,0x4e,0x4e,0x30,0x1e,0x8f,0xc1,0x7b,0x9e,0xf7,0xbf,0x74, + 0x5d,0x2f,0xfd,0xe5,0x2f,0x7f,0x59,0x6c,0x36,0x9b,0xa8,0x54,0x2a,0x53,0xbc,0xec, + 0x3c,0x9c,0x90,0x1c,0x6c,0x3a,0xab,0x2b,0x49,0x46,0x66,0x9e,0x3f,0x7f,0x8e,0x7a, + 0xbd,0x8e,0x20,0x8,0xc1,0x30,0x9f,0x4d,0x76,0x5,0x41,0x70,0xaa,0x1b,0x4d,0xaa, + 0x60,0xa7,0xd3,0xc6,0xe3,0xc7,0x8f,0x21,0x49,0xd2,0x99,0x23,0xbb,0x34,0xac,0x4f, + 0x87,0x9e,0x6a,0xb5,0x1a,0xae,0x5e,0xbd,0x8a,0xc5,0xc5,0x45,0xe4,0xa,0x39,0x68, + 0x3,0xd,0xc6,0x58,0x47,0xaf,0xd5,0xc5,0xfc,0x62,0x65,0xd2,0x1a,0x2,0x0,0x6, + 0x88,0xe2,0x88,0x2a,0xa2,0x8d,0x93,0x16,0x4c,0xc3,0xc0,0xc1,0xd3,0x43,0x2c,0x2d, + 0xd5,0xb0,0xb0,0x50,0x3,0x30,0x1,0xac,0xf,0x1e,0x3c,0x40,0xb9,0x5c,0x86,0x6d, + 0xdb,0x44,0x66,0x79,0xc8,0xbb,0xae,0xfb,0x3f,0x34,0x4d,0x5b,0x78,0xfc,0xf8,0xf1, + 0x52,0xbb,0xdd,0xbe,0x90,0xcf,0xe7,0x13,0xcf,0x4a,0xc,0x44,0x6e,0x74,0x7a,0x9a, + 0xeb,0x2c,0xc8,0x1e,0x45,0x11,0xc,0xc3,0xc0,0x78,0x3c,0xa6,0x65,0x78,0x3c,0x1e, + 0xc3,0xf3,0x7c,0x0,0x9f,0x31,0xfd,0xe9,0xe,0xab,0x85,0x5e,0xaf,0x87,0xfa,0xc9, + 0xc9,0xa4,0x8,0x24,0x30,0xd5,0x2c,0x8,0x25,0x21,0x5c,0xab,0xd5,0x98,0x28,0x8a, + 0x78,0x41,0x10,0x32,0xb5,0x5a,0x4d,0x92,0x55,0x19,0xbe,0xe3,0x43,0x1b,0x6a,0xc8, + 0x64,0x33,0x48,0xe5,0xd3,0x50,0x55,0x5,0xf1,0xec,0xec,0x0,0x18,0x34,0x1b,0x6d, + 0x74,0xbb,0x3d,0x48,0xa2,0x4,0x59,0x51,0x30,0x3f,0x37,0x8f,0x46,0xb3,0x81,0xc3, + 0xc3,0x43,0xec,0xef,0xef,0xc3,0xb6,0x6d,0xcb,0x34,0xcd,0x7d,0x4d,0xd3,0xfe,0x83, + 0xff,0xdd,0xef,0x7e,0x77,0xfb,0xbb,0xdf,0xfd,0x6e,0xce,0xf3,0xbc,0xb1,0xae,0xeb, + 0x97,0x8e,0x8f,0x8f,0x8b,0x0,0xa2,0xb3,0x88,0xe9,0xe7,0x4d,0x96,0x92,0x2a,0xd3, + 0x6c,0x36,0xd1,0x6e,0xb7,0xc1,0x30,0x2c,0x24,0x89,0x3f,0x5,0x74,0x4,0x11,0x4f, + 0xb7,0x8a,0x58,0x96,0x99,0x22,0xc7,0xb3,0x6b,0xce,0x96,0xf9,0xd3,0x12,0x1f,0x75, + 0xbb,0x5d,0x3e,0xc,0xc3,0x12,0xcb,0xb2,0x6f,0x6,0x41,0x70,0x6d,0xfd,0xc2,0x3a, + 0x24,0x51,0x84,0x63,0x3a,0xe8,0x77,0xfa,0x60,0x58,0x16,0xb9,0x52,0xe,0xa9,0x94, + 0xa,0x8e,0x9b,0x18,0x97,0x63,0x39,0x0,0x93,0x5c,0x58,0xaf,0x37,0xd1,0xeb,0xf7, + 0x11,0x45,0x11,0x2e,0x6e,0x5e,0xc0,0xf2,0xf2,0xa,0x0,0xe0,0x83,0xf,0x3e,0x40, + 0xb7,0xdb,0xbd,0xef,0x38,0xce,0xbf,0x73,0x1c,0xf7,0xef,0x3c,0x0,0xfc,0xf6,0xb7, + 0xbf,0xd5,0x6e,0xde,0xbc,0xf9,0x1e,0x80,0x47,0x71,0x1c,0x2b,0x0,0xe2,0xf3,0xc2, + 0xe8,0x2c,0xd,0x37,0x29,0x9e,0x79,0x9e,0x87,0x67,0xcf,0x9e,0x51,0xf6,0x2c,0x8a, + 0x2,0x52,0x29,0x15,0xba,0x6e,0x23,0x8,0xbc,0x17,0xce,0x15,0x4,0xee,0x74,0x26, + 0x71,0x92,0xd8,0xc3,0x28,0x42,0x9c,0x58,0xf3,0x2c,0x11,0xb,0x40,0xdc,0xef,0xf7, + 0x99,0x4f,0x3f,0xfd,0x94,0xbf,0x78,0xf1,0xe2,0x53,0x5e,0xe0,0xff,0x45,0x51,0x95, + 0x6b,0xe5,0x52,0x99,0x55,0x32,0x2a,0x7c,0xdb,0xc7,0x78,0xa8,0x81,0x65,0x19,0xa4, + 0x73,0x69,0x28,0x8a,0x8a,0x38,0x66,0xc0,0x30,0x9f,0x21,0xf4,0x18,0x31,0x6,0xbd, + 0xd1,0x84,0xa6,0x74,0xfa,0x28,0xcd,0x15,0xb1,0xb4,0xb4,0xc,0xcb,0xb2,0xf0,0xfc, + 0xf9,0x51,0xee,0xf9,0xf3,0xe7,0xf3,0xb6,0x6d,0x65,0xf8,0x6f,0x7f,0xfb,0xdb,0xb8, + 0x73,0xe7,0xe,0x3e,0xfc,0xf0,0xc3,0x1e,0x80,0xde,0x57,0x3d,0xbb,0xec,0x79,0x3e, + 0x3c,0x4f,0x7b,0x49,0x5b,0x28,0x84,0xef,0x87,0xff,0xa5,0x6b,0xd7,0xeb,0x75,0xdc, + 0xbd,0x7b,0xd7,0x73,0x1c,0x27,0x93,0xcf,0xe7,0xe7,0xc0,0x30,0xb,0x73,0xa5,0xf9, + 0xc8,0xb2,0xad,0xd8,0xb4,0x2c,0x18,0xa6,0x89,0x72,0x75,0xe,0x2c,0xcf,0xc2,0x71, + 0xdc,0x9,0xaf,0xf3,0x2,0xb0,0x2c,0x8f,0x74,0x3a,0xd,0xc7,0x76,0x61,0x8c,0x4d, + 0xf4,0x7b,0x43,0x8,0xa2,0x80,0x42,0xa9,0xc0,0xac,0xae,0xac,0xb1,0x61,0x18,0xd7, + 0x6c,0xdb,0xbd,0x35,0x1e,0x8f,0x9e,0xf3,0xff,0xe8,0xbf,0xc6,0xd9,0xdb,0xdb,0xdb, + 0xaf,0x56,0xab,0xff,0x73,0xff,0xc9,0xfe,0x8d,0x30,0x88,0x61,0xd5,0x3c,0xd1,0x77, + 0xbd,0x38,0xf0,0x27,0x44,0x5a,0x6d,0x36,0xc1,0xf2,0x2c,0xe2,0x28,0x42,0x18,0x84, + 0x88,0x22,0x22,0xe8,0x5,0x8,0x82,0x18,0x2c,0xc7,0xc3,0xb,0x7d,0xb4,0xda,0x5d, + 0x8c,0xc6,0x3a,0x44,0x51,0x60,0x59,0x96,0x97,0xb,0x85,0xe2,0x75,0xdf,0xf7,0x2c, + 0xfe,0xce,0x9d,0x3b,0xff,0xd0,0x6,0xba,0x75,0xeb,0x56,0xfe,0xca,0x95,0x2b,0xb9, + 0x4a,0xa5,0xb2,0x9f,0xcf,0xe7,0x8c,0x94,0xaa,0xc0,0x63,0xb9,0x18,0x52,0xc,0x51, + 0x92,0x90,0x2b,0xe6,0xc1,0x70,0xc,0x7c,0xdf,0x83,0xef,0xf9,0x8,0x83,0x0,0x7e, + 0xe0,0xc3,0xb6,0x6c,0x78,0xde,0x44,0xe,0xe6,0x58,0xe,0xaa,0x2a,0x43,0x51,0x15, + 0xc6,0xf5,0x5c,0xc6,0xf3,0x5c,0xd7,0x71,0xec,0x56,0x18,0x86,0xf7,0x79,0x0,0x78, + 0xfb,0xed,0xb7,0x19,0x49,0x92,0x4,0x86,0x61,0x78,0x86,0x61,0xd8,0xd3,0x38,0x8d, + 0x93,0xc3,0x4,0xe7,0xcd,0xf4,0xcd,0xe6,0x24,0xdf,0xf7,0x51,0x3f,0x3e,0x46,0xa7, + 0xd9,0x84,0x24,0x49,0x10,0x65,0x19,0xe0,0x79,0xd8,0x96,0x35,0x35,0x1b,0x48,0x30, + 0xd1,0x97,0xf9,0xf1,0xa,0x81,0x10,0xae,0xeb,0x42,0x92,0x24,0x94,0x4a,0x25,0xee, + 0xcd,0x37,0xdf,0xbc,0xb0,0xb2,0xb2,0xb2,0x72,0xe5,0xca,0x95,0x93,0x62,0xb1,0x50, + 0x97,0x4,0xc9,0xf,0xdd,0x28,0x4e,0xa5,0x52,0x28,0x96,0x8b,0x28,0x57,0x4a,0x8, + 0xe3,0x10,0xba,0x61,0x4c,0x70,0x92,0x65,0x42,0xd3,0x34,0x34,0x9b,0x6d,0x44,0xa3, + 0x10,0x88,0x81,0x42,0x3e,0x8b,0xf2,0x7c,0x99,0x65,0x38,0x86,0xd9,0xdf,0x7f,0x82, + 0x7a,0xfd,0x79,0xf3,0xf1,0xe3,0xc7,0x7b,0x77,0xee,0xfc,0xfe,0x63,0xfe,0x74,0xb2, + 0x4b,0xe4,0x38,0x6e,0x89,0x65,0xd9,0x22,0xcb,0xb2,0x4a,0x1c,0xc7,0x71,0xd2,0x40, + 0x84,0x22,0x7c,0x91,0xb9,0x1a,0x32,0x29,0x46,0x90,0x2e,0x27,0x8,0x88,0x4f,0x31, + 0xc,0x21,0x81,0xc4,0x40,0x5f,0x76,0x4c,0x38,0x1,0x2f,0xe2,0x5c,0x2e,0xc7,0xbc, + 0xf6,0xda,0x6b,0xc2,0xf2,0xf2,0x72,0x69,0x6b,0x6b,0x8b,0x29,0xcf,0x95,0x87,0xb1, + 0x1f,0xc2,0xd0,0xf4,0x38,0x9b,0xce,0x21,0x9d,0xcf,0x42,0xce,0xaa,0x18,0x1b,0x6, + 0x1c,0xdb,0x86,0x69,0x1a,0xb0,0x2c,0x1b,0xc3,0xe1,0x8,0xed,0x76,0x17,0x8d,0x93, + 0x26,0xa2,0x0,0x28,0x16,0xa,0x58,0x58,0x5a,0x80,0xed,0x5a,0x38,0xf8,0xfb,0x1, + 0xf3,0xe0,0xc1,0x3,0xf4,0xfb,0x7d,0x93,0x61,0x58,0xff,0xeb,0x5f,0xff,0x6f,0x3c, + 0xff,0xcd,0x6f,0x7e,0x73,0x4e,0x92,0x24,0x29,0x97,0xcb,0x2d,0x64,0x32,0x99,0x9c, + 0xaa,0xaa,0xc2,0xa9,0x81,0x40,0xaa,0xd9,0xcb,0xd4,0xff,0xe4,0x84,0x5,0xa9,0x78, + 0x8b,0x8b,0x8b,0x30,0x4e,0x25,0x8c,0xb1,0xae,0x63,0x7c,0x2a,0xf4,0x93,0x7,0x24, + 0x86,0x22,0xcc,0x3c,0xe9,0x55,0xb3,0x12,0x7,0x39,0x9e,0x2c,0xf3,0x3c,0xcf,0xa3, + 0x52,0xa9,0x30,0xdb,0xdb,0xdb,0xcc,0xf2,0xf2,0x32,0x8a,0xc5,0x92,0x16,0x5,0x71, + 0x14,0x7a,0x41,0x2c,0x70,0x1c,0x72,0xc5,0x1c,0x94,0x8c,0x8a,0x30,0x8e,0x60,0x9f, + 0xa,0xff,0xa6,0x69,0x62,0xac,0x8f,0xd1,0x6a,0xb5,0xd1,0x6c,0x76,0x61,0x5a,0xe, + 0xe6,0xcb,0x65,0xcc,0x57,0x4b,0x70,0x3d,0x17,0xbd,0x6e,0xf,0xe3,0xb1,0x86,0x72, + 0xb9,0xcc,0x64,0x32,0x99,0xd0,0xf7,0xfd,0x82,0xa6,0x69,0x35,0x5e,0x14,0xc5,0xb2, + 0xa2,0x28,0xc2,0xc2,0xc2,0x42,0xaa,0x56,0xab,0xb1,0xe5,0x72,0x39,0x88,0xa2,0x90, + 0xd2,0x88,0x97,0x89,0xdc,0xc9,0x5e,0xd7,0x2c,0x1c,0xf0,0x7d,0x1f,0x9a,0xa6,0xe1, + 0xe8,0xe8,0x8,0xf5,0x7a,0x7d,0xca,0x28,0x49,0x19,0x83,0x70,0x21,0x32,0x1f,0x39, + 0xfb,0x83,0x99,0xa4,0x81,0x88,0x81,0x53,0xa9,0x14,0x16,0x17,0x17,0xe3,0x57,0x5f, + 0x7d,0x35,0x5e,0x5a,0x5a,0xb2,0x64,0x59,0xa,0xb5,0xbe,0x16,0x8b,0x3c,0x8f,0x5c, + 0xa9,0x80,0x5c,0x29,0xf,0x86,0xe3,0x60,0x5a,0x16,0x4c,0xcb,0x82,0x6d,0x9a,0xd0, + 0x75,0x1d,0xdd,0x76,0x17,0xcd,0x66,0x7,0xa3,0x91,0x8e,0x42,0x21,0x8f,0x4a,0x6d, + 0xe,0xd9,0x82,0x8a,0xc3,0xc3,0xe7,0xd0,0x34,0xd,0xb9,0x5c,0x1e,0x57,0xaf,0x5e, + 0x63,0x4c,0xd3,0x14,0xea,0xf5,0xba,0x7a,0x70,0x70,0x30,0xcf,0xa7,0x52,0x29,0xbe, + 0x54,0x2a,0x31,0xb7,0x6e,0xdd,0xd2,0xae,0x5e,0xbd,0x8a,0x6a,0xb5,0x12,0x39,0x8e, + 0x1,0xdf,0xf,0x11,0x45,0x67,0xff,0x34,0xea,0xbc,0x7c,0x41,0x3e,0x93,0x2e,0x66, + 0xa7,0xd3,0xc1,0xc7,0x1f,0x7f,0x8c,0x7c,0x3e,0xff,0x82,0x67,0x90,0x6,0x9f,0xe3, + 0x38,0x28,0x95,0x4a,0x58,0x5c,0x5c,0x44,0xb9,0x5c,0xa6,0x84,0xf6,0x2c,0xd2,0x4a, + 0x64,0x5f,0x32,0x60,0x4e,0x14,0x4b,0xcb,0xb4,0x62,0x86,0x61,0x50,0x9c,0x2b,0xa3, + 0xba,0x58,0x5,0xcb,0xb2,0x93,0x49,0x7d,0xc7,0x41,0xe0,0xfb,0xb0,0x6c,0x1b,0xfd, + 0xfe,0x0,0xc7,0xcf,0x9a,0xd0,0xd,0x3,0xb9,0x5c,0x1a,0x57,0xaf,0x6e,0x81,0xe5, + 0x22,0xd4,0xeb,0x93,0xc9,0xfe,0xd5,0xd5,0x35,0x5c,0xbf,0xfe,0x2a,0x4a,0xa5,0x12, + 0x5c,0xd7,0x65,0xf,0xf,0xf,0x19,0x5d,0xd7,0x63,0x5e,0x96,0x65,0x57,0x51,0x14, + 0x66,0xe2,0x39,0x11,0xe,0xe,0xe,0xa3,0xc1,0xa0,0x8b,0x20,0x8,0x19,0x86,0xe1, + 0x5e,0xe8,0x3b,0x25,0x8d,0x21,0x49,0x12,0x9d,0x80,0x4f,0xa2,0x69,0xc2,0xe6,0x5b, + 0xad,0x16,0x9a,0xcd,0x26,0x34,0x4d,0x9b,0x92,0x67,0x9,0x85,0x48,0xa5,0x52,0xd8, + 0xda,0xda,0xc2,0xe6,0xe6,0x26,0x96,0x96,0x96,0xa8,0x8e,0x3d,0x2b,0x75,0x90,0x4e, + 0x29,0x51,0x0,0x25,0x49,0xa2,0x7d,0x7f,0xc3,0x30,0xa0,0x1b,0x3a,0x78,0x86,0x7, + 0x27,0x70,0xe0,0x45,0x1,0x63,0x6d,0xc,0xcb,0x34,0x61,0x9e,0xf6,0xe1,0x5a,0xed, + 0x16,0xea,0x27,0xd,0xc,0x7b,0x7d,0xe4,0xcb,0x45,0xac,0xac,0x2c,0x82,0xe5,0x80, + 0x93,0xe3,0x13,0xec,0xef,0x3f,0x81,0x69,0x3a,0x13,0xd,0x5e,0x99,0xfc,0x88,0x67, + 0x61,0x61,0x1,0xb9,0x5c,0x8e,0xc9,0xe5,0x72,0xc,0x2f,0x49,0x92,0xc9,0xf3,0x3c, + 0xe3,0xba,0xae,0xb0,0xbb,0xbb,0x8b,0xdd,0xdd,0xdd,0xf8,0xe4,0xa4,0x81,0x38,0x8e, + 0x20,0x8a,0xc2,0x54,0xee,0x98,0x45,0xcf,0x64,0x4e,0x79,0xf6,0x3b,0xc,0xc3,0xc0, + 0xf7,0x7d,0x74,0xbb,0xdd,0x53,0x1e,0xe6,0x51,0xc3,0x91,0x50,0x2a,0x97,0xcb,0xb4, + 0xfd,0xbc,0xb1,0xb1,0x1,0x55,0x55,0x31,0x1a,0x8d,0x68,0x31,0x20,0x61,0x48,0x84, + 0x3c,0x72,0x4d,0xd7,0x75,0x31,0x1e,0x8f,0xe9,0xd8,0x32,0xc9,0x2f,0xc,0xcb,0x60, + 0x34,0x1e,0x41,0xee,0xcb,0xb4,0x3d,0x4e,0x6,0xc0,0xea,0xf5,0x3a,0x7a,0xdd,0x1e, + 0x24,0x5e,0xc2,0xf2,0x52,0x15,0xd5,0xea,0x3c,0x1e,0x3f,0x7e,0x8c,0x8f,0x3f,0xfe, + 0x18,0x27,0x27,0x75,0x28,0x8a,0x8c,0x7e,0xbf,0x8f,0xfb,0xf7,0xef,0x3,0x0,0xbe, + 0xfe,0xf5,0xaf,0x63,0x7b,0x7b,0x7b,0x32,0xab,0xe9,0x4e,0x5e,0x8c,0xa6,0x69,0xe1, + 0x78,0xac,0x41,0xd7,0x8d,0x78,0x34,0x72,0x10,0xc7,0x3e,0x64,0x99,0x3d,0x95,0x3c, + 0xf0,0x82,0x70,0xee,0x79,0x1e,0xba,0xdd,0x2e,0x9d,0xc2,0xe7,0x79,0x7e,0x4a,0x9, + 0xf4,0x3c,0xf,0xed,0x76,0x7b,0x6a,0x2e,0x30,0x8e,0x63,0x28,0x8a,0x82,0xb5,0xb5, + 0x35,0xdc,0xbc,0x79,0x13,0xef,0xbc,0xf3,0xe,0x56,0x57,0x57,0x61,0x9a,0x26,0x9e, + 0x3f,0x7f,0xe,0xc7,0x71,0xa6,0x92,0x3e,0x91,0x48,0x88,0x67,0x91,0x12,0x4f,0x74, + 0x21,0xc3,0x30,0xe8,0xf7,0xdb,0xad,0x36,0xc6,0xda,0x18,0xbd,0x6e,0x17,0xa5,0xd2, + 0x84,0x91,0xb7,0xdb,0x6d,0x3c,0x7f,0xfe,0x1c,0x96,0x65,0x21,0x93,0xc9,0x60,0x6b, + 0x73,0xb,0xf9,0x42,0x1e,0x47,0x47,0x47,0xb8,0x73,0xe7,0xe,0x5c,0xd7,0xa5,0xd3, + 0xbc,0x44,0x63,0x27,0x93,0x74,0xf5,0x7a,0x9d,0xca,0x1d,0xbe,0xeb,0xba,0x8c,0x61, + 0x18,0x51,0x14,0xc5,0x8c,0x2c,0xcb,0x31,0xc7,0x1,0x71,0xcc,0xd0,0x7e,0x16,0x4b, + 0x7,0xa8,0x7c,0x5a,0x49,0xc8,0x4f,0x96,0xca,0xe5,0x32,0xde,0x7d,0xf7,0x5d,0x48, + 0x92,0x4,0x5d,0xd7,0xe9,0xc3,0x8c,0xc7,0x63,0x3c,0x79,0xf2,0x84,0xea,0xd4,0xc, + 0xc3,0x40,0xd7,0x75,0x30,0xc,0x83,0xed,0xed,0x6d,0xbc,0xfe,0xfa,0xeb,0xb8,0x7c, + 0xf9,0x32,0x65,0xfe,0xb6,0x6d,0xd3,0x50,0x4e,0x8a,0xf3,0x49,0xd,0x9c,0x78,0x14, + 0x9,0x2f,0x12,0x76,0x93,0x59,0x24,0x1e,0x9a,0x66,0xc1,0x34,0x1b,0x70,0x5d,0x1f, + 0xae,0x3b,0x19,0x31,0xb6,0x2c,0x13,0x85,0x42,0x1,0xab,0xab,0x6b,0x28,0x96,0x8b, + 0x14,0xb2,0x90,0xde,0x3d,0x69,0x52,0x24,0x7f,0xdc,0x42,0xde,0x82,0x20,0x4c,0xc, + 0xe4,0xfb,0x3e,0x13,0x45,0x51,0x28,0xcb,0x32,0x53,0x2c,0x16,0xe2,0x42,0xa1,0x3, + 0x80,0x45,0xb1,0x58,0x44,0x2e,0x97,0x83,0x20,0x8,0xf0,0x7d,0x9f,0xe,0x90,0x7b, + 0x9e,0x7,0xc3,0x30,0x90,0x4a,0xa5,0xb0,0xb3,0xb3,0x83,0x9f,0xfc,0xe4,0x27,0x0, + 0x80,0xe1,0x70,0x88,0x7c,0x3e,0x8f,0x28,0x8a,0xd0,0x6a,0xb5,0x70,0xef,0xde,0x3d, + 0xe8,0xba,0x4e,0x3b,0xb0,0xcd,0x66,0x13,0x8e,0xe3,0xe0,0xf5,0xd7,0x5f,0xc7,0x95, + 0x2b,0x57,0x20,0xcb,0x32,0x9e,0x3c,0x79,0x2,0xdb,0xb6,0xa9,0x50,0xf6,0x79,0x53, + 0x60,0x49,0x6f,0x2,0x0,0x5d,0xd7,0x1,0x0,0xe5,0x72,0x9,0x71,0x6c,0x63,0x30, + 0x30,0x71,0x74,0x74,0x2,0xcf,0x33,0x61,0xdb,0x1e,0x54,0x35,0x8b,0xad,0xad,0xcb, + 0xd8,0xd8,0xb8,0x88,0x56,0xab,0x5,0xc4,0x40,0x2e,0x97,0xc3,0xc6,0xc6,0x6,0xfd, + 0x41,0xe,0xa9,0x9e,0x1c,0xc7,0xd1,0xa1,0x8a,0x72,0xb9,0xc,0xd3,0x34,0xc1,0x47, + 0x51,0xe4,0x49,0x92,0x84,0x9d,0x9d,0x1d,0xec,0xef,0xef,0xe3,0xbd,0xf7,0xde,0x83, + 0xe3,0xb8,0x58,0x5c,0x5c,0xc4,0xf6,0xf6,0xab,0xb8,0x7a,0xf5,0x2a,0xb2,0xd9,0x2c, + 0x34,0x4d,0xc3,0xa3,0x47,0x8f,0xe0,0xba,0x2e,0x6d,0xd4,0x15,0x8b,0x45,0xac,0xaf, + 0xaf,0xd3,0x1d,0x26,0xf,0xc9,0x71,0x1c,0xd2,0xe9,0xf4,0x64,0x7,0x4e,0x77,0x9c, + 0x61,0x18,0x3a,0x1d,0xb6,0xb9,0xb9,0x49,0xc7,0x8b,0x17,0x17,0x17,0x69,0x37,0xe1, + 0xcb,0xfe,0x16,0x9f,0x20,0xf3,0xf1,0x78,0x8c,0xbd,0xbd,0x3d,0x5c,0xba,0xb4,0xe, + 0x41,0x90,0xf1,0x9f,0xff,0xf9,0x1f,0x68,0x36,0x8f,0x90,0x4e,0x57,0xb0,0xb5,0xf5, + 0x43,0x2c,0x2d,0x5d,0xc6,0xfc,0x7c,0x88,0x67,0xcf,0xe,0x31,0x3f,0x5f,0xc1,0xea, + 0xea,0x2a,0x7a,0xbd,0x1e,0x1e,0x3e,0x7c,0x88,0x46,0xa3,0x41,0xc3,0x94,0xcc,0x62, + 0x92,0x69,0xb8,0xc1,0x60,0x80,0xff,0x3,0x77,0x5a,0xa7,0xc6,0xe3,0xfd,0x49,0x2c, + 0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/settings.png + 0x0,0x0,0x11,0x66, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x29,0x8,0x6,0x0,0x0,0x0,0x73,0xdb,0xaa,0xd4, + 0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xaf,0xc8,0x37,0x5,0x8a,0xe9, + 0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65, + 0x0,0x41,0x64,0x6f,0x62,0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64, + 0x79,0x71,0xc9,0x65,0x3c,0x0,0x0,0x10,0xf8,0x49,0x44,0x41,0x54,0x58,0x47,0xad, + 0x58,0x9,0x5c,0x4e,0x69,0xdf,0x4e,0xa2,0x68,0x7b,0x2a,0xa9,0xb4,0x3e,0x29,0x91, + 0xea,0xa9,0x8c,0x42,0xc6,0xd2,0xa0,0xc9,0x6b,0x37,0x98,0xc9,0x3a,0x19,0xc3,0x3b, + 0xc,0xd9,0xc2,0x34,0x45,0x43,0x64,0x29,0xa9,0x48,0x13,0x9a,0x8a,0x54,0xa4,0x68, + 0x51,0x51,0x29,0xda,0xb5,0x6f,0x28,0xed,0x49,0x7b,0x89,0x16,0xc5,0xf5,0xfd,0xef, + 0x33,0x33,0xbe,0x77,0xde,0xf9,0xbe,0xf7,0x9d,0x1a,0xe7,0xf7,0xbb,0x7e,0xe7,0x3c, + 0xcf,0x39,0xf7,0x39,0xd7,0xf5,0xbf,0xff,0xdb,0x7d,0xf,0x13,0x1a,0xda,0xa1,0x28, + 0x2f,0x23,0x25,0x90,0x1d,0xab,0x62,0x3e,0x52,0x54,0x72,0xaa,0x88,0x88,0xc8,0x38, + 0xf6,0x9a,0xfe,0x81,0x7e,0xa1,0xde,0xde,0xb7,0x42,0x3d,0xbd,0xdd,0x3,0x3d,0xdd, + 0xaf,0x73,0xfb,0x7a,0x3a,0x33,0xde,0xbc,0x79,0x73,0x9f,0x6e,0x55,0x11,0x7a,0x87, + 0xf6,0xa9,0x8f,0x38,0x4a,0x56,0x62,0xa4,0xae,0x96,0x96,0x96,0xfd,0xac,0xd9,0x16, + 0xc5,0x6b,0xac,0xfe,0x9,0x5b,0xbb,0x73,0x70,0xbf,0x18,0x85,0xcb,0x1,0x29,0xf0, + 0xd,0x4c,0x87,0xf7,0x2f,0x8f,0x70,0xdc,0x25,0x6,0xfb,0x7e,0xc,0xc4,0x57,0x9b, + 0x8e,0x61,0xc6,0xac,0x35,0x50,0x56,0x9d,0xf4,0x5a,0x42,0x82,0x17,0x3c,0x5c,0x48, + 0x68,0x5,0x51,0x11,0xfd,0x88,0x74,0x6,0xf5,0xaa,0xe1,0x7c,0x3e,0x7f,0x8f,0x85, + 0xe5,0xf2,0xf2,0x1f,0x8f,0xb8,0xe3,0x56,0x44,0x3a,0xee,0x27,0x95,0x23,0x39,0xbd, + 0x1a,0x8f,0xb,0x1a,0x91,0x91,0xfb,0x2,0x8f,0x32,0xeb,0x10,0xf7,0xa0,0x2,0xb7, + 0xa2,0x8a,0x11,0x9d,0xc0,0xce,0x65,0xf0,0xf0,0x49,0xe5,0xc4,0xcc,0xb3,0xdc,0x6, + 0xc5,0x71,0x93,0x20,0x2c,0x2c,0x1c,0x46,0x5f,0x35,0x18,0xd4,0x97,0x3f,0xc2,0xc3, + 0xca,0x53,0xa7,0x9a,0x6,0x6e,0xdf,0x69,0x87,0xcb,0x7e,0x71,0x88,0x4f,0x2e,0xc3, + 0xb3,0xca,0xe,0x14,0x14,0x37,0x20,0x25,0xb3,0x2,0x39,0x5,0x2f,0x90,0x95,0x57, + 0x8f,0x8c,0x9c,0x3a,0xdc,0x89,0x2d,0x82,0xbd,0xd3,0xd,0xb8,0x78,0xde,0x83,0x7f, + 0x70,0x36,0x42,0xee,0x94,0xc0,0x2f,0xb8,0x0,0xae,0x5e,0x29,0xd8,0xba,0xf3,0x67, + 0xe8,0x1b,0xfd,0x3,0x23,0x46,0x4a,0xd4,0x10,0xa7,0x8d,0x1f,0x81,0xd7,0x5f,0x7a, + 0x85,0xda,0x8c,0x19,0x9f,0x3e,0x3c,0x79,0xc6,0x7,0xd1,0xf7,0xa,0x11,0x15,0x97, + 0x8f,0x9c,0xfc,0x1a,0x94,0x3c,0x7b,0x49,0xc4,0x6b,0xf0,0x28,0xad,0xc,0xc5,0x4f, + 0x1b,0x51,0x50,0xf2,0x12,0xd9,0xf9,0x2f,0x48,0x44,0x3d,0x2e,0xf9,0x27,0x63,0xd3, + 0x36,0x4f,0xac,0xdf,0xe2,0x81,0xcb,0x57,0x33,0x70,0x2d,0xb4,0x10,0x5e,0xbe,0x59, + 0x70,0xb9,0x90,0x2,0x5b,0x87,0x30,0xcc,0x9c,0x6b,0xd,0xb1,0xd1,0xbc,0x7e,0xfa, + 0xfa,0xee,0xbf,0xc4,0xe0,0x6f,0x3c,0xa4,0x3c,0x6d,0x9a,0x59,0x8a,0xbb,0x67,0x0, + 0x1e,0x12,0xd1,0xe4,0xb4,0xa7,0xc8,0x2f,0xaa,0x45,0x4d,0x5d,0x3b,0x5e,0x36,0xbd, + 0x46,0x43,0x63,0x17,0x6a,0x5f,0x74,0xe2,0x79,0x65,0x2b,0x9e,0x96,0x35,0xa3,0xb0, + 0xb4,0x11,0xe9,0xd9,0xb5,0x34,0x2b,0xd5,0x8,0xba,0xf5,0x18,0xd6,0xdf,0x5d,0xc0, + 0x19,0x8f,0x7b,0xb8,0x19,0x51,0xa,0x9f,0x80,0x2c,0xb8,0x5e,0x78,0x88,0xe3,0xae, + 0x89,0x24,0x22,0x12,0x33,0x66,0x6f,0x82,0x98,0x98,0x54,0x1f,0x71,0xfb,0xe7,0xdf, + 0xe0,0xf7,0x1f,0x87,0xe,0x33,0x32,0xfa,0x24,0xf0,0x67,0x9f,0xeb,0xa8,0xac,0x7d, + 0x85,0xb2,0xe7,0x4d,0xa8,0xae,0x6d,0x45,0x4b,0xdb,0x1b,0xb4,0x12,0xda,0x3b,0x7a, + 0xd0,0xda,0xfe,0x6,0x8d,0x2d,0xaf,0x51,0xdf,0xd0,0x89,0xaa,0xda,0xe,0x3c,0xaf, + 0x6e,0xc7,0xed,0xe8,0x5c,0xdc,0x8a,0xcc,0x45,0x66,0x5e,0x3,0x2e,0x5,0x3c,0xc2, + 0x11,0xe7,0x70,0x4,0xde,0xca,0x27,0x37,0xca,0x85,0xfb,0xcf,0xa9,0x70,0x76,0x4b, + 0x84,0xe3,0xc9,0x7,0x58,0xb0,0x68,0xf,0xe4,0xe4,0xb5,0xc9,0x9d,0x46,0x77,0x13, + 0x8b,0x39,0x1f,0x5d,0x84,0x8a,0x8a,0xca,0x37,0x87,0xec,0x8e,0xe,0x54,0xd7,0x75, + 0x91,0xa5,0xdf,0xa0,0x99,0x88,0x76,0xbc,0xea,0xc5,0x9b,0xee,0xb7,0xe8,0xed,0xeb, + 0x47,0x6f,0x6f,0x3f,0x5d,0xf7,0xa1,0xa3,0xb3,0x87,0x13,0x55,0xf2,0xb4,0x1,0x69, + 0x59,0xcf,0x91,0x9c,0x5a,0x86,0x7,0x8f,0xca,0xf0,0x38,0xbf,0x1,0x81,0xa1,0x59, + 0xd8,0x69,0xeb,0x47,0x2,0x8a,0x11,0x1a,0x55,0x81,0x4b,0x57,0xb,0x88,0x7c,0x1c, + 0xf6,0x3b,0xdc,0x86,0x89,0xd9,0x7a,0xc8,0x2b,0x4e,0x86,0x8c,0x9c,0x3a,0x5,0xf6, + 0x88,0x34,0x12,0x20,0xf7,0xd1,0x44,0x88,0x8a,0xa,0xf1,0x17,0x2d,0x5e,0xf6,0x3c, + 0xe3,0x71,0x39,0x5e,0xbc,0xec,0x46,0x43,0x53,0x17,0x59,0xbc,0x9b,0x23,0x3f,0xd0, + 0x3f,0x80,0xf7,0xef,0xde,0x73,0xe8,0xef,0x7f,0x87,0xee,0x9e,0xb7,0xe8,0x7a,0xf3, + 0x16,0x49,0x8f,0x4a,0xe1,0x76,0x3e,0x12,0xb1,0xf1,0x85,0x28,0x7a,0xda,0xf4,0xab, + 0x80,0x9b,0x59,0x58,0xb9,0xd6,0x11,0x5b,0x77,0x38,0xe1,0xfb,0x3d,0xce,0xd8,0xf4, + 0x8d,0x1d,0xcc,0x17,0x6c,0xc2,0x9c,0xf9,0x1b,0xa1,0xab,0x3f,0xf,0x63,0x95,0xf4, + 0x48,0xc0,0x78,0x88,0x8d,0x92,0x1,0x91,0x77,0xf8,0x68,0x2,0x54,0x35,0x34,0xe, + 0x9c,0xf3,0xf4,0x25,0xff,0xee,0x46,0x4d,0x7d,0x27,0x1a,0x49,0xc0,0xab,0xae,0x5e, + 0xbc,0x65,0xe4,0xdf,0x13,0xf9,0x7f,0x1,0xfb,0xaf,0xeb,0x4d,0x1f,0x6a,0xeb,0xdb, + 0x70,0x3b,0xea,0x31,0x22,0x63,0xf3,0x48,0x40,0x33,0x72,0x8b,0x5a,0x28,0x63,0xc5, + 0x60,0xda,0xf4,0x39,0xd8,0xb0,0x61,0x3,0x5c,0x5c,0xce,0x20,0xf4,0x66,0x8,0x92, + 0x92,0x1e,0x20,0x36,0x36,0x6,0xd7,0xaf,0x7,0xe3,0xf0,0x91,0x63,0x58,0xb8,0x70, + 0x19,0x34,0x34,0x27,0x43,0x68,0xd8,0x70,0x56,0xe8,0xe4,0x3f,0x86,0x8,0x99,0xcf, + 0x2d,0x97,0xe4,0x26,0xa5,0x94,0x90,0xef,0x77,0x51,0xc6,0xa9,0x26,0x54,0xe2,0x65, + 0x63,0x7,0x6,0x6,0xde,0xfd,0x49,0x0,0xfb,0xaf,0xeb,0x75,0x1f,0xc5,0x43,0x37, + 0x2a,0x6b,0xda,0x90,0x57,0x58,0x4f,0x19,0xa9,0x11,0x99,0x54,0x17,0x12,0x1e,0x55, + 0xe0,0xf0,0x4f,0x6e,0xf0,0xfb,0xc5,0x17,0x6f,0xdf,0xf6,0xe1,0xdf,0x8f,0xbe,0xbe, + 0x5e,0xd4,0xd7,0xd7,0x21,0x20,0xe0,0x2a,0x16,0x2f,0x5e,0x2,0x4d,0x4d,0x4d,0xfb, + 0xbf,0x2d,0x40,0x4e,0x4e,0x7a,0xce,0x96,0xad,0xbb,0xdf,0xe7,0x17,0x37,0x23,0x29, + 0xe5,0x9,0xb9,0x44,0x1e,0x52,0x33,0x9e,0xa1,0xe4,0x49,0x1d,0xcd,0x42,0x37,0xc7, + 0xe1,0xf,0x33,0xf0,0x76,0x80,0x9b,0x9d,0x26,0x8a,0x91,0xda,0xfa,0xe,0x3c,0xab, + 0x68,0x45,0xd1,0x93,0x66,0x64,0x53,0x71,0x4b,0xcf,0x6e,0x44,0x74,0x7c,0x19,0x76, + 0xee,0x3e,0x82,0x6b,0x81,0xd7,0x3e,0xf0,0x1f,0x18,0x18,0x20,0x63,0xc,0x7c,0x78, + 0x57,0x7f,0x7f,0x3f,0x72,0x72,0xb2,0x71,0xe8,0xd0,0xa1,0xae,0x15,0x2b,0x56,0xec, + 0x21,0x11,0xc3,0x86,0x2c,0x44,0x57,0xd7,0xe0,0xa8,0x9d,0xc3,0x59,0xca,0x26,0x79, + 0x8,0x8b,0xc8,0xc0,0xc3,0xd4,0x52,0xa,0xd0,0x3a,0x3c,0x2b,0x7f,0x81,0x8a,0xaa, + 0x26,0x74,0x53,0xe0,0x92,0x2,0xbc,0x7b,0xf7,0xe,0xfd,0x64,0xfd,0xee,0x9e,0x3e, + 0x2e,0x3e,0x1a,0x9a,0x5e,0x51,0x96,0xea,0x40,0x51,0x69,0x3,0xc2,0x23,0x53,0x70, + 0xda,0xd5,0x17,0xf6,0x8e,0xee,0xd8,0xff,0x83,0xb,0x36,0x6f,0x73,0x80,0x91,0xf1, + 0x4c,0x78,0x79,0x79,0xa1,0xa7,0xa7,0x87,0x23,0xde,0xdd,0xdd,0xcd,0x5d,0x33,0xf2, + 0xec,0xfc,0xfa,0xf5,0x6b,0x14,0x17,0x17,0xe3,0xe0,0xc1,0x83,0x3,0x24,0xe2,0xdb, + 0x21,0xb,0x30,0x31,0x31,0x8b,0xf2,0xf0,0xba,0x85,0x9b,0xe1,0x19,0x88,0xb9,0x97, + 0x87,0x5c,0x72,0x9f,0xaa,0x9a,0x26,0xd4,0xd5,0xb7,0xd2,0xb9,0x99,0x23,0xcb,0xb2, + 0x50,0xf,0x65,0xa1,0xd7,0x24,0x86,0xfd,0x6e,0xef,0xec,0x43,0x53,0x6b,0x1f,0xaa, + 0xea,0x5e,0x51,0x30,0x17,0x81,0x66,0x10,0xf3,0x2d,0x96,0x61,0xd6,0x9c,0x45,0x30, + 0x30,0x9a,0x4d,0x1,0x3b,0x1b,0x2a,0x6a,0xc6,0xd0,0xd6,0xd1,0x87,0xe3,0x91,0xc3, + 0x68,0x6d,0x6d,0xe5,0x44,0x74,0x75,0x75,0x51,0x36,0xeb,0xe5,0x44,0xb4,0xb7,0x53, + 0x6d,0x79,0xf9,0x12,0x89,0x89,0x89,0xf8,0xf6,0xdb,0x6f,0x6b,0x17,0x2d,0x5a,0xa4, + 0x36,0x24,0x11,0xa6,0xd3,0x3e,0x7d,0x7a,0x35,0xf8,0x21,0x22,0xee,0xe6,0x20,0x31, + 0xb9,0x18,0x79,0x5,0x55,0xa8,0xa8,0x6c,0x24,0xf7,0x60,0x2,0x9a,0x38,0x57,0x61, + 0xa9,0xb3,0x8d,0xea,0x0,0x57,0x13,0xda,0x7b,0x91,0xf5,0xb8,0x4,0xf7,0x13,0x33, + 0xf1,0xbc,0xaa,0x13,0xc5,0xcf,0x5a,0x71,0x35,0x28,0xe,0x73,0x3e,0x5b,0x8e,0xf1, + 0x13,0x4c,0x8,0xa6,0x50,0xd7,0x34,0x81,0xa,0x7f,0x2a,0x14,0x55,0xf5,0xa1,0x33, + 0xc9,0x0,0xfb,0xf6,0xed,0x45,0x55,0x55,0x15,0x37,0x8b,0x6c,0x26,0x98,0x0,0xea, + 0x58,0x51,0x5b,0x5b,0x8b,0x67,0xcf,0x9e,0xe1,0xe4,0xc9,0x93,0xf8,0xea,0xab,0xaf, + 0x98,0x2b,0xd,0xfa,0x10,0x9e,0x6a,0x32,0xf3,0x89,0x7f,0xd0,0x43,0x84,0x47,0x65, + 0x13,0xa9,0x42,0xb0,0x54,0x5a,0x54,0x5a,0x8b,0xb2,0xf2,0x6,0x14,0x95,0xd4,0x50, + 0x40,0x57,0x91,0x18,0x56,0x89,0xbb,0x50,0x47,0x55,0xb8,0xf3,0x35,0x70,0xc6,0xe5, + 0x2,0xf8,0x7c,0x2d,0x22,0x1e,0x8d,0xd2,0xb2,0x4e,0x44,0xc6,0x95,0x62,0xed,0x26, + 0x7b,0x4c,0x9c,0x3c,0x13,0x5a,0x3a,0xd3,0xc0,0xd7,0x9e,0xe,0x55,0x12,0xa0,0xa4, + 0x62,0x40,0xd,0xdd,0x44,0x4c,0x9c,0xa8,0x87,0x1d,0x3b,0xb6,0xa3,0xa8,0xa8,0x88, + 0x13,0xd0,0xd7,0xd7,0xc7,0x9d,0xd9,0xc,0x14,0x14,0x14,0x20,0x22,0x22,0x2,0x9b, + 0x36,0x6d,0xf2,0x1d,0x34,0x7b,0x1a,0x20,0x69,0x64,0x3c,0xad,0xdc,0xe7,0x97,0x44, + 0x4,0x85,0xa6,0x23,0x22,0x26,0x7,0x9,0xc9,0x25,0x48,0xcf,0x2a,0xe3,0x5c,0x29, + 0x2b,0xbb,0x1c,0xf7,0x1f,0x14,0x22,0x35,0xb3,0x8c,0xac,0xdd,0x4a,0x68,0x43,0x53, + 0xdb,0x7b,0xd8,0x39,0x38,0x63,0xea,0xd4,0x29,0xd8,0x65,0xb3,0x7,0xe7,0x2f,0x86, + 0x50,0x23,0x17,0x3,0x9b,0x3,0x7e,0x58,0xb6,0x7a,0x3f,0x26,0xe8,0xce,0x84,0xc6, + 0x78,0x53,0xa8,0x68,0x7c,0xc2,0x9,0x90,0x1b,0xab,0x4d,0x22,0xb4,0x60,0x64,0x34, + 0x5,0x97,0x2e,0x5d,0xc2,0xab,0x57,0xaf,0xb8,0x18,0x60,0xee,0xc4,0x5c,0x2b,0x27, + 0x27,0x7,0x29,0x29,0x29,0xb0,0xb6,0xb6,0x8e,0x22,0x3e,0xd4,0x81,0xf,0xf2,0x30, + 0x10,0x98,0x3c,0xf1,0xf0,0x8e,0xc3,0x95,0xab,0x49,0x8,0xbe,0x95,0x86,0x88,0xe8, + 0x1c,0x8e,0x74,0x72,0xea,0x13,0xe,0x71,0x9,0xf9,0x5c,0x70,0xa7,0x65,0x55,0xa2, + 0x8c,0x3a,0xd2,0x9a,0x17,0xfd,0xd8,0xbb,0xdf,0x11,0xbb,0x77,0xef,0x42,0x65,0x65, + 0x5,0x5,0xe1,0xf,0xd8,0xb0,0xd9,0x1e,0x7,0x8f,0xdc,0xc0,0xf7,0xfb,0x3,0x60, + 0x6e,0xb9,0x3,0xaa,0x9a,0x64,0x7d,0x35,0x43,0x28,0x2a,0x4f,0xc6,0x18,0x5,0x2d, + 0x8c,0x12,0x57,0x80,0xf6,0x4,0x5d,0xc4,0xc5,0xc6,0xa2,0xa3,0xa3,0x9d,0xb,0xe0, + 0x8e,0x8e,0xe,0x34,0x35,0x51,0x1,0x7c,0xfc,0x18,0x9,0x9,0x9,0xd8,0xba,0x75, + 0x6b,0xfc,0x94,0x29,0x53,0x46,0xf,0x92,0xbe,0x90,0x90,0xae,0xae,0xd1,0x93,0xe3, + 0x2e,0x61,0xf0,0xf4,0xb9,0x87,0xcb,0xfe,0xf,0x10,0x78,0x23,0x85,0x8,0x67,0x21, + 0x2a,0x36,0x17,0xb1,0xf7,0xf3,0x11,0x1d,0x97,0x87,0xd0,0xdb,0x99,0x38,0xef,0x4d, + 0x3d,0x4e,0xf0,0x7d,0x54,0xd4,0xbc,0x85,0xcd,0x5e,0x47,0xd8,0xd8,0xec,0xe2,0x2, + 0xb3,0xb9,0xb9,0x9,0x7,0xe,0x1c,0xc2,0xf6,0x5d,0xce,0x38,0xe8,0x18,0x86,0x95, + 0xeb,0xdd,0x60,0x64,0xf2,0x25,0x14,0x94,0xf5,0xa8,0x75,0xd0,0x1,0x4f,0x56,0x9d, + 0x3a,0x51,0x39,0x6c,0xde,0xfc,0x2d,0xea,0xeb,0xea,0xd0,0xd6,0xd6,0xc6,0xcd,0x42, + 0x73,0x73,0x33,0x1a,0x1a,0x1a,0x90,0x9a,0x9a,0x8a,0x7b,0xf7,0xee,0x51,0x9c,0xec, + 0x8b,0x57,0x52,0x52,0x1a,0xbc,0x0,0xbe,0xa6,0x4e,0xd8,0xce,0x7d,0x9e,0x38,0xed, + 0x1e,0x8d,0x73,0x5e,0x31,0xf8,0xd9,0x37,0x1e,0xbf,0x4,0x26,0xe3,0xfa,0x8d,0x54, + 0xdc,0x8,0xcb,0xe0,0x10,0x12,0x96,0xc5,0xad,0xc4,0x66,0xcf,0x5d,0x42,0x22,0x63, + 0xf0,0xcf,0x1d,0xe,0x24,0x60,0x27,0x65,0xd7,0x77,0x9c,0x88,0xa6,0xa6,0x97,0xb0, + 0xb7,0xb7,0xc7,0xa2,0xe5,0xdf,0x63,0xa9,0xd5,0x59,0xcc,0x5b,0x6c,0xf,0x9d,0xc9, + 0x16,0xe0,0xc9,0x69,0x12,0xf9,0x31,0x98,0xbf,0xc0,0x12,0xd9,0xd9,0x39,0x1c,0xf9, + 0x96,0x96,0x16,0xe,0x2f,0x5e,0xbc,0xe0,0x82,0x38,0x29,0x29,0x9,0x77,0xee,0xdc, + 0x61,0x99,0xe8,0xd6,0x90,0xea,0x81,0xac,0xec,0x58,0xbb,0x65,0xab,0x6c,0xe0,0xe8, + 0x7c,0x7,0x4e,0xa7,0xc3,0xa8,0x1d,0x8e,0x82,0xbb,0x77,0x2c,0xbc,0xae,0xdc,0x87, + 0x8f,0x5f,0x2,0x37,0x2b,0x7e,0xd7,0x53,0xb1,0x67,0xbf,0x2b,0x26,0x4d,0x36,0xc1, + 0xf4,0x4f,0x17,0xc3,0xf8,0x93,0x5,0xd8,0xb6,0xed,0x3b,0x72,0x85,0x2e,0x3c,0x7f, + 0xfe,0x9c,0xf3,0xe9,0xce,0xce,0x76,0x6a,0x1f,0xce,0x62,0xe9,0x17,0x36,0x58,0xbe, + 0xf6,0x34,0x3e,0x31,0xdb,0x4c,0x33,0x30,0x11,0xab,0x56,0xaf,0xe1,0xdc,0x84,0x59, + 0x9d,0x5,0x2d,0x73,0x9b,0xfa,0xfa,0x7a,0x54,0x57,0x57,0x73,0x88,0x8c,0x8c,0xc4, + 0xed,0xdb,0xb7,0xf1,0xcd,0x37,0xdf,0x5c,0x19,0xb4,0xfb,0xb0,0x1,0xb4,0x38,0x37, + 0x31,0xfa,0x64,0xc1,0xc0,0x1e,0xbb,0x20,0x1c,0x3c,0x7c,0x1d,0xe,0xb4,0xba,0x3a, + 0x46,0x42,0x4e,0xba,0xdd,0x21,0x31,0x91,0x70,0xf5,0x8c,0x26,0xf7,0x4a,0xc0,0x76, + 0x9b,0xd3,0xd0,0x33,0x98,0x9,0x7d,0xc3,0x39,0x50,0x52,0x9e,0x8,0x6a,0xfe,0x38, + 0x2b,0x96,0x95,0x95,0x71,0x99,0x84,0x89,0x78,0xf3,0xfa,0x15,0x3c,0x3c,0xce,0xc3, + 0x72,0xb1,0x35,0x96,0x7d,0xb1,0x15,0x67,0xdd,0x3c,0x50,0x53,0x53,0xcd,0xf9,0x3c, + 0x23,0xcd,0x50,0x53,0x53,0x43,0xb1,0x53,0xc9,0x9,0x2f,0x2d,0x2d,0x85,0xaf,0xaf, + 0x2f,0x62,0x62,0x62,0x28,0x4b,0xed,0xf0,0x1f,0x92,0x0,0x96,0x89,0x14,0x95,0xf8, + 0x29,0x6b,0x36,0x3a,0xe3,0x7b,0xdb,0x6b,0xb0,0x39,0x18,0x0,0x5b,0xfb,0x40,0xfc, + 0xe0,0x18,0xc,0xfb,0x63,0x21,0x24,0xe8,0x26,0x9,0x8a,0xc4,0xd7,0x5b,0x9d,0xa0, + 0xab,0x37,0x3,0x7a,0x82,0x39,0x5c,0xaa,0xd4,0x9e,0x30,0x19,0xf9,0xf9,0x79,0x9c, + 0x45,0xd3,0xd2,0xd2,0x3e,0xa4,0x48,0x16,0xa4,0x59,0x99,0x99,0x28,0x2f,0x2f,0xa3, + 0x54,0x49,0xeb,0x8,0x2a,0x58,0xac,0x6,0x30,0xd2,0x15,0x15,0x15,0x9c,0x60,0x96, + 0xfb,0x9f,0x3e,0x7d,0x8a,0x9b,0x37,0x6f,0x52,0x93,0x77,0x1d,0x79,0x79,0x79,0xb8, + 0x78,0xf1,0x62,0xe9,0xec,0xd9,0xb3,0x27,0xe,0x49,0x84,0xb0,0x90,0xd0,0x8e,0xa9, + 0x66,0x5f,0x62,0xe3,0x77,0x97,0x61,0xbd,0xdd,0x7,0x5b,0x6d,0x2e,0x63,0xfb,0xde, + 0x5f,0x48,0x90,0x1f,0x76,0x1d,0x8,0xc0,0x3e,0x9a,0x1d,0xab,0x4d,0x47,0xa9,0xc2, + 0xce,0xe2,0x72,0xbd,0x8e,0xee,0xa7,0x14,0x9c,0xaa,0x5c,0xab,0xd0,0x4b,0x96,0xcf, + 0xce,0xce,0x46,0x46,0x46,0x6,0x37,0x13,0x2c,0x35,0xb2,0xd9,0x60,0xfe,0xce,0x88, + 0x3f,0x79,0xf2,0xe4,0xf,0x60,0x56,0x67,0x60,0x56,0xf,0x8,0xf0,0x47,0x46,0x7a, + 0x6,0x9,0xc8,0xe7,0xdc,0xec,0xd4,0xa9,0x53,0x51,0xf2,0xf2,0xf2,0x12,0x43,0x11, + 0xa1,0x28,0xc5,0x53,0x2a,0xb4,0x58,0xe6,0x80,0xd5,0x9b,0x2e,0xe0,0x4b,0x6b,0x4f, + 0xac,0xdb,0x72,0x1,0x1b,0xb6,0x79,0xd1,0x5a,0xd7,0x1b,0xd6,0x3b,0x2e,0x63,0x85, + 0xd5,0x31,0x4c,0x32,0xf8,0x8c,0x8a,0xd4,0x34,0x68,0x6a,0x9b,0x41,0x4e,0x61,0x12, + 0x4c,0x4d,0x67,0x90,0x5f,0x37,0xa0,0x8e,0xb2,0xb,0x9b,0x85,0x4c,0xb2,0x3c,0x13, + 0xc3,0x2c,0x9a,0x9b,0x9b,0xcb,0x9,0x62,0x28,0x2c,0x2c,0xfc,0x70,0x66,0xc5,0xec, + 0xfe,0xfd,0xfb,0x64,0xf9,0x40,0x44,0x46,0x50,0xbc,0x9d,0xf3,0x82,0xab,0x8b,0x7, + 0x12,0xe2,0x13,0xb9,0x77,0x50,0x55,0x66,0xb1,0x20,0x3e,0x14,0x11,0x5f,0xa8,0x68, + 0x4c,0xed,0xb3,0x5c,0x79,0x1c,0x8b,0x56,0x9f,0xc2,0xe2,0x35,0xa7,0xb1,0xf4,0xab, + 0x33,0x14,0x90,0xae,0x58,0xb1,0xce,0x8d,0xfe,0x3b,0x81,0x49,0x2,0x4b,0x28,0xab, + 0x19,0x71,0x45,0x4a,0x51,0x59,0x0,0x9,0xc9,0xb1,0x38,0x73,0xe6,0x34,0x97,0x89, + 0x4a,0x4a,0x4a,0x3e,0x88,0xc8,0xca,0xca,0xe2,0x84,0xb0,0x22,0xf5,0x3b,0x98,0x28, + 0x66,0x65,0x96,0x32,0x43,0x42,0x42,0x10,0x74,0x3d,0x4,0xce,0xc7,0x5d,0xe1,0x71, + 0xee,0x2,0x8e,0x1d,0x3d,0x81,0x23,0xe,0x4e,0x78,0xf0,0x20,0x9,0x69,0xe9,0x69, + 0x70,0x74,0x74,0xf4,0x21,0x1,0x23,0x7,0x2d,0x62,0xd8,0xb0,0xe1,0xe7,0xb5,0x75, + 0xe7,0x51,0x1a,0xb4,0x23,0xfc,0x88,0xf9,0x94,0xe,0x17,0x2c,0x3d,0xcc,0xc1,0x62, + 0x99,0x23,0x26,0x1b,0x2d,0x85,0xc2,0xb8,0xc9,0x50,0x54,0xd1,0x27,0x1,0x7a,0x90, + 0x94,0x52,0x1,0x5f,0x53,0xb,0x77,0xef,0xde,0xe5,0x5a,0x6e,0xe6,0xdf,0x8c,0x3c, + 0x73,0x27,0x6,0x76,0xcd,0x48,0x33,0x30,0xeb,0xc6,0xc5,0xc5,0x71,0xae,0x13,0x73, + 0x97,0xb2,0x9c,0xe7,0x25,0x12,0x93,0x40,0xb3,0x53,0x80,0xa8,0xa8,0x28,0x38,0x39, + 0x39,0xe3,0xc8,0x61,0x26,0x22,0x99,0x2b,0x6c,0x54,0x17,0x98,0x88,0x51,0x83,0x15, + 0x21,0x23,0x22,0x22,0x1a,0xa9,0x35,0x71,0x2e,0x66,0xce,0xfb,0xfe,0xf,0xf8,0x74, + 0xfe,0x2e,0x8,0xa6,0xae,0xa6,0x65,0xa1,0x2e,0x55,0x57,0x6d,0x6a,0x11,0xb4,0x68, + 0x91,0xae,0x89,0x11,0xa2,0x3c,0x4c,0x9c,0x34,0x89,0x56,0x5f,0x37,0xb8,0x80,0x6d, + 0x6a,0x6a,0xa4,0xec,0xc4,0xb2,0x4d,0x35,0x27,0x88,0xb5,0xcc,0xcc,0x9d,0x98,0xa0, + 0xf4,0xf4,0x74,0xee,0x3a,0x32,0x3c,0xa,0x89,0xf7,0x92,0x28,0xb5,0xd2,0xe6,0x0, + 0xc5,0x49,0x7e,0x7e,0x3e,0x97,0x4e,0x9d,0x8e,0x9d,0xa0,0xee,0xf5,0x38,0xd5,0x86, + 0x64,0x6e,0xa6,0xf6,0xee,0xdd,0x7b,0x91,0x4,0x88,0xd,0x56,0x84,0x2c,0x2d,0xba, + 0x6f,0xb3,0x66,0xcc,0x78,0xba,0x15,0xe5,0xf3,0xd,0x98,0x32,0x7d,0x1d,0x8c,0xa7, + 0xad,0x85,0xa1,0xc9,0x1a,0xea,0x6f,0xf4,0xc1,0x93,0x51,0x85,0xb4,0x8c,0x1a,0xa4, + 0x79,0xca,0xe4,0x46,0xa,0xdc,0x1a,0x57,0x53,0x53,0x7,0x6b,0xd7,0xae,0xc3,0xe9, + 0xd3,0x67,0xe0,0xee,0xee,0x8e,0xb3,0x67,0xcf,0x72,0x70,0x71,0x75,0xa5,0xfa,0xe0, + 0x2,0x3f,0x3f,0x3f,0x3c,0x7a,0xf4,0x88,0x23,0xfb,0x30,0xe9,0x21,0xee,0xdf,0x8d, + 0x47,0x43,0x7d,0x3,0x17,0xec,0x95,0x15,0x95,0xbf,0x89,0x88,0xe0,0xdc,0xe9,0xa8, + 0xa3,0x33,0x92,0xe9,0x19,0x36,0x63,0x24,0x22,0x44,0x4f,0x4f,0x4f,0x61,0xb0,0x22, + 0xa4,0x69,0x80,0x9b,0x8c,0x9c,0x46,0xf,0x9b,0xd,0x5d,0xc3,0xc5,0xd0,0x35,0xf8, + 0x7,0x26,0xea,0x5b,0x42,0x8d,0x6f,0x2,0x49,0x69,0x25,0xce,0xff,0xc5,0x25,0xc6, + 0x10,0x79,0x1e,0x64,0xc7,0xf0,0xe9,0x7f,0x53,0xa8,0x52,0xff,0xa3,0xa6,0xae,0xf, + 0x79,0x79,0x65,0x28,0x28,0xa8,0xd2,0xef,0x9,0x18,0x37,0x4e,0x1d,0xca,0xca,0xca, + 0xb9,0xda,0xda,0xda,0x61,0xf3,0xe6,0xcd,0xab,0xf4,0xb9,0xe4,0xf3,0x3e,0x9f,0x2, + 0x3b,0x39,0x31,0x19,0x69,0x89,0xa9,0x68,0x6f,0x6d,0x47,0x5b,0x7b,0x1b,0x97,0x62, + 0xf3,0x28,0x2d,0x47,0x50,0x55,0x76,0x3e,0x7e,0xa,0x67,0x9c,0xcf,0x22,0xe5,0xd1, + 0xaf,0x6d,0xc6,0xee,0xdd,0xbb,0xef,0x4c,0x98,0x30,0x61,0xcc,0x60,0x45,0xb0,0xe7, + 0x57,0x8d,0x1c,0x29,0x9e,0xc5,0x8,0x8e,0x53,0x15,0x70,0x7d,0xbe,0xaa,0xc6,0x14, + 0xb2,0xbe,0xa,0x11,0x97,0x26,0x48,0x41,0x94,0xc0,0xfe,0x9b,0xa4,0x67,0x41,0xb, + 0x98,0x39,0xd4,0x3e,0xf0,0x31,0x52,0x94,0xdd,0x93,0x85,0xc8,0x8,0x6e,0xf,0x88, + 0xb9,0x1,0xdb,0xc9,0x66,0xe9,0xf1,0x80,0x81,0x81,0x41,0xfe,0x95,0x2b,0x57,0xde, + 0xb3,0xcc,0x94,0x96,0x9c,0x8a,0xa2,0xc7,0x85,0xe8,0x7a,0x45,0xbb,0x20,0x24,0x82, + 0x55,0x66,0xf6,0x3f,0x73,0x27,0x57,0x17,0x37,0x5c,0xf0,0xf8,0x19,0x69,0xa9,0xe9, + 0xb4,0x29,0x10,0x4b,0xad,0x8b,0x4d,0x14,0xd5,0x9,0x95,0xa1,0x88,0x60,0x1f,0xdf, + 0x3c,0x7c,0xf8,0xc8,0x64,0x22,0xdb,0x25,0x29,0xa5,0xd0,0xcf,0x23,0x1,0xa3,0xc5, + 0x65,0x88,0xa8,0x38,0x24,0x79,0x8a,0xe0,0x8f,0x9f,0x6,0x75,0x9a,0x99,0x31,0xf2, + 0xe3,0xd9,0xc6,0x55,0xdf,0x70,0x11,0xd1,0x17,0x94,0x10,0x2e,0xd0,0xb8,0x99,0xff, + 0xf6,0xc1,0xb1,0x4c,0x84,0x99,0x99,0x59,0x69,0x50,0x50,0x10,0x97,0xff,0x53,0x1f, + 0xa4,0xa1,0x90,0x44,0xb4,0xb5,0xb5,0x53,0xec,0x34,0x50,0x91,0x2b,0xe3,0xfa,0xa6, + 0x70,0x6a,0x2f,0xce,0xbb,0x7b,0x21,0xc0,0xf7,0x3a,0x32,0x33,0xb2,0x48,0x54,0x14, + 0xf6,0xec,0xde,0x93,0xb5,0x7e,0xbd,0xf5,0xf4,0xa1,0x88,0x60,0x63,0xa8,0xde,0x9, + 0x19,0x11,0x9c,0x86,0xd,0x1b,0x96,0x49,0x68,0xa3,0xeb,0xd6,0x61,0xc2,0xc2,0x6d, + 0xc2,0xc3,0x45,0x3a,0x87,0x9,0x8b,0xb4,0x8a,0x88,0x88,0xc7,0x8c,0x1a,0x35,0x66, + 0x37,0x9f,0x6f,0xfa,0x9f,0x7c,0x56,0x91,0xc6,0x9e,0xda,0xb2,0x65,0xcb,0xf3,0x1b, + 0xc1,0x61,0xad,0x81,0xd7,0x42,0x5a,0x88,0x64,0xcb,0xed,0xf0,0xa8,0x96,0xf0,0xb0, + 0xc8,0x96,0x9b,0x37,0x6e,0xb7,0x4,0x7,0x87,0xb6,0x5c,0xbb,0x1a,0xdc,0xe2,0x7d, + 0xf1,0x72,0x8b,0xd7,0xf9,0x4b,0x2d,0x1,0xfe,0xd7,0x5b,0x42,0x82,0x6e,0x75,0x9c, + 0x74,0x76,0xe9,0xa5,0x1e,0xcc,0x7b,0x28,0x2,0x58,0x4e,0xd6,0x25,0x2c,0x16,0x16, + 0x19,0xb9,0x53,0x54,0x54,0xe2,0x94,0x88,0x88,0x98,0xcf,0xf0,0xe1,0x22,0x97,0x46, + 0x8d,0x96,0xd,0x90,0x95,0x53,0xf,0x92,0xe4,0xa9,0x5e,0x93,0x90,0x52,0x3a,0x23, + 0x3a,0x8a,0xf7,0x1d,0xf5,0x57,0xb3,0xe8,0x59,0xc5,0xff,0xe7,0x43,0x3a,0x2b,0x57, + 0xae,0x3c,0x42,0x1d,0xe8,0x65,0xaa,0xd,0xde,0x69,0x49,0x69,0xde,0x65,0xc5,0xcf, + 0xbc,0x69,0x85,0xe6,0x4d,0x6d,0x89,0x37,0xf5,0x48,0xde,0x14,0xb,0xde,0x74,0xdf, + 0xdb,0xcb,0xd3,0xdb,0xfb,0xc6,0xd5,0x9b,0x17,0xd3,0xd3,0xd2,0x7d,0x28,0x9,0x5c, + 0xda,0xb6,0x6d,0x9b,0xf5,0xc6,0x8d,0x1b,0x79,0x83,0x11,0xc0,0x56,0x48,0xfa,0x94, + 0x95,0xd6,0x8e,0x1e,0x2d,0x77,0x40,0x5a,0x5a,0xf9,0xa8,0xec,0x18,0xd,0x7,0x1e, + 0x4f,0xf5,0x90,0xd8,0x68,0x19,0x5b,0x31,0x9,0xa9,0x1f,0xa4,0x78,0x6a,0xe,0x5a, + 0x13,0xe6,0x38,0xe8,0xe8,0x5b,0xfc,0x48,0xb,0xf9,0xc3,0xa2,0xa3,0x64,0x1c,0x87, + 0x8f,0x10,0x77,0x14,0x16,0x16,0xfd,0x8e,0xc6,0x5a,0x10,0x7e,0xdf,0xbc,0x62,0x5b, + 0x27,0x7c,0x4b,0x4b,0xcb,0x2d,0xd4,0x3,0xd9,0xe5,0xe7,0xe6,0x1f,0x48,0x4d,0x48, + 0xb5,0x7d,0x52,0xf8,0xcc,0x96,0x16,0xfa,0xb6,0xd4,0x82,0xd8,0x96,0x97,0x97,0xdb, + 0x52,0x9a,0xb5,0xa5,0xee,0xd4,0xd6,0xf5,0x8c,0x9b,0xad,0xaf,0x8f,0xbf,0x2d,0xd5, + 0x8f,0x83,0xfe,0xfe,0xfe,0x87,0x88,0xf8,0x67,0xbf,0x79,0xc1,0x5f,0xe6,0x2f,0x49, + 0x96,0x9c,0x49,0x3e,0xbe,0x5e,0x45,0xdd,0xe8,0x6b,0xbe,0xd6,0x8c,0x75,0x7c,0x9d, + 0x59,0x56,0x4a,0xea,0xc6,0x56,0xe2,0x52,0x72,0x56,0x62,0x62,0x3c,0x82,0xd4,0xda, + 0x11,0x62,0x92,0xeb,0xa8,0x36,0xac,0xe5,0xf3,0xa7,0x59,0xa9,0xab,0x1b,0x5a,0xf1, + 0xf9,0xba,0x4,0xad,0xb5,0xda,0xda,0xba,0x1b,0x35,0xb5,0xb4,0xbe,0xa6,0xec,0xb1, + 0x6c,0xe1,0xc2,0x85,0x86,0xab,0x56,0xad,0x9a,0x42,0xeb,0xde,0x15,0xc1,0xc1,0xc1, + 0xeb,0x8b,0x4a,0x8b,0xac,0x1e,0xc4,0xc7,0x5b,0xe5,0xa4,0xe6,0x58,0x75,0x74,0x75, + 0x58,0x35,0xb7,0x36,0x5b,0x11,0x79,0x2b,0xaa,0xda,0x56,0x61,0x61,0x61,0x56,0x4e, + 0x4e,0x27,0xac,0x2e,0xb8,0x5d,0xb0,0xa2,0xc5,0xce,0xda,0xab,0x57,0xfd,0xd6,0x53, + 0xab,0x3d,0xe5,0x2f,0xb3,0xfe,0xed,0x41,0x59,0x31,0x31,0x19,0x33,0x15,0xd,0x63, + 0xb,0x7d,0xc3,0x25,0xf3,0x74,0x8d,0x97,0x9b,0xff,0x8a,0xc5,0xe6,0xca,0x6a,0x6, + 0xe6,0xe2,0xd2,0xa,0xe6,0xe2,0xe2,0xca,0x4,0x5,0x73,0x51,0x71,0x69,0x73,0x51, + 0x51,0x69,0x73,0x63,0x3,0x63,0xf3,0x3,0x7,0xe,0x98,0x7,0x6,0xfa,0x9b,0x13, + 0xc9,0xf,0xf0,0xf1,0xf1,0x99,0xcf,0x40,0x56,0x9d,0x4f,0x4,0xe7,0x51,0x2f,0x64, + 0x9e,0x14,0x9f,0x64,0x9e,0x14,0x9b,0x62,0x4e,0x85,0x8f,0x3,0x15,0x33,0x73,0x72, + 0x27,0x73,0x7a,0xc6,0xfc,0xe8,0xd1,0x13,0xe6,0xa7,0x4f,0xbb,0x9b,0xd3,0x3a,0xf9, + 0x33,0xf6,0x1e,0x8a,0x95,0xf1,0xc4,0x69,0x50,0x1b,0x5f,0x92,0x3c,0xde,0x58,0x7d, + 0x7d,0xe3,0xe5,0xc6,0x66,0x73,0xbf,0x16,0x98,0x98,0xfd,0x2f,0xc,0x4d,0x56,0xb, + 0x94,0xe5,0x27,0xb,0x78,0xf2,0x1a,0x2,0x1e,0x8f,0x41,0x59,0x30,0x7a,0xc4,0x68, + 0x81,0x99,0xd9,0x5c,0x1,0x55,0x59,0x1,0xb5,0x13,0x2,0x2a,0x4c,0x82,0xc6,0xc6, + 0x46,0x1,0xad,0xb6,0x4,0x94,0xdb,0x5,0xd4,0x36,0xb,0x28,0x35,0xa,0x88,0x3c, + 0xf7,0x4c,0x7a,0x4e,0xba,0x20,0x26,0x34,0x46,0x10,0x1f,0x13,0xcf,0x3d,0xcb,0x9e, + 0x61,0xf7,0x69,0x67,0x42,0xf0,0xd3,0x4f,0x27,0x4,0x27,0x4e,0xb8,0x8,0xa8,0xe0, + 0x19,0x86,0x86,0x86,0xa,0xc8,0xe7,0x59,0xd6,0x1a,0xd4,0x21,0x2a,0x26,0xa3,0xa9, + 0x66,0x62,0xb2,0x8e,0x3f,0x77,0xa1,0x9d,0xfa,0x6c,0x8b,0x5d,0x1a,0xff,0xa,0x81, + 0xe9,0x52,0xd,0x5,0x5,0x9d,0xf,0x10,0x95,0x56,0xd0,0x10,0x8,0x4,0x1a,0xe4, + 0xb7,0x1a,0xd4,0xcf,0x69,0x50,0x9b,0xac,0x41,0x3e,0xfb,0x27,0xb0,0xfb,0xb4,0x81, + 0xa5,0x41,0x3d,0x93,0x6,0xb9,0x8,0x77,0xf6,0xf2,0xf2,0xe5,0xae,0xd9,0x3d,0x76, + 0x3e,0x71,0xe2,0x4,0xe1,0x2c,0x8d,0xfd,0xf5,0x37,0x2d,0x31,0x59,0x31,0x1d,0xd4, + 0x41,0x69,0x52,0x4d,0xc6,0xd4,0xf4,0x4b,0x85,0xcf,0xbf,0x70,0x92,0xff,0xbf,0x60, + 0x68,0xf8,0xb9,0xbc,0xa2,0x96,0xe1,0xaf,0x50,0xd4,0x22,0x28,0xca,0xd3,0x34,0xcb, + 0x93,0xe5,0xe5,0x69,0x91,0x22,0x4f,0x56,0xfe,0xaf,0x48,0x4e,0x4e,0xe6,0xc6,0x44, + 0x47,0x47,0xcb,0x9f,0x3b,0x77,0x8e,0x83,0x93,0x93,0x13,0x77,0x26,0xb7,0x19,0x9b, + 0x9c,0x1c,0x2d,0x4f,0xe4,0x7,0xbf,0xb8,0x27,0xa9,0xa2,0x3a,0x3a,0x4b,0x24,0x57, + 0xad,0xf2,0x94,0x58,0x62,0x7d,0x52,0xf2,0xcf,0xd8,0x2f,0xc9,0xee,0xcb,0xe9,0xcc, + 0x20,0xe8,0x48,0xca,0xc9,0xc9,0x49,0x2e,0x59,0xb2,0x44,0x92,0x76,0x17,0x24,0xc9, + 0xf2,0x92,0x34,0xed,0x7f,0x9,0xbf,0x3f,0x4b,0x7b,0x44,0x92,0xe1,0xe1,0xe1,0x92, + 0xd4,0xff,0x73,0x60,0xe3,0x29,0x3e,0x24,0xe,0x1f,0x3e,0xfc,0x5f,0xdb,0xe8,0xff, + 0x1,0x32,0x1,0xa3,0x55,0x44,0x90,0x62,0xb1,0x0,0x0,0x0,0x0,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/hidden.png + 0x0,0x0,0xa,0xf5, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x14,0xc3,0x0,0x0,0x14,0xc3,0x1, + 0x15,0x70,0x4d,0x42,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xa, + 0xd,0x14,0x12,0x4,0x37,0x48,0xbd,0x0,0x0,0xa,0x75,0x49,0x44,0x41,0x54,0x68, + 0xde,0xd5,0x5a,0x6b,0x6c,0x54,0xc7,0x15,0xfe,0x66,0xe6,0xee,0xcb,0xbb,0xeb,0x67, + 0x6c,0xe3,0xc5,0x86,0x80,0x21,0x9,0x8f,0x12,0x10,0xa4,0x5,0xf2,0xa2,0x21,0x48, + 0x24,0xa5,0x32,0x14,0xf5,0xf1,0x27,0x69,0xd5,0xfe,0xaa,0xfa,0xb3,0x55,0x5b,0x89, + 0x14,0xb5,0x4d,0x88,0x9a,0x28,0x48,0x8d,0xfa,0x2b,0x95,0xf2,0x23,0x4a,0xa4,0x2a, + 0x52,0x22,0x42,0x12,0x12,0x1a,0x68,0x1e,0x50,0xe2,0x28,0x4,0x30,0x4,0x1c,0xd2, + 0xc4,0x98,0xd8,0x64,0xd7,0xd8,0x60,0xb3,0xf6,0xbe,0xee,0xbd,0x33,0x73,0xfa,0x63, + 0xef,0x5d,0xee,0xbe,0xfc,0x6e,0xab,0xae,0x74,0xb4,0x3b,0x77,0xee,0x9d,0xfb,0x7d, + 0xe7,0x9c,0x39,0xe7,0xcc,0xcc,0x32,0x22,0xc2,0xff,0xf3,0xc7,0x98,0xcf,0xc1,0xd8, + 0xee,0xfd,0x61,0x98,0xa9,0xe,0xc3,0x30,0x62,0xa4,0x55,0x1b,0x81,0xb5,0x1,0x0, + 0x3,0x25,0x18,0x17,0x9,0x29,0x65,0x1c,0x81,0xc8,0x20,0xbd,0xfa,0xcb,0xf4,0xbc, + 0xbd,0x73,0xae,0x16,0x60,0x5d,0xfb,0x16,0x73,0x85,0x9d,0x4c,0xd0,0x2e,0x0,0xf7, + 0x2,0xe0,0x53,0x3c,0xa2,0x1,0x1c,0x27,0xc5,0xe,0x68,0x81,0xd7,0xe8,0xe0,0x9e, + 0xaf,0xfe,0x27,0x4,0x8c,0x1d,0x4f,0xec,0x24,0xc1,0xf6,0x32,0xd0,0x3a,0x0,0x58, + 0x18,0x6b,0x53,0xab,0x6e,0xeb,0x14,0xcd,0x8d,0x75,0xa8,0xb,0x87,0x50,0x1b,0xe, + 0x22,0x1c,0xc,0x0,0x0,0xd2,0x39,0x13,0xe3,0xe9,0x1c,0x92,0xe9,0x2c,0x46,0x46, + 0x93,0xb8,0xf0,0xaf,0x3e,0xf5,0x75,0x3c,0x21,0x0,0x80,0xc0,0xce,0x30,0x45,0x7f, + 0x94,0x6f,0x3e,0xf6,0xda,0x7f,0x85,0x80,0xaf,0xeb,0xf1,0xbb,0x9,0xec,0x19,0x0, + 0x1b,0x63,0x6d,0xb,0xd4,0x86,0x35,0x2b,0xc5,0xaa,0xa5,0xb,0x51,0x5b,0x13,0x4, + 0x0,0x28,0x4d,0x60,0x20,0x10,0xe5,0x5,0x0,0x18,0x63,0x60,0x8c,0x81,0xc0,0x20, + 0x38,0x3,0x0,0x8c,0x67,0x72,0xb8,0x70,0xe9,0x6b,0x7c,0x72,0xae,0x57,0xc5,0x13, + 0x43,0x2,0xc0,0x47,0xc,0xf4,0x2b,0xfb,0xe0,0xef,0x4e,0xfc,0x47,0x8,0xb0,0x5d, + 0x4f,0xd5,0x9,0x6d,0x3f,0xf,0x60,0x77,0x63,0x43,0xbd,0xda,0x76,0xdf,0x26,0xb1, + 0x76,0x59,0x7b,0xde,0x27,0xb4,0x86,0x52,0xa,0x4a,0xa9,0x69,0x8d,0x25,0x84,0x80, + 0x10,0x2,0x9c,0xe7,0xbd,0xad,0xe7,0xcb,0x2b,0x38,0x72,0xac,0x5b,0x8d,0x8e,0xdd, + 0x10,0x0,0x5e,0x55,0xdc,0xf7,0x33,0x3a,0xf0,0x9b,0xe4,0xbc,0x11,0x60,0x3b,0xf6, + 0x2d,0x37,0xc,0x1c,0x62,0x8c,0x75,0x6e,0x7f,0xe0,0x3e,0xbe,0xf9,0x1b,0xcb,0x20, + 0x38,0x83,0x94,0x12,0x52,0xca,0xb9,0x45,0x11,0xc3,0x80,0x61,0x18,0x90,0x4a,0xa3, + 0xfb,0x7c,0x1f,0xe,0xbf,0x7b,0x4c,0x13,0x51,0x9f,0x94,0xf8,0xe,0xbd,0xb9,0xe7, + 0x8b,0x39,0x13,0xf0,0x7d,0x77,0xdf,0x83,0xc4,0xe9,0xd5,0x48,0x28,0x12,0x7e,0xf4, + 0xfb,0xf,0x8b,0x8e,0xe6,0x3a,0x28,0xa5,0x20,0xa5,0xc4,0x5c,0x3,0x80,0xd7,0xc5, + 0xfc,0x3e,0x3,0x9c,0x73,0x7c,0x35,0x9c,0xc4,0x4b,0x7,0xde,0x52,0xa9,0x74,0x26, + 0xcd,0x34,0xdb,0x6d,0xbf,0xb1,0xe7,0xe8,0xac,0x9,0x38,0xe0,0xf,0xc7,0x62,0x31, + 0xfc,0x64,0xe7,0x83,0x22,0x1a,0xa,0xc0,0xb2,0x2c,0x68,0xad,0xe7,0xc,0xba,0x0, + 0x0,0x37,0xdb,0x9c,0x73,0xf8,0x7c,0x3e,0x4c,0x64,0x4d,0xbc,0x70,0xf0,0x1f,0x2a, + 0x9e,0x18,0x2,0xd3,0x6c,0xfb,0x64,0x24,0xaa,0x12,0x60,0x3b,0xf6,0x2d,0x17,0x82, + 0x3e,0x89,0xc5,0x62,0xe1,0x9f,0xff,0xe0,0x21,0xc1,0x39,0x87,0x6d,0x99,0xb3,0xd2, + 0xfa,0x64,0xa0,0x4b,0xfb,0x19,0x63,0xf0,0xfb,0xfd,0x90,0x4a,0xe3,0xb9,0x57,0xfe, + 0xae,0xe2,0x89,0xa1,0xb4,0x52,0x6c,0x43,0x35,0x77,0xe2,0xd5,0x26,0xac,0x61,0xe0, + 0x50,0x34,0x12,0xe,0xff,0xb8,0x6b,0xab,0xe0,0x9c,0xc3,0x32,0x73,0x33,0x2,0xef, + 0x46,0xa1,0x82,0x9b,0x80,0xa,0x32,0x59,0x3f,0x48,0xc3,0x32,0x73,0x10,0x9c,0xe1, + 0xd1,0x1d,0x5b,0x44,0x34,0x12,0xe,0x1b,0x6,0xe,0xb1,0x5d,0x4f,0xd5,0x4d,0x9b, + 0x80,0xd0,0xf6,0xf3,0x9c,0xa1,0xf3,0xd1,0xef,0x3d,0x2c,0xa2,0xa1,0x0,0x4c,0xd3, + 0x84,0x24,0x54,0x15,0xa5,0xa9,0x48,0xa4,0xd2,0x45,0x6d,0xad,0xf5,0x94,0xfd,0x36, + 0x11,0x6c,0x95,0x17,0xa9,0x34,0x72,0x56,0xe,0x91,0x90,0x1f,0x8f,0x74,0x6d,0x13, + 0x9c,0xa1,0xd3,0x89,0x80,0x53,0x13,0xf0,0x75,0x3d,0x7e,0x37,0x80,0xdd,0xdb,0xb7, + 0x6e,0xe1,0xed,0xcd,0xf5,0xc8,0xd9,0x12,0x52,0xeb,0x22,0x8d,0x11,0x95,0x80,0x23, + 0x2a,0x88,0x2c,0x69,0x4f,0x7,0xbc,0xd2,0x4,0x52,0xf9,0x71,0xdd,0xb6,0xb4,0x35, + 0x4c,0xcb,0x46,0xfb,0x2d,0xb5,0xd8,0xbe,0x65,0x33,0x7,0xb0,0xdb,0xc1,0x36,0x39, + 0x1,0x2,0x7b,0xa6,0xb1,0xa1,0x5e,0x6d,0x5a,0xdd,0x9,0xcb,0x96,0xc8,0x59,0x12, + 0x52,0x3,0x52,0xa3,0xa0,0x21,0x5b,0x4d,0x5f,0xb3,0x95,0xc8,0x69,0xad,0xb,0xe2, + 0x3e,0xe7,0x8a,0xf7,0x59,0xd3,0xb2,0x61,0x5a,0x36,0x36,0xae,0x5a,0x8a,0x86,0xfa, + 0x3a,0xe5,0x24,0xd0,0xea,0x4,0x8c,0x1d,0x4f,0xec,0x4,0xb0,0x71,0xdb,0x7d,0x9b, + 0x4,0x67,0x40,0xda,0xb4,0x8b,0x6,0xf4,0x5a,0xa0,0x14,0xbc,0xdb,0x5f,0xa,0x4e, + 0xeb,0x62,0x70,0xa5,0xa4,0x2a,0x89,0x77,0xec,0x74,0xce,0x6,0x3,0x61,0xdb,0xe6, + 0xf5,0x2,0xc0,0x46,0x7,0x63,0xe5,0x6a,0x94,0x4,0xdb,0xbb,0xb0,0xad,0x55,0xad, + 0x5b,0xb6,0x50,0xa4,0x4c,0x9,0x4b,0xea,0x49,0xa3,0xc6,0x64,0xd1,0x64,0xaa,0xe8, + 0x33,0x93,0xc8,0x94,0x35,0x6d,0xac,0x5d,0x16,0xc3,0xf1,0xd6,0x66,0x15,0xbf,0x7a, + 0x6d,0x2f,0x80,0xd7,0xca,0x2c,0xc0,0xba,0xf6,0x2d,0x66,0xa0,0x75,0x1b,0xd6,0xac, + 0x14,0x9a,0x80,0x54,0xd6,0x2a,0xd2,0xb4,0x57,0xb3,0xd5,0x2c,0x50,0xc9,0x22,0x5e, + 0xab,0xcc,0xd6,0x9a,0x13,0xd9,0x7c,0xf8,0xbe,0x6b,0xf5,0x72,0xc1,0x40,0xeb,0x58, + 0xd7,0xbe,0xc5,0x65,0x16,0xe0,0xa,0x3b,0x21,0x80,0x15,0xb7,0xb6,0x21,0x67,0x4b, + 0x58,0x4a,0x97,0x69,0x87,0xf4,0xc,0xe2,0x39,0xa6,0x67,0xd,0x77,0x48,0x6f,0x78, + 0x2d,0xbf,0x8f,0x90,0xb3,0x24,0x56,0x2c,0x6a,0xc5,0xeb,0x2e,0x56,0xe0,0xd9,0x62, + 0xb,0x8,0xda,0xb5,0x30,0xd6,0xa6,0xea,0xc3,0x41,0x64,0x4c,0x9,0x68,0x5d,0x10, + 0xd2,0x4,0xad,0x3c,0x5a,0x3,0x95,0x69,0xb4,0x54,0xe3,0xd3,0x99,0x1f,0x52,0x95, + 0xcf,0x97,0x6a,0xf3,0x28,0x6b,0xda,0xa8,0xf,0x7,0x11,0x5b,0xd0,0xa2,0x9c,0xb5, + 0xc7,0x4d,0x17,0x62,0xbb,0xf7,0x87,0x1,0xdc,0xbb,0x6a,0xf9,0x12,0xc1,0x40,0x48, + 0x9b,0x76,0x71,0x9c,0x27,0x2a,0xfa,0xad,0x34,0x41,0x3b,0x2b,0x13,0x6f,0x9f,0xdb, + 0xaf,0x51,0x9c,0x1b,0xa4,0xce,0xb7,0x75,0x49,0xce,0xd0,0x54,0x9c,0xd0,0xdc,0xfe, + 0x4a,0xd7,0x53,0x39,0xb,0x9a,0x80,0x95,0x4b,0xdb,0x5,0x80,0x7b,0x1d,0xcc,0x8e, + 0xb,0x99,0xa9,0xe,0x8,0xc1,0x5b,0x1a,0x6b,0x61,0xda,0xa,0x96,0xd4,0x60,0x20, + 0x68,0xe,0x40,0x95,0x9b,0x7d,0xba,0x13,0xb0,0xec,0xba,0xa6,0x19,0xb9,0x57,0xe9, + 0x75,0x4b,0x4a,0xb4,0xd4,0xd5,0xe6,0x15,0x6f,0xa6,0x3a,0x0,0x5c,0x34,0x9c,0x92, + 0x36,0x46,0x44,0x88,0xd6,0x84,0x60,0x3b,0xda,0x61,0x20,0x40,0xcf,0xe,0xac,0xa6, + 0xa9,0xc9,0x4e,0x36,0x9f,0x74,0xbe,0x48,0xcb,0xdf,0xc7,0xa9,0xa0,0x44,0xa5,0x9, + 0xd1,0x70,0xc0,0x2d,0xc3,0x63,0x5,0x2,0xa4,0x55,0x1b,0x18,0x47,0x34,0xe8,0x2b, + 0xf8,0xe5,0x4c,0xc2,0x25,0x3,0x15,0x81,0x9e,0x6e,0xb8,0x9d,0xcc,0x42,0xe4,0x61, + 0xe3,0xde,0x6f,0x4b,0x85,0x48,0xc8,0x8f,0x2,0x66,0xd7,0x85,0x8,0xac,0x8d,0x1, + 0x88,0x84,0xfc,0xb8,0x91,0x95,0x90,0x95,0x22,0xd0,0x34,0xcd,0x3c,0x53,0x12,0xd3, + 0x1e,0x97,0x8,0x96,0x2d,0x51,0x17,0xf2,0xb9,0x15,0x43,0x5b,0x79,0x22,0x3,0x2b, + 0x2c,0x11,0xe7,0xa4,0xc9,0xf9,0x2,0x5d,0xc5,0xdd,0xca,0x32,0x31,0x3,0x25,0x0, + 0x86,0x54,0x26,0x7,0x43,0x88,0xa2,0x32,0x77,0x3e,0x48,0x78,0xdf,0x3f,0x5d,0x8b, + 0x16,0xb9,0x91,0x43,0xc2,0xe0,0xf9,0x1d,0x8e,0x9b,0x98,0x5d,0x2,0x5c,0x24,0x88, + 0x8,0xa9,0x6c,0xe,0xf5,0xd1,0x48,0x3e,0x14,0x4e,0xe6,0xd3,0x33,0xd4,0xe4,0x5c, + 0x2d,0xe8,0xb6,0x5,0x67,0x18,0x1b,0xcf,0xc1,0xc5,0x5c,0x20,0x20,0xa5,0x8c,0xb, + 0x21,0x90,0x4c,0x65,0x71,0x4b,0x5d,0xa4,0x68,0xe,0x54,0x1b,0xcc,0xeb,0x9b,0xb3, + 0xd2,0xe8,0x14,0xd7,0x2b,0x8d,0x27,0x18,0xc3,0x44,0x26,0xb,0x17,0xf3,0xcd,0x39, + 0x10,0x88,0xc,0x42,0x66,0xf5,0xf0,0xe8,0xd,0xbe,0x7a,0xc9,0x2,0x30,0xe4,0x43, + 0xe9,0x94,0xa0,0x88,0xbc,0x69,0x62,0x46,0x64,0x66,0x3a,0x37,0xfc,0x6,0x47,0xc8, + 0x2f,0x30,0x3c,0x96,0xca,0xc7,0xa6,0x40,0x64,0xb0,0x90,0x89,0x9d,0xbd,0xca,0xe3, + 0xbd,0x7d,0x3,0x8a,0x11,0xa1,0xbe,0xc6,0x5f,0x96,0x39,0xbd,0xe5,0x81,0x9b,0x59, + 0x65,0x69,0xbf,0x5b,0xe,0x3b,0x19,0xba,0xb4,0x34,0x76,0xc7,0xf3,0xae,0x2d,0x8a, + 0xd6,0x0,0x15,0xde,0xe7,0xf6,0xd7,0x85,0x7c,0x60,0x20,0xf4,0xf6,0x5f,0x51,0x0, + 0x8e,0xbb,0xfb,0xab,0x85,0x28,0x44,0x8a,0x1d,0x88,0xf,0xd,0xdf,0x9f,0x4c,0x67, + 0xd1,0x54,0xe3,0x43,0x7c,0x2c,0x53,0x35,0xce,0x13,0x77,0x34,0xa5,0x66,0xa6,0xe1, + 0xb9,0xb8,0xdb,0x2d,0xd1,0x20,0x6e,0xa4,0x72,0x88,0xf,0x8f,0xa,0x52,0xec,0x40, + 0x59,0x39,0xad,0x45,0xbe,0xc6,0xee,0xed,0x8f,0xa3,0x21,0x98,0x67,0xeb,0xee,0xb8, + 0xb9,0xc9,0xad,0x50,0x70,0x49,0x82,0xb6,0x9d,0x2,0x4e,0xab,0xc2,0x7d,0xa5,0x5, + 0x98,0xf7,0xba,0x52,0xa,0x52,0xeb,0xb2,0x55,0x99,0x3b,0x7e,0xe9,0xf3,0xde,0x55, + 0x1a,0x67,0x40,0x7d,0x8d,0x1f,0x9f,0xd,0x5c,0x2d,0xc2,0x5a,0x44,0x80,0xe,0xee, + 0xf9,0x8a,0x88,0x7a,0x4e,0x5e,0xf8,0x42,0x11,0x23,0xb4,0x37,0xd4,0x14,0xad,0xa2, + 0xa6,0x7a,0x59,0xa5,0xfb,0xdc,0xeb,0x15,0xfb,0x3d,0x64,0xa,0x5,0x61,0x85,0xa5, + 0xa5,0xd2,0x84,0x8e,0xa6,0x28,0x0,0xe0,0xd4,0xc5,0x7e,0x45,0x44,0xe7,0xf0,0xfa, + 0x63,0x43,0xe5,0xb,0x1a,0xc6,0xfc,0x2c,0x9d,0x7c,0x26,0x31,0x7c,0x5d,0x9c,0xbb, + 0x14,0xc7,0xa2,0x86,0x20,0x7c,0x82,0xcd,0x4c,0xc3,0x15,0x5e,0x5e,0xfa,0x9c,0xb7, + 0x5d,0x26,0x4e,0x1d,0xe4,0x15,0xbf,0xc1,0xd1,0xd1,0x14,0xc6,0xd9,0x4b,0x9,0x24, + 0x46,0xc6,0x4,0x1b,0x1f,0xf9,0x33,0x80,0x10,0x63,0xcc,0x77,0xb3,0x9c,0x66,0x8c, + 0x3,0xf0,0xab,0x77,0xf7,0x1f,0x25,0x65,0x9f,0x39,0xf2,0xe1,0x29,0xcd,0x40,0xe8, + 0x6c,0xe,0x57,0x5c,0xac,0xbb,0x60,0x6d,0x59,0x1d,0x74,0x41,0x2a,0xb5,0x67,0x20, + 0x4b,0x5b,0x6a,0xc1,0x40,0x38,0xfa,0xf1,0x79,0x4d,0xd2,0x3c,0xab,0x3e,0xf8,0xcb, + 0xfb,0x0,0x2,0x0,0x2,0xcc,0x1,0xe,0x0,0x3e,0x57,0x58,0xe2,0xf3,0xa7,0xc7, + 0xc6,0xd3,0xfc,0xc4,0x85,0x7e,0x74,0x34,0x84,0xd0,0x12,0xf5,0x43,0x13,0x8a,0x34, + 0xee,0x8d,0x1a,0x5,0xf1,0x6a,0xb2,0x52,0x7b,0x16,0xd2,0x12,0xd,0xa2,0xa3,0x29, + 0x8c,0x7f,0x5e,0x18,0xc0,0xd8,0x78,0x9a,0xb3,0xf8,0xa7,0xcf,0x7a,0xb1,0x2,0x30, + 0xc,0x8f,0x2b,0x9,0x0,0x42,0x9d,0x7e,0xf9,0xac,0x68,0xbe,0xf5,0xdd,0x77,0x4e, + 0x9c,0xde,0xb2,0xb8,0xa5,0x81,0xdf,0xd9,0xd1,0x80,0xf1,0xec,0x55,0x24,0x33,0x15, + 0xf6,0x43,0x49,0x4f,0xde,0x9e,0xc3,0xa7,0x36,0x68,0x60,0xed,0xe2,0x46,0xc,0x8e, + 0x24,0x71,0xa4,0xfb,0xc,0x21,0x37,0x7e,0x4c,0xf5,0x1c,0xfc,0xd4,0xc5,0xe9,0xa, + 0x2f,0x44,0x32,0x38,0x95,0x1c,0xc0,0xd4,0xa9,0x97,0x9f,0xd0,0xd2,0x8a,0xbf,0xf4, + 0xd6,0x31,0x9d,0xca,0xe6,0x70,0xd7,0x92,0x26,0xf8,0x4,0xcb,0x4f,0xb8,0x79,0x74, + 0x8f,0x6a,0xe2,0x13,0xc,0xdf,0xea,0x6c,0x46,0x2a,0x6b,0xe1,0xc5,0xb7,0x4f,0x68, + 0x2d,0xad,0x84,0x3a,0xf9,0xb7,0xa7,0x4b,0x71,0x7a,0x27,0x71,0xf1,0xdc,0xb9,0x76, + 0x79,0x5c,0x9d,0x7b,0xfb,0xd7,0xe9,0x4c,0x36,0xf7,0xe2,0xe1,0x6e,0xed,0x37,0x80, + 0xfb,0x6f,0x6b,0x46,0xc4,0xcf,0x8b,0xf7,0x70,0xe6,0x11,0xb4,0x2b,0x91,0xa0,0x81, + 0xfb,0x6f,0x6f,0x85,0x4f,0x30,0xbc,0xf4,0xce,0x47,0x3a,0x9d,0xc9,0x9a,0xea,0xec, + 0xa1,0xbd,0x18,0xbb,0x32,0x51,0x61,0x8e,0x2b,0x97,0x80,0x2,0x20,0x3d,0x62,0x63, + 0xe0,0xe3,0xcb,0xd4,0x7f,0xf2,0xf7,0x89,0xe1,0xeb,0x78,0xee,0xc0,0x7,0x5a,0x4a, + 0x89,0x7,0x56,0x2c,0xc0,0xc2,0xba,0x40,0xde,0xaf,0xa5,0xac,0x1e,0x4d,0x66,0x29, + 0xb1,0xfa,0x20,0x1e,0x58,0xb1,0x0,0xb6,0x54,0x78,0xee,0xf5,0xe3,0x3a,0x31,0x34, + 0x6,0xea,0xeb,0x7e,0x12,0x57,0x4e,0x5f,0x2e,0xe0,0x2a,0xc6,0x29,0x99,0xe7,0x90, + 0x21,0x4,0xa0,0xc6,0x91,0x30,0x80,0x10,0x80,0x1a,0xbe,0x7a,0xc7,0x3d,0x6c,0xc9, + 0x5d,0x7b,0xc3,0x35,0xa1,0xe0,0x23,0xf,0xdd,0xcd,0x3b,0x9a,0xeb,0xd0,0x37,0x3c, + 0x81,0x73,0x3,0xa3,0xc8,0xc9,0xf9,0xf1,0xf9,0xa0,0xc1,0xb1,0x66,0x51,0x23,0x3a, + 0x5b,0xa2,0x18,0x1c,0x49,0xe2,0xc5,0x37,0x4f,0xe8,0xb4,0x99,0x35,0xa9,0xaf,0xfb, + 0x4f,0xba,0xf7,0x70,0x37,0x80,0x8c,0x23,0x59,0x0,0x69,0xe7,0xf7,0x38,0x11,0xd9, + 0x5e,0x2,0xcc,0x43,0xa0,0xc6,0x25,0x0,0x20,0x84,0x8e,0xd,0xcb,0xc4,0x9a,0x87, + 0x9e,0xe4,0x86,0xbf,0x6d,0xdb,0xa6,0x75,0x6c,0xf3,0xca,0x45,0x0,0x80,0xcf,0x13, + 0x49,0x9c,0x8f,0x8f,0xc3,0xb2,0x67,0x77,0xcc,0xe4,0xf7,0x19,0x58,0x1d,0xab,0xc5, + 0xed,0x6d,0xf9,0x9d,0xf3,0xf,0x7b,0x7,0x70,0xa4,0xfb,0xc,0x69,0x69,0xd,0xa9, + 0x9e,0x37,0xfe,0x80,0xaf,0x7b,0xfa,0x1c,0xd0,0x59,0xf,0x81,0xc,0x80,0x71,0x0, + 0x26,0x11,0x15,0x1f,0x70,0x78,0x48,0x84,0xca,0xa4,0xa1,0xbd,0x49,0xac,0xfb,0xe1, + 0x6f,0x11,0xa9,0xbf,0xa7,0xa1,0x36,0xac,0x1f,0xfc,0xe6,0x6a,0x7e,0xe7,0xd2,0x36, + 0x68,0x2,0xe2,0x63,0x19,0xc,0x8e,0xa6,0x31,0x78,0x3d,0x3d,0xa5,0x55,0x82,0x4e, + 0x62,0xea,0x68,0xc,0x23,0xd6,0x50,0x3,0xce,0x80,0xb3,0x97,0x12,0x38,0xda,0x7d, + 0x5e,0x8f,0xa5,0xd3,0x1c,0x99,0xd1,0x6e,0x75,0xf2,0xe5,0xfd,0x48,0xc6,0xaf,0x3, + 0xc8,0x79,0x8,0xb8,0x32,0xe,0xc0,0xf2,0xd4,0x57,0xe5,0xcb,0x35,0xc6,0x58,0xc0, + 0x3,0x3e,0xe8,0x15,0xbe,0x72,0xfb,0x7a,0x74,0xac,0xfd,0x5,0xb,0x84,0xef,0x68, + 0x6b,0x6e,0xd0,0xeb,0xef,0x58,0xc2,0x57,0x2c,0x6a,0x45,0x7d,0x24,0x8,0x22,0xc2, + 0x44,0xd6,0x46,0xca,0x94,0xc8,0xda,0xa,0x39,0x2b,0x6f,0x99,0xa0,0xdf,0x40,0xc8, + 0x27,0x10,0x9,0x18,0x88,0x86,0x7c,0x60,0x8c,0xe1,0x46,0x2a,0x87,0xcf,0x6,0xae, + 0xe2,0xd4,0xc5,0x7e,0x9d,0x18,0x19,0xe3,0x64,0xa6,0x3f,0xc7,0xc0,0x27,0x7f,0xd5, + 0x9f,0x1d,0x3d,0xd,0xc0,0x74,0xc0,0x7b,0x25,0x5,0x20,0x4d,0x54,0x1c,0xab,0xab, + 0x1f,0x31,0xe5,0xad,0x11,0x74,0x48,0x4,0x9c,0xdf,0x1,0x0,0x7e,0x0,0x1,0xbe, + 0xfe,0x47,0x5b,0xd1,0xba,0xec,0xa7,0xcc,0x8,0x2c,0x7,0x80,0x58,0x4b,0xa3,0x5e, + 0xb9,0xa4,0x9d,0x37,0xd7,0x85,0x51,0x1b,0xe,0x22,0x1a,0xa,0x20,0x1c,0x72,0xe, + 0xba,0xb3,0x26,0x26,0xb2,0xf9,0xc3,0xee,0x91,0x64,0x1a,0xbd,0xfd,0x57,0x74,0x7c, + 0x78,0x34,0x5f,0xca,0x4b,0xf3,0x4b,0xc4,0x2f,0xbe,0xa0,0x7b,0x5e,0x79,0xf,0x80, + 0xe5,0x80,0xb7,0x3c,0x24,0xb2,0xe,0x78,0x59,0x51,0xd9,0x53,0x1d,0x1b,0xe5,0x79, + 0xc0,0x70,0x8,0xd4,0x38,0x4,0xfc,0x85,0x6c,0xb8,0x74,0xe3,0x22,0xde,0xbe,0x76, + 0x2b,0xc2,0x8d,0xdf,0x66,0x3c,0x74,0x27,0xc4,0x14,0x7f,0x35,0x50,0xd0,0xa4,0xb3, + 0xe7,0x90,0xbc,0xf6,0xbe,0x8e,0xf7,0xbc,0x87,0xcb,0x1f,0xf,0x3a,0xd1,0xc5,0x15, + 0xcb,0xf1,0xf3,0x34,0x0,0xbb,0x54,0xe3,0x73,0x3a,0xa9,0xf7,0x90,0x71,0x2d,0xe2, + 0x73,0xda,0x6,0x0,0x81,0xa6,0x5b,0x23,0x58,0x70,0xdb,0x42,0x11,0x6e,0x6a,0x25, + 0x23,0xd4,0x2,0x7f,0x4d,0x33,0x0,0x6,0x2b,0x33,0xcc,0xac,0xec,0x35,0x95,0x1a, + 0x19,0xc2,0xb5,0x2f,0xe3,0xb8,0x76,0x39,0xed,0x84,0x6e,0x6f,0xf8,0xce,0x38,0x1a, + 0xb7,0x69,0x6,0xa0,0xe6,0xf4,0x67,0xf,0xc7,0xcd,0x98,0x93,0x10,0x79,0x69,0x9a, + 0x77,0xc4,0x4d,0x94,0xca,0x23,0xda,0xf3,0xad,0xf3,0x6b,0x96,0xd9,0xe1,0xf8,0x37, + 0xce,0x9a,0x13,0x75,0x29,0xc,0xe8,0xbc,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44, + 0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/busy.png + 0x0,0x0,0xc,0x2f, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x14,0xc3,0x0,0x0,0x14,0xc3,0x1, + 0x15,0x70,0x4d,0x42,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd8,0xc,0x11, + 0xa,0x34,0x21,0xe5,0x38,0x8f,0x66,0x0,0x0,0xb,0xaf,0x49,0x44,0x41,0x54,0x68, + 0xde,0xd5,0x9a,0x7b,0x8c,0x54,0xd7,0x7d,0xc7,0x3f,0xe7,0x9c,0x7b,0xef,0xcc,0xce, + 0x2e,0xec,0x3,0xd8,0x7,0x8f,0xe2,0x12,0xf3,0x6a,0x8a,0x3,0x36,0x75,0x9,0xd8, + 0x4d,0x63,0xc0,0x46,0x4e,0xab,0xda,0xb8,0x8a,0x2a,0xd7,0xaa,0x2c,0x5b,0x55,0xa5, + 0xf4,0x8f,0xaa,0x92,0x1b,0xb9,0x11,0xb5,0xd4,0xd6,0xa5,0x96,0x43,0xab,0x10,0xf5, + 0x2f,0x57,0x45,0x89,0xe4,0xe6,0xf,0x2b,0x1,0xc7,0x91,0x1b,0x87,0x3a,0x72,0x14, + 0x87,0x9a,0x46,0x16,0x10,0x87,0x60,0x1c,0x1b,0x8c,0x61,0x81,0xdd,0xf5,0xee,0xb2, + 0x3b,0xcc,0xce,0xde,0xc7,0x79,0xf4,0x8f,0x7b,0xef,0xee,0x9d,0x61,0x16,0x30,0xd0, + 0xd7,0x48,0xdf,0xb9,0x73,0x7e,0xe7,0x9e,0x7b,0xbe,0xdf,0xdf,0xf9,0x9d,0xe7,0x1d, + 0xf8,0x7f,0xfe,0x11,0xb7,0xf2,0x61,0x7b,0xfa,0x68,0xaf,0x85,0x2c,0x2b,0xb,0x16, + 0x6b,0x18,0x20,0x5,0xc0,0x45,0xf,0x2e,0x86,0x8e,0xb,0x1d,0x65,0xce,0x3d,0x35, + 0xcc,0xd4,0xff,0x19,0x1,0xcf,0x2e,0x60,0xb9,0x84,0x87,0x30,0x3c,0xc,0xdc,0xb, + 0xc8,0x6b,0x14,0xb1,0xc0,0x9b,0x28,0xe,0x58,0x78,0x79,0xd7,0x18,0x1f,0xfd,0xaf, + 0x8,0xd8,0xdd,0xc5,0x43,0x28,0x9e,0xc1,0xb0,0x1,0x60,0x63,0x80,0xd9,0xde,0xde, + 0xa6,0xdc,0xd2,0x95,0xd0,0xdd,0xf,0xf3,0x7b,0xa1,0x67,0x51,0x7a,0xf3,0xf8,0xc7, + 0x50,0x1d,0x81,0x4b,0x43,0x88,0xc1,0xf7,0xf9,0xf7,0xa9,0x69,0xf3,0x76,0x8c,0x2, + 0x40,0x71,0x14,0xc3,0xdf,0x7c,0x65,0x82,0x97,0xff,0x47,0x4,0xec,0xee,0x62,0xb, + 0xb0,0x7,0xd8,0x74,0x67,0x80,0x79,0xa0,0xaf,0x4f,0xb9,0xd,0xf,0x40,0xef,0xd2, + 0xf4,0x6,0x1d,0x1,0xa,0xac,0x4d,0x1,0x20,0x65,0xa,0xc,0x78,0xa5,0xd4,0x36, + 0x32,0x88,0x38,0xfa,0x3,0x7e,0x30,0x3c,0x6c,0x8e,0xa4,0x62,0xe,0x3,0x4f,0x7d, + 0x65,0x82,0x43,0xff,0x2d,0x2,0x9e,0xeb,0xa5,0xd3,0xc6,0xfc,0xb,0xf0,0xc8,0xa, + 0xf,0xf3,0xc5,0x35,0x6b,0x14,0x9b,0x76,0x66,0xa4,0x35,0xc4,0x9,0xc4,0xf1,0xf5, + 0x3d,0x2c,0x8,0x20,0xf0,0xc1,0xf3,0xd2,0xf4,0xe1,0xfd,0xbc,0x74,0xf2,0xa4,0x39, + 0xad,0x51,0xc0,0x77,0x64,0xc0,0x93,0x4f,0x8f,0x30,0x79,0xcb,0x4,0x3c,0xbb,0x80, + 0x95,0x9e,0xe1,0x55,0x9,0x9f,0xfa,0x8b,0x65,0xdd,0xd2,0x6d,0x7d,0x22,0xf5,0x64, + 0x18,0x42,0x18,0xdd,0x5c,0x27,0x2a,0x97,0xa0,0x5c,0x86,0x78,0x1a,0xf1,0xc6,0x37, + 0xf8,0xea,0xb9,0x4b,0xd6,0xc2,0x29,0xad,0xf8,0xc2,0xae,0x31,0xde,0xbf,0x69,0x1, + 0xcf,0x75,0xb1,0xcd,0xc2,0x77,0xfa,0x15,0xed,0x8f,0xdf,0xb7,0x43,0xb1,0xfc,0xce, + 0xd4,0xd3,0x61,0x34,0x1b,0x22,0x37,0xfa,0x29,0x86,0x58,0xa5,0xd,0xbc,0x32,0xbc, + 0x7f,0x98,0x7d,0xff,0xf1,0xba,0x19,0x31,0x4c,0x49,0x78,0xe4,0xe9,0x9,0x5e,0xbf, + 0x61,0x1,0x19,0xf9,0xd7,0x36,0xb6,0xc3,0xb6,0xed,0x8f,0x2b,0x16,0x2e,0x86,0xda, + 0x54,0x1a,0x32,0x37,0x4b,0xba,0xd5,0xc7,0x2b,0x41,0xa5,0x2,0xa3,0xe7,0x39,0x78, + 0xf0,0x9b,0xe6,0x48,0xc,0x12,0x76,0x5c,0x4d,0x84,0xb8,0x5a,0xd8,0x48,0xc3,0xdb, + 0x1b,0xdb,0x69,0xdf,0xf6,0xc8,0x9f,0x2b,0x3c,0xf,0x6a,0xe1,0x8d,0x79,0xfd,0x5a, + 0x65,0x6c,0x61,0xe4,0x95,0x12,0x3a,0x4a,0x10,0x27,0x1c,0xdc,0xbf,0xd7,0x1c,0x89, + 0x99,0xb2,0x8a,0x8d,0x73,0x85,0x93,0x9c,0xab,0xc3,0x7a,0x86,0x57,0xfb,0x15,0xed, + 0xdb,0xb6,0xfe,0x51,0x4a,0xbe,0x5a,0xff,0x64,0xe4,0xf3,0x51,0x68,0xae,0x32,0x56, + 0xce,0xa2,0xb9,0x5c,0x75,0x1a,0x3c,0xc5,0xfd,0xf7,0x3d,0xa6,0xfa,0x15,0xed,0x9e, + 0xe1,0xd5,0xe7,0x7a,0xe9,0x6c,0xf5,0x18,0xd5,0xca,0x78,0x9f,0xcf,0xbf,0x2a,0xd8, + 0xfc,0xa5,0xcf,0xed,0x50,0x2c,0x59,0x9,0xd5,0x49,0xd0,0x31,0x58,0x7d,0x7d,0xb8, + 0xe2,0xde,0x26,0x41,0x7a,0x8e,0x32,0x26,0x99,0x45,0x14,0x43,0xd7,0x22,0xd6,0x97, + 0xcb,0xf2,0xad,0xf3,0x1f,0x76,0x1b,0xc3,0xaa,0x1f,0x86,0xbc,0x74,0xcd,0x10,0xca, + 0xc6,0xf9,0x9f,0xfc,0xe5,0xf2,0x5,0xb8,0xed,0x7f,0x2,0xd5,0xd1,0x74,0xb4,0xb9, + 0xde,0xb0,0xb0,0xf2,0x13,0x86,0x93,0x37,0x77,0x7e,0xb9,0x4,0xf3,0x17,0x22,0x5e, + 0xf9,0x27,0xfe,0xbe,0x7a,0x19,0xe0,0x9e,0xe6,0x79,0xc2,0x6b,0xb5,0xa4,0x59,0xe1, + 0x61,0xdc,0xe7,0x1f,0x57,0xd4,0x2f,0x43,0x58,0x9b,0xbb,0x72,0x7d,0x13,0xb1,0x5e, + 0x7c,0x48,0xcb,0x72,0x1e,0xd4,0x34,0xc8,0x0,0xf7,0xe0,0x1f,0x73,0xdb,0xb7,0xff, + 0xd1,0x9c,0xd1,0xec,0x1,0x3e,0x3b,0x67,0x1f,0xd8,0xdd,0xc5,0x43,0xc0,0xa6,0x2f, + 0xae,0x59,0xa3,0x90,0x3e,0xd4,0xc6,0xd2,0xe6,0xce,0xd1,0x1c,0x6,0x14,0x90,0xe7, + 0x17,0xef,0xcf,0x11,0xc7,0x29,0x74,0x38,0x7,0x5a,0x94,0xc9,0xf3,0x26,0x86,0x1, + 0x8f,0x3f,0xe8,0xbd,0x4d,0x1,0x9b,0x32,0x8e,0x73,0x74,0x62,0xc5,0x33,0x77,0x6, + 0x18,0x36,0xed,0x4c,0x43,0x47,0x87,0x8d,0x24,0x73,0xc4,0xf1,0x95,0x15,0xa2,0xc1, + 0xc6,0x8d,0xf7,0xd9,0xb8,0xd1,0xd6,0x4a,0xd4,0x5c,0xc2,0xf2,0xbc,0x30,0x84,0xea, + 0xc7,0xf0,0xdb,0x7f,0xc8,0x1d,0x3e,0x6,0xc5,0x33,0x2d,0x5,0x3c,0xbb,0x80,0xe5, + 0x18,0x36,0x3c,0xd0,0xd7,0xa7,0xb0,0x16,0xea,0xe3,0x8d,0x1e,0xd,0xb,0x98,0xcb, + 0xd3,0xcd,0x28,0xb6,0x96,0x6e,0xd1,0x5a,0xcd,0xf9,0xd,0x65,0xb,0x4e,0x1a,0x1d, + 0x6,0x9b,0xf0,0x85,0xa0,0x53,0x61,0xd8,0xf0,0xec,0x2,0x96,0x5f,0x21,0x40,0x92, + 0x36,0x8d,0x5b,0xb7,0x15,0x6a,0x93,0xa9,0x17,0x8a,0xde,0xf3,0xa,0x1e,0x6d,0xf6, + 0x74,0x2b,0x34,0xb,0x69,0x6e,0x2d,0xae,0xd1,0x6a,0x36,0x6,0xf2,0xd6,0xa8,0x43, + 0x6d,0x12,0xf7,0x1b,0xbf,0xdb,0xc0,0xb5,0xb1,0x13,0x1b,0x1e,0xde,0x18,0x60,0xe8, + 0x5f,0xa1,0x18,0xf9,0x0,0x5c,0xda,0xb1,0x5e,0x1f,0xa9,0x51,0xab,0xcf,0xce,0x1, + 0x4e,0x8,0x9c,0x73,0x58,0x6b,0x11,0x22,0x1d,0xc4,0x9c,0x31,0x20,0xe5,0x6c,0xda, + 0xb9,0x96,0x79,0xcd,0xf6,0x72,0xa5,0x82,0x2c,0xe4,0x29,0xa5,0x90,0x32,0xf5,0xa9, + 0x10,0x82,0x40,0x4a,0xba,0x7b,0x17,0xb0,0xee,0xc2,0x70,0x1a,0x46,0x8b,0x57,0xb3, + 0x3e,0xc0,0x1c,0x8b,0x79,0x18,0xd8,0x3b,0x23,0x60,0x4f,0x1f,0xed,0x71,0xc4,0xbd, + 0xdb,0xdb,0x4a,0xd2,0x1,0x44,0x13,0x33,0xcb,0x85,0xa9,0xfa,0x34,0xb5,0x5a,0x8d, + 0xae,0xae,0x2e,0x4a,0xa5,0x12,0x25,0xd4,0xc,0x11,0xbf,0xec,0x23,0xa5,0x24,0x8a, + 0x22,0x30,0xcc,0xa6,0xeb,0x51,0xcb,0xbc,0x24,0x4c,0x1a,0xec,0xbe,0xf4,0x91,0xbe, + 0xc4,0x5a,0x4b,0x92,0x24,0x60,0x40,0x5,0x8a,0x50,0x6b,0xc2,0x30,0x64,0xac,0x56, + 0xc3,0xf3,0x3c,0x90,0x16,0xc6,0x47,0xa0,0x7f,0x15,0xf7,0x6b,0xd4,0x31,0xb8,0x77, + 0x4f,0x1f,0xed,0x4f,0xd,0x33,0xe5,0x1,0xd4,0x42,0x96,0x5,0x2,0xe9,0x96,0xae, + 0x84,0xfa,0x65,0x30,0x61,0x3a,0x43,0x64,0x5e,0x9f,0x37,0x6f,0x1e,0x72,0xd7,0x5f, + 0xb1,0xa0,0xbf,0x1f,0x25,0x15,0x20,0x10,0x2,0x84,0x14,0x20,0x4,0x1d,0x8,0x8c, + 0x31,0x33,0xe9,0x36,0x63,0x5b,0xe6,0x39,0xeb,0x1a,0xec,0x8,0x1,0xb8,0xac,0xb1, + 0x5d,0xd6,0x7a,0xd0,0x6e,0x34,0xd5,0x5f,0x1c,0x27,0xfe,0xfa,0xd7,0x31,0xc6,0x40, + 0x92,0x2d,0xd3,0xeb,0x97,0x91,0x8b,0x56,0xc0,0xf0,0x69,0x59,0xb,0x59,0x6,0x9c, + 0xf4,0x0,0xca,0x82,0xc5,0x16,0xa0,0xbd,0x37,0x8d,0xb7,0xc2,0x62,0xcd,0xe1,0x8, + 0xfc,0x80,0xee,0xee,0x6e,0x3a,0xe7,0x77,0x62,0xac,0x6,0x21,0x90,0x52,0xa2,0xa4, + 0x44,0x66,0x88,0xe2,0x78,0x26,0x9d,0x68,0xdd,0x32,0xcf,0x58,0xdb,0x60,0xf,0xfc, + 0x12,0x42,0xa4,0xa4,0x67,0xea,0x73,0x96,0x44,0x1b,0xa6,0x56,0xac,0x40,0x49,0x81, + 0xb5,0x16,0x5c,0x26,0x40,0x87,0xd0,0x39,0x0,0xc3,0xa7,0x29,0xb,0x16,0xcf,0x8, + 0xd0,0x30,0x20,0x21,0xdd,0x6,0xc6,0xd3,0x20,0x32,0x1,0x71,0x1a,0xe7,0x4a,0x8, + 0x94,0x52,0x18,0xa3,0x89,0xe2,0x30,0xb5,0x79,0xa,0xe7,0xf9,0x78,0x28,0xa4,0x14, + 0x24,0x49,0x34,0x93,0x2e,0xfe,0x2e,0xe6,0x69,0x9d,0x34,0xd8,0x4b,0xa5,0xa0,0x40, + 0xdc,0x65,0x73,0xa1,0xc5,0x5a,0x87,0x92,0x12,0xcf,0xf3,0xd2,0x51,0x26,0x77,0x68, + 0x18,0x41,0xcf,0xe2,0x7c,0xfa,0x1b,0x28,0x76,0xe2,0xf4,0xf4,0xa0,0xa7,0x1f,0x26, + 0xce,0xce,0x36,0x99,0x0,0x9c,0xc0,0x58,0x87,0xb3,0xe,0x63,0x2d,0x5a,0x6b,0xa4, + 0x4c,0x43,0xc8,0x88,0xd9,0x95,0x88,0x35,0x66,0x26,0x5d,0xfc,0x5d,0x4c,0x37,0xdb, + 0x1b,0xd6,0x34,0x99,0x3d,0xbf,0xe2,0x32,0x31,0x45,0x1,0xf5,0x2a,0x2c,0x9c,0x19, + 0x41,0x7,0xe6,0x5a,0x4a,0x34,0x84,0x90,0x75,0xa,0x63,0xd,0xc6,0x1a,0xac,0xb3, + 0x68,0xa3,0x51,0x28,0x84,0x31,0x14,0x5a,0x1e,0x53,0x48,0x9b,0x39,0xf2,0x6c,0x93, + 0xbd,0xf9,0xe3,0x66,0x62,0xc9,0x61,0xad,0x41,0x6b,0x9d,0xae,0x56,0xae,0xb2,0x55, + 0xcd,0x5,0x5c,0x4,0x60,0xf4,0x42,0xba,0x4f,0x75,0xb3,0xcb,0x60,0x29,0xfd,0xa6, + 0xe1,0x4d,0x62,0xad,0x43,0x63,0xf1,0x10,0x18,0x34,0xce,0x81,0x36,0xb3,0xe9,0xe2, + 0xef,0x62,0x5e,0xb3,0xdd,0x5a,0x8b,0x73,0xb9,0xd7,0x1d,0xce,0xe5,0x0,0x84,0x4c, + 0xeb,0x5,0xf0,0x2c,0x44,0x36,0xdd,0xb1,0x8d,0x8f,0x52,0xe4,0xec,0x65,0x5f,0x17, + 0x2d,0xc0,0xe8,0x10,0x2c,0xbd,0xd,0xa1,0x13,0x50,0x16,0x12,0xc0,0xb5,0x65,0xe3, + 0x34,0x94,0x82,0x12,0x42,0x48,0xa4,0x10,0x8,0x21,0x10,0x59,0x93,0x4b,0x29,0x91, + 0x15,0x35,0x93,0xf6,0xbc,0x52,0xcb,0x3c,0x97,0x45,0x65,0x6e,0x8f,0xa2,0x18,0x6b, + 0x5d,0x3a,0xa2,0x65,0x22,0x8c,0x99,0x15,0x92,0x1f,0x22,0x89,0x38,0x2,0x1,0xce, + 0x2b,0xc3,0xe0,0xa9,0xdc,0xf3,0xb3,0x2,0x42,0xc7,0x85,0x40,0x0,0xd5,0x21,0xf0, + 0x56,0x3,0x31,0x98,0x74,0xca,0x73,0xd6,0x50,0xaf,0xd7,0xe9,0x72,0x8e,0xd1,0xb1, + 0x31,0xc2,0xe9,0x69,0x2a,0x95,0xa,0xa5,0xa0,0xcc,0x74,0x58,0x47,0x49,0x45,0xa5, + 0x52,0x41,0x6b,0x33,0x93,0xe,0x82,0x52,0xcb,0xbc,0xb6,0x72,0xa5,0xc1,0x1e,0xc7, + 0x9a,0xb1,0xb1,0x51,0x9c,0x83,0x9e,0x9e,0x6e,0xb4,0xd6,0x4c,0x87,0xd3,0x94,0x82, + 0x12,0xbe,0xef,0x93,0x24,0x49,0x3a,0xa,0xe5,0x21,0xed,0x95,0x61,0xe4,0x2,0x39, + 0xe7,0x19,0x1,0x1d,0x65,0xce,0xc5,0x11,0x96,0xb3,0xbf,0x94,0x6c,0xde,0x9,0x31, + 0x20,0x35,0x38,0x8b,0x90,0x8a,0xb3,0x67,0xce,0x70,0xe9,0xb1,0x47,0x53,0xaf,0xb, + 0x81,0x4,0x8c,0x73,0x94,0x7c,0x1f,0xa4,0xc4,0x98,0x34,0x5e,0xf3,0x74,0x14,0x45, + 0x2d,0xf3,0xa2,0x24,0x69,0xb0,0xf7,0xf5,0xf5,0xe1,0x9c,0x63,0x72,0x72,0x92,0x53, + 0x61,0x98,0xb6,0x96,0xf0,0x48,0x74,0x84,0x31,0x86,0x5a,0xbd,0xce,0xba,0xb5,0x6b, + 0xd3,0x3e,0x20,0xcb,0xd0,0xd1,0x43,0x3c,0xf1,0x21,0x78,0xd8,0x8e,0x32,0xe7,0x98, + 0xcc,0x4,0x3c,0x35,0xcc,0xd4,0xee,0x2e,0xde,0x7c,0xcd,0xe3,0x9e,0x1d,0x28,0xe5, + 0xda,0xfb,0x10,0xb5,0xf4,0xc4,0xaf,0xb7,0xbb,0x8b,0xce,0x8e,0x4f,0xa3,0xb3,0x3e, + 0xa1,0x94,0x42,0x6b,0x8d,0x31,0x6,0xcf,0xf3,0x70,0xce,0x91,0x24,0x9,0x32,0x1b, + 0xf6,0x9c,0x73,0x73,0xe6,0x69,0xad,0x1b,0xec,0x49,0x14,0xe1,0x95,0x3c,0x7a,0xba, + 0xba,0xd0,0xd6,0xe2,0x79,0x1e,0x65,0xcf,0xc3,0x48,0x87,0xb0,0x82,0xb6,0xc0,0xa7, + 0xdc,0x56,0x81,0x8f,0x34,0xae,0x2d,0x3d,0xe5,0x3b,0xe8,0x63,0x70,0xfc,0x24,0x3f, + 0x5f,0xf5,0xa,0x4b,0xe9,0x3,0xc7,0x62,0x3e,0xb7,0x63,0xe8,0x1c,0x54,0x96,0xc2, + 0xa5,0x74,0xf,0xbd,0xf9,0xd2,0xb1,0x2b,0x37,0x2b,0x73,0x6d,0x5c,0x22,0x7b,0x7d, + 0xbb,0xb0,0xeb,0xbd,0xaf,0x68,0x5f,0xba,0xe,0x86,0x3e,0xe4,0xb8,0x43,0xa1,0x38, + 0x70,0xc5,0x6a,0xd4,0x92,0x9e,0x4d,0x8a,0xb7,0xe,0x40,0xef,0xed,0xb3,0xc3,0x69, + 0x12,0xa7,0x30,0x7a,0x16,0xce,0x36,0xa6,0x8d,0x86,0xa9,0xb8,0xf5,0xb2,0x38,0x2f, + 0x9b,0x3f,0x27,0x89,0xd3,0xf0,0xcc,0xd1,0xb0,0x2f,0x98,0x6b,0xbf,0x20,0xa1,0x77, + 0x39,0xe2,0xd0,0xfe,0x6,0xae,0xd,0x2,0x76,0x8d,0xf1,0x91,0x85,0x63,0xdf,0xd3, + 0x97,0xd,0xd6,0xe2,0xe6,0xaf,0x6,0x91,0x55,0xd6,0xf2,0xa1,0x4d,0x24,0x55,0x41, + 0x4c,0x91,0xac,0xbe,0x72,0x3,0xe4,0x92,0x64,0x16,0xca,0xcc,0xc0,0x98,0x2,0x9c, + 0x9b,0x81,0x1b,0x58,0xf,0xc0,0x77,0x83,0xc4,0x58,0x78,0x67,0xd7,0x18,0x43,0xad, + 0x76,0x64,0x41,0x35,0x62,0xcf,0xf1,0x4,0xc5,0xf,0xbf,0x5,0xcb,0x36,0x81,0xb, + 0x60,0xba,0x40,0xaa,0xd9,0xeb,0xb9,0x3d,0x27,0x25,0x32,0x28,0x83,0x33,0x29,0x9a, + 0xc9,0x24,0xce,0x35,0xee,0x1c,0xe2,0x59,0x58,0xae,0x84,0xf2,0x7d,0x58,0xb3,0x19, + 0x5e,0xdb,0xc7,0x9,0x87,0x1a,0x9d,0xe2,0x6b,0x40,0x1b,0xe0,0x17,0x5,0x48,0x20, + 0x78,0x7e,0x9a,0xd7,0x63,0xc7,0xd1,0x17,0xab,0x83,0xe9,0xfa,0x70,0xde,0x67,0x40, + 0x66,0xe4,0x4c,0x13,0x29,0x63,0x48,0x8c,0x21,0x69,0x41,0x2a,0x76,0x10,0xfb,0xe9, + 0x60,0x36,0x93,0xce,0xa0,0x9b,0xe1,0x5f,0x1d,0x6e,0xe0,0x6e,0xc0,0xe3,0x45,0x3d, + 0x6a,0x43,0xc7,0xcf,0xbe,0x96,0xf0,0x23,0xa0,0x94,0x41,0xe4,0x2,0xfc,0x1c,0xbf, + 0x9c,0xe4,0xf9,0x41,0x83,0x14,0x7,0xf6,0xc2,0xaa,0x2d,0x50,0x5e,0x8a,0xd,0x1a, + 0xc9,0xe5,0x95,0xdb,0x2,0x8a,0xa4,0x6c,0xee,0xd9,0x42,0xfa,0x46,0xd0,0xa6,0x16, + 0xc1,0x9a,0x7b,0xe1,0xdb,0x5f,0x65,0x10,0xe4,0xf1,0x49,0xf6,0x16,0xb9,0x2,0x5e, + 0x7e,0xb0,0x15,0xe4,0xaa,0x7e,0xe,0xe3,0xbf,0xe9,0xb1,0xf6,0x88,0x72,0xcb,0x37, + 0xc7,0x46,0xf0,0xe9,0xfb,0x91,0x67,0x7f,0x46,0xe8,0x69,0x8c,0x69,0xac,0x40,0xa7, + 0x27,0xfe,0x98,0x3c,0xed,0xa,0x69,0x75,0x73,0x98,0xa7,0x15,0x6e,0xcb,0x93,0xf0, + 0xee,0x61,0x9e,0xaf,0x9d,0x73,0x93,0x11,0x3f,0xfe,0x67,0xcd,0x8b,0x85,0x6a,0x35, + 0xa0,0x8b,0x2,0x82,0x4c,0x55,0x70,0x2e,0xe6,0xc8,0xba,0x12,0xdb,0x4e,0x4e,0xe, + 0x76,0xdc,0xd5,0xf3,0x29,0xc1,0xe2,0xf5,0x88,0x8b,0x47,0x89,0xfc,0xb4,0x84,0x51, + 0xcc,0x88,0x69,0x16,0x71,0x2b,0x50,0x4e,0xc0,0xdb,0xf8,0x24,0x54,0xc7,0x79,0xe1, + 0xc4,0xf7,0xed,0x84,0x65,0xe8,0x1b,0x35,0x9e,0xae,0x42,0x9d,0x74,0x81,0x93,0xe4, + 0x1,0xa1,0xa,0x47,0x8c,0x7e,0x36,0x2f,0xf8,0x13,0xe0,0xa6,0x22,0x8e,0x2c,0x2b, + 0xf1,0xe0,0xe4,0xe0,0xcf,0xd5,0xaa,0xd5,0xbf,0x25,0x64,0xcf,0x5a,0x4a,0x67,0x8f, + 0x51,0xf3,0xb2,0x8a,0x14,0x68,0x73,0xeb,0x48,0xe7,0xe8,0x31,0xe0,0x6f,0x78,0x2, + 0x4a,0x15,0x5e,0x79,0x73,0x9f,0x3d,0xe3,0x88,0x5e,0x9e,0xe4,0xcb,0xef,0xa5,0x6b, + 0x9f,0xb8,0x9,0xa1,0x2a,0x1c,0x31,0xaa,0xc,0x1e,0xa0,0xce,0x43,0xbd,0x23,0xe4, + 0x74,0x50,0x66,0xdb,0xf8,0xa9,0xff,0x74,0xab,0xfb,0xd7,0xa,0x56,0x6f,0xa7,0xfd, + 0xf4,0x2f,0xa8,0x7a,0x31,0x3a,0xb9,0xf5,0xe4,0x7,0x74,0x3b,0x62,0xcb,0x97,0xe0, + 0xf2,0x25,0x5e,0x79,0x73,0x9f,0x3d,0xe1,0xe0,0xd0,0x4,0x7f,0xfb,0x63,0x38,0xe, + 0x44,0xe9,0x31,0x5,0x51,0x1,0xd3,0xaa,0xf0,0xe6,0x50,0x16,0xa0,0x0,0xf1,0x1e, + 0xc,0xb5,0x87,0xbc,0xef,0x97,0xd9,0xf2,0xee,0x85,0xe3,0xea,0x2e,0xad,0x4,0x77, + 0xff,0x3e,0x1d,0xa3,0x55,0x92,0x64,0x98,0xd8,0x7,0xa7,0x6e,0x1e,0x6d,0xe,0x7a, + 0xe7,0xdd,0x1,0x9f,0x7d,0xc,0xde,0x3d,0xcc,0xb,0x27,0xbe,0x6f,0xcf,0x38,0xa2, + 0x43,0x13,0xfc,0xdd,0xbf,0xa5,0xef,0xce,0xa6,0x33,0x44,0xd9,0x35,0x4,0x6a,0x80, + 0x11,0x4d,0x7,0xbd,0x95,0x2,0xda,0xf2,0xeb,0x46,0xb8,0xfd,0x77,0x3a,0xd9,0x5d, + 0x16,0xc,0x7c,0xb9,0x8e,0x60,0xe7,0x9f,0xa5,0x25,0x8e,0x7e,0x8f,0x21,0x77,0x9a, + 0xba,0xbb,0xb1,0x77,0x1d,0x15,0x1,0xfd,0x62,0x5,0x6c,0x48,0xcf,0x7b,0xd8,0xbf, + 0x97,0xe7,0x2b,0xb8,0x50,0x33,0xf4,0x72,0x8d,0xbf,0x3e,0x6,0xa7,0xa,0xe4,0xeb, + 0x85,0x6b,0x35,0x13,0x73,0xc5,0xe9,0xb4,0x28,0x90,0x6f,0xc0,0x52,0x58,0xf0,0x68, + 0x1b,0x4f,0x77,0x95,0xb8,0x67,0x29,0xd8,0xc7,0xbc,0x85,0x92,0x1d,0x4f,0x80,0x4d, + 0xe0,0x83,0x9f,0x22,0x86,0xde,0xe1,0xbc,0xba,0x4c,0x5d,0x5d,0x83,0xb4,0x81,0x25, + 0x66,0x1e,0xae,0xff,0xe,0xb8,0xfd,0x6e,0x90,0x3e,0xbc,0xb6,0x8f,0x17,0xf5,0xa8, + 0x1d,0x4,0x39,0x1e,0xf2,0xd6,0xb7,0x42,0xfe,0xe1,0x2,0x8c,0x65,0x9e,0x9e,0x6e, + 0x42,0x35,0x8b,0xff,0xab,0xbe,0xa1,0x29,0x15,0xc8,0x97,0x8b,0x78,0x10,0xee,0x5a, + 0xdf,0xc1,0x9f,0x76,0x78,0xac,0xf9,0x35,0x81,0xfd,0xbd,0xd8,0x97,0x6e,0xcb,0x4e, + 0xe8,0xff,0xd5,0x74,0xd1,0x35,0x7e,0x1e,0x26,0x86,0xa0,0xf6,0x31,0x44,0xd9,0xc9, + 0x76,0xa9,0x3,0x3a,0x16,0x41,0x57,0x3f,0xf4,0x2c,0x49,0xdf,0xc2,0xc,0x7d,0x88, + 0x38,0xb4,0x9f,0xef,0x6,0x89,0x3d,0xe1,0x90,0x35,0xcd,0x7b,0x6f,0xd7,0x78,0xe1, + 0x20,0x1c,0x29,0xc4,0x7b,0x11,0x35,0x60,0x2a,0xb,0xf7,0xeb,0x7a,0x47,0x26,0x32, + 0xd2,0x6d,0x99,0xa0,0x72,0x76,0xd,0x80,0xd2,0xa3,0xb0,0xf5,0xf6,0x4e,0x9e,0x28, + 0xb,0x56,0x2,0xfc,0xba,0xc0,0xde,0x9f,0x20,0x83,0xf9,0xcb,0xa1,0x77,0x9,0x2c, + 0x5c,0x92,0x1e,0x12,0x0,0x8c,0xf,0xc1,0xe8,0x79,0x18,0x39,0x4f,0x5c,0xfd,0x88, + 0x83,0x3e,0xf6,0xb8,0x4b,0x57,0x1,0xa1,0xe6,0x83,0x93,0x35,0xbe,0xf9,0x12,0xbc, + 0x91,0x79,0x36,0x2a,0x5c,0xf3,0x16,0xa8,0xb5,0x38,0xcc,0xff,0x44,0xef,0x89,0xbd, + 0x4c,0x40,0xa5,0x69,0xce,0xf0,0x37,0xc1,0xaf,0xdc,0xa9,0xd8,0xda,0xd3,0xc6,0xe7, + 0x2b,0x1e,0x9f,0xb9,0x9e,0xbf,0x1a,0xd4,0x35,0xef,0x8c,0x4e,0xf3,0xa3,0x23,0x86, + 0x37,0x7e,0xa,0xe7,0xa,0x63,0x7b,0x92,0x91,0xaf,0x67,0xde,0x4e,0x9a,0x3d,0x7e, + 0x2b,0xfe,0x6a,0xe0,0x15,0x5a,0x24,0x9f,0x3b,0x3c,0x40,0xdd,0x6,0x1d,0xab,0x60, + 0x49,0x2f,0xf4,0x95,0x15,0xbd,0x15,0xc9,0x22,0x40,0xd4,0x2d,0x23,0xa1,0x61,0x74, + 0x8,0x86,0x3e,0x80,0xb,0x67,0x52,0x72,0xa6,0x38,0xa3,0x66,0xa4,0xc3,0x8c,0xf4, + 0x75,0xf,0xb,0x37,0xfb,0x67,0xf,0x91,0xa1,0x38,0xfc,0x36,0x23,0x1f,0xa6,0x4d, + 0xd3,0xa4,0x5d,0x9c,0xbc,0xdd,0x8d,0x12,0xf8,0x2f,0x76,0xdc,0xf5,0xd8,0xec,0x51, + 0x92,0x57,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/greenframe.png + 0x0,0x0,0x6,0xd3, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x16,0x25,0x0,0x0,0x16,0x25,0x1, + 0x49,0x52,0x24,0xf0,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xd,0x2a,0xc,0xd,0xea,0x30,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x6,0x2e, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9c,0x3d,0x72,0x1b,0x47,0x10,0x85,0xbf,0x37, + 0x5a,0x9,0xc8,0x14,0x31,0x91,0xcb,0xba,0x80,0x22,0x5b,0x9,0x63,0x95,0x99,0xd9, + 0x97,0xe0,0xb5,0x5c,0x66,0x95,0x73,0xdf,0x80,0x3a,0x0,0x33,0x47,0xd2,0x1,0x5c, + 0x56,0xc4,0xc4,0xe5,0xc0,0x26,0x64,0x72,0x9f,0x83,0xf9,0xdd,0x25,0x40,0x0,0xb6, + 0x8,0x80,0x0,0xb6,0x24,0x16,0xa,0x58,0xec,0xcc,0xbc,0xe9,0xd7,0x7f,0xd3,0xd, + 0xbd,0xbe,0xf8,0xe,0x5b,0x1,0xf1,0x46,0x70,0x6a,0x38,0x11,0x74,0x98,0x1e,0xb1, + 0x91,0xcb,0x18,0x59,0xc4,0xf1,0x1c,0xdf,0xb3,0x90,0x1e,0x6d,0x40,0x10,0x1,0x7c, + 0x6b,0x73,0x2d,0x74,0x65,0xf9,0x83,0x4d,0xdf,0x25,0x30,0xce,0xb0,0xdf,0x82,0x3e, + 0x4b,0xcc,0xc,0x33,0x6d,0x8,0xc,0x0,0x21,0x2c,0x67,0x2c,0xe2,0x3b,0x8a,0xb3, + 0x7e,0xa4,0x1,0xc1,0x26,0x21,0xfe,0xd2,0xf0,0x3,0xf0,0x4a,0x70,0xd9,0x19,0xde, + 0xc8,0xbc,0x95,0xf4,0x87,0x8d,0x5,0x28,0xee,0x59,0x46,0x72,0x43,0x52,0x52,0x4, + 0x44,0x8,0xc7,0x59,0x3c,0xea,0x2e,0x34,0x83,0xf9,0x2f,0xa1,0x6f,0x2d,0x3e,0x75, + 0xb2,0x4f,0x91,0x3e,0xa7,0x4f,0x67,0x36,0x77,0x19,0xba,0x22,0xc5,0x1b,0x80,0x43, + 0x99,0x22,0xc2,0xc6,0xea,0x1f,0x89,0x32,0xed,0x1e,0x3b,0x8a,0x65,0x90,0x98,0x60, + 0x3e,0x3,0xa7,0x1d,0xd2,0x49,0x2,0x2,0xe4,0x3b,0xa3,0xbf,0x15,0x49,0x8d,0xd0, + 0x86,0x0,0x89,0xc8,0xbb,0xa1,0xd0,0x17,0x7,0x63,0x80,0x44,0x1c,0x3,0x59,0x36, + 0x53,0xc,0xd8,0x96,0x38,0xe9,0x10,0x1d,0x66,0x96,0xa6,0xa2,0x80,0x6d,0x71,0x23, + 0xc9,0x98,0xc4,0xed,0x35,0x26,0x38,0x1a,0x78,0x1d,0x44,0x1f,0x13,0x7c,0x27,0xbd, + 0xa1,0xa,0xbe,0x30,0x93,0x20,0x8a,0x92,0x30,0x74,0x9d,0xa8,0xd6,0xa4,0xf7,0x60, + 0x59,0x37,0xc6,0xfd,0x80,0x37,0xab,0x2c,0x50,0xb4,0x5b,0xbd,0xf5,0x6b,0x38,0xe5, + 0xb8,0x70,0x40,0x32,0x53,0x2b,0xeb,0x29,0x2b,0x71,0xa1,0xef,0x86,0x5f,0x6c,0x11, + 0x74,0xf,0xdc,0x0,0x7d,0xb1,0x86,0x91,0x4b,0xf7,0xd7,0x59,0x35,0x76,0x36,0xa2, + 0xbb,0x80,0x45,0x63,0x50,0x8c,0xca,0xe2,0x91,0x60,0x5a,0x2c,0xd,0x4a,0x1f,0xc5, + 0x79,0x77,0x43,0x28,0x95,0xd6,0xe7,0x64,0xfa,0xe8,0xc1,0x37,0x36,0x7d,0x65,0xf7, + 0xbc,0x51,0x15,0x7,0x6d,0xb1,0xde,0xa4,0x89,0x5a,0x8a,0x8a,0xd2,0x9a,0x8,0xa0, + 0x49,0x5e,0x5f,0xfc,0x67,0xdb,0xca,0xfa,0xbc,0x1,0x44,0xed,0xf7,0x55,0x36,0x1e, + 0x14,0x41,0x11,0xbd,0x5c,0x65,0x60,0xb1,0x52,0x49,0x42,0xb9,0x65,0x30,0xe4,0x42, + 0x8e,0xcc,0xe2,0x0,0x4c,0x2a,0x9f,0x93,0x6b,0x91,0x3e,0xcd,0xf7,0x76,0xcb,0xd5, + 0x81,0x41,0xb2,0xcc,0x2c,0x59,0xa1,0x28,0x3b,0x9e,0xcf,0xd4,0x3c,0x91,0xc6,0xe9, + 0xdc,0x9a,0x54,0xc8,0x98,0x2c,0x19,0xd2,0xf4,0xde,0x36,0x55,0x26,0xb8,0x4f,0x73, + 0xef,0x1e,0xd2,0x46,0x51,0x9f,0x2a,0x3,0x78,0x67,0x6b,0x46,0xa4,0x11,0x43,0xc7, + 0xe9,0xbe,0xd6,0xf5,0x16,0x29,0xa3,0x76,0x2a,0x71,0x7,0x27,0x55,0xd1,0x37,0xf3, + 0x92,0x46,0x3a,0xaf,0x7f,0x0,0x90,0x91,0x71,0x49,0x7c,0xeb,0xb1,0x6e,0x8c,0xfa, + 0xec,0xa7,0x2c,0x36,0x9c,0xdb,0xa3,0x8c,0xb,0x2b,0x1c,0x90,0x26,0x2d,0x41,0x98, + 0x33,0x67,0x83,0x82,0x57,0xa0,0xcc,0xe0,0x2b,0x48,0xc9,0x6c,0xf5,0x77,0x3d,0xb3, + 0xf0,0x6c,0x77,0x2c,0xc9,0x5c,0x53,0xdb,0x3,0x41,0x2f,0x3c,0xdc,0xdb,0x5,0xe4, + 0x8a,0x4e,0xab,0x58,0x11,0x10,0x47,0x3e,0x96,0x8d,0xf,0x32,0xbf,0x9f,0xbf,0x67, + 0xd7,0xaf,0xd7,0x17,0x67,0x85,0x3a,0x5a,0x89,0x68,0x26,0xac,0x1d,0xa6,0x23,0x42, + 0x8,0x3c,0x99,0x4b,0xab,0xf1,0x2b,0xdf,0xd6,0x7d,0xd9,0xa7,0x3f,0xc1,0x2b,0x12, + 0xa6,0xb8,0xa,0x81,0xe3,0xe5,0x36,0x47,0xd2,0x1d,0xe1,0x70,0x71,0x44,0xd1,0x11, + 0x10,0x28,0x61,0x7d,0xa4,0x4f,0xf0,0x9c,0x20,0xf5,0x20,0x5,0x25,0x59,0xa2,0xa0, + 0xe4,0xdd,0xee,0x84,0xbb,0xbd,0x25,0x15,0x22,0x2b,0xa7,0x12,0x9,0x25,0x5b,0x65, + 0x24,0x63,0xeb,0xe0,0x38,0xe3,0x98,0xd3,0xae,0xa9,0xf8,0x51,0xa8,0x73,0x90,0x66, + 0xc6,0x31,0xa3,0x8,0x9d,0x51,0x89,0x77,0x62,0x5c,0x7b,0x70,0xa8,0x28,0xc7,0x80, + 0x38,0x7b,0xaa,0x6a,0xdc,0xae,0x43,0x14,0x91,0x26,0x80,0xd,0x7,0xba,0xfe,0xb9, + 0x9,0x25,0xe9,0xe8,0xa9,0xe,0x88,0x63,0xd8,0x73,0x40,0xfe,0x83,0xb,0x11,0xf6, + 0x9c,0x7,0x11,0x14,0x1f,0x1,0xe1,0xeb,0x9f,0xce,0xaa,0xff,0x2d,0xaf,0x2c,0x4a, + 0x7b,0xb,0xc8,0x3b,0x35,0xc2,0xb1,0x14,0x8f,0x7c,0x80,0xe5,0xfd,0x5,0xe4,0xe7, + 0xf3,0xcb,0x72,0xc8,0xb0,0xc4,0x97,0x70,0x7b,0x94,0xbc,0xe7,0xd1,0x6e,0x93,0x3f, + 0xf4,0xc2,0x3b,0x94,0xca,0x73,0xe,0x1,0x90,0xe5,0xc9,0x54,0x8d,0x22,0xfd,0xa3, + 0xd9,0x1d,0x25,0x3f,0xe,0xc3,0xec,0xae,0x81,0x60,0xd8,0x6f,0x1,0x49,0xd6,0xc3, + 0xf,0x85,0xb9,0xb1,0x62,0x29,0x17,0x7,0xed,0xaf,0x1f,0xf2,0xcb,0x19,0x2a,0x2e, + 0x88,0x17,0xab,0x98,0x74,0x8f,0xd3,0xff,0xbd,0x5,0x44,0x7f,0x36,0x8b,0xd6,0xf2, + 0x2a,0x1f,0x27,0x79,0xda,0x5b,0x40,0x7e,0x3b,0xbf,0xac,0xb4,0xb0,0x1f,0xb2,0xca, + 0xb1,0x2a,0x54,0xf1,0x84,0x72,0xbf,0xcd,0xae,0x9a,0x3a,0x96,0x79,0xa0,0x94,0x32, + 0x98,0xa8,0x43,0xc,0x35,0xeb,0xbe,0xb7,0x7e,0xc8,0x4a,0x81,0x7f,0xce,0xa8,0x7a, + 0x98,0x20,0x3a,0xe8,0x63,0x88,0x64,0x95,0x42,0x1b,0x1d,0xeb,0x80,0x21,0x51,0xf1, + 0x54,0xdd,0xd6,0x1,0xc9,0x87,0x2c,0x25,0x0,0x41,0xd5,0xdd,0xd7,0xa1,0x1e,0x43, + 0xc,0x0,0x69,0xa,0x8d,0xec,0x23,0x1e,0x55,0xa9,0x1e,0xa5,0xe3,0x10,0xa2,0xdd, + 0x23,0x20,0xff,0x3f,0x4d,0x10,0xd6,0xba,0x7b,0x5f,0xcd,0xb2,0x92,0x7b,0xef,0x15, + 0x32,0x66,0xb1,0xf7,0x6d,0xe8,0xa9,0xb8,0xdf,0x3f,0x1,0xd1,0xaa,0x55,0x88,0xa9, + 0x26,0x8d,0x7a,0x1e,0x1e,0x73,0xd4,0x4f,0x66,0xa9,0x2b,0x78,0x56,0x6a,0xea,0xdf, + 0x3,0x4b,0x9,0x91,0xed,0x8f,0x9c,0xcf,0x37,0xac,0xdd,0xb7,0x47,0x5f,0xfd,0xf8, + 0x6e,0xd,0xd3,0xa9,0x52,0x72,0xda,0x35,0x2,0xb3,0x20,0x37,0xdd,0x3c,0x31,0xb6, + 0x25,0x3d,0x93,0xf4,0xe2,0xf5,0xc5,0xd9,0x6e,0xcb,0x46,0x2c,0xb5,0xc,0xb9,0x2e, + 0x6a,0x11,0x36,0xa9,0x92,0x5f,0x4a,0xe2,0xdf,0xb9,0xb0,0x67,0x89,0x80,0xc4,0x6e, + 0x80,0x20,0x98,0xac,0x79,0x3a,0xb8,0xd,0x34,0x52,0x5b,0x88,0x63,0xc9,0x87,0xda, + 0x4e,0x9f,0x86,0xfc,0xaa,0xdd,0x1e,0x59,0x1e,0xda,0x8e,0xaa,0xb9,0x44,0xa8,0x78, + 0x28,0x20,0x4f,0x4a,0xfb,0xde,0x4e,0x5b,0x8d,0xbc,0xc9,0xb1,0x59,0x45,0x55,0x52, + 0x46,0xed,0x6f,0x49,0x38,0x92,0x8f,0x2e,0x44,0x57,0x12,0xd3,0x4a,0x87,0x35,0x1e, + 0x46,0x35,0x29,0x4d,0x1b,0x10,0xd3,0x44,0x99,0x27,0x14,0xce,0xe7,0x96,0x85,0x7c, + 0x20,0x95,0x91,0x68,0xfb,0x3f,0x47,0x27,0x77,0x56,0xea,0x6c,0x89,0xe7,0x9b,0xf1, + 0xa3,0x66,0xe1,0x92,0x52,0x27,0xd2,0x53,0xd,0xe9,0xdb,0x5a,0xb1,0x18,0xbb,0x69, + 0xa4,0xa,0x14,0x5b,0x21,0xa2,0xe,0x69,0xd5,0xa6,0x53,0xad,0xb7,0x87,0xcf,0x9c, + 0xb4,0x4d,0x88,0x4f,0x2e,0xe2,0x69,0xea,0xd8,0xe3,0x56,0x3b,0x64,0x5a,0xa5,0x3e, + 0x41,0x15,0xc7,0xc,0xe8,0x5a,0x9a,0x38,0x59,0x92,0x58,0xdb,0x2b,0x9,0xa6,0xce, + 0xa,0x6a,0x87,0xb,0xd0,0x72,0x27,0x59,0x6e,0x80,0x1e,0x6c,0xdb,0x20,0xa7,0xaa, + 0x4c,0xa5,0x20,0xdd,0x97,0x15,0x25,0x9,0x9,0x6e,0x7c,0xb5,0xf4,0x27,0x82,0x51, + 0x14,0xd4,0xee,0x4b,0x46,0x68,0xf5,0xc6,0x48,0x99,0x54,0x6b,0x91,0xd7,0x19,0x1b, + 0xd7,0x9b,0x9a,0xdc,0x7c,0x7a,0x13,0x3a,0xdb,0xb7,0x4d,0xcf,0x6d,0x66,0xdb,0x44, + 0x6d,0x5f,0xdd,0xb0,0x61,0x9e,0x8d,0xb4,0x79,0xaf,0xfc,0xf4,0xd8,0x1c,0xd8,0x6b, + 0xfc,0x9a,0x9a,0x4f,0x1f,0x68,0x58,0xd7,0xc2,0x54,0x1c,0xd4,0x58,0x1f,0x49,0xb7, + 0x1d,0xe6,0x5a,0xe2,0x65,0xd2,0x21,0x1,0x3c,0x55,0x76,0x47,0x73,0x4f,0x73,0x6a, + 0xc2,0x4a,0x7d,0xb9,0xf1,0x71,0x46,0x6e,0xc5,0xf1,0x3e,0x48,0x56,0x6d,0x21,0xaf, + 0xcd,0xa2,0xb,0x40,0x71,0x8d,0xb1,0xe6,0x9d,0x2b,0xb9,0x25,0x80,0xc7,0x4a,0x33, + 0xfb,0x1,0x6a,0x5f,0xc7,0x79,0x2b,0xd7,0x66,0x37,0xf,0x4d,0xb4,0x32,0x16,0x16, + 0xcf,0xe2,0x12,0x25,0xe3,0xeb,0x4e,0xd2,0x95,0xf1,0xf7,0x89,0x26,0x93,0x1,0xa1, + 0x6a,0x2b,0xb4,0x2c,0xb9,0xb7,0x93,0xb8,0xa9,0xfe,0x6,0x47,0x26,0xd8,0xfc,0xb5, + 0x2a,0xdb,0xaf,0xa5,0xb4,0xab,0x8f,0xb2,0xb8,0xef,0x32,0xb8,0xf9,0x15,0xf,0x2d, + 0x44,0x73,0x38,0x77,0x37,0xd3,0x52,0x75,0x2e,0xd3,0x43,0xb3,0x2f,0x26,0x9,0xc9, + 0xe2,0x39,0x70,0xd5,0x21,0x3e,0x8,0xbd,0xb2,0xf9,0xc6,0xf8,0x9f,0x92,0x68,0x56, + 0xd3,0xf6,0x9e,0xeb,0xc0,0x55,0x7d,0xe0,0x1c,0x33,0xb5,0xe3,0x78,0xcc,0xd9,0x66, + 0xbb,0xfd,0x80,0x7c,0xb8,0xd1,0x1,0x40,0x6e,0x23,0x6f,0x2a,0x80,0xf2,0xdc,0xe3, + 0x67,0xe3,0xa3,0x93,0xc8,0x84,0xf2,0xc3,0x23,0x75,0x5c,0x9b,0x90,0xca,0x2d,0xfb, + 0xfc,0x5e,0xb1,0x21,0x45,0x67,0xa,0x78,0xe,0xfe,0x55,0xd6,0xc7,0xe,0xdc,0xdb, + 0x5c,0x2,0x9f,0x24,0x9d,0x62,0x4e,0xa2,0xb2,0x55,0xf3,0x93,0x3b,0x55,0xdc,0x35, + 0xfc,0xd5,0x93,0xc1,0x22,0xd5,0x44,0xc7,0x45,0x72,0x18,0x3a,0x79,0xb,0xc4,0xa8, + 0x16,0xfa,0xcc,0x61,0xdf,0x78,0x8c,0xf9,0x91,0x96,0x18,0x18,0x58,0x86,0x67,0xba, + 0x83,0xd7,0x55,0xf,0xdf,0x1a,0x5f,0x83,0xae,0x4,0x1f,0xc1,0xfd,0xbf,0xee,0x78, + 0xd,0x2f,0xfd,0x6a,0x6d,0xe1,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82, + // /home/maemo/tietoopcom/resources/contactmale.png + 0x0,0x0,0xf,0xd1, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xc,0x25,0x85,0xa9,0xc6,0xe0,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0xf,0x2c, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9a,0x59,0x8c,0x64,0xe7,0x55,0xc7,0xff,0xdf, + 0x76,0xb7,0x5a,0x7b,0xa9,0xae,0xee,0x9e,0xcd,0x9e,0x19,0xdb,0x93,0x19,0x3b,0x38, + 0x9e,0x38,0xb1,0x27,0x96,0x6c,0x29,0x52,0x12,0x12,0x45,0x2,0x41,0x90,0x40,0x41, + 0x11,0x12,0x81,0x37,0x44,0x80,0x7,0x24,0x24,0x92,0x7,0x5e,0x78,0x20,0xf,0xe4, + 0x1,0x21,0x96,0x87,0x3c,0x24,0x88,0x8,0x62,0x21,0x44,0x70,0x40,0x59,0x8,0x8e, + 0x92,0x90,0xc1,0xb1,0x3d,0x89,0xd7,0x59,0xec,0x59,0x7a,0xa6,0xab,0xab,0xba,0xea, + 0xd6,0xdd,0xbe,0xfb,0x2d,0x87,0x87,0xaa,0xe9,0x71,0x12,0x47,0x88,0x38,0x6e,0xbb, + 0x4d,0xff,0xa5,0x2b,0x75,0x2d,0x7d,0x4b,0xf7,0x77,0xcf,0xff,0x9c,0xf3,0x9d,0xef, + 0x2,0xfb,0xda,0xd7,0xbe,0xf6,0xb5,0xaf,0x7d,0xed,0x6b,0x5f,0xfb,0xda,0xd7,0x9b, + 0x51,0x6c,0x37,0x7f,0xec,0x33,0x9f,0xf9,0x95,0xf0,0x89,0xef,0xf9,0x56,0x2c,0x16, + 0xd7,0x2c,0x93,0x47,0x39,0x67,0xeb,0xce,0xf9,0x6,0xe3,0x60,0xe4,0x51,0x7a,0xb8, + 0x2b,0x75,0x55,0x5d,0x88,0xe3,0xfa,0xea,0x89,0x13,0x3a,0xfb,0xc4,0x27,0xbe,0xa8, + 0xdf,0xa2,0x40,0x22,0xf6,0x37,0x7f,0xf6,0xb,0xd1,0xc5,0x8b,0xc5,0x87,0x2a,0xb6, + 0xf8,0xbe,0xd2,0x45,0x27,0x88,0x85,0x3d,0xef,0x5d,0xc3,0x7b,0xcf,0x89,0xc0,0x0, + 0x72,0xde,0xa3,0x2,0xe9,0xcd,0x48,0x56,0x3f,0x58,0x6e,0xe6,0x5f,0x3a,0xd8,0x91, + 0x5f,0xfe,0xf8,0x1f,0xff,0x43,0x1,0x80,0xde,0x32,0x40,0x3e,0xfb,0x57,0x7f,0xca, + 0xcf,0x3d,0xf5,0xdd,0x55,0x29,0xe8,0x43,0xd6,0xa9,0x8f,0x55,0x46,0xde,0x5b,0xb9, + 0x20,0xf1,0xc4,0x99,0xf7,0x1e,0x44,0x4,0x80,0xc0,0x18,0x87,0x10,0x12,0xc,0x8e, + 0x42,0xa1,0xb,0xc9,0xca,0xb3,0x2,0xe6,0xb3,0xc6,0x89,0xc7,0x8e,0xdd,0x79,0xfa, + 0xda,0xef,0xfc,0xc1,0x1f,0xf9,0xdd,0x0,0x22,0x5f,0xef,0x1f,0x38,0x77,0xf6,0x1b, + 0xab,0x95,0xe7,0x1f,0xad,0x8d,0xfa,0x58,0x65,0xea,0xe3,0x61,0x1c,0x5,0xdd,0xee, + 0x2,0x84,0x54,0x70,0xce,0xef,0xdc,0x7c,0xc6,0x39,0xa4,0x90,0x30,0xd6,0xb0,0x74, + 0xb2,0xd5,0x98,0x4c,0xb2,0x77,0x4b,0xee,0x5b,0x81,0x30,0xdd,0xb,0x2f,0x7c,0xfb, + 0xef,0x0,0x5c,0xdd,0xd,0x20,0xe2,0xf5,0x3c,0xf9,0xdf,0xfe,0xc9,0x7b,0x93,0x2b, + 0x5b,0xf6,0xfd,0xd3,0x82,0x7f,0xbc,0xd0,0x74,0x8f,0x43,0x24,0xc3,0xb8,0x8d,0x24, + 0x8e,0xa1,0x94,0x82,0x94,0x1c,0x4a,0x49,0x30,0xc6,0xa1,0x6b,0x8b,0xa2,0xd0,0x98, + 0xa4,0x39,0x46,0xe3,0x1c,0x79,0xae,0xa5,0xf7,0xae,0x4f,0xde,0x2e,0x26,0xb2,0xbe, + 0xfe,0xf1,0x5f,0xbc,0xfd,0xfc,0x3f,0x7d,0xf5,0xa2,0xd9,0xb3,0x40,0xfe,0xe2,0xf, + 0xdf,0x1b,0xbe,0xbc,0x55,0x3e,0x9c,0x16,0xea,0xd7,0x47,0x53,0xff,0x2e,0xcf,0x92, + 0xa8,0xdd,0x59,0x40,0x9c,0xc4,0x0,0x8,0xd6,0x1a,0x58,0xeb,0x60,0x8c,0x41,0x96, + 0xe5,0x18,0x8d,0x46,0xd8,0x1a,0x6c,0x62,0x32,0xde,0x46,0x5d,0x55,0xf0,0xde,0x43, + 0xd7,0x8e,0x19,0x53,0x77,0x2,0xee,0x94,0xb7,0x7e,0xfc,0xfb,0xbf,0xf1,0xe0,0xf9, + 0xcf,0xff,0xcb,0x39,0xda,0x93,0x96,0x79,0xe2,0x45,0xdd,0x28,0x9c,0x7f,0xd0,0x78, + 0x77,0xc6,0xfa,0xa8,0x19,0xab,0x8,0x4a,0x29,0x70,0x46,0x30,0x66,0x76,0xa3,0x75, + 0x5d,0x23,0x9d,0x4c,0x91,0x67,0x29,0x40,0x15,0x1a,0x91,0xc5,0x52,0x93,0xe0,0x49, + 0x60,0x94,0x2,0x9b,0xa3,0x1a,0x64,0x4d,0xc3,0x19,0xbc,0xc7,0x18,0xf6,0x6c,0xf8, + 0xf4,0x95,0xaf,0x3,0xc8,0xf7,0x1c,0x90,0x4f,0x7e,0x12,0xfc,0x89,0x6f,0x8d,0x56, + 0xa6,0x55,0x7c,0x92,0x8,0xbd,0x28,0x89,0x18,0xab,0x34,0x86,0xa3,0x6d,0x70,0xce, + 0xc1,0xc0,0x0,0xe,0x14,0x79,0x81,0xd1,0x70,0xb,0xa1,0x28,0x71,0xd7,0xed,0x31, + 0xee,0x3d,0xfd,0x20,0xba,0xeb,0xf,0x20,0x4f,0xaf,0xe2,0xc5,0xa7,0x1e,0xc5,0x73, + 0xe7,0x3d,0x36,0x6,0x9e,0xd,0xc7,0xae,0x97,0x15,0xee,0x58,0x23,0x14,0x77,0x0, + 0xf8,0xde,0x9e,0x3,0x52,0x5f,0x3a,0x16,0x4a,0x11,0x3d,0xa0,0x2b,0x3a,0x91,0xe6, + 0xb9,0xe0,0xa9,0x3,0x30,0x2,0xcd,0x8b,0x9a,0xe0,0x1c,0x8c,0x31,0x38,0x6b,0x20, + 0x79,0x85,0x13,0x27,0x63,0xbc,0xff,0x97,0x3f,0x5,0x11,0xad,0xa2,0xd2,0x25,0x4, + 0x2d,0x63,0xf9,0xd4,0xed,0x10,0xdd,0xb3,0xe8,0x5f,0x78,0xc,0xff,0xf5,0xfd,0x89, + 0x1c,0xa6,0xee,0x6d,0x5b,0x13,0xf5,0x73,0x9f,0xfb,0xd4,0xdd,0xcf,0xfc,0xda,0xa7, + 0xce,0xbd,0x6e,0xfd,0x9,0x7f,0x3d,0x4e,0x1a,0xf0,0xb0,0xc7,0x21,0x1e,0xb2,0xd6, + 0x1c,0xc8,0xf3,0xc,0x64,0xc6,0xe8,0x84,0x29,0xfa,0xcd,0x29,0x7a,0x8d,0x29,0x12, + 0x31,0x2,0xea,0x4d,0xe8,0x62,0xb,0x92,0x55,0x78,0xdb,0x3d,0xf,0x23,0x69,0x2c, + 0x83,0x88,0xe0,0xbd,0x87,0x73,0xe,0xa6,0x36,0x98,0xd8,0x35,0xa0,0xf5,0xe,0x73, + 0x60,0x81,0x10,0x91,0x5d,0xd7,0xda,0xde,0x7d,0x61,0xe0,0x8f,0xed,0xb9,0x8,0x21, + 0x72,0xcb,0x70,0xf6,0x78,0x55,0x16,0xad,0x40,0x5a,0xdc,0xff,0xf6,0xc3,0x38,0xf3, + 0xe0,0x19,0xc4,0x71,0xc,0xef,0x9,0xd3,0xc2,0x62,0xe3,0xe5,0x67,0xf0,0xfc,0x73, + 0x3f,0x40,0x9a,0x5b,0x98,0x2a,0x83,0xb1,0x6,0xce,0x1,0xde,0x7b,0x58,0x6b,0xa1, + 0xb5,0x46,0x59,0x6a,0xd4,0x38,0xac,0x5a,0xc9,0x22,0x96,0x93,0xcb,0x4d,0x41,0x7e, + 0x65,0x63,0x68,0xbb,0x7f,0xfd,0xe9,0x77,0x8b,0xdf,0xfc,0xbd,0x6f,0xbb,0x3d,0x3, + 0x84,0x41,0xd6,0x8a,0xbb,0x26,0x39,0x2d,0xd6,0xba,0x1c,0xf,0x9d,0x79,0x4,0x67, + 0x3e,0xf8,0xbb,0x70,0xd6,0x0,0x20,0x78,0xf,0x94,0xe9,0x55,0x5c,0x7a,0xfe,0x3b, + 0xd8,0x4e,0x2d,0x16,0x96,0xf,0xc0,0x7a,0x9,0xe7,0x2c,0xac,0x35,0xa8,0x8d,0x41, + 0x59,0x69,0xe4,0x79,0x81,0xa2,0xf4,0xe8,0xb2,0x0,0xed,0xc0,0xb1,0x40,0x70,0x4, + 0x9c,0xe0,0xff,0x43,0xec,0xad,0x8,0x79,0xea,0x4a,0xf7,0xca,0x4a,0xbb,0xf0,0x7, + 0xdb,0x60,0x87,0xe,0xad,0xe2,0xe8,0x3d,0x1f,0x44,0x59,0x1a,0x58,0x6b,0x1,0x10, + 0x88,0x0,0x27,0x7a,0x58,0xbd,0xe3,0x3,0x58,0x32,0x1e,0xb5,0x31,0xa8,0x6b,0xbd, + 0x3,0xa3,0xd2,0x35,0xf2,0xa2,0x44,0x3a,0xcd,0x60,0xac,0xc0,0x9a,0x30,0xf0,0x11, + 0xa3,0xc5,0xb6,0xca,0xf,0x2d,0xb3,0xcb,0xbf,0xf5,0xe7,0xdf,0x74,0x7b,0xa,0x48, + 0xb7,0xc5,0x99,0x4a,0xd6,0x9e,0xbe,0xef,0xd4,0xf2,0xa9,0x43,0xf7,0xfd,0x52,0xe2, + 0xd5,0xa,0x2a,0x6d,0x77,0xca,0x2d,0x11,0xe0,0xc9,0xc3,0x5a,0x7,0x6b,0x2d,0x8c, + 0xb5,0x30,0xb6,0x86,0xae,0x6b,0x94,0x65,0x89,0x3c,0x2f,0x91,0x4e,0xb,0xa4,0xd3, + 0x1c,0x40,0x80,0x7c,0xf1,0x1,0xac,0xb7,0xdb,0x17,0x82,0x48,0x3c,0xc6,0xf8,0xd3, + 0x57,0xf7,0x5c,0xe,0x81,0xb9,0xa2,0x2e,0xe4,0xef,0xfb,0xce,0xc1,0xc3,0x87,0xde, + 0xb9,0x12,0xac,0x9d,0xaa,0xb4,0x16,0x8c,0x71,0x18,0x53,0xcf,0x93,0xc,0xe0,0x68, + 0x96,0x3c,0x6f,0xd9,0x44,0xa3,0xac,0x4a,0x4c,0xf3,0x12,0xe3,0x34,0xc3,0x78,0x92, + 0x23,0xcb,0x4a,0x48,0x61,0x31,0xaa,0x5a,0xa0,0xee,0x99,0xa7,0x65,0xd8,0x7c,0xe6, + 0x93,0x9f,0x7e,0xd4,0xef,0x39,0x20,0x8f,0x5e,0xf7,0xe9,0x3b,0xd6,0xf2,0xb,0xe4, + 0xeb,0x6f,0x6a,0x9d,0xb5,0xd3,0x74,0xfb,0x36,0xc6,0x66,0x9,0x93,0x88,0x0,0xa2, + 0x5b,0x40,0xac,0x41,0x6d,0x6b,0x14,0x65,0x85,0x34,0x2b,0x30,0xdc,0x4e,0xb1,0x39, + 0xd8,0xc6,0x78,0x3b,0x85,0xae,0xc,0x1c,0xd3,0xba,0x4a,0xfc,0x4b,0x2e,0xb1,0xcf, + 0x4a,0x5e,0x15,0x7b,0x72,0x71,0xb7,0xfd,0xdd,0x97,0x6a,0xf3,0xfe,0xfb,0xce,0x41, + 0x30,0x56,0xea,0x7c,0x65,0x6b,0xeb,0xfa,0x41,0x21,0x85,0x94,0x52,0x1,0x0,0xbc, + 0x73,0x70,0xe4,0xe0,0xac,0x43,0x6d,0x6a,0x94,0xba,0x46,0x96,0x15,0x18,0x8d,0xa7, + 0x18,0x6c,0x8d,0x71,0xe3,0xc6,0x8,0x93,0x49,0x6,0xef,0x1d,0x3c,0xab,0x37,0xaa, + 0xc2,0xfe,0xab,0x6d,0x54,0x5f,0xa1,0xb2,0xb5,0xbd,0x57,0x57,0xbb,0xfe,0x1b,0x8f, + 0x7d,0x71,0xe3,0x6d,0xf7,0xde,0x59,0xc,0x36,0xaf,0x3d,0x58,0x16,0xd5,0x7b,0xac, + 0x43,0xaf,0xd9,0xee,0x72,0xc9,0x39,0x3c,0x39,0x78,0xef,0x61,0xac,0x45,0x59,0x6a, + 0x4c,0x8b,0xa,0x93,0xf1,0x14,0xc3,0xd1,0x4,0x9b,0x83,0x6d,0x6c,0xd,0xc6,0xd0, + 0xba,0x82,0xe0,0x1e,0x9c,0xd5,0x37,0xaa,0x42,0x7f,0xdd,0xbc,0xf0,0xe8,0xd9,0xcf, + 0x7f,0xb,0xe5,0x9e,0x5e,0xed,0x9e,0x7d,0xfc,0x71,0xdf,0x5f,0x59,0x3d,0x54,0x55, + 0xf6,0xb6,0xb2,0xa6,0x85,0x4a,0xbb,0x30,0x2f,0x34,0xb2,0x2c,0xc7,0x34,0x2b,0xb0, + 0x3d,0xc9,0x30,0x1c,0xa5,0x18,0xc,0xb6,0x71,0x63,0x73,0x88,0xeb,0x37,0xb6,0xb0, + 0xb5,0x35,0x41,0x5e,0x54,0x60,0xe4,0x10,0x8,0x4d,0x81,0x70,0x67,0x39,0x8a,0x7f, + 0xfe,0xf2,0xe3,0x2f,0xbe,0xf4,0x56,0x98,0x87,0xb8,0x4b,0xe7,0x9f,0x3f,0xd7,0x5b, + 0xf7,0xff,0x39,0xad,0x6c,0x6f,0x30,0x1a,0xb7,0x95,0x4a,0x40,0xe0,0x60,0x44,0xb0, + 0xde,0xa1,0xaa,0x6a,0x14,0x45,0x89,0x34,0xcd,0x90,0xa6,0x39,0x74,0x6d,0xc0,0x18, + 0x87,0x94,0x7e,0xca,0x41,0xdf,0x97,0xcc,0x7d,0x25,0xe,0x96,0x77,0x5,0xc6,0x6e, + 0x0,0xf1,0xc3,0xe1,0xb,0x97,0x5a,0xbd,0xee,0xf7,0x6d,0xae,0x1f,0x2a,0x4d,0x76, + 0x97,0x10,0x4b,0xb0,0x46,0xc2,0xd4,0x6,0xc6,0xd6,0xa8,0xad,0x9d,0xfd,0x5d,0x1b, + 0x58,0xeb,0x21,0x4,0x47,0xa0,0x38,0x38,0x37,0x23,0xce,0xed,0xd7,0x42,0x9f,0x7e, + 0xb5,0xfb,0x6f,0x72,0xf8,0x96,0x0,0x72,0xb8,0x73,0xcf,0xc2,0xc2,0x81,0xf1,0xaa, + 0x91,0x9b,0xb,0x9c,0xeb,0xb0,0xd1,0x6a,0x61,0x79,0x61,0x11,0x55,0x11,0xe2,0xea, + 0xd5,0xeb,0xd8,0x1e,0xa7,0x28,0xcb,0xa,0xd6,0x5a,0x4,0x2a,0x44,0xbb,0xdd,0x46, + 0xab,0x1d,0x41,0xaa,0x12,0xb5,0x99,0x80,0xf9,0xd4,0x95,0x93,0xab,0xcd,0x27,0xfb, + 0x2f,0x1c,0x6e,0xdf,0x68,0x4f,0x52,0xa4,0xa3,0xbd,0x6,0x84,0x3d,0xfc,0xf0,0xc3, + 0xe2,0xe4,0xc9,0x93,0xad,0x83,0x2b,0xc7,0xfa,0x37,0x8a,0x97,0x8f,0x5f,0x1e,0x3c, + 0x7f,0x6a,0x2b,0xdb,0x7c,0x17,0xe3,0xd5,0xfa,0xc2,0xb2,0xc2,0xa9,0x3b,0xf,0x82, + 0xb9,0x45,0x24,0x71,0x0,0x47,0x16,0x93,0x34,0x83,0xb5,0xe,0xad,0x46,0x13,0xfd, + 0xfe,0xa,0x5a,0x6d,0x8e,0xa2,0xbe,0x84,0xf1,0x74,0xd2,0xf1,0x36,0x7f,0x40,0xa8, + 0x4e,0xb8,0x12,0x77,0x2e,0x2f,0x1d,0x3d,0x70,0x1e,0xc0,0xf9,0xba,0x6e,0x6c,0x9c, + 0x3d,0xfb,0xef,0x19,0x80,0x37,0xf7,0x5a,0xa6,0x8f,0x7e,0xe3,0x1d,0xef,0xbd,0xff, + 0xe4,0xa9,0x7b,0x8f,0x9f,0x38,0x7a,0xf2,0xc8,0xe1,0xfe,0x81,0x95,0xa5,0xde,0x24, + 0x5a,0x4f,0x5e,0x66,0x47,0xfc,0x79,0x7b,0x68,0x73,0xb0,0xb1,0x5c,0x54,0x43,0xa8, + 0x40,0xe3,0x40,0x6f,0x11,0x51,0x14,0xa2,0xb7,0xbc,0x84,0x2c,0x2f,0x0,0xe2,0x88, + 0xe3,0x18,0x71,0x12,0x20,0x2b,0xaf,0xe1,0xfc,0x95,0x14,0xa5,0xdd,0x6a,0x86,0xa1, + 0x7a,0x7b,0x6b,0x79,0x69,0x5d,0xc9,0x70,0xb,0x5e,0x5c,0x33,0xa5,0xb9,0x96,0xe, + 0xb2,0x8d,0xfb,0xef,0xbf,0xff,0xc5,0x74,0xb3,0x7e,0xe2,0xb9,0x97,0x9e,0xbc,0xf4, + 0x66,0x4,0xc2,0x4f,0x1f,0x3d,0xdd,0xea,0x1c,0xec,0xdc,0xb7,0xb0,0xde,0xf8,0x40, + 0xd4,0xd,0x1f,0xe,0x9b,0xea,0x58,0xd4,0xe,0xc2,0x5e,0xb2,0x20,0x11,0xde,0x26, + 0xd3,0x6a,0x2c,0x6,0xc3,0xeb,0xfc,0xf2,0xc6,0xcb,0x78,0xf6,0xfc,0xf7,0xa0,0x64, + 0x8c,0x66,0xab,0x87,0x3b,0xef,0xec,0xc3,0x39,0xf,0xc1,0x3,0x10,0x3c,0xa6,0xf9, + 0x8,0xa3,0x4b,0xd7,0x31,0x1c,0x5f,0x41,0x5e,0xa6,0x32,0x6e,0xf7,0x96,0xdb,0x2b, + 0xcd,0x45,0x15,0x44,0xc7,0x9d,0x81,0x2d,0xb6,0xb,0x1b,0x94,0x41,0x1a,0xd5,0xee, + 0x29,0x22,0x7a,0xf4,0x9d,0xf2,0x9d,0x5f,0xfa,0xee,0xf9,0xc6,0x6,0xf0,0x75,0xfb, + 0xa6,0x1,0xb2,0xba,0x7a,0x7c,0x49,0x2c,0x4,0x8f,0xb4,0x96,0xe3,0x9f,0x5f,0x38, + 0xd0,0x7c,0x77,0xab,0x1f,0xdf,0xb5,0xb0,0xda,0x16,0xed,0x6e,0x13,0xc4,0x8,0x61, + 0x23,0xc4,0x68,0xb2,0x8d,0x8b,0x2f,0x5f,0xc4,0xa5,0x97,0x5e,0xc2,0x93,0xcf,0x7c, + 0x7,0xd3,0x3c,0xc5,0xca,0xd2,0x21,0x34,0x93,0x5,0x70,0x21,0xc0,0x99,0x84,0xae, + 0x4b,0x6c,0x8d,0xae,0xe1,0xe2,0x95,0x67,0x30,0x18,0x5e,0x6,0x97,0x84,0x28,0x8e, + 0x59,0xdc,0x4a,0x84,0xa,0x2,0xe1,0x2c,0x29,0x2e,0x0,0xc6,0x59,0x8b,0x73,0x6a, + 0x79,0x78,0x55,0xd4,0x65,0x78,0xdb,0xfa,0xf5,0x2f,0x5f,0xba,0x86,0xe7,0xde,0x1c, + 0x40,0x3e,0xf2,0x11,0xb1,0xf6,0xe2,0xa5,0xe3,0xcd,0x4e,0xf2,0xe1,0xc6,0x62,0xf2, + 0xc1,0xee,0x5a,0x73,0xa9,0xbd,0x1a,0xa3,0xf4,0x5,0x6,0xa3,0x4d,0x8,0x21,0x1, + 0xc6,0xd0,0x6a,0x35,0xb1,0xba,0xb6,0x86,0xe1,0xf6,0x10,0x83,0xf1,0x35,0x8c,0xa7, + 0x43,0x34,0xe2,0x36,0x92,0xa8,0x35,0xfb,0xe,0x18,0x74,0x5d,0x20,0x2b,0x26,0x28, + 0xab,0x29,0x3c,0x39,0x74,0xdb,0x4b,0x48,0x92,0x6,0xe0,0x19,0x4c,0x65,0x61,0xbd, + 0x3,0x71,0x42,0xd4,0xd,0x40,0x68,0xb4,0x6b,0x6d,0x1f,0xaa,0xa6,0x5a,0x35,0x1a, + 0x72,0x70,0xfa,0xf4,0xe9,0xb,0x67,0xcf,0x9e,0xfd,0x99,0x4c,0xe4,0x5f,0x4b,0x63, + 0xc6,0xef,0x6e,0xb5,0x7a,0xbd,0xc5,0xd6,0x99,0x66,0x37,0xf9,0x70,0xff,0xc8,0xd2, + 0xd1,0xd5,0xdb,0x96,0x10,0xb6,0x2,0x18,0x53,0x23,0x2f,0xb,0xe4,0x65,0x86,0xbc, + 0xcc,0x50,0x99,0xa,0x1e,0x1e,0xc4,0x8,0xb5,0xa9,0x91,0xe5,0x53,0x64,0x79,0x8a, + 0x74,0x3a,0xc4,0x24,0x1d,0x62,0x3c,0xdd,0xc2,0x34,0xdb,0x86,0xb6,0x5,0x82,0x48, + 0x62,0x71,0x79,0x9,0x2b,0x2b,0x7d,0xb4,0xdb,0x5d,0x48,0x29,0xe1,0xbd,0x87,0xf7, + 0xb3,0x35,0x1d,0x13,0xc,0x60,0x80,0x37,0x5e,0xea,0xa2,0x6e,0x10,0xd1,0xe5,0x5a, + 0xd7,0x17,0x7,0x83,0x5e,0xe,0xc,0xdc,0x1b,0x16,0x21,0x6b,0x6b,0x6b,0x51,0xec, + 0xc5,0xd1,0x38,0x9,0xee,0xe9,0x2c,0x27,0xcb,0xcd,0xc5,0x6,0xb8,0xe4,0xd0,0x5a, + 0xc3,0xe8,0x59,0x4f,0x71,0x73,0x24,0x8,0x0,0x8d,0x66,0x8c,0xc3,0x87,0xf,0x21, + 0x50,0x1,0x5a,0xad,0x4d,0xe4,0x59,0x6,0xad,0x35,0xbc,0x23,0x30,0x6,0x8,0x21, + 0x10,0x4,0x1,0x1a,0xad,0x26,0x3a,0x9d,0x2e,0x9a,0xad,0x16,0xa4,0x54,0xb3,0x73, + 0xcc,0xcf,0xe3,0x3d,0x81,0x18,0x40,0x8c,0x20,0x63,0x1,0xd5,0x94,0x4d,0x5b,0x9b, + 0xbb,0x74,0xe9,0xef,0x59,0x6b,0xba,0xc9,0x46,0x86,0xad,0x37,0xc,0x48,0xec,0xe3, + 0x26,0x87,0xbb,0x8b,0x4b,0x7e,0x32,0x6a,0x85,0xdd,0xa4,0x15,0x82,0x71,0x36,0x1b, + 0xfd,0x15,0x15,0x88,0x66,0x17,0x9,0x22,0x10,0x0,0xc6,0x18,0x92,0x24,0x41,0x7f, + 0xb5,0x8f,0x66,0xab,0x9,0xad,0x2b,0x18,0x63,0x67,0xbb,0x77,0x44,0x60,0x8c,0x81, + 0x73,0xe,0xa9,0x14,0x94,0xa,0x20,0xa4,0x0,0x79,0x9a,0x41,0xf0,0x1e,0xce,0x79, + 0x58,0xe3,0x66,0x53,0x60,0x22,0x88,0x80,0x43,0x45,0x32,0xac,0x24,0x3b,0x6,0xe0, + 0x6e,0xa,0xf4,0x73,0xc0,0x1b,0x8,0xc4,0xeb,0x30,0xb6,0xb5,0xbd,0x83,0x81,0xee, + 0x68,0x74,0xa2,0x28,0x69,0x87,0x60,0x1c,0x28,0x26,0x5,0xa6,0x69,0x6,0xa5,0x2, + 0x34,0x5b,0x4d,0x70,0x21,0x60,0xad,0x85,0xbb,0x19,0x29,0x8d,0x4,0x49,0x12,0xcf, + 0xef,0x3a,0xed,0xd8,0xc1,0x3b,0xbf,0x33,0x60,0xb6,0xd6,0xc1,0x79,0x82,0x27,0xf, + 0xc2,0xc,0xa8,0xad,0x2d,0xaa,0x42,0x83,0x9,0x6,0x15,0x2a,0x88,0x50,0x20,0x6c, + 0x28,0x96,0x9,0x76,0xd0,0x39,0x77,0x82,0x9,0x5a,0x7c,0x43,0xa7,0xee,0x24,0x5c, + 0xc,0xc2,0x3a,0x13,0x6c,0xbd,0xd9,0x4e,0x64,0xa3,0x1d,0x81,0x73,0x86,0x3c,0xcb, + 0x31,0x1a,0x6e,0x23,0x9b,0x66,0xf0,0xde,0x83,0x31,0xb6,0x63,0x1d,0x22,0xda,0xb9, + 0xc0,0x9b,0x83,0xa2,0x9b,0x2f,0x8,0xb7,0x3e,0x23,0x60,0xc7,0x2a,0x44,0xc,0x44, + 0x80,0xd1,0x16,0x65,0x56,0xa2,0xca,0x35,0xbc,0xf7,0xb3,0x8,0x69,0x28,0xc6,0x15, + 0x5f,0x60,0x8c,0x1d,0xe2,0xc4,0xda,0x6f,0x24,0x10,0xd6,0x5e,0x8,0xbb,0x32,0x96, + 0x4b,0x61,0x12,0x84,0x61,0xa2,0xa0,0x42,0x5,0x30,0x86,0x3c,0x2f,0x30,0x1a,0x8e, + 0x90,0x65,0xb7,0x80,0xdc,0x9a,0xc6,0x13,0x9c,0xf5,0xb0,0x66,0xb6,0x7e,0xa9,0xeb, + 0x7a,0x76,0x18,0x3,0x63,0x2c,0x8c,0xb1,0xb3,0x68,0x72,0xb3,0xf1,0x0,0xf9,0x5b, + 0x88,0xac,0xb5,0xd0,0x65,0x8d,0x5a,0xd7,0xf0,0x9e,0xc0,0x38,0x83,0x90,0x1c,0x2a, + 0x54,0x92,0x7,0x7c,0x59,0xc6,0xa2,0xdf,0xeb,0xf5,0x9a,0x6f,0x8,0x90,0x7e,0xbf, + 0x9f,0x34,0x16,0x1a,0x6b,0xcd,0x85,0xb8,0x13,0xb7,0x22,0x30,0xc1,0xe1,0x3d,0xc1, + 0x39,0x87,0xa2,0x28,0x31,0x49,0x53,0x14,0x45,0x31,0x7,0x72,0xb,0xc6,0x4f,0x3c, + 0xfc,0xab,0xbd,0xef,0xe7,0xc7,0xec,0xb5,0x73,0xe,0xd6,0x58,0x58,0xe3,0xe6,0xf6, + 0x9a,0xc1,0xe2,0x1,0x87,0x8c,0x64,0x53,0xc5,0xf2,0x50,0x88,0x70,0xf5,0xb5,0x8e, + 0x34,0x7e,0x1a,0x20,0x22,0x8e,0xe3,0xe5,0xb0,0x29,0xf,0x26,0xed,0xa8,0x1d,0x37, + 0x23,0x70,0xc1,0x61,0x6a,0x8b,0xaa,0xd4,0xc8,0xf3,0x1c,0x45,0x9e,0x43,0xeb,0x7a, + 0x6e,0x93,0xd9,0x50,0x19,0x3f,0x76,0xc1,0xaf,0xf4,0xdf,0x2b,0xf,0x9a,0x7f,0x77, + 0xfe,0x7f,0xf3,0xf,0xbc,0xf3,0x30,0xda,0xc0,0x54,0x6,0xd6,0x18,0x38,0xeb,0xe0, + 0x9,0xe0,0x92,0x83,0x87,0x3c,0x84,0xa2,0x3e,0x7,0xef,0x3,0x8,0x77,0x1b,0x88, + 0x94,0x24,0xd7,0xb8,0x60,0x7,0xe3,0x24,0x6c,0x46,0x8d,0x10,0x5c,0x70,0xd4,0xb5, + 0x41,0x51,0x14,0xa8,0xca,0x6a,0xb6,0x9c,0x37,0xb3,0xc3,0x3a,0x37,0xcf,0x1d,0xaf, + 0x12,0x25,0x78,0xb5,0xc8,0xf8,0xf1,0xc7,0x85,0x3c,0x1,0xde,0x7a,0x98,0xda,0xce, + 0xa0,0x68,0xb,0x6b,0x2c,0x8,0x4,0x26,0x19,0xb8,0x62,0xa,0x8c,0x16,0xd,0x33, + 0xbd,0x16,0x5a,0xf1,0x2e,0x57,0x99,0x9e,0x22,0x26,0x56,0x18,0x67,0x6b,0x51,0x23, + 0x68,0xc4,0xad,0x19,0x10,0x6b,0x66,0x39,0xc1,0x5a,0x3b,0x1b,0xf,0xd6,0x6,0xba, + 0xd2,0x88,0x22,0x3b,0x4b,0x8e,0x3b,0x37,0xff,0x7f,0xb3,0xca,0x4d,0x20,0xf3,0xc8, + 0xf0,0x4,0xe7,0x3c,0x9c,0xf5,0x70,0x66,0x6,0xf7,0xa6,0x6d,0x0,0x82,0x50,0x1c, + 0x22,0xe0,0x8a,0x71,0x5a,0x72,0xde,0xf5,0x2c,0x6c,0xbc,0xcb,0x11,0x52,0x4b,0x67, + 0x6c,0x87,0x80,0xc5,0x20,0x9,0xa3,0xb8,0x19,0x82,0xb,0xb6,0x53,0x3a,0x6f,0x5a, + 0xa3,0xae,0x6b,0x14,0x79,0x89,0x5a,0xeb,0xf9,0x63,0x53,0x3f,0xe2,0xc,0xfc,0x84, + 0x7c,0xf2,0x23,0xef,0x7b,0xef,0xe1,0xea,0x59,0x44,0x78,0x37,0x6f,0xd2,0xe6,0x25, + 0x1b,0xc,0x90,0x1,0x87,0x8c,0x44,0x0,0xc6,0x96,0xac,0xb5,0x3d,0xf,0x1f,0xed, + 0x32,0x10,0x2f,0x9c,0xf3,0x4d,0x30,0x74,0x82,0x58,0x86,0x61,0x12,0x40,0x48,0xfe, + 0x43,0xed,0xb5,0x27,0x82,0xd6,0x1a,0x45,0x51,0xa0,0x36,0xf5,0xff,0xd1,0x32,0xaf, + 0x8c,0x1c,0xc0,0x59,0x3f,0x9f,0xa8,0xb9,0x59,0x5f,0xb2,0x93,0x70,0x67,0xe7,0xe4, + 0x4a,0x40,0x28,0x21,0xc1,0xb0,0x4c,0x60,0xaf,0x19,0xc8,0x4f,0x61,0x19,0x2f,0xe1, + 0xfd,0x22,0x18,0x2d,0x87,0x49,0xa8,0xe2,0x56,0x4,0xc6,0x19,0x6a,0x53,0x43,0x6, + 0x12,0x41,0x18,0x20,0x8,0x15,0x18,0x67,0x70,0x7e,0x56,0x42,0x67,0x7b,0x31,0x6c, + 0x27,0x61,0xee,0x24,0xce,0x1f,0x8b,0x1a,0xfc,0xb0,0x75,0x8,0xf0,0x8e,0x60,0x6b, + 0x7,0xef,0x1d,0xb8,0xe0,0x90,0x81,0x84,0x90,0x1c,0x4c,0x30,0x30,0xc1,0xc1,0x14, + 0x20,0x23,0x29,0x18,0x63,0x5d,0x22,0xea,0x13,0x68,0xb7,0x73,0x88,0x57,0x9e,0xfb, + 0x55,0xef,0x69,0x5d,0x2a,0x21,0x55,0x28,0xe1,0x3d,0x81,0xb,0xe,0x21,0x5,0xa2, + 0x24,0x42,0xb3,0xd5,0x80,0x92,0x1,0xa4,0x52,0x3b,0x8d,0xd9,0xab,0x55,0x99,0x9f, + 0x54,0x86,0x71,0x33,0x72,0x80,0x79,0xfb,0xee,0x67,0xf6,0x8,0x25,0x54,0xa8,0xc0, + 0x85,0x0,0x18,0xc0,0x38,0xc0,0x38,0x3,0x17,0xc,0x4,0x6a,0x7a,0xef,0x57,0x0, + 0xec,0x6e,0x84,0x74,0xc2,0xb6,0x92,0x52,0xac,0x1a,0x6d,0xdb,0xa3,0x8d,0x9,0x54, + 0x74,0xd,0xde,0x3,0x55,0x51,0x22,0x9b,0xe6,0x28,0xb6,0x6a,0x50,0x29,0xa0,0x5a, + 0x21,0x2,0x19,0x42,0xaa,0xd9,0x1d,0x25,0xf,0x30,0xcf,0xe7,0xb5,0x94,0xe1,0xe6, + 0xa6,0xf7,0x8f,0x82,0x1,0xc3,0xfc,0x62,0x19,0xf8,0x7c,0x75,0x4b,0x0,0xc8,0x11, + 0x6c,0xe9,0xe0,0xeb,0xa,0x9c,0x18,0xaa,0x4c,0x83,0xf3,0xf9,0x93,0x48,0xdb,0x25, + 0x4c,0x65,0x4,0x40,0x7d,0x21,0x44,0x64,0x9d,0xdd,0x45,0x20,0xfd,0xe,0x94,0xf4, + 0x94,0x4d,0x72,0x3c,0xf7,0xdf,0x17,0x71,0xe1,0x7,0x97,0x1,0x22,0x58,0xe7,0x60, + 0x6b,0x83,0x3c,0x2b,0x40,0xf0,0x90,0x7,0x22,0xd8,0x15,0x82,0xb7,0xb8,0xd5,0x92, + 0xcf,0x4b,0xc8,0x4e,0xfb,0xbe,0x63,0x1d,0xfa,0xa1,0x6e,0xf6,0x66,0xa5,0x21,0xa2, + 0x1d,0xcb,0xe8,0xa9,0xc6,0x74,0x33,0x43,0x5d,0xce,0xac,0xc9,0x25,0x7,0x63,0xf3, + 0xee,0xd7,0x38,0xe8,0xbc,0x6,0x18,0x48,0x46,0x12,0x3a,0xd7,0xbb,0x7,0xa4,0xdb, + 0x8d,0xf2,0xaa,0xaa,0xbe,0x99,0x4f,0x8b,0x38,0xdd,0xce,0x61,0x74,0xfd,0xa,0x37, + 0x1,0x8e,0xfc,0x5d,0x51,0x1c,0xde,0x11,0x88,0x12,0x37,0xc2,0x11,0x4c,0x65,0x91, + 0x74,0x23,0xa8,0x50,0x82,0x73,0xe,0x2e,0x67,0xe1,0x4e,0x34,0x6b,0xeb,0x45,0x20, + 0x20,0x20,0xe6,0x4f,0xd,0x11,0xa8,0x26,0x38,0x6b,0x61,0x6a,0x7,0x9d,0x6b,0xe4, + 0x93,0x2,0xe9,0xd6,0x14,0xe9,0x20,0x43,0x36,0x2c,0x50,0x4d,0xab,0x1b,0x0,0x9d, + 0x3,0x43,0xb9,0xd3,0xb8,0x31,0x6,0x21,0x38,0x20,0xf1,0xac,0xe2,0xea,0xc6,0xae, + 0x5a,0xc6,0x5a,0x3b,0x96,0x52,0xfe,0xa3,0xd6,0xfa,0x6b,0xc5,0xb8,0xc0,0x78,0x92, + 0x63,0xb6,0x63,0xab,0x0,0x5,0xb4,0x3b,0xf1,0xaf,0x5a,0x6b,0x7e,0x7b,0xbc,0x95, + 0x76,0xf2,0xa2,0xc0,0xe0,0x72,0x84,0xc6,0x42,0x82,0x46,0x37,0x46,0xd2,0x89,0x11, + 0x35,0x22,0x48,0x25,0xc0,0x38,0x20,0x94,0x84,0xc,0x25,0x98,0x60,0xf3,0xd5,0x6c, + 0xd,0x5d,0x68,0x18,0xad,0x91,0x4f,0x2b,0x4c,0x37,0xa7,0x98,0xc,0xa6,0xc8,0x27, + 0x5,0xaa,0xbc,0x86,0xa9,0xd,0x88,0xfb,0x6f,0x54,0x85,0xfd,0x4b,0x7,0x3f,0x5f, + 0xea,0x1b,0x28,0x28,0x28,0xa5,0x20,0x98,0xc8,0x55,0xa4,0x36,0x5e,0xd3,0xb6,0xc1, + 0xcf,0x7a,0x6a,0x7d,0xe4,0xc8,0x91,0x7,0xac,0xb5,0x1f,0x25,0x87,0x75,0x63,0x6d, + 0x5b,0x5,0x62,0x21,0x6c,0x4,0xad,0xa4,0x1d,0xc7,0x49,0x3b,0xa,0xc3,0x38,0x88, + 0x98,0xe0,0x11,0x63,0x50,0x52,0x49,0xc8,0x50,0x81,0x9,0xcc,0xc2,0xbe,0xac,0x51, + 0x97,0xb5,0xb7,0xc6,0x9a,0x2a,0xd7,0x75,0xbe,0x9d,0xe7,0xf9,0xa4,0x98,0xea,0xa2, + 0xce,0x8,0x98,0x80,0xb1,0x89,0x10,0xfc,0xef,0xc7,0xe3,0xf1,0xe7,0xf6,0xcc,0x46, + 0xd5,0xda,0xda,0xda,0x93,0x1b,0x1b,0x1b,0xe3,0xda,0xd7,0x3d,0x72,0xee,0x80,0xd1, + 0xfe,0x88,0x73,0x6e,0x4d,0x97,0xf5,0xc2,0x78,0x90,0xb6,0xa4,0xe0,0x6d,0x2,0x75, + 0x88,0xd0,0x1,0xb0,0x40,0x40,0xb,0x20,0xee,0xbd,0xf7,0x4,0x6c,0x81,0x30,0x24, + 0xe7,0x4a,0x6b,0x7d,0xee,0xad,0x1d,0x38,0xeb,0xaf,0x7b,0x4f,0x37,0x98,0x60,0x57, + 0x38,0x67,0x57,0xa4,0x94,0xcf,0xbe,0x9e,0x1b,0x55,0xaf,0xe7,0xc3,0xff,0xac,0xd9, + 0x6c,0x2e,0x29,0xa5,0xfa,0x64,0x68,0xd1,0x79,0xd7,0xb4,0xda,0x26,0x44,0x2c,0x21, + 0xb8,0x6,0x81,0x35,0x88,0xa8,0xc5,0x81,0xd8,0x13,0xd8,0xac,0x9d,0x63,0x29,0xc0, + 0x52,0xf,0xaf,0x1,0x54,0x52,0xb0,0x71,0xa0,0x82,0x31,0x9,0xda,0x4e,0x92,0x64, + 0xf0,0xc8,0x23,0x8f,0xc,0xbe,0xf0,0x85,0x2f,0x38,0xec,0x6b,0x5f,0xfb,0xda,0xd7, + 0xbe,0xf6,0xb5,0xaf,0x7d,0xed,0x6b,0x5f,0xff,0xef,0xf4,0x3f,0x19,0x39,0x12,0x4a, + 0xc4,0xcc,0xb5,0x57,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + + // /home/maemo/tietoopcom/resources/network.png + 0x0,0x0,0x15,0xc3, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x28,0x0,0x0,0x0,0x28,0x8,0x6,0x0,0x0,0x0,0x8c,0xfe,0xb8,0x6d, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0xa,0x4d,0x69,0x43,0x43,0x50,0x50,0x68,0x6f, + 0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x49,0x43,0x43,0x20,0x70,0x72,0x6f,0x66,0x69, + 0x6c,0x65,0x0,0x0,0x78,0xda,0x9d,0x53,0x77,0x58,0x93,0xf7,0x16,0x3e,0xdf,0xf7, + 0x65,0xf,0x56,0x42,0xd8,0xf0,0xb1,0x97,0x6c,0x81,0x0,0x22,0x23,0xac,0x8,0xc8, + 0x10,0x59,0xa2,0x10,0x92,0x0,0x61,0x84,0x10,0x12,0x40,0xc5,0x85,0x88,0xa,0x56, + 0x14,0x15,0x11,0x9c,0x48,0x55,0xc4,0x82,0xd5,0xa,0x48,0x9d,0x88,0xe2,0xa0,0x28, + 0xb8,0x67,0x41,0x8a,0x88,0x5a,0x8b,0x55,0x5c,0x38,0xee,0x1f,0xdc,0xa7,0xb5,0x7d, + 0x7a,0xef,0xed,0xed,0xfb,0xd7,0xfb,0xbc,0xe7,0x9c,0xe7,0xfc,0xce,0x79,0xcf,0xf, + 0x80,0x11,0x12,0x26,0x91,0xe6,0xa2,0x6a,0x0,0x39,0x52,0x85,0x3c,0x3a,0xd8,0x1f, + 0x8f,0x4f,0x48,0xc4,0xc9,0xbd,0x80,0x2,0x15,0x48,0xe0,0x4,0x20,0x10,0xe6,0xcb, + 0xc2,0x67,0x5,0xc5,0x0,0x0,0xf0,0x3,0x79,0x78,0x7e,0x74,0xb0,0x3f,0xfc,0x1, + 0xaf,0x6f,0x0,0x2,0x0,0x70,0xd5,0x2e,0x24,0x12,0xc7,0xe1,0xff,0x83,0xba,0x50, + 0x26,0x57,0x0,0x20,0x91,0x0,0xe0,0x22,0x12,0xe7,0xb,0x1,0x90,0x52,0x0,0xc8, + 0x2e,0x54,0xc8,0x14,0x0,0xc8,0x18,0x0,0xb0,0x53,0xb3,0x64,0xa,0x0,0x94,0x0, + 0x0,0x6c,0x79,0x7c,0x42,0x22,0x0,0xaa,0xd,0x0,0xec,0xf4,0x49,0x3e,0x5,0x0, + 0xd8,0xa9,0x93,0xdc,0x17,0x0,0xd8,0xa2,0x1c,0xa9,0x8,0x0,0x8d,0x1,0x0,0x99, + 0x28,0x47,0x24,0x2,0x40,0xbb,0x0,0x60,0x55,0x81,0x52,0x2c,0x2,0xc0,0xc2,0x0, + 0xa0,0xac,0x40,0x22,0x2e,0x4,0xc0,0xae,0x1,0x80,0x59,0xb6,0x32,0x47,0x2,0x80, + 0xbd,0x5,0x0,0x76,0x8e,0x58,0x90,0xf,0x40,0x60,0x0,0x80,0x99,0x42,0x2c,0xcc, + 0x0,0x20,0x38,0x2,0x0,0x43,0x1e,0x13,0xcd,0x3,0x20,0x4c,0x3,0xa0,0x30,0xd2, + 0xbf,0xe0,0xa9,0x5f,0x70,0x85,0xb8,0x48,0x1,0x0,0xc0,0xcb,0x95,0xcd,0x97,0x4b, + 0xd2,0x33,0x14,0xb8,0x95,0xd0,0x1a,0x77,0xf2,0xf0,0xe0,0xe2,0x21,0xe2,0xc2,0x6c, + 0xb1,0x42,0x61,0x17,0x29,0x10,0x66,0x9,0xe4,0x22,0x9c,0x97,0x9b,0x23,0x13,0x48, + 0xe7,0x3,0x4c,0xce,0xc,0x0,0x0,0x1a,0xf9,0xd1,0xc1,0xfe,0x38,0x3f,0x90,0xe7, + 0xe6,0xe4,0xe1,0xe6,0x66,0xe7,0x6c,0xef,0xf4,0xc5,0xa2,0xfe,0x6b,0xf0,0x6f,0x22, + 0x3e,0x21,0xf1,0xdf,0xfe,0xbc,0x8c,0x2,0x4,0x0,0x10,0x4e,0xcf,0xef,0xda,0x5f, + 0xe5,0xe5,0xd6,0x3,0x70,0xc7,0x1,0xb0,0x75,0xbf,0x6b,0xa9,0x5b,0x0,0xda,0x56, + 0x0,0x68,0xdf,0xf9,0x5d,0x33,0xdb,0x9,0xa0,0x5a,0xa,0xd0,0x7a,0xf9,0x8b,0x79, + 0x38,0xfc,0x40,0x1e,0x9e,0xa1,0x50,0xc8,0x3c,0x1d,0x1c,0xa,0xb,0xb,0xed,0x25, + 0x62,0xa1,0xbd,0x30,0xe3,0x8b,0x3e,0xff,0x33,0xe1,0x6f,0xe0,0x8b,0x7e,0xf6,0xfc, + 0x40,0x1e,0xfe,0xdb,0x7a,0xf0,0x0,0x71,0x9a,0x40,0x99,0xad,0xc0,0xa3,0x83,0xfd, + 0x71,0x61,0x6e,0x76,0xae,0x52,0x8e,0xe7,0xcb,0x4,0x42,0x31,0x6e,0xf7,0xe7,0x23, + 0xfe,0xc7,0x85,0x7f,0xfd,0x8e,0x29,0xd1,0xe2,0x34,0xb1,0x5c,0x2c,0x15,0x8a,0xf1, + 0x58,0x89,0xb8,0x50,0x22,0x4d,0xc7,0x79,0xb9,0x52,0x91,0x44,0x21,0xc9,0x95,0xe2, + 0x12,0xe9,0x7f,0x32,0xf1,0x1f,0x96,0xfd,0x9,0x93,0x77,0xd,0x0,0xac,0x86,0x4f, + 0xc0,0x4e,0xb6,0x7,0xb5,0xcb,0x6c,0xc0,0x7e,0xee,0x1,0x2,0x8b,0xe,0x58,0xd2, + 0x76,0x0,0x40,0x7e,0xf3,0x2d,0x8c,0x1a,0xb,0x91,0x0,0x10,0x67,0x34,0x32,0x79, + 0xf7,0x0,0x0,0x93,0xbf,0xf9,0x8f,0x40,0x2b,0x1,0x0,0xcd,0x97,0xa4,0xe3,0x0, + 0x0,0xbc,0xe8,0x18,0x5c,0xa8,0x94,0x17,0x4c,0xc6,0x8,0x0,0x0,0x44,0xa0,0x81, + 0x2a,0xb0,0x41,0x7,0xc,0xc1,0x14,0xac,0xc0,0xe,0x9c,0xc1,0x1d,0xbc,0xc0,0x17, + 0x2,0x61,0x6,0x44,0x40,0xc,0x24,0xc0,0x3c,0x10,0x42,0x6,0xe4,0x80,0x1c,0xa, + 0xa1,0x18,0x96,0x41,0x19,0x54,0xc0,0x3a,0xd8,0x4,0xb5,0xb0,0x3,0x1a,0xa0,0x11, + 0x9a,0xe1,0x10,0xb4,0xc1,0x31,0x38,0xd,0xe7,0xe0,0x12,0x5c,0x81,0xeb,0x70,0x17, + 0x6,0x60,0x18,0x9e,0xc2,0x18,0xbc,0x86,0x9,0x4,0x41,0xc8,0x8,0x13,0x61,0x21, + 0x3a,0x88,0x11,0x62,0x8e,0xd8,0x22,0xce,0x8,0x17,0x99,0x8e,0x4,0x22,0x61,0x48, + 0x34,0x92,0x80,0xa4,0x20,0xe9,0x88,0x14,0x51,0x22,0xc5,0xc8,0x72,0xa4,0x2,0xa9, + 0x42,0x6a,0x91,0x5d,0x48,0x23,0xf2,0x2d,0x72,0x14,0x39,0x8d,0x5c,0x40,0xfa,0x90, + 0xdb,0xc8,0x20,0x32,0x8a,0xfc,0x8a,0xbc,0x47,0x31,0x94,0x81,0xb2,0x51,0x3,0xd4, + 0x2,0x75,0x40,0xb9,0xa8,0x1f,0x1a,0x8a,0xc6,0xa0,0x73,0xd1,0x74,0x34,0xf,0x5d, + 0x80,0x96,0xa2,0x6b,0xd1,0x1a,0xb4,0x1e,0x3d,0x80,0xb6,0xa2,0xa7,0xd1,0x4b,0xe8, + 0x75,0x74,0x0,0x7d,0x8a,0x8e,0x63,0x80,0xd1,0x31,0xe,0x66,0x8c,0xd9,0x61,0x5c, + 0x8c,0x87,0x45,0x60,0x89,0x58,0x1a,0x26,0xc7,0x16,0x63,0xe5,0x58,0x35,0x56,0x8f, + 0x35,0x63,0x1d,0x58,0x37,0x76,0x15,0x1b,0xc0,0x9e,0x61,0xef,0x8,0x24,0x2,0x8b, + 0x80,0x13,0xec,0x8,0x5e,0x84,0x10,0xc2,0x6c,0x82,0x90,0x90,0x47,0x58,0x4c,0x58, + 0x43,0xa8,0x25,0xec,0x23,0xb4,0x12,0xba,0x8,0x57,0x9,0x83,0x84,0x31,0xc2,0x27, + 0x22,0x93,0xa8,0x4f,0xb4,0x25,0x7a,0x12,0xf9,0xc4,0x78,0x62,0x3a,0xb1,0x90,0x58, + 0x46,0xac,0x26,0xee,0x21,0x1e,0x21,0x9e,0x25,0x5e,0x27,0xe,0x13,0x5f,0x93,0x48, + 0x24,0xe,0xc9,0x92,0xe4,0x4e,0xa,0x21,0x25,0x90,0x32,0x49,0xb,0x49,0x6b,0x48, + 0xdb,0x48,0x2d,0xa4,0x53,0xa4,0x3e,0xd2,0x10,0x69,0x9c,0x4c,0x26,0xeb,0x90,0x6d, + 0xc9,0xde,0xe4,0x8,0xb2,0x80,0xac,0x20,0x97,0x91,0xb7,0x90,0xf,0x90,0x4f,0x92, + 0xfb,0xc9,0xc3,0xe4,0xb7,0x14,0x3a,0xc5,0x88,0xe2,0x4c,0x9,0xa2,0x24,0x52,0xa4, + 0x94,0x12,0x4a,0x35,0x65,0x3f,0xe5,0x4,0xa5,0x9f,0x32,0x42,0x99,0xa0,0xaa,0x51, + 0xcd,0xa9,0x9e,0xd4,0x8,0xaa,0x88,0x3a,0x9f,0x5a,0x49,0x6d,0xa0,0x76,0x50,0x2f, + 0x53,0x87,0xa9,0x13,0x34,0x75,0x9a,0x25,0xcd,0x9b,0x16,0x43,0xcb,0xa4,0x2d,0xa3, + 0xd5,0xd0,0x9a,0x69,0x67,0x69,0xf7,0x68,0x2f,0xe9,0x74,0xba,0x9,0xdd,0x83,0x1e, + 0x45,0x97,0xd0,0x97,0xd2,0x6b,0xe8,0x7,0xe9,0xe7,0xe9,0x83,0xf4,0x77,0xc,0xd, + 0x86,0xd,0x83,0xc7,0x48,0x62,0x28,0x19,0x6b,0x19,0x7b,0x19,0xa7,0x18,0xb7,0x19, + 0x2f,0x99,0x4c,0xa6,0x5,0xd3,0x97,0x99,0xc8,0x54,0x30,0xd7,0x32,0x1b,0x99,0x67, + 0x98,0xf,0x98,0x6f,0x55,0x58,0x2a,0xf6,0x2a,0x7c,0x15,0x91,0xca,0x12,0x95,0x3a, + 0x95,0x56,0x95,0x7e,0x95,0xe7,0xaa,0x54,0x55,0x73,0x55,0x3f,0xd5,0x79,0xaa,0xb, + 0x54,0xab,0x55,0xf,0xab,0x5e,0x56,0x7d,0xa6,0x46,0x55,0xb3,0x50,0xe3,0xa9,0x9, + 0xd4,0x16,0xab,0xd5,0xa9,0x1d,0x55,0xbb,0xa9,0x36,0xae,0xce,0x52,0x77,0x52,0x8f, + 0x50,0xcf,0x51,0x5f,0xa3,0xbe,0x5f,0xfd,0x82,0xfa,0x63,0xd,0xb2,0x86,0x85,0x46, + 0xa0,0x86,0x48,0xa3,0x54,0x63,0xb7,0xc6,0x19,0x8d,0x21,0x16,0xc6,0x32,0x65,0xf1, + 0x58,0x42,0xd6,0x72,0x56,0x3,0xeb,0x2c,0x6b,0x98,0x4d,0x62,0x5b,0xb2,0xf9,0xec, + 0x4c,0x76,0x5,0xfb,0x1b,0x76,0x2f,0x7b,0x4c,0x53,0x43,0x73,0xaa,0x66,0xac,0x66, + 0x91,0x66,0x9d,0xe6,0x71,0xcd,0x1,0xe,0xc6,0xb1,0xe0,0xf0,0x39,0xd9,0x9c,0x4a, + 0xce,0x21,0xce,0xd,0xce,0x7b,0x2d,0x3,0x2d,0x3f,0x2d,0xb1,0xd6,0x6a,0xad,0x66, + 0xad,0x7e,0xad,0x37,0xda,0x7a,0xda,0xbe,0xda,0x62,0xed,0x72,0xed,0x16,0xed,0xeb, + 0xda,0xef,0x75,0x70,0x9d,0x40,0x9d,0x2c,0x9d,0xf5,0x3a,0x6d,0x3a,0xf7,0x75,0x9, + 0xba,0x36,0xba,0x51,0xba,0x85,0xba,0xdb,0x75,0xcf,0xea,0x3e,0xd3,0x63,0xeb,0x79, + 0xe9,0x9,0xf5,0xca,0xf5,0xe,0xe9,0xdd,0xd1,0x47,0xf5,0x6d,0xf4,0xa3,0xf5,0x17, + 0xea,0xef,0xd6,0xef,0xd1,0x1f,0x37,0x30,0x34,0x8,0x36,0x90,0x19,0x6c,0x31,0x38, + 0x63,0xf0,0xcc,0x90,0x63,0xe8,0x6b,0x98,0x69,0xb8,0xd1,0xf0,0x84,0xe1,0xa8,0x11, + 0xcb,0x68,0xba,0x91,0xc4,0x68,0xa3,0xd1,0x49,0xa3,0x27,0xb8,0x26,0xee,0x87,0x67, + 0xe3,0x35,0x78,0x17,0x3e,0x66,0xac,0x6f,0x1c,0x62,0xac,0x34,0xde,0x65,0xdc,0x6b, + 0x3c,0x61,0x62,0x69,0x32,0xdb,0xa4,0xc4,0xa4,0xc5,0xe4,0xbe,0x29,0xcd,0x94,0x6b, + 0x9a,0x66,0xba,0xd1,0xb4,0xd3,0x74,0xcc,0xcc,0xc8,0x2c,0xdc,0xac,0xd8,0xac,0xc9, + 0xec,0x8e,0x39,0xd5,0x9c,0x6b,0x9e,0x61,0xbe,0xd9,0xbc,0xdb,0xfc,0x8d,0x85,0xa5, + 0x45,0x9c,0xc5,0x4a,0x8b,0x36,0x8b,0xc7,0x96,0xda,0x96,0x7c,0xcb,0x5,0x96,0x4d, + 0x96,0xf7,0xac,0x98,0x56,0x3e,0x56,0x79,0x56,0xf5,0x56,0xd7,0xac,0x49,0xd6,0x5c, + 0xeb,0x2c,0xeb,0x6d,0xd6,0x57,0x6c,0x50,0x1b,0x57,0x9b,0xc,0x9b,0x3a,0x9b,0xcb, + 0xb6,0xa8,0xad,0x9b,0xad,0xc4,0x76,0x9b,0x6d,0xdf,0x14,0xe2,0x14,0x8f,0x29,0xd2, + 0x29,0xf5,0x53,0x6e,0xda,0x31,0xec,0xfc,0xec,0xa,0xec,0x9a,0xec,0x6,0xed,0x39, + 0xf6,0x61,0xf6,0x25,0xf6,0x6d,0xf6,0xcf,0x1d,0xcc,0x1c,0x12,0x1d,0xd6,0x3b,0x74, + 0x3b,0x7c,0x72,0x74,0x75,0xcc,0x76,0x6c,0x70,0xbc,0xeb,0xa4,0xe1,0x34,0xc3,0xa9, + 0xc4,0xa9,0xc3,0xe9,0x57,0x67,0x1b,0x67,0xa1,0x73,0x9d,0xf3,0x35,0x17,0xa6,0x4b, + 0x90,0xcb,0x12,0x97,0x76,0x97,0x17,0x53,0x6d,0xa7,0x8a,0xa7,0x6e,0x9f,0x7a,0xcb, + 0x95,0xe5,0x1a,0xee,0xba,0xd2,0xb5,0xd3,0xf5,0xa3,0x9b,0xbb,0x9b,0xdc,0xad,0xd9, + 0x6d,0xd4,0xdd,0xcc,0x3d,0xc5,0x7d,0xab,0xfb,0x4d,0x2e,0x9b,0x1b,0xc9,0x5d,0xc3, + 0x3d,0xef,0x41,0xf4,0xf0,0xf7,0x58,0xe2,0x71,0xcc,0xe3,0x9d,0xa7,0x9b,0xa7,0xc2, + 0xf3,0x90,0xe7,0x2f,0x5e,0x76,0x5e,0x59,0x5e,0xfb,0xbd,0x1e,0x4f,0xb3,0x9c,0x26, + 0x9e,0xd6,0x30,0x6d,0xc8,0xdb,0xc4,0x5b,0xe0,0xbd,0xcb,0x7b,0x60,0x3a,0x3e,0x3d, + 0x65,0xfa,0xce,0xe9,0x3,0x3e,0xc6,0x3e,0x2,0x9f,0x7a,0x9f,0x87,0xbe,0xa6,0xbe, + 0x22,0xdf,0x3d,0xbe,0x23,0x7e,0xd6,0x7e,0x99,0x7e,0x7,0xfc,0x9e,0xfb,0x3b,0xfa, + 0xcb,0xfd,0x8f,0xf8,0xbf,0xe1,0x79,0xf2,0x16,0xf1,0x4e,0x5,0x60,0x1,0xc1,0x1, + 0xe5,0x1,0xbd,0x81,0x1a,0x81,0xb3,0x3,0x6b,0x3,0x1f,0x4,0x99,0x4,0xa5,0x7, + 0x35,0x5,0x8d,0x5,0xbb,0x6,0x2f,0xc,0x3e,0x15,0x42,0xc,0x9,0xd,0x59,0x1f, + 0x72,0x93,0x6f,0xc0,0x17,0xf2,0x1b,0xf9,0x63,0x33,0xdc,0x67,0x2c,0x9a,0xd1,0x15, + 0xca,0x8,0x9d,0x15,0x5a,0x1b,0xfa,0x30,0xcc,0x26,0x4c,0x1e,0xd6,0x11,0x8e,0x86, + 0xcf,0x8,0xdf,0x10,0x7e,0x6f,0xa6,0xf9,0x4c,0xe9,0xcc,0xb6,0x8,0x88,0xe0,0x47, + 0x6c,0x88,0xb8,0x1f,0x69,0x19,0x99,0x17,0xf9,0x7d,0x14,0x29,0x2a,0x32,0xaa,0x2e, + 0xea,0x51,0xb4,0x53,0x74,0x71,0x74,0xf7,0x2c,0xd6,0xac,0xe4,0x59,0xfb,0x67,0xbd, + 0x8e,0xf1,0x8f,0xa9,0x8c,0xb9,0x3b,0xdb,0x6a,0xb6,0x72,0x76,0x67,0xac,0x6a,0x6c, + 0x52,0x6c,0x63,0xec,0x9b,0xb8,0x80,0xb8,0xaa,0xb8,0x81,0x78,0x87,0xf8,0x45,0xf1, + 0x97,0x12,0x74,0x13,0x24,0x9,0xed,0x89,0xe4,0xc4,0xd8,0xc4,0x3d,0x89,0xe3,0x73, + 0x2,0xe7,0x6c,0x9a,0x33,0x9c,0xe4,0x9a,0x54,0x96,0x74,0x63,0xae,0xe5,0xdc,0xa2, + 0xb9,0x17,0xe6,0xe9,0xce,0xcb,0x9e,0x77,0x3c,0x59,0x35,0x59,0x90,0x7c,0x38,0x85, + 0x98,0x12,0x97,0xb2,0x3f,0xe5,0x83,0x20,0x42,0x50,0x2f,0x18,0x4f,0xe5,0xa7,0x6e, + 0x4d,0x1d,0x13,0xf2,0x84,0x9b,0x85,0x4f,0x45,0xbe,0xa2,0x8d,0xa2,0x51,0xb1,0xb7, + 0xb8,0x4a,0x3c,0x92,0xe6,0x9d,0x56,0x95,0xf6,0x38,0xdd,0x3b,0x7d,0x43,0xfa,0x68, + 0x86,0x4f,0x46,0x75,0xc6,0x33,0x9,0x4f,0x52,0x2b,0x79,0x91,0x19,0x92,0xb9,0x23, + 0xf3,0x4d,0x56,0x44,0xd6,0xde,0xac,0xcf,0xd9,0x71,0xd9,0x2d,0x39,0x94,0x9c,0x94, + 0x9c,0xa3,0x52,0xd,0x69,0x96,0xb4,0x2b,0xd7,0x30,0xb7,0x28,0xb7,0x4f,0x66,0x2b, + 0x2b,0x93,0xd,0xe4,0x79,0xe6,0x6d,0xca,0x1b,0x93,0x87,0xca,0xf7,0xe4,0x23,0xf9, + 0x73,0xf3,0xdb,0x15,0x6c,0x85,0x4c,0xd1,0xa3,0xb4,0x52,0xae,0x50,0xe,0x16,0x4c, + 0x2f,0xa8,0x2b,0x78,0x5b,0x18,0x5b,0x78,0xb8,0x48,0xbd,0x48,0x5a,0xd4,0x33,0xdf, + 0x66,0xfe,0xea,0xf9,0x23,0xb,0x82,0x16,0x7c,0xbd,0x90,0xb0,0x50,0xb8,0xb0,0xb3, + 0xd8,0xb8,0x78,0x59,0xf1,0xe0,0x22,0xbf,0x45,0xbb,0x16,0x23,0x8b,0x53,0x17,0x77, + 0x2e,0x31,0x5d,0x52,0xba,0x64,0x78,0x69,0xf0,0xd2,0x7d,0xcb,0x68,0xcb,0xb2,0x96, + 0xfd,0x50,0xe2,0x58,0x52,0x55,0xf2,0x6a,0x79,0xdc,0xf2,0x8e,0x52,0x83,0xd2,0xa5, + 0xa5,0x43,0x2b,0x82,0x57,0x34,0x95,0xa9,0x94,0xc9,0xcb,0x6e,0xae,0xf4,0x5a,0xb9, + 0x63,0x15,0x61,0x95,0x64,0x55,0xef,0x6a,0x97,0xd5,0x5b,0x56,0x7f,0x2a,0x17,0x95, + 0x5f,0xac,0x70,0xac,0xa8,0xae,0xf8,0xb0,0x46,0xb8,0xe6,0xe2,0x57,0x4e,0x5f,0xd5, + 0x7c,0xf5,0x79,0x6d,0xda,0xda,0xde,0x4a,0xb7,0xca,0xed,0xeb,0x48,0xeb,0xa4,0xeb, + 0x6e,0xac,0xf7,0x59,0xbf,0xaf,0x4a,0xbd,0x6a,0x41,0xd5,0xd0,0x86,0xf0,0xd,0xad, + 0x1b,0xf1,0x8d,0xe5,0x1b,0x5f,0x6d,0x4a,0xde,0x74,0xa1,0x7a,0x6a,0xf5,0x8e,0xcd, + 0xb4,0xcd,0xca,0xcd,0x3,0x35,0x61,0x35,0xed,0x5b,0xcc,0xb6,0xac,0xdb,0xf2,0xa1, + 0x36,0xa3,0xf6,0x7a,0x9d,0x7f,0x5d,0xcb,0x56,0xfd,0xad,0xab,0xb7,0xbe,0xd9,0x26, + 0xda,0xd6,0xbf,0xdd,0x77,0x7b,0xf3,0xe,0x83,0x1d,0x15,0x3b,0xde,0xef,0x94,0xec, + 0xbc,0xb5,0x2b,0x78,0x57,0x6b,0xbd,0x45,0x7d,0xf5,0x6e,0xd2,0xee,0x82,0xdd,0x8f, + 0x1a,0x62,0x1b,0xba,0xbf,0xe6,0x7e,0xdd,0xb8,0x47,0x77,0x4f,0xc5,0x9e,0x8f,0x7b, + 0xa5,0x7b,0x7,0xf6,0x45,0xef,0xeb,0x6a,0x74,0x6f,0x6c,0xdc,0xaf,0xbf,0xbf,0xb2, + 0x9,0x6d,0x52,0x36,0x8d,0x1e,0x48,0x3a,0x70,0xe5,0x9b,0x80,0x6f,0xda,0x9b,0xed, + 0x9a,0x77,0xb5,0x70,0x5a,0x2a,0xe,0xc2,0x41,0xe5,0xc1,0x27,0xdf,0xa6,0x7c,0x7b, + 0xe3,0x50,0xe8,0xa1,0xce,0xc3,0xdc,0xc3,0xcd,0xdf,0x99,0x7f,0xb7,0xf5,0x8,0xeb, + 0x48,0x79,0x2b,0xd2,0x3a,0xbf,0x75,0xac,0x2d,0xa3,0x6d,0xa0,0x3d,0xa1,0xbd,0xef, + 0xe8,0x8c,0xa3,0x9d,0x1d,0x5e,0x1d,0x47,0xbe,0xb7,0xff,0x7e,0xef,0x31,0xe3,0x63, + 0x75,0xc7,0x35,0x8f,0x57,0x9e,0xa0,0x9d,0x28,0x3d,0xf1,0xf9,0xe4,0x82,0x93,0xe3, + 0xa7,0x64,0xa7,0x9e,0x9d,0x4e,0x3f,0x3d,0xd4,0x99,0xdc,0x79,0xf7,0x4c,0xfc,0x99, + 0x6b,0x5d,0x51,0x5d,0xbd,0x67,0x43,0xcf,0x9e,0x3f,0x17,0x74,0xee,0x4c,0xb7,0x5f, + 0xf7,0xc9,0xf3,0xde,0xe7,0x8f,0x5d,0xf0,0xbc,0x70,0xf4,0x22,0xf7,0x62,0xdb,0x25, + 0xb7,0x4b,0xad,0x3d,0xae,0x3d,0x47,0x7e,0x70,0xfd,0xe1,0x48,0xaf,0x5b,0x6f,0xeb, + 0x65,0xf7,0xcb,0xed,0x57,0x3c,0xae,0x74,0xf4,0x4d,0xeb,0x3b,0xd1,0xef,0xd3,0x7f, + 0xfa,0x6a,0xc0,0xd5,0x73,0xd7,0xf8,0xd7,0x2e,0x5d,0x9f,0x79,0xbd,0xef,0xc6,0xec, + 0x1b,0xb7,0x6e,0x26,0xdd,0x1c,0xb8,0x25,0xba,0xf5,0xf8,0x76,0xf6,0xed,0x17,0x77, + 0xa,0xee,0x4c,0xdc,0x5d,0x7a,0x8f,0x78,0xaf,0xfc,0xbe,0xda,0xfd,0xea,0x7,0xfa, + 0xf,0xea,0x7f,0xb4,0xfe,0xb1,0x65,0xc0,0x6d,0xe0,0xf8,0x60,0xc0,0x60,0xcf,0xc3, + 0x59,0xf,0xef,0xe,0x9,0x87,0x9e,0xfe,0x94,0xff,0xd3,0x87,0xe1,0xd2,0x47,0xcc, + 0x47,0xd5,0x23,0x46,0x23,0x8d,0x8f,0x9d,0x1f,0x1f,0x1b,0xd,0x1a,0xbd,0xf2,0x64, + 0xce,0x93,0xe1,0xa7,0xb2,0xa7,0x13,0xcf,0xca,0x7e,0x56,0xff,0x79,0xeb,0x73,0xab, + 0xe7,0xdf,0xfd,0xe2,0xfb,0x4b,0xcf,0x58,0xfc,0xd8,0xf0,0xb,0xf9,0x8b,0xcf,0xbf, + 0xae,0x79,0xa9,0xf3,0x72,0xef,0xab,0xa9,0xaf,0x3a,0xc7,0x23,0xc7,0x1f,0xbc,0xce, + 0x79,0x3d,0xf1,0xa6,0xfc,0xad,0xce,0xdb,0x7d,0xef,0xb8,0xef,0xba,0xdf,0xc7,0xbd, + 0x1f,0x99,0x28,0xfc,0x40,0xfe,0x50,0xf3,0xd1,0xfa,0x63,0xc7,0xa7,0xd0,0x4f,0xf7, + 0x3e,0xe7,0x7c,0xfe,0xfc,0x2f,0xf7,0x84,0xf3,0xfb,0x25,0xd2,0x9f,0x33,0x0,0x0, + 0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8e,0x7c,0xfb,0x51,0x93,0x0,0x0, + 0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x25,0x0,0x0,0x80,0x83,0x0,0x0, + 0xf9,0xff,0x0,0x0,0x80,0xe9,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0, + 0x3a,0x98,0x0,0x0,0x17,0x6f,0x92,0x5f,0xc5,0x46,0x0,0x0,0xa,0xe0,0x49,0x44, + 0x41,0x54,0x78,0xda,0xec,0x98,0x7b,0x6c,0x5c,0xf5,0x95,0xc7,0x3f,0xf7,0xce,0xdb, + 0x33,0x9e,0x87,0xdf,0x76,0x70,0x66,0x1c,0xe2,0x18,0x93,0xd7,0x24,0x24,0xd,0x24, + 0x4a,0xd7,0x50,0x2a,0xa0,0x5,0xd9,0x8b,0xe8,0x6e,0x1f,0xb,0xb8,0xa4,0xca,0x2e, + 0xd1,0xae,0x64,0xd0,0x82,0xaa,0x82,0x1a,0xb7,0x2b,0x56,0xbb,0x4a,0xb,0x6e,0x17, + 0x50,0xb,0x2b,0x98,0x40,0x14,0xaa,0x4a,0xdd,0x84,0x57,0x4a,0xa,0x24,0x43,0xf3, + 0xc0,0xf1,0x6e,0x92,0x49,0xb0,0x13,0x6c,0x93,0xc4,0xe3,0x67,0xec,0xb1,0x9d,0xf1, + 0xcc,0x9d,0x99,0xfb,0xbe,0xfb,0x87,0x1d,0x6f,0x56,0x75,0x2,0x5b,0xed,0xae,0xfa, + 0x47,0x8e,0x74,0xa4,0xab,0xfb,0xd5,0xfd,0xfd,0xbe,0x3a,0xbf,0xdf,0xf9,0x9e,0x73, + 0xae,0x60,0x59,0x16,0x7f,0xca,0x26,0xf2,0x27,0x6e,0xd7,0x9,0x5e,0x27,0x78,0x9d, + 0xe0,0xe7,0x98,0x7d,0xa1,0x97,0xf,0x3c,0xf0,0x0,0x77,0xdd,0xb7,0x8d,0x62,0x9f, + 0x9b,0x62,0x9f,0x7,0x97,0xcb,0x8e,0xae,0x9b,0x78,0xdc,0x2e,0xde,0x7d,0xeb,0x95, + 0xb0,0xa6,0x69,0x6d,0x8a,0xa2,0x44,0x15,0x45,0x69,0x92,0x65,0x99,0x2b,0xbd,0x50, + 0x28,0xc4,0xb,0x85,0x42,0x42,0x51,0x94,0x8e,0xba,0x86,0xbb,0x92,0x9b,0x37,0x54, + 0x52,0x56,0x56,0xc6,0x81,0x3,0x7,0xd8,0xbd,0x7b,0xf7,0x35,0xc9,0xf4,0xf7,0xf7, + 0xf3,0xfc,0xf3,0xcf,0xe3,0x5f,0x39,0xc9,0xc8,0x51,0x17,0xa1,0x50,0x68,0x61,0x82, + 0xb2,0x2c,0x63,0x59,0x20,0x8a,0x22,0x36,0xdb,0xac,0x7f,0xb8,0x7f,0x77,0xd8,0x34, + 0xcd,0x76,0x51,0xb4,0xb7,0x2e,0xbb,0x69,0x5,0xee,0xa2,0x72,0x6e,0x6a,0x5c,0x89, + 0xa6,0x9b,0x68,0x9a,0x81,0xa2,0x18,0xc8,0xaa,0xce,0x67,0x7d,0xdd,0x4d,0xa7,0x13, + 0x47,0x9b,0x8e,0x77,0xfd,0xae,0xed,0x44,0xe7,0xaf,0x62,0x47,0xe3,0x72,0xfb,0x8e, + 0x1d,0x3b,0x92,0x0,0x86,0x1,0xd7,0x52,0x5d,0x73,0xe,0xd4,0x74,0xd,0x5d,0xb7, + 0xa1,0xeb,0xfa,0xc2,0x47,0x5c,0x28,0x14,0x28,0x14,0x34,0x72,0x79,0x8d,0x7c,0x5e, + 0xe5,0x77,0xfb,0x76,0x35,0x5b,0x96,0x95,0x28,0xad,0x58,0xda,0xba,0xf9,0x8e,0x6f, + 0x70,0xfb,0x57,0xbe,0xc6,0xda,0xb5,0x6b,0x28,0xf2,0x38,0x28,0xf2,0xd8,0x71,0xbb, + 0xec,0x1c,0x3f,0xd9,0x83,0x24,0x49,0xdc,0xb8,0x74,0x39,0x5f,0xbd,0xe7,0x21,0xb6, + 0x3c,0xda,0xc1,0xba,0x5b,0x5b,0x5a,0x15,0x45,0x49,0x6c,0xdd,0xba,0xb5,0x19,0x40, + 0xd6,0x20,0xa7,0xfc,0xa1,0x6f,0xd9,0xb6,0x2b,0x9c,0x53,0x40,0xd3,0x67,0xf7,0xd7, + 0x75,0xd,0x4d,0xd3,0xd0,0x75,0x1d,0x61,0xa1,0x4a,0xb2,0x69,0xd3,0x26,0xee,0x6e, + 0x7e,0x2,0xbf,0xdf,0xc3,0xc5,0x64,0xfc,0x61,0x51,0xb4,0xc7,0x1a,0x96,0x6f,0xc6, + 0x1f,0x28,0x61,0x6d,0x74,0x29,0x45,0x1e,0x7,0xbf,0xd9,0xf3,0x3e,0x1f,0x1e,0xf8, + 0x98,0xed,0x3f,0xfc,0x7b,0x64,0x45,0x67,0x26,0x93,0xe7,0xad,0x77,0xe,0xe3,0x70, + 0x38,0x59,0x77,0xcb,0x2a,0x32,0xd9,0x2,0xe9,0x74,0x8e,0xfe,0xde,0x1e,0x5e,0xfb, + 0xd7,0x27,0x51,0x94,0x5c,0xeb,0x44,0xda,0xda,0xa9,0x68,0xff,0x7d,0xaf,0xa7,0x9e, + 0xda,0x15,0x6,0x6,0x80,0x18,0xd0,0x16,0x74,0xff,0xfb,0x8c,0x50,0x77,0x9e,0x91, + 0x23,0x6e,0x4a,0x4a,0x4a,0x16,0x8e,0x60,0x3e,0x9f,0x27,0x39,0xd0,0xcb,0xc5,0x64, + 0xbc,0xd9,0xe1,0x70,0xc6,0xee,0xb9,0xf7,0x3b,0x2c,0xbf,0x79,0x19,0xd1,0x95,0x11, + 0xca,0x4a,0xbc,0xec,0xf8,0xe9,0xcb,0xfc,0xfc,0xf9,0x18,0x3d,0x67,0x7a,0x39,0x7c, + 0xf8,0x63,0x4,0x4c,0x86,0x87,0xc7,0xb9,0xbf,0xb9,0x9,0x4d,0x55,0x71,0x38,0x6c, + 0x38,0x9d,0x76,0x9c,0x4e,0x3b,0x35,0x37,0x2c,0xe5,0xaf,0xbe,0xf7,0x33,0x4,0x41, + 0x8c,0x55,0x4,0x85,0xe6,0x4b,0x39,0xb8,0xd2,0x81,0x8e,0xb9,0x6d,0x5b,0x81,0x78, + 0x5a,0x5e,0x1f,0x98,0x8d,0xa2,0x7e,0xed,0x23,0x2e,0xf,0xa4,0xc3,0xa6,0x69,0xc6, + 0xbe,0x7e,0xdf,0x37,0xa9,0x8b,0xd4,0x50,0x7f,0x63,0x35,0x35,0x55,0x21,0x7e,0xfc, + 0xcc,0x8b,0xbc,0xb3,0x2f,0xe,0x80,0xcf,0x5b,0x44,0x28,0x54,0x8c,0xcf,0xe7,0x66, + 0xd5,0xca,0x25,0xd8,0xed,0x22,0xab,0x57,0xd5,0x93,0x4a,0xa5,0xf0,0x17,0xbb,0xf1, + 0xf9,0xdc,0x38,0x1c,0x36,0x46,0x86,0xce,0x10,0x2c,0xa9,0x5,0x88,0xad,0x8a,0x8, + 0xe1,0xe9,0x2c,0x5c,0x76,0xa0,0x1d,0x48,0xcf,0x6d,0x1d,0x5,0xe2,0x97,0x9,0x6a, + 0x9a,0xb6,0x30,0x41,0x59,0x96,0xd1,0x75,0xbd,0x7d,0xe5,0xea,0x5b,0x83,0x15,0x95, + 0xd5,0x78,0xdc,0xe,0x5c,0x2e,0x1b,0x6f,0xfc,0xfa,0x5d,0xde,0x7e,0xf7,0x20,0x0, + 0xd,0xcb,0x22,0xfc,0xf2,0xc5,0x1f,0xe1,0x2f,0xe,0xf0,0x93,0x67,0x5f,0xc5,0x61, + 0xb7,0x11,0xc,0x78,0x8,0xf8,0xdd,0xd4,0x2f,0x9,0x52,0x57,0xa3,0xb3,0xb8,0x62, + 0x9a,0x70,0xe5,0x18,0x77,0xdf,0xb1,0x98,0xfb,0xff,0xfc,0x1e,0x56,0xac,0x58,0x1d, + 0xf4,0x78,0x3c,0xed,0x93,0x19,0x98,0xcc,0xc0,0x2b,0xff,0xb2,0xeb,0xb9,0xb9,0xe3, + 0x8d,0x8,0x2,0x89,0xb9,0x84,0x8c,0x66,0xfa,0xbe,0xf5,0x9c,0x61,0x18,0x57,0xbf, + 0x83,0x8f,0x3f,0xfe,0x78,0xd8,0x66,0x73,0xc,0x7c,0xe7,0xe1,0xbf,0x23,0x14,0xf4, + 0x51,0xec,0x75,0x90,0xcd,0x66,0xf9,0x5a,0xf3,0xdf,0x0,0x50,0xec,0xf3,0xf2,0xea, + 0xcb,0xff,0x40,0x51,0x91,0x87,0x2d,0x7f,0xfd,0x43,0xc6,0x2e,0xa6,0x78,0x3d,0xf6, + 0x2c,0xe1,0xda,0x6a,0x1c,0x76,0x9d,0xf,0xe,0xf6,0x70,0xaa,0x7b,0x8c,0xe4,0x50, + 0x1e,0x41,0x0,0x30,0x70,0x88,0x59,0x34,0xf9,0x3c,0x23,0x43,0x9f,0xa0,0xaa,0x6a, + 0x34,0xdc,0xf0,0xbd,0xe8,0xdc,0xbd,0x4b,0x0,0x4d,0x65,0x65,0xc5,0x11,0xaf,0xd7, + 0x1d,0x17,0x45,0x21,0xa8,0xeb,0x6,0x20,0x34,0xf5,0x9d,0x7e,0xe5,0xa3,0x5,0x23, + 0xa8,0xaa,0x6a,0x5b,0x64,0x49,0x23,0x9a,0x66,0x31,0x34,0x34,0xc1,0xc0,0x60,0x8a, + 0x1d,0xcf,0xed,0x9c,0xc7,0xbf,0xff,0xc4,0x16,0x16,0xd5,0x54,0xf0,0xd8,0x13,0xff, + 0xcc,0xd8,0xc5,0x14,0xf7,0xdc,0xf5,0x65,0xaa,0x2a,0x43,0xd8,0x6d,0x26,0x1d,0x2f, + 0x1e,0xe2,0x83,0x8f,0x86,0x11,0x6c,0x5e,0x56,0xae,0xac,0xa5,0xb1,0xf1,0x6,0x6a, + 0x6b,0x2b,0x71,0x15,0x55,0x81,0x73,0x2d,0xfe,0xd2,0xdb,0x48,0xa7,0xd3,0xf1,0xde, + 0x9e,0xbd,0xe9,0x39,0x72,0x51,0x20,0xa6,0x4b,0x7,0x4e,0x85,0xc3,0x65,0xed,0x75, + 0x75,0x15,0x44,0x22,0x15,0x54,0x57,0x7,0xdb,0x74,0x5d,0x5f,0x58,0x7,0x15,0x45, + 0x69,0x92,0xf2,0x36,0x8e,0x9f,0x3c,0x4b,0x74,0xe5,0x12,0xa,0x5,0x99,0x83,0xf1, + 0x8f,0x1,0xa8,0xa9,0x2e,0xa7,0xf9,0xbe,0xdb,0x79,0xe1,0x17,0xbf,0xa2,0xb7,0x6f, + 0x80,0x35,0xd1,0x9b,0x79,0xfa,0x7,0xdb,0xf0,0x15,0x39,0xd8,0xfe,0x8f,0xfb,0x30, + 0x4c,0x91,0x8d,0xb7,0xd5,0x53,0x5e,0xee,0xc3,0x61,0x17,0xb1,0x2c,0x28,0x14,0x34, + 0x52,0x93,0x59,0xce,0x9d,0x9f,0x60,0x54,0x68,0xa0,0xb4,0x6a,0x63,0xf0,0xc4,0xb1, + 0x37,0x3a,0x8a,0x3,0xb5,0x2d,0xb7,0xac,0xbf,0x33,0x2e,0x8,0xb4,0x98,0xe6,0x57, + 0x1f,0xfe,0x24,0xd5,0xfe,0xb3,0xbb,0x57,0x77,0xb4,0x19,0x86,0x19,0x91,0x15,0xbd, + 0xe5,0xdb,0x8f,0x3c,0x13,0xbe,0x9a,0x50,0x47,0x7d,0xfe,0x72,0xfc,0xc5,0x45,0x38, + 0x9d,0x76,0x12,0xa7,0x7a,0xe7,0xb1,0x6f,0x7f,0xf3,0x5e,0x34,0xcd,0x64,0xd7,0xee, + 0xb7,0x67,0x65,0xe2,0xfb,0x8f,0xe2,0x76,0xd9,0xd9,0xf3,0x76,0x2,0x29,0xa7,0xb3, + 0x69,0xe3,0x32,0x6e,0xaa,0x2f,0xa3,0xac,0xa4,0x8,0x51,0x14,0xc8,0x17,0x34,0xa4, + 0xbc,0x46,0x28,0xe4,0xa1,0xac,0xb4,0x88,0xb3,0x9f,0xba,0x30,0x8c,0x8d,0x9c,0xed, + 0xfe,0x7d,0xe4,0x83,0x7d,0x1d,0x4d,0x8f,0x6c,0x79,0xa4,0x4d,0x10,0x85,0x98,0x2c, + 0xeb,0x6d,0x9d,0xa3,0xca,0xce,0xf2,0x92,0xa2,0xe,0xc3,0x34,0x3b,0xf2,0x5,0xd, + 0x59,0xd1,0x5b,0xec,0x57,0xcb,0x62,0xa7,0xd3,0x49,0x79,0x59,0x0,0x8f,0xc7,0xc9, + 0xf0,0xf0,0xe8,0x3c,0xb6,0x7a,0x55,0x23,0x9d,0x5d,0xa7,0xc9,0x4a,0x79,0x96,0xde, + 0x18,0xa6,0xa2,0xbc,0x14,0x5d,0x53,0x38,0x7a,0x6c,0x80,0x48,0xa4,0x92,0xc5,0x37, + 0x4,0x58,0x12,0xe,0xe1,0x2d,0x72,0x50,0x90,0x75,0x4,0x1,0xc,0xc3,0x42,0xd3, + 0xc,0xbc,0x45,0x2e,0xc2,0x8b,0x4b,0xc9,0xe5,0x14,0xea,0x96,0x6e,0x64,0x6c,0xa4, + 0xa7,0xf5,0xbc,0xef,0xa7,0x6b,0xee,0x2c,0x7b,0xa6,0x23,0x5f,0xd0,0xa2,0x35,0x55, + 0xbf,0x8,0x97,0x96,0x78,0xe2,0x86,0x61,0xe1,0x72,0xaa,0x64,0x73,0x6a,0x54,0xbc, + 0x56,0xa9,0x13,0x4,0x11,0x51,0x10,0xc8,0xe7,0xb,0xf3,0x58,0x91,0xd7,0x4f,0x7a, + 0x46,0x9a,0x13,0xf4,0x5b,0xd0,0xd,0x93,0xb1,0xb1,0x9,0xa4,0x9c,0x46,0x30,0x58, + 0x84,0xc7,0xed,0xc0,0x3e,0x77,0xb4,0x82,0x0,0xa2,0x28,0x60,0xb3,0x9,0xd8,0x6d, + 0x22,0x76,0x87,0xd,0xa7,0xc3,0xc6,0xa2,0xea,0x0,0x8b,0x23,0x2b,0x1,0xa2,0x2f, + 0xbf,0xb5,0x97,0x70,0x6d,0x20,0x51,0x5d,0xe1,0x23,0xe0,0x77,0x45,0x46,0xa7,0x8e, + 0x9f,0xa,0x5,0xdc,0xf8,0xbc,0x4e,0x3c,0x6e,0x7b,0xc4,0x7e,0xad,0x52,0x27,0xcb, + 0x1a,0xaa,0x6a,0x90,0xcd,0xe6,0xe7,0xb1,0xe1,0x91,0x49,0xa6,0xa6,0x32,0xb3,0x35, + 0x53,0x35,0x38,0x77,0x61,0x84,0x4b,0x53,0x53,0x88,0xa2,0x8,0x8,0x28,0xaa,0x8e, + 0x94,0x53,0x71,0x39,0x6d,0xe8,0x86,0x89,0xa6,0x9b,0x18,0xa6,0xc5,0xbc,0x5a,0x8, + 0x2,0x82,0x28,0x50,0x55,0xb5,0x8,0x80,0xc6,0x86,0x1a,0xca,0x42,0x45,0x69,0x43, + 0xb7,0xd0,0x74,0x83,0xac,0x2,0x6e,0xb7,0x1d,0x67,0x5e,0xc4,0x6e,0x17,0xaf,0xae, + 0x83,0x99,0x6c,0x81,0x99,0x6c,0x81,0x7c,0x41,0x25,0x14,0xa,0xce,0x63,0xa3,0xa3, + 0x13,0x64,0x73,0x2a,0x0,0xe7,0x2f,0xc,0x51,0x5e,0x1a,0xc4,0x34,0xf2,0x18,0x86, + 0x41,0x2e,0x27,0x93,0x95,0x54,0x32,0x59,0x85,0x4c,0x56,0x21,0x97,0xd3,0x90,0x65, + 0x1d,0x55,0x35,0xd0,0x74,0x13,0x5d,0x33,0x31,0x74,0x3,0xd3,0xb0,0xd0,0x94,0xf4, + 0xfc,0x9a,0x52,0x5e,0xd,0xca,0x8a,0x8e,0xaa,0x99,0x73,0x2a,0x62,0xa0,0x1b,0x26, + 0x86,0x61,0x5e,0xb5,0xd4,0xc5,0x93,0x3,0xbd,0x8c,0x8e,0x4e,0x23,0xe5,0x15,0x8a, + 0xfd,0xfe,0x79,0xac,0xb7,0xff,0x2,0xa5,0xa5,0x65,0x0,0x74,0x1e,0x3b,0xc1,0x74, + 0xba,0x80,0xa6,0x66,0xb0,0x89,0x3a,0xa9,0x54,0x86,0xf1,0x94,0x44,0x26,0xab,0x30, + 0x93,0x55,0xc8,0x4a,0x2a,0xb9,0xfc,0x2c,0x49,0x45,0xd1,0x29,0xc8,0x2a,0x8a,0xaa, + 0xa3,0xe9,0x6,0x83,0xc9,0x3e,0xe6,0x64,0x86,0xc1,0x91,0x99,0xe8,0xf8,0x64,0x8e, + 0xac,0xa4,0xe,0x2c,0xae,0x58,0xbf,0x3a,0x9d,0x91,0x91,0x72,0x1a,0xb2,0x62,0xc, + 0x5c,0xad,0xd4,0x25,0xce,0xf5,0x27,0x18,0x19,0x9b,0x66,0x72,0x4a,0x62,0xd1,0xa2, + 0xda,0x79,0xac,0xab,0xeb,0x24,0xaa,0x66,0xb1,0x62,0xc5,0x72,0x0,0x9e,0xed,0x78, + 0x85,0xd4,0x94,0x4a,0xc0,0x97,0x67,0x7c,0x7c,0x86,0xa1,0xa1,0x29,0x86,0x46,0x67, + 0x98,0xc9,0x28,0x64,0x24,0x5,0x29,0xa7,0x22,0xe5,0x15,0xb2,0x59,0x99,0x9c,0x24, + 0x93,0xcf,0x2b,0x14,0xf2,0x2a,0x5d,0x9d,0x6f,0x2,0xec,0x7d,0x74,0xd9,0x9e,0x87, + 0x93,0x43,0x33,0xc1,0x91,0xd1,0xcc,0xc0,0xde,0xae,0xbf,0x4d,0x4e,0x5d,0x2a,0x34, + 0x4d,0x5d,0x2a,0x90,0x9e,0x91,0x91,0x72,0x6a,0xe2,0x6a,0x32,0xd3,0xf1,0x59,0x6f, + 0x67,0x5b,0x75,0xed,0x6,0xba,0xcf,0xc,0xb2,0xbc,0x31,0x4c,0x38,0x1c,0x26,0x99, + 0x4c,0x32,0x3a,0x3a,0xcc,0xc7,0x9d,0x9,0xd6,0xaf,0xdf,0x40,0x5f,0x5f,0x3f,0xdd, + 0xdd,0xa7,0x89,0x44,0x6a,0x70,0xd9,0x27,0x50,0x65,0x81,0xc1,0x41,0x11,0x4d,0xd3, + 0x69,0xa8,0xaf,0xc4,0xeb,0x75,0x61,0x59,0x16,0x9a,0x3a,0x1b,0xbd,0x5c,0x4e,0x41, + 0xca,0x2a,0xc4,0xf,0xee,0x67,0x7c,0xec,0xd3,0xf4,0x86,0x4d,0x7f,0x19,0xeb,0xee, + 0x19,0x89,0xb,0x82,0x80,0x69,0x5a,0xed,0xf5,0xe1,0x35,0xa4,0xa6,0xf2,0x6d,0x86, + 0x61,0x22,0x2b,0x3a,0xa6,0x69,0xed,0x5d,0x30,0x82,0xc9,0x64,0x32,0x99,0xcd,0x5c, + 0x8a,0x7d,0x92,0x78,0x9f,0xb3,0xbd,0xc3,0xc,0x8f,0x5e,0x62,0xdd,0x97,0x6e,0x9d, + 0xc7,0x4f,0x9e,0xfc,0xf,0x7a,0xce,0x8e,0xd0,0x74,0xfb,0x5d,0x0,0xbc,0xf3,0xce, + 0x7b,0x78,0xbc,0x55,0x58,0x5a,0x37,0x33,0xe9,0x8b,0xc,0xc,0xa4,0x38,0xda,0x79, + 0x8e,0x73,0xe7,0xc6,0xf1,0x7a,0x1c,0xa4,0x26,0xb3,0x4c,0x4e,0x66,0x19,0x1a,0x9a, + 0xe6,0xc0,0xc1,0x3,0xbc,0xff,0xde,0xb,0x4,0x42,0x8b,0xda,0x1a,0x96,0xdf,0xbb, + 0xb7,0xbf,0x7f,0x2c,0xd2,0xdf,0x3f,0x16,0xbf,0xfd,0x2b,0xd6,0x4e,0x9f,0x71,0x7f, + 0xf3,0x78,0x4a,0x8a,0x5c,0x9c,0xc8,0x32,0x91,0xca,0xc6,0x7f,0xfc,0xd4,0xb7,0x92, + 0xf6,0xab,0x75,0xb7,0x85,0x42,0xa1,0xbd,0x27,0xf1,0xdb,0x96,0xe2,0x40,0x6d,0xb0, + 0x4b,0xd0,0x59,0xbb,0x66,0x39,0xb5,0x8b,0xeb,0x18,0x1a,0xbc,0x40,0x3e,0x97,0xe1, + 0x4c,0xcf,0x9,0x4a,0x4a,0x17,0x51,0x5d,0x73,0x23,0xe9,0xf4,0x38,0xa6,0x50,0x45, + 0xa4,0x4e,0xe0,0xd0,0x47,0xbf,0x41,0x74,0xd4,0x11,0x2c,0xbd,0x99,0x2f,0x6f,0x5c, + 0x42,0x4d,0x75,0x80,0x63,0xc7,0x7,0x39,0xfc,0xfb,0x23,0x9c,0xed,0xde,0xcf,0xb9, + 0xbe,0x43,0x69,0xa0,0xad,0xb9,0xf5,0x97,0x0,0x51,0xd3,0xb4,0x12,0x60,0xb5,0xec, + 0xfd,0xb7,0x42,0xc0,0xef,0x9f,0x8a,0x9,0x2,0xe8,0xba,0x89,0x20,0xd0,0x7e,0xcd, + 0xa1,0x49,0x55,0xd5,0xa4,0x65,0x59,0xad,0x5d,0x87,0x63,0xc,0xf,0xf6,0x71,0xf8, + 0xd0,0x61,0x56,0xaf,0x5e,0x43,0x20,0x30,0x9b,0xd1,0x52,0x36,0xc5,0xc8,0x50,0xf, + 0xd3,0xd3,0xe3,0xe4,0xb2,0x19,0x76,0xbe,0xfa,0x2,0x13,0xd3,0x21,0xd6,0xdd,0xf6, + 0x8,0x5e,0x8f,0xca,0xfe,0xb7,0x9e,0xe6,0xf4,0x89,0x3d,0xf3,0xeb,0x1d,0x3f,0xf6, + 0x46,0xfa,0x5c,0xdf,0xa1,0x18,0x10,0xdd,0xb4,0x69,0xd3,0xce,0xbe,0xd3,0x2f,0xec, + 0x9c,0xeb,0x5,0x9b,0x0,0x26,0x27,0x33,0xf1,0x64,0x32,0x15,0x1c,0x18,0x48,0x31, + 0x3c,0x3c,0xb5,0x77,0xcf,0x1b,0x4f,0x7e,0x74,0xd5,0xa1,0xe9,0xa,0x7b,0xd3,0xd0, + 0x95,0xd6,0xae,0x43,0xb1,0xd8,0xb2,0xe5,0x77,0x22,0x65,0x53,0x34,0x36,0x36,0xd2, + 0xdd,0xfd,0x9,0x92,0x24,0x61,0x18,0x1a,0xaa,0x22,0xa1,0xc8,0x12,0x72,0x21,0x8b, + 0x94,0x93,0x91,0x72,0xf0,0xf5,0xe6,0x6d,0xcc,0x64,0x74,0xae,0xec,0x94,0x9c,0x2e, + 0x6f,0x2,0xf8,0x2e,0xc0,0x91,0x23,0x47,0x66,0x55,0xa0,0xb3,0xf3,0xb1,0x87,0xb6, + 0xbe,0x1e,0x6,0xf6,0x1a,0x86,0x19,0x35,0xc,0xf3,0x72,0x66,0xb7,0x26,0x12,0x9, + 0xbe,0x8,0x41,0x80,0x9d,0x86,0xa1,0xa6,0xcf,0x9e,0xde,0x17,0x4b,0x55,0x2e,0xd, + 0x8e,0x8f,0x9d,0x67,0xd1,0xd,0x8b,0x99,0x49,0x4f,0x61,0x9a,0x3a,0x85,0xdc,0x25, + 0x54,0x35,0x4f,0x69,0x59,0xdd,0x7f,0x69,0xe5,0xc8,0x20,0xa3,0x63,0xc3,0x40,0xdd, + 0x17,0x99,0x2c,0x5b,0xe7,0x3a,0x9a,0xcb,0xe4,0x9a,0x5e,0x7b,0xe9,0xc1,0x99,0x6b, + 0x8e,0x9d,0xb,0x45,0x12,0x88,0x4e,0x8e,0x7f,0xd6,0x3e,0x95,0xba,0xd0,0x3a,0x9c, + 0x2c,0xc1,0xe9,0xf2,0x62,0x77,0xb8,0xb0,0x4c,0x13,0xcb,0xb2,0x58,0xd6,0xd8,0x34, + 0x2b,0xde,0xfd,0x47,0x39,0xb8,0xff,0x30,0xa3,0xc3,0x9f,0x2,0x9b,0x3f,0x77,0xe1, + 0xd7,0x5e,0x7a,0xf0,0x47,0xf,0x6d,0x7d,0xbd,0x65,0xae,0xab,0x6e,0xb9,0x92,0xdc, + 0xff,0x84,0x20,0x40,0x12,0xf8,0xae,0x65,0x1a,0xed,0x52,0x36,0xd5,0x46,0x36,0x15, + 0xbd,0x7c,0x7f,0x0,0xde,0xfc,0xf5,0x93,0x97,0x1f,0xe3,0xe1,0x70,0x38,0xfe,0xf4, + 0xd3,0x3f,0x68,0xba,0x12,0xff,0x1c,0x6b,0x79,0xed,0xa5,0x7,0x93,0xb,0x22,0x96, + 0x65,0xfd,0x81,0xff,0x2f,0xd9,0x9f,0x6d,0xdf,0xbe,0xdd,0xea,0xfd,0x6c,0xd2,0xfa, + 0xa7,0x8e,0x83,0x56,0x78,0xc9,0x97,0xe,0x5e,0xff,0x37,0x73,0x9d,0xe0,0x17,0xfd, + 0x79,0xf4,0x39,0xe6,0x0,0x2a,0x1,0x1f,0x50,0xb2,0x0,0x3e,0xd,0x4c,0x1,0xce, + 0xff,0x6f,0x82,0x22,0xe0,0x17,0x4,0xd1,0xef,0x72,0x17,0xe3,0x72,0x79,0xf3,0x2e, + 0xb7,0x2f,0x7f,0x39,0xa9,0x36,0xdf,0xb1,0xd,0x5f,0x71,0x19,0x9f,0xf6,0xbc,0x4f, + 0xcf,0xa9,0x77,0x3d,0x39,0x69,0x2a,0x94,0x4e,0xcf,0xf6,0x7c,0xaa,0x92,0x23,0x7d, + 0x69,0xe4,0x8f,0x22,0xb8,0xe0,0x5c,0x2c,0xcc,0xe,0xb3,0x57,0x9a,0xd,0xf0,0xf8, + 0x83,0x35,0x42,0xa8,0xb4,0x16,0x51,0xb4,0x63,0x9a,0x3a,0xa6,0xa1,0xa3,0x69,0x32, + 0xba,0xa6,0x52,0x59,0x7d,0x13,0xb7,0x6c,0xf8,0xb,0x0,0x26,0x2e,0xf6,0xf1,0xe1, + 0x7b,0x3f,0x59,0xac,0xa9,0x85,0xc3,0xd,0xd,0xcb,0x83,0x53,0xd3,0x97,0x98,0x4c, + 0x8d,0x76,0x0,0x8f,0xfd,0x5f,0x44,0x50,0x10,0x45,0x9b,0x50,0x57,0xbf,0x49,0xf6, + 0x15,0x97,0xcf,0x4b,0x93,0x69,0x1a,0x18,0x86,0x8a,0xa6,0xca,0x28,0x72,0x8e,0xd4, + 0xf8,0xb9,0xf9,0xf,0x2a,0xaa,0x96,0x51,0x1b,0x5e,0xd7,0x3b,0x78,0xa1,0xab,0xbe, + 0xb7,0xf7,0xcc,0x2a,0xb0,0x92,0xc0,0xf9,0x3f,0x26,0x82,0xff,0x39,0x0,0x2f,0xa0, + 0x9b,0x35,0xb7,0xaa,0xda,0x56,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82, + // /home/maemo/tietoopcom/resources/tieto-logo.png + 0x0,0x0,0x4,0x38, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x80,0x0,0x0,0x0,0x74,0x8,0x6,0x0,0x0,0x0,0x4d,0x3d,0x3a,0xc4, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1, + 0x95,0x2b,0xe,0x1b,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xda,0x6,0x16, + 0x10,0xb,0x32,0xb2,0x46,0x43,0x31,0x0,0x0,0x3,0xb8,0x49,0x44,0x41,0x54,0x78, + 0xda,0xed,0x9d,0xcb,0x91,0xdc,0x20,0x10,0x86,0xbb,0x99,0xc7,0xba,0x9c,0x84,0x6f, + 0x4e,0x60,0xaf,0xae,0x9a,0xab,0x13,0x98,0x14,0x36,0x8d,0x4d,0xc4,0x19,0x38,0x1f, + 0x5f,0x9d,0x88,0xbd,0xf8,0x60,0xb9,0x6a,0x3c,0x3b,0x7a,0x0,0xd,0xe2,0xf1,0x7d, + 0x55,0x3a,0x69,0x5,0x83,0xfe,0x5f,0xd,0xd,0x12,0x2b,0x2,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x79,0xf0,0xb7,0x87,0x17,0x71, + 0x29,0x85,0x29,0xf7,0xb3,0x39,0xf1,0x4d,0xb5,0xc4,0x0,0x7d,0x88,0x1f,0xad,0x27, + 0x6,0xe8,0x47,0xfc,0x28,0x4d,0x1d,0xf7,0x76,0x68,0xb3,0x60,0x80,0xd1,0x4d,0x70, + 0xe4,0x5e,0xa5,0xdc,0xe5,0x57,0x27,0xf2,0x23,0xf1,0x1e,0x7e,0xff,0xa5,0x22,0x6f, + 0x19,0x1c,0xe0,0xb6,0x94,0xcb,0x18,0xa0,0x60,0xb8,0x4d,0xd4,0xc1,0xe7,0x28,0x97, + 0x2e,0x20,0xbf,0x70,0x46,0x4e,0xbb,0x9c,0x72,0x14,0x4b,0x4,0xa8,0x23,0x12,0x68, + 0xa6,0x7a,0xd6,0xca,0xf5,0x44,0x80,0x32,0x91,0x40,0xbd,0x3c,0x9f,0x5b,0x8a,0x38, + 0x10,0x1f,0x9,0xee,0x8f,0x9b,0x93,0xd7,0xf3,0xcc,0xdf,0x78,0x83,0x7a,0x42,0xcb, + 0x8b,0xa9,0x17,0x2,0xc5,0x79,0x70,0xf2,0xf9,0x64,0x60,0x0,0xf1,0x72,0x39,0xce, + 0x89,0x3f,0x9d,0xc3,0x0,0xfb,0x39,0xe0,0x7a,0x5e,0x3e,0xff,0xde,0x4,0x1b,0x45, + 0xdb,0x12,0xd,0x82,0xae,0xa1,0x4f,0xa9,0x6b,0xd0,0xa8,0x5,0x2a,0xd6,0xdb,0xf9, + 0x1,0xc,0x50,0x5f,0xc6,0xa0,0x25,0xeb,0x27,0xb,0xa8,0x2c,0x5d,0xf4,0x9f,0x2e, + 0x1f,0x2a,0x4e,0x57,0xc1,0x38,0x43,0x48,0x19,0xc4,0x59,0xd5,0xf,0xb5,0x19,0x40, + 0x44,0xfc,0x51,0xf4,0x5b,0xa1,0xba,0xa1,0x56,0x13,0xa4,0xa,0xf4,0x77,0xb1,0x2a, + 0x5f,0xf9,0x50,0xc8,0x4,0x91,0x5d,0x42,0x76,0x83,0x41,0xd9,0x48,0xe0,0x9d,0xc8, + 0xcf,0x95,0xf9,0x87,0x43,0x68,0x99,0xa4,0x81,0x15,0x67,0x4,0x25,0xc0,0x0,0x83, + 0x9b,0x80,0x79,0x80,0xca,0x1f,0xc0,0x4c,0xef,0x1,0x40,0x8e,0xa7,0x79,0x9a,0xe3, + 0x37,0xcf,0xd1,0x97,0x16,0x7e,0xc,0xe,0xb0,0x1c,0xd4,0xc5,0x9a,0x60,0xca,0xfb, + 0x67,0x85,0x89,0x19,0xe0,0x61,0x80,0x9d,0x46,0xf4,0x99,0x66,0xf2,0x72,0x45,0x2, + 0xc8,0x91,0xce,0x25,0x74,0x7,0x62,0x9d,0xea,0x61,0x80,0x4c,0x3c,0x8,0xdb,0x77, + 0x26,0x78,0x39,0x95,0x36,0x1e,0x6,0xd8,0x27,0xc,0x68,0xc1,0x48,0x40,0x17,0xd0, + 0x5a,0x97,0x60,0x68,0x2,0x6,0x81,0xad,0x46,0x3,0x83,0xee,0x80,0x34,0xb0,0xfd, + 0xec,0xe0,0xe5,0x54,0x99,0xf8,0x18,0xa0,0xbc,0x9,0xae,0xe7,0x8a,0xc4,0xc7,0x0, + 0xbb,0xa4,0x88,0xdb,0x5f,0xfb,0xf2,0x18,0x60,0x37,0xf5,0xde,0xbf,0x4c,0x11,0x30, + 0x98,0xb3,0xb8,0xf9,0x25,0xc4,0x67,0x39,0x78,0xe1,0xe6,0x2f,0xa1,0x9,0xd7,0x3e, + 0xba,0xc0,0xe9,0xb4,0xe1,0x93,0x8a,0xfc,0x2e,0xd9,0x50,0xc,0x10,0x27,0xa0,0x6, + 0x5e,0xab,0xb5,0x86,0x5b,0x96,0x83,0xed,0x1e,0x1a,0xdf,0xe2,0x43,0x86,0x1,0x6c, + 0x42,0x7f,0x93,0xe2,0x63,0x80,0x82,0x4f,0xbe,0x97,0xd7,0x43,0x4b,0x8d,0x22,0x2, + 0xe4,0x79,0xf2,0x3d,0x11,0xa0,0x6a,0xf5,0xaf,0x4f,0x23,0x84,0x7d,0xd8,0x9e,0x7f, + 0x87,0xe6,0xe8,0x41,0xf3,0xa,0x35,0x1c,0xb8,0x75,0xfe,0xc9,0x8e,0x9,0xe3,0xa6, + 0xf3,0x3,0x25,0x60,0x9f,0xc0,0xe,0x44,0x64,0xc,0xf0,0x7f,0x3f,0x7e,0x96,0x3c, + 0x73,0xdf,0xcc,0x9b,0x37,0x12,0xbf,0x17,0xfb,0xda,0xc8,0xef,0xef,0x37,0x7c,0xbf, + 0xf7,0xf5,0x69,0xee,0xe2,0xcf,0x87,0x8f,0x5f,0x6a,0xec,0xff,0xbb,0x1d,0x3,0xdc, + 0x6f,0x83,0x62,0x30,0x52,0x4f,0xdd,0xaa,0xbd,0xda,0xe8,0xd1,0x65,0x1a,0xa8,0x2b, + 0xff,0x49,0xc3,0x7,0x1a,0x60,0x26,0x3d,0xec,0x62,0xdc,0xd0,0x75,0x16,0xb0,0x12, + 0x9,0xd4,0xa0,0xbc,0x5c,0x7b,0xfc,0x62,0x0,0xe3,0x94,0x6e,0xaf,0xf6,0x57,0x3f, + 0x70,0x74,0x3,0x8b,0x1f,0xdc,0x15,0xf4,0x98,0x35,0x68,0xed,0x22,0x45,0xfe,0x6e, + 0xbf,0xf3,0x3d,0x68,0x26,0x65,0x74,0x3b,0xab,0xef,0x32,0xdc,0xe0,0xd9,0x39,0xfa, + 0x99,0xfa,0xbc,0x71,0x24,0x68,0x6a,0xbe,0x60,0x57,0x3,0x68,0xda,0xff,0xbd,0xf3, + 0x21,0xe2,0x2f,0xd5,0xa7,0x22,0x6f,0x11,0x6f,0xeb,0xce,0xcd,0x3f,0x40,0x82,0xa0, + 0x29,0x6f,0xb5,0x6e,0xde,0x6a,0x6d,0xe9,0x53,0xae,0xc2,0xbf,0xbd,0x86,0xa3,0x9e, + 0x94,0x2d,0x46,0xe4,0xd8,0xc6,0xad,0xd4,0xe7,0xa7,0xaf,0x70,0x17,0xae,0x9f,0xdd, + 0xf5,0xbb,0xa9,0x43,0x2b,0xb,0x1,0x8f,0xf2,0x76,0x8d,0xec,0x63,0x35,0xb2,0xbe, + 0xa1,0xa8,0x75,0x1e,0x20,0x65,0x49,0x36,0xa8,0x5d,0xa3,0x9b,0xa0,0xe5,0x89,0x20, + 0xb3,0x37,0x72,0x46,0x36,0x81,0x76,0x26,0x3e,0x26,0x18,0xc0,0x0,0x3e,0x57,0xdb, + 0x46,0x34,0x81,0x76,0x2a,0x3e,0x26,0xe8,0xd0,0x0,0xbe,0x54,0x1b,0x47,0x32,0x81, + 0x6b,0x48,0x7d,0x57,0xca,0x38,0x89,0x33,0x94,0x44,0x80,0x5e,0x22,0x81,0xc,0x30, + 0xb5,0xdb,0x6b,0x16,0x60,0xd1,0xde,0x21,0xe6,0xf5,0x5d,0xa3,0xea,0xe7,0xee,0xe, + 0x86,0x59,0xd4,0x69,0xfd,0x8d,0xa0,0x1c,0x91,0x60,0xa8,0x15,0x3d,0xd7,0xb8,0xfa, + 0xd6,0x91,0x60,0xb8,0xe5,0xdc,0xa6,0xd,0xb0,0x71,0xb4,0xbe,0x75,0x3d,0x61,0xc8, + 0xb5,0xfc,0x9e,0x5e,0xa,0xf5,0x2b,0xed,0x6b,0x6e,0xfb,0x16,0xc,0x90,0x66,0x2, + 0x25,0xc4,0x8f,0x67,0x0,0x46,0xf8,0x18,0x0,0x13,0xc,0x33,0x8,0x4,0x22,0x0, + 0x4f,0x3f,0x6,0x40,0x7c,0xc,0x80,0xf8,0x18,0x0,0xf1,0x31,0x0,0xe2,0x63,0x0, + 0xc4,0x27,0xd,0x14,0xbe,0xd3,0x1b,0xd6,0x0,0xff,0x3e,0xd7,0x2a,0xbd,0xe7,0x7e, + 0xcb,0xfc,0x1,0xd,0x72,0xc5,0xca,0x3f,0xe0,0x25,0x86,0x0,0x0,0x0,0x0,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/activesessions.png + 0x0,0x0,0x1e,0xff, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8e,0x7c,0xfb,0x51,0x93, + 0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x87,0xf,0x0,0x0,0x8c,0xf, + 0x0,0x0,0xfd,0x52,0x0,0x0,0x81,0x40,0x0,0x0,0x7d,0x79,0x0,0x0,0xe9,0x8b, + 0x0,0x0,0x3c,0xe5,0x0,0x0,0x19,0xcc,0x73,0x3c,0x85,0x77,0x0,0x0,0xa,0x39, + 0x69,0x43,0x43,0x50,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x49,0x43, + 0x43,0x20,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x0,0x0,0x48,0xc7,0x9d,0x96,0x77, + 0x54,0x54,0xd7,0x16,0x87,0xcf,0xbd,0x77,0x7a,0xa1,0xcd,0x30,0xd2,0x19,0x7a,0x93, + 0x2e,0x30,0x80,0xf4,0x2e,0x20,0x1d,0x4,0x51,0x18,0x66,0x6,0x18,0xca,0x0,0xc3, + 0xc,0x4d,0x6c,0x88,0xa8,0x40,0x44,0x11,0x11,0x1,0x45,0x90,0xa0,0x80,0x1,0xa3, + 0xa1,0x48,0xac,0x88,0x62,0x21,0x28,0xa8,0x60,0xf,0x48,0x10,0x50,0x62,0x30,0x8a, + 0xa8,0xa8,0x64,0x46,0xd6,0x4a,0x7c,0x79,0x79,0xef,0xe5,0xe5,0xf7,0xc7,0xbd,0xdf, + 0xda,0x67,0xef,0x73,0xf7,0xd9,0x7b,0x9f,0xb5,0x2e,0x0,0x24,0x4f,0x1f,0x2e,0x2f, + 0x5,0x96,0x2,0x20,0x99,0x27,0xe0,0x7,0x7a,0x38,0xd3,0x57,0x85,0x47,0xd0,0xb1, + 0xfd,0x0,0x6,0x78,0x80,0x1,0xa6,0x0,0x30,0x59,0xe9,0xa9,0xbe,0x41,0xee,0xc1, + 0x40,0x24,0x2f,0x37,0x17,0x7a,0xba,0xc8,0x9,0xfc,0x8b,0xde,0xc,0x1,0x48,0xfc, + 0xbe,0x65,0xe8,0xe9,0x4f,0xa7,0x83,0xff,0x4f,0xd2,0xac,0x54,0xbe,0x0,0x0,0xc8, + 0x5f,0xc4,0xe6,0x6c,0x4e,0x3a,0x4b,0xc4,0xf9,0x22,0x4e,0xca,0x14,0xa4,0x8a,0xed, + 0x33,0x22,0xa6,0xc6,0x24,0x8a,0x19,0x46,0x89,0x99,0x2f,0x4a,0x50,0xc4,0x72,0x62, + 0x8e,0x5b,0xe4,0xa5,0x9f,0x7d,0x16,0xd9,0x51,0xcc,0xec,0x64,0x1e,0x5b,0xc4,0xe2, + 0x9c,0x53,0xd9,0xc9,0x6c,0x31,0xf7,0x88,0x78,0x7b,0x86,0x90,0x23,0x62,0xc4,0x47, + 0xc4,0x5,0x19,0x5c,0x4e,0xa6,0x88,0x6f,0x8b,0x58,0x33,0x49,0x98,0xcc,0x15,0xf1, + 0x5b,0x71,0x6c,0x32,0x87,0x99,0xe,0x0,0x8a,0x24,0xb6,0xb,0x38,0xac,0x78,0x11, + 0x9b,0x88,0x98,0xc4,0xf,0xe,0x74,0x11,0xf1,0x72,0x0,0x70,0xa4,0xb8,0x2f,0x38, + 0xe6,0xb,0x16,0x70,0xb2,0x4,0xe2,0x43,0xb9,0xa4,0xa4,0x66,0xf3,0xb9,0x71,0xf1, + 0x2,0xba,0x2e,0x4b,0x8f,0x6e,0x6a,0x6d,0xcd,0xa0,0x7b,0x72,0x32,0x93,0x38,0x2, + 0x81,0xa1,0x3f,0x93,0x95,0xc8,0xe4,0xb3,0xe9,0x2e,0x29,0xc9,0xa9,0x4c,0x5e,0x36, + 0x0,0x8b,0x67,0xfe,0x2c,0x19,0x71,0x6d,0xe9,0xa2,0x22,0x5b,0x9a,0x5a,0x5b,0x5a, + 0x1a,0x9a,0x19,0x99,0x7e,0x51,0xa8,0xff,0xba,0xf8,0x37,0x25,0xee,0xed,0x22,0xbd, + 0xa,0xf8,0xdc,0x33,0x88,0xd6,0xf7,0x87,0xed,0xaf,0xfc,0x52,0xea,0x0,0x60,0xcc, + 0x8a,0x6a,0xb3,0xeb,0xf,0x5b,0xcc,0x7e,0x0,0x3a,0xb6,0x2,0x20,0x77,0xff,0xf, + 0x9b,0xe6,0x21,0x0,0x24,0x45,0x7d,0x6b,0xbf,0xf1,0xc5,0x79,0x68,0xe2,0x79,0x89, + 0x17,0x8,0x52,0x6d,0x8c,0x8d,0x33,0x33,0x33,0x8d,0xb8,0x1c,0x96,0x91,0xb8,0xa0, + 0xbf,0xeb,0x7f,0x3a,0xfc,0xd,0x7d,0xf1,0x3d,0x23,0xf1,0x76,0xbf,0x97,0x87,0xee, + 0xca,0x89,0x65,0xa,0x93,0x4,0x74,0x71,0xdd,0x58,0x29,0x49,0x29,0x42,0x3e,0x3d, + 0x3d,0x95,0xc9,0xe2,0xd0,0xd,0xff,0x3c,0xc4,0xff,0x38,0xf0,0xaf,0xf3,0x58,0x1a, + 0xc8,0x89,0xe5,0xf0,0x39,0x3c,0x51,0x44,0xa8,0x68,0xca,0xb8,0xbc,0x38,0x51,0xbb, + 0x79,0x6c,0xae,0x80,0x9b,0xc2,0xa3,0x73,0x79,0xff,0xa9,0x89,0xff,0x30,0xec,0x4f, + 0x5a,0x9c,0x6b,0x91,0x28,0xf5,0x9f,0x0,0x35,0xca,0x8,0x48,0xdd,0xa0,0x2,0xe4, + 0xe7,0x3e,0x80,0xa2,0x10,0x1,0x12,0x79,0x50,0xdc,0xf5,0xdf,0xfb,0xe6,0x83,0xf, + 0x5,0xe2,0x9b,0x17,0xa6,0x3a,0xb1,0x38,0xf7,0x9f,0x5,0xfd,0xfb,0xae,0x70,0x89, + 0xf8,0x91,0xce,0x8d,0xfb,0x1c,0xe7,0x12,0x18,0x4c,0x67,0x9,0xf9,0x19,0x8b,0x6b, + 0xe2,0x6b,0x9,0xd0,0x80,0x0,0x24,0x1,0x15,0xc8,0x3,0x15,0xa0,0x1,0x74,0x81, + 0x21,0x30,0x3,0x56,0xc0,0x16,0x38,0x2,0x37,0xb0,0x2,0xf8,0x81,0x60,0x10,0xe, + 0xd6,0x2,0x16,0x88,0x7,0xc9,0x80,0xf,0x32,0x41,0x2e,0xd8,0xc,0xa,0x40,0x11, + 0xd8,0x5,0xf6,0x82,0x4a,0x50,0x3,0xea,0x41,0x23,0x68,0x1,0x27,0x40,0x7,0x38, + 0xd,0x2e,0x80,0xcb,0xe0,0x3a,0xb8,0x9,0xee,0x80,0x7,0x60,0x4,0x8c,0x83,0xe7, + 0x60,0x6,0xbc,0x1,0xf3,0x10,0x4,0x61,0x21,0x32,0x44,0x81,0xe4,0x21,0x55,0x48, + 0xb,0x32,0x80,0xcc,0x20,0x6,0x64,0xf,0xb9,0x41,0x3e,0x50,0x20,0x14,0xe,0x45, + 0x43,0x71,0x10,0xf,0x12,0x42,0xb9,0xd0,0x16,0xa8,0x8,0x2a,0x85,0x2a,0xa1,0x5a, + 0xa8,0x11,0xfa,0x16,0x3a,0x5,0x5d,0x80,0xae,0x42,0x3,0xd0,0x3d,0x68,0x14,0x9a, + 0x82,0x7e,0x85,0xde,0xc3,0x8,0x4c,0x82,0xa9,0xb0,0x32,0xac,0xd,0x1b,0xc3,0xc, + 0xd8,0x9,0xf6,0x86,0x83,0xe1,0x35,0x70,0x1c,0x9c,0x6,0xe7,0xc0,0xf9,0xf0,0x4e, + 0xb8,0x2,0xae,0x83,0x8f,0xc1,0xed,0xf0,0x5,0xf8,0x3a,0x7c,0x7,0x1e,0x81,0x9f, + 0xc3,0xb3,0x8,0x40,0x88,0x8,0xd,0x51,0x43,0xc,0x11,0x6,0xe2,0x82,0xf8,0x21, + 0x11,0x48,0x2c,0xc2,0x47,0x36,0x20,0x85,0x48,0x39,0x52,0x87,0xb4,0x20,0x5d,0x48, + 0x2f,0x72,0xb,0x19,0x41,0xa6,0x91,0x77,0x28,0xc,0x8a,0x82,0xa2,0xa3,0xc,0x51, + 0xb6,0x28,0x4f,0x54,0x8,0x8a,0x85,0x4a,0x43,0x6d,0x40,0x15,0xa3,0x2a,0x51,0x47, + 0x51,0xed,0xa8,0x1e,0xd4,0x2d,0xd4,0x28,0x6a,0x6,0xf5,0x9,0x4d,0x46,0x2b,0xa1, + 0xd,0xd0,0x36,0x68,0x2f,0xf4,0x2a,0x74,0x1c,0x3a,0x13,0x5d,0x80,0x2e,0x47,0x37, + 0xa0,0xdb,0xd0,0x97,0xd0,0x77,0xd0,0xe3,0xe8,0x37,0x18,0xc,0x86,0x86,0xd1,0xc1, + 0x58,0x61,0x3c,0x31,0xe1,0x98,0x4,0xcc,0x3a,0x4c,0x31,0xe6,0x0,0xa6,0x15,0x73, + 0x1e,0x33,0x80,0x19,0xc3,0xcc,0x62,0xb1,0x58,0x79,0xac,0x1,0xd6,0xe,0xeb,0x87, + 0x65,0x62,0x5,0xd8,0x2,0xec,0x7e,0xec,0x31,0xec,0x39,0xec,0x20,0x76,0x1c,0xfb, + 0x16,0x47,0xc4,0xa9,0xe2,0xcc,0x70,0xee,0xb8,0x8,0x1c,0xf,0x97,0x87,0x2b,0xc7, + 0x35,0xe1,0xce,0xe2,0x6,0x71,0x13,0xb8,0x79,0xbc,0x14,0x5e,0xb,0x6f,0x83,0xf7, + 0xc3,0xb3,0xf1,0xd9,0xf8,0x12,0x7c,0x3d,0xbe,0xb,0x7f,0x3,0x3f,0x8e,0x9f,0x27, + 0x48,0x13,0x74,0x8,0x76,0x84,0x60,0x42,0x2,0x61,0x33,0xa1,0x82,0xd0,0x42,0xb8, + 0x44,0x78,0x48,0x78,0x45,0x24,0x12,0xd5,0x89,0xd6,0xc4,0x0,0x22,0x97,0xb8,0x89, + 0x58,0x41,0x3c,0x4e,0xbc,0x42,0x1c,0x25,0xbe,0x23,0xc9,0x90,0xf4,0x49,0x2e,0xa4, + 0x48,0x92,0x90,0xb4,0x93,0x74,0x84,0x74,0x9e,0x74,0x8f,0xf4,0x8a,0x4c,0x26,0x6b, + 0x93,0x1d,0xc9,0x11,0x64,0x1,0x79,0x27,0xb9,0x91,0x7c,0x91,0xfc,0x98,0xfc,0x56, + 0x82,0x22,0x61,0x24,0xe1,0x25,0xc1,0x96,0xd8,0x28,0x51,0x25,0xd1,0x2e,0x31,0x28, + 0xf1,0x42,0x12,0x2f,0xa9,0x25,0xe9,0x24,0xb9,0x56,0x32,0x47,0xb2,0x5c,0xf2,0xa4, + 0xe4,0xd,0xc9,0x69,0x29,0xbc,0x94,0xb6,0x94,0x8b,0x14,0x53,0x6a,0x83,0x54,0x95, + 0xd4,0x29,0xa9,0x61,0xa9,0x59,0x69,0x8a,0xb4,0xa9,0xb4,0x9f,0x74,0xb2,0x74,0xb1, + 0x74,0x93,0xf4,0x55,0xe9,0x49,0x19,0xac,0x8c,0xb6,0x8c,0x9b,0xc,0x5b,0x26,0x5f, + 0xe6,0xb0,0xcc,0x45,0x99,0x31,0xa,0x42,0xd1,0xa0,0xb8,0x50,0x58,0x94,0x2d,0x94, + 0x7a,0xca,0x25,0xca,0x38,0x15,0x43,0xd5,0xa1,0x7a,0x51,0x13,0xa8,0x45,0xd4,0x6f, + 0xa8,0xfd,0xd4,0x19,0x59,0x19,0xd9,0x65,0xb2,0xa1,0xb2,0x59,0xb2,0x55,0xb2,0x67, + 0x64,0x47,0x68,0x8,0x4d,0x9b,0xe6,0x45,0x4b,0xa2,0x95,0xd0,0x4e,0xd0,0x86,0x68, + 0xef,0x97,0x28,0x2f,0x71,0x5a,0xc2,0x59,0xb2,0x63,0x49,0xcb,0x92,0xc1,0x25,0x73, + 0x72,0x8a,0x72,0x8e,0x72,0x1c,0xb9,0x42,0xb9,0x56,0xb9,0x3b,0x72,0xef,0xe5,0xe9, + 0xf2,0x6e,0xf2,0x89,0xf2,0xbb,0xe5,0x3b,0xe4,0x1f,0x29,0xa0,0x14,0xf4,0x15,0x2, + 0x14,0x32,0x15,0xe,0x2a,0x5c,0x52,0x98,0x56,0xa4,0x2a,0xda,0x2a,0xb2,0x14,0xb, + 0x15,0x4f,0x28,0xde,0x57,0x82,0x95,0xf4,0x95,0x2,0x95,0xd6,0x29,0x1d,0x56,0xea, + 0x53,0x9a,0x55,0x56,0x51,0xf6,0x50,0x4e,0x55,0xde,0xaf,0x7c,0x51,0x79,0x5a,0x85, + 0xa6,0xe2,0xa8,0x92,0xa0,0x52,0xa6,0x72,0x56,0x65,0x4a,0x95,0xa2,0x6a,0xaf,0xca, + 0x55,0x2d,0x53,0x3d,0xa7,0xfa,0x8c,0x2e,0x4b,0x77,0xa2,0x27,0xd1,0x2b,0xe8,0x3d, + 0xf4,0x19,0x35,0x25,0x35,0x4f,0x35,0xa1,0x5a,0xad,0x5a,0xbf,0xda,0xbc,0xba,0x8e, + 0x7a,0x88,0x7a,0x9e,0x7a,0xab,0xfa,0x23,0xd,0x82,0x6,0x43,0x23,0x56,0xa3,0x4c, + 0xa3,0x5b,0x63,0x46,0x53,0x55,0xd3,0x57,0x33,0x57,0xb3,0x59,0xf3,0xbe,0x16,0x5e, + 0x8b,0xa1,0x15,0xaf,0xb5,0x4f,0xab,0x57,0x6b,0x4e,0x5b,0x47,0x3b,0x4c,0x7b,0x9b, + 0x76,0x87,0xf6,0xa4,0x8e,0x9c,0x8e,0x97,0x4e,0x8e,0x4e,0xb3,0xce,0x43,0x5d,0xb2, + 0xae,0x83,0x6e,0x9a,0x6e,0x9d,0xee,0x6d,0x3d,0x8c,0x1e,0x43,0x2f,0x51,0xef,0x80, + 0xde,0x4d,0x7d,0x58,0xdf,0x42,0x3f,0x5e,0xbf,0x4a,0xff,0x86,0x1,0x6c,0x60,0x69, + 0xc0,0x35,0x38,0x60,0x30,0xb0,0x14,0xbd,0xd4,0x7a,0x29,0x6f,0x69,0xdd,0xd2,0x61, + 0x43,0x92,0xa1,0x93,0x61,0x86,0x61,0xb3,0xe1,0xa8,0x11,0xcd,0xc8,0xc7,0x28,0xcf, + 0xa8,0xc3,0xe8,0x85,0xb1,0xa6,0x71,0x84,0xf1,0x6e,0xe3,0x5e,0xe3,0x4f,0x26,0x16, + 0x26,0x49,0x26,0xf5,0x26,0xf,0x4c,0x65,0x4c,0x57,0x98,0xe6,0x99,0x76,0x99,0xfe, + 0x6a,0xa6,0x6f,0xc6,0x32,0xab,0x32,0xbb,0x6d,0x4e,0x36,0x77,0x37,0xdf,0x68,0xde, + 0x69,0xfe,0x72,0x99,0xc1,0x32,0xce,0xb2,0x83,0xcb,0xee,0x5a,0x50,0x2c,0x7c,0x2d, + 0xb6,0x59,0x74,0x5b,0x7c,0xb4,0xb4,0xb2,0xe4,0x5b,0xb6,0x58,0x4e,0x59,0x69,0x5a, + 0x45,0x5b,0x55,0x5b,0xd,0x33,0xa8,0xc,0x7f,0x46,0x31,0xe3,0x8a,0x35,0xda,0xda, + 0xd9,0x7a,0xa3,0xf5,0x69,0xeb,0x77,0x36,0x96,0x36,0x2,0x9b,0x13,0x36,0xbf,0xd8, + 0x1a,0xda,0x26,0xda,0x36,0xd9,0x4e,0x2e,0xd7,0x59,0xce,0x59,0x5e,0xbf,0x7c,0xcc, + 0x4e,0xdd,0x8e,0x69,0x57,0x6b,0x37,0x62,0x4f,0xb7,0x8f,0xb6,0x3f,0x64,0x3f,0xe2, + 0xa0,0xe6,0xc0,0x74,0xa8,0x73,0x78,0xe2,0xa8,0xe1,0xc8,0x76,0x6c,0x70,0x9c,0x70, + 0xd2,0x73,0x4a,0x70,0x3a,0xe6,0xf4,0xc2,0xd9,0xc4,0x99,0xef,0xdc,0xe6,0x3c,0xe7, + 0x62,0xe3,0xb2,0xde,0xe5,0xbc,0x2b,0xe2,0xea,0xe1,0x5a,0xe8,0xda,0xef,0x26,0xe3, + 0x16,0xe2,0x56,0xe9,0xf6,0xd8,0x5d,0xdd,0x3d,0xce,0xbd,0xd9,0x7d,0xc6,0xc3,0xc2, + 0x63,0x9d,0xc7,0x79,0x4f,0xb4,0xa7,0xb7,0xe7,0x6e,0xcf,0x61,0x2f,0x65,0x2f,0x96, + 0x57,0xa3,0xd7,0xcc,0xa,0xab,0x15,0xeb,0x57,0xf4,0x78,0x93,0xbc,0x83,0xbc,0x2b, + 0xbd,0x9f,0xf8,0xe8,0xfb,0xf0,0x7d,0xba,0x7c,0x61,0xdf,0x15,0xbe,0x7b,0x7c,0x1f, + 0xae,0xd4,0x5a,0xc9,0x5b,0xd9,0xe1,0x7,0xfc,0xbc,0xfc,0xf6,0xf8,0x3d,0xf2,0xd7, + 0xf1,0x4f,0xf3,0xff,0x3e,0x0,0x13,0xe0,0x1f,0x50,0x15,0xf0,0x34,0xd0,0x34,0x30, + 0x37,0xb0,0x37,0x88,0x12,0x14,0x15,0xd4,0x14,0xf4,0x26,0xd8,0x39,0xb8,0x24,0xf8, + 0x41,0x88,0x6e,0x88,0x30,0xa4,0x3b,0x54,0x32,0x34,0x32,0xb4,0x31,0x74,0x2e,0xcc, + 0x35,0xac,0x34,0x6c,0x64,0x95,0xf1,0xaa,0xf5,0xab,0xae,0x87,0x2b,0x84,0x73,0xc3, + 0x3b,0x23,0xb0,0x11,0xa1,0x11,0xd,0x11,0xb3,0xab,0xdd,0x56,0xef,0x5d,0x3d,0x1e, + 0x69,0x11,0x59,0x10,0x39,0xb4,0x46,0x67,0x4d,0xd6,0x9a,0xab,0x6b,0x15,0xd6,0x26, + 0xad,0x3d,0x13,0x25,0x19,0xc5,0x8c,0x3a,0x19,0x8d,0x8e,0xe,0x8b,0x6e,0x8a,0xfe, + 0xc0,0xf4,0x63,0xd6,0x31,0x67,0x63,0xbc,0x62,0xaa,0x63,0x66,0x58,0x2e,0xac,0x7d, + 0xac,0xe7,0x6c,0x47,0x76,0x19,0x7b,0x8a,0x63,0xc7,0x29,0xe5,0x4c,0xc4,0xda,0xc5, + 0x96,0xc6,0x4e,0xc6,0xd9,0xc5,0xed,0x89,0x9b,0x8a,0x77,0x88,0x2f,0x8f,0x9f,0xe6, + 0xba,0x70,0x2b,0xb9,0x2f,0x13,0x3c,0x13,0x6a,0x12,0xe6,0x12,0xfd,0x12,0x8f,0x24, + 0x2e,0x24,0x85,0x25,0xb5,0x26,0xe3,0x92,0xa3,0x93,0x4f,0xf1,0x64,0x78,0x89,0xbc, + 0x9e,0x14,0x95,0x94,0xac,0x94,0x81,0x54,0x83,0xd4,0x82,0xd4,0x91,0x34,0x9b,0xb4, + 0xbd,0x69,0x33,0x7c,0x6f,0x7e,0x43,0x3a,0x94,0xbe,0x26,0xbd,0x53,0x40,0x15,0xfd, + 0x4c,0xf5,0x9,0x75,0x85,0x5b,0x85,0xa3,0x19,0xf6,0x19,0x55,0x19,0x6f,0x33,0x43, + 0x33,0x4f,0x66,0x49,0x67,0xf1,0xb2,0xfa,0xb2,0xf5,0xb3,0x77,0x64,0x4f,0xe4,0xb8, + 0xe7,0x7c,0xbd,0xe,0xb5,0x8e,0xb5,0xae,0x3b,0x57,0x2d,0x77,0x73,0xee,0xe8,0x7a, + 0xa7,0xf5,0xb5,0x1b,0xa0,0xd,0x31,0x1b,0xba,0x37,0x6a,0x6c,0xcc,0xdf,0x38,0xbe, + 0xc9,0x63,0xd3,0xd1,0xcd,0x84,0xcd,0x89,0x9b,0x7f,0xc8,0x33,0xc9,0x2b,0xcd,0x7b, + 0xbd,0x25,0x6c,0x4b,0x57,0xbe,0x72,0xfe,0xa6,0xfc,0xb1,0xad,0x1e,0x5b,0x9b,0xb, + 0x24,0xa,0xf8,0x5,0xc3,0xdb,0x6c,0xb7,0xd5,0x6c,0x47,0x6d,0xe7,0x6e,0xef,0xdf, + 0x61,0xbe,0x63,0xff,0x8e,0x4f,0x85,0xec,0xc2,0x6b,0x45,0x26,0x45,0xe5,0x45,0x1f, + 0x8a,0x59,0xc5,0xd7,0xbe,0x32,0xfd,0xaa,0xe2,0xab,0x85,0x9d,0xb1,0x3b,0xfb,0x4b, + 0x2c,0x4b,0xe,0xee,0xc2,0xec,0xe2,0xed,0x1a,0xda,0xed,0xb0,0xfb,0x68,0xa9,0x74, + 0x69,0x4e,0xe9,0xd8,0x1e,0xdf,0x3d,0xed,0x65,0xf4,0xb2,0xc2,0xb2,0xd7,0x7b,0xa3, + 0xf6,0x5e,0x2d,0x5f,0x56,0x5e,0xb3,0x8f,0xb0,0x4f,0xb8,0x6f,0xa4,0xc2,0xa7,0xa2, + 0x73,0xbf,0xe6,0xfe,0x5d,0xfb,0x3f,0x54,0xc6,0x57,0xde,0xa9,0x72,0xae,0x6a,0xad, + 0x56,0xaa,0xde,0x51,0x3d,0x77,0x80,0x7d,0x60,0xf0,0xa0,0xe3,0xc1,0x96,0x1a,0xe5, + 0x9a,0xa2,0x9a,0xf7,0x87,0xb8,0x87,0xee,0xd6,0x7a,0xd4,0xb6,0xd7,0x69,0xd7,0x95, + 0x1f,0xc6,0x1c,0xce,0x38,0xfc,0xb4,0x3e,0xb4,0xbe,0xf7,0x6b,0xc6,0xd7,0x8d,0xd, + 0xa,0xd,0x45,0xd,0x1f,0x8f,0xf0,0x8e,0x8c,0x1c,0xd,0x3c,0xda,0xd3,0x68,0xd5, + 0xd8,0xd8,0xa4,0xd4,0x54,0xd2,0xc,0x37,0xb,0x9b,0xa7,0x8e,0x45,0x1e,0xbb,0xf9, + 0x8d,0xeb,0x37,0x9d,0x2d,0x86,0x2d,0xb5,0xad,0xb4,0xd6,0xa2,0xe3,0xe0,0xb8,0xf0, + 0xf8,0xb3,0x6f,0xa3,0xbf,0x1d,0x3a,0xe1,0x7d,0xa2,0xfb,0x24,0xe3,0x64,0xcb,0x77, + 0x5a,0xdf,0x55,0xb7,0x51,0xda,0xa,0xdb,0xa1,0xf6,0xec,0xf6,0x99,0x8e,0xf8,0x8e, + 0x91,0xce,0xf0,0xce,0x81,0x53,0x2b,0x4e,0x75,0x77,0xd9,0x76,0xb5,0x7d,0x6f,0xf4, + 0xfd,0x91,0xd3,0x6a,0xa7,0xab,0xce,0xc8,0x9e,0x29,0x39,0x4b,0x38,0x9b,0x7f,0x76, + 0xe1,0x5c,0xce,0xb9,0xd9,0xf3,0xa9,0xe7,0xa7,0x2f,0xc4,0x5d,0x18,0xeb,0x8e,0xea, + 0x7e,0x70,0x71,0xd5,0xc5,0xdb,0x3d,0x1,0x3d,0xfd,0x97,0xbc,0x2f,0x5d,0xb9,0xec, + 0x7e,0xf9,0x62,0xaf,0x53,0xef,0xb9,0x2b,0x76,0x57,0x4e,0x5f,0xb5,0xb9,0x7a,0xea, + 0x1a,0xe3,0x5a,0xc7,0x75,0xcb,0xeb,0xed,0x7d,0x16,0x7d,0x6d,0x3f,0x58,0xfc,0xd0, + 0xd6,0x6f,0xd9,0xdf,0x7e,0xc3,0xea,0x46,0xe7,0x4d,0xeb,0x9b,0x5d,0x3,0xcb,0x7, + 0xce,0xe,0x3a,0xc,0x5e,0xb8,0xe5,0x7a,0xeb,0xf2,0x6d,0xaf,0xdb,0xd7,0xef,0xac, + 0xbc,0x33,0x30,0x14,0x32,0x74,0x77,0x38,0x72,0x78,0xe4,0x2e,0xfb,0xee,0xe4,0xbd, + 0xa4,0x7b,0x2f,0xef,0x67,0xdc,0x9f,0x7f,0xb0,0xe9,0x21,0xfa,0x61,0xe1,0x23,0xa9, + 0x47,0xe5,0x8f,0x95,0x1e,0xd7,0xfd,0xa8,0xf7,0x63,0xeb,0x88,0xe5,0xc8,0x99,0x51, + 0xd7,0xd1,0xbe,0x27,0x41,0x4f,0x1e,0x8c,0xb1,0xc6,0x9e,0xff,0x94,0xfe,0xd3,0x87, + 0xf1,0xfc,0xa7,0xe4,0xa7,0xe5,0x13,0xaa,0x13,0x8d,0x93,0x66,0x93,0xa7,0xa7,0xdc, + 0xa7,0x6e,0x3e,0x5b,0xfd,0x6c,0xfc,0x79,0xea,0xf3,0xf9,0xe9,0x82,0x9f,0xa5,0x7f, + 0xae,0x7e,0xa1,0xfb,0xe2,0xbb,0x5f,0x1c,0x7f,0xe9,0x9b,0x59,0x35,0x33,0xfe,0x92, + 0xff,0x72,0xe1,0xd7,0xe2,0x57,0xf2,0xaf,0x8e,0xbc,0x5e,0xf6,0xba,0x7b,0xd6,0x7f, + 0xf6,0xf1,0x9b,0xe4,0x37,0xf3,0x73,0x85,0x6f,0xe5,0xdf,0x1e,0x7d,0xc7,0x78,0xd7, + 0xfb,0x3e,0xec,0xfd,0xc4,0x7c,0xe6,0x7,0xec,0x87,0x8a,0x8f,0x7a,0x1f,0xbb,0x3e, + 0x79,0x7f,0x7a,0xb8,0x90,0xbc,0xb0,0xf0,0x1b,0xf7,0x84,0xf3,0xfb,0xe2,0xe6,0x1d, + 0xc2,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x12,0x0,0x0,0xb, + 0x12,0x1,0xd2,0xdd,0x7e,0xfc,0x0,0x0,0x14,0x30,0x49,0x44,0x41,0x54,0x68,0x43, + 0xdd,0x59,0x79,0x5c,0xcd,0xeb,0xb7,0xde,0xe7,0xe0,0x98,0xa7,0x8e,0x29,0x53,0x42, + 0x22,0x47,0x21,0x91,0x21,0x9b,0x34,0x47,0xa5,0xda,0x4a,0xa5,0x92,0x6,0x49,0x9a, + 0x35,0xa0,0x9d,0x24,0x94,0xa8,0x48,0xb3,0x34,0xa1,0x89,0xcc,0x19,0x2a,0x2a,0x9, + 0x11,0x95,0xa4,0x51,0x44,0x49,0x29,0x73,0x29,0x3d,0x77,0x7d,0x77,0x72,0x71,0x7e, + 0xe7,0xc4,0xe5,0xde,0x3f,0xee,0xf7,0xf3,0x59,0x76,0xdb,0xfe,0xee,0xf7,0x7d,0x9e, + 0x67,0x3d,0x6b,0xbd,0x6b,0xef,0xcd,0x62,0xfd,0xff,0xbd,0x26,0xf6,0x54,0xd6,0xf, + 0x1c,0xb5,0x4c,0xcf,0x5f,0x70,0x9e,0xa,0x77,0x24,0xf1,0xfc,0xe3,0xff,0x82,0xab, + 0x57,0x44,0xfa,0x88,0xac,0x9c,0x62,0xd5,0xfc,0xe2,0x47,0xae,0xf7,0x4a,0x6b,0x2, + 0x8a,0x4a,0x6b,0x2,0xef,0xde,0xab,0xde,0x71,0xed,0x56,0xa5,0xf6,0xc1,0x23,0x37, + 0xc6,0x74,0x89,0x21,0x24,0xf2,0x8a,0x7c,0xea,0xd5,0x7,0xa1,0xb7,0xf2,0xab,0xf2, + 0x8a,0xcb,0x6b,0xab,0xef,0x97,0xd5,0xd4,0xe5,0x17,0x55,0x3f,0x4e,0xcf,0xbe,0x7f, + 0x3b,0x36,0x29,0x3b,0xc2,0x7e,0xeb,0x11,0xd5,0xff,0xd,0x32,0x5c,0xbf,0xb3,0x3, + 0xf2,0xa,0xaa,0xdc,0x9f,0xd6,0x36,0x55,0xbd,0x6f,0x1,0xda,0x1,0xb4,0xd2,0x3f, + 0xef,0xe8,0xef,0x97,0x6f,0x81,0x67,0xd,0x6d,0x28,0xa9,0x78,0xf1,0xf4,0xea,0xcd, + 0x2a,0x2f,0xae,0x4f,0xa,0xdf,0xdf,0x88,0xac,0xdf,0x14,0x27,0x78,0xed,0xd6,0xc3, + 0xe3,0x75,0xd,0x74,0xf7,0xbf,0x5c,0xa5,0x55,0xd,0x88,0x4a,0xca,0x4e,0x53,0x33, + 0xd8,0x2d,0xde,0xa5,0x1a,0xdf,0x79,0x43,0x74,0xd2,0x15,0xfe,0xca,0x47,0xcf,0x33, + 0x3a,0xb7,0x65,0xc0,0x33,0x24,0x9a,0x5e,0x7d,0xc4,0x93,0x67,0x2d,0x28,0xab,0x7a, + 0x8b,0x7,0xe5,0xaf,0x51,0xfe,0xb8,0x5,0xb5,0xd,0x40,0x46,0x4e,0xe5,0xd,0x3d, + 0x63,0x7f,0xc1,0xcf,0xcb,0xbb,0xef,0x4d,0x15,0x2e,0x2a,0xab,0x2d,0xfe,0x27,0xdc, + 0xad,0x1f,0x69,0xc1,0x66,0xe0,0xcd,0x7b,0xa0,0xa5,0xb5,0x43,0x99,0xc4,0x33,0xb9, + 0xb5,0xcb,0xd,0xbd,0x25,0xbe,0x13,0xe3,0x3f,0xde,0xc6,0xe1,0xc4,0x77,0x2b,0x2e, + 0xaf,0x39,0xfc,0x8f,0x7b,0xb7,0xb5,0xa3,0xa1,0xe9,0x3,0x8a,0xcb,0x5f,0xe1,0xce, + 0xbd,0x6,0xdc,0xcc,0xaf,0x47,0x75,0x1d,0x10,0x14,0x99,0x9a,0xc1,0x62,0x8d,0xee, + 0xcd,0x12,0x11,0xe1,0xfe,0x91,0x7b,0xe7,0x51,0xfa,0x97,0xec,0xbf,0x5d,0xac,0x9d, + 0x0,0x37,0x7f,0xa0,0x54,0xbe,0x6,0xea,0x9b,0x3e,0xa2,0xbe,0xb1,0xd,0xef,0xe9, + 0xb9,0x6f,0xe8,0xf9,0x6c,0x7e,0xfe,0xa5,0x7d,0x7e,0x86,0x44,0x4a,0x6a,0x81,0x58, + 0x63,0x13,0x63,0x94,0x7f,0xbe,0x88,0x3,0x91,0xf8,0x88,0xfc,0xfb,0x8d,0xb8,0x71, + 0xa7,0xe,0xb7,0xa,0x1b,0x91,0x79,0xe3,0x11,0x14,0x74,0xb9,0x7a,0xac,0xb8,0xe4, + 0x3c,0xe5,0xb7,0xef,0xdb,0x78,0xef,0xfe,0xc8,0xe4,0xee,0x5f,0x2e,0x26,0xb,0xcf, + 0x5f,0xb4,0xa2,0xa6,0xae,0x85,0x16,0x6c,0x47,0xd6,0x8d,0x72,0x2c,0x5d,0xbd,0x8b, + 0xfd,0x33,0x4,0x6e,0x17,0x3e,0xd6,0xfc,0x76,0xcb,0xe6,0x96,0x36,0x30,0xd1,0x42, + 0xa9,0x6f,0x7a,0xd5,0x4a,0x35,0xd0,0x4e,0x35,0xc0,0x64,0xe1,0x25,0x6e,0xdc,0xad, + 0x43,0xd6,0xcd,0x67,0x28,0x78,0xf0,0x1a,0x1b,0xb6,0x84,0x44,0xb1,0xb2,0x6f,0x56, + 0xec,0x60,0x16,0x60,0x6c,0x41,0x4e,0xe1,0x5d,0xef,0xde,0xb7,0xe2,0xf5,0x9b,0x16, + 0xb4,0x11,0xa3,0xa6,0x97,0x2d,0x68,0x6d,0xfb,0x88,0x37,0x6f,0x3f,0xe0,0xd5,0xeb, + 0xf,0x78,0xde,0xd0,0xca,0xf3,0x65,0x75,0x6d,0xb,0x4a,0x2a,0x9b,0x60,0xee,0x14, + 0xbe,0xfa,0x67,0x8,0xe4,0xe6,0x3f,0x5a,0xfe,0xad,0x6e,0x91,0xf1,0x99,0x8,0x8c, + 0xbc,0x80,0xec,0xdc,0x4a,0x6c,0xda,0x71,0x14,0x77,0x8a,0x6a,0x61,0xef,0x16,0x8d, + 0x2b,0xd7,0x2a,0x49,0xfd,0x6,0x64,0xdc,0xa8,0x41,0x51,0xd9,0x3b,0x38,0x6e,0xd, + 0x3f,0xce,0xba,0x71,0xb7,0xca,0xaf,0x93,0x40,0xe7,0x42,0xd1,0x89,0x57,0xe1,0xbe, + 0x3b,0x1e,0xf,0x1f,0x37,0xc0,0xcc,0x21,0x4,0xa5,0x15,0x35,0xf0,0xa,0x38,0x85, + 0x83,0x87,0x53,0xc9,0x46,0xed,0x78,0x5c,0xd3,0x8c,0xc7,0x4f,0x9b,0x51,0x54,0xca, + 0xbc,0x1e,0xa6,0xfb,0x33,0x4,0xce,0x5c,0x28,0x9b,0xf6,0xf2,0x75,0x33,0x55,0x57, + 0xc7,0xc5,0xd8,0xf5,0x76,0xc1,0x43,0xe4,0x15,0x3c,0x62,0xba,0xe,0x52,0xd2,0xa, + 0xa8,0x88,0x5f,0x21,0xf1,0xd4,0x4d,0xdc,0x2d,0xaa,0x47,0x6e,0x41,0x3d,0xb2,0x6f, + 0xd5,0x21,0xbf,0xb8,0x9,0x7a,0x66,0xdb,0xbd,0x58,0x97,0x32,0x1f,0xac,0xe7,0xbd, + 0xf1,0x53,0x30,0x7f,0x17,0x97,0x3e,0xc6,0xdd,0xc2,0x72,0x52,0xbd,0x19,0x57,0xae, + 0xde,0xc5,0x7b,0x6a,0x9,0xb9,0x77,0x4a,0x50,0xf1,0xf0,0x29,0x59,0xa7,0xd,0x55, + 0xd5,0xef,0x28,0xb,0x1f,0xc8,0x87,0xa5,0xad,0xa,0x2b,0x3c,0x7f,0xaa,0x90,0xd9, + 0xec,0xf4,0xee,0xf9,0x45,0x4f,0x2e,0x31,0xfb,0x52,0xa2,0xf1,0x8e,0x6c,0xfa,0x81, + 0x1c,0xfd,0x96,0x28,0x31,0xbe,0x6f,0x68,0x2,0x1e,0x3d,0x7d,0x8f,0xea,0x67,0xad, + 0x24,0x58,0x13,0x72,0xf2,0x9e,0xa1,0xe2,0x71,0x1b,0x62,0x13,0x33,0x5a,0x86,0x8c, + 0x5c,0x32,0x83,0xe5,0x1d,0x96,0x2a,0x50,0x5d,0xdb,0xf4,0xbc,0x93,0xc4,0xbf,0x57, + 0x1,0x8,0x78,0x33,0x2a,0x1f,0xbd,0xc5,0xcb,0x37,0x40,0x68,0xec,0xe5,0xd4,0x9f, + 0x51,0xbf,0xf3,0xbd,0x3e,0xe1,0xa9,0x62,0xf,0x2a,0x6a,0x5f,0x30,0x7b,0x33,0xeb, + 0xd6,0xbd,0x68,0x43,0xcd,0xf3,0x16,0xca,0xf4,0x7b,0x2,0x4b,0x2d,0xb4,0xe2,0x15, + 0xa,0x4b,0x5e,0xf2,0x8a,0xf8,0xe1,0xd3,0x36,0x5c,0xbf,0xfd,0x8,0x6a,0x5a,0xb6, + 0x4e,0x9f,0xf7,0x4e,0x49,0x2d,0x34,0x79,0x47,0x45,0xd3,0xd5,0xd5,0xf8,0xaa,0x8d, + 0xd4,0x68,0xc6,0x2b,0xda,0x24,0xfd,0x5a,0xc9,0x2b,0x15,0xd,0xb,0xb,0xe,0x47, + 0x63,0x85,0x96,0x91,0x99,0xbd,0x9a,0xb6,0xae,0xde,0xf2,0xb9,0xa2,0x7f,0xfd,0xf, + 0x8,0xf5,0xa6,0xf7,0xc,0xd0,0xb7,0xdb,0xab,0x78,0xed,0x56,0xe9,0x9d,0x97,0xaf, + 0xa9,0xfe,0xe8,0x28,0x6a,0xa2,0x8e,0xf7,0xb4,0xee,0x23,0xed,0xf7,0x81,0xd4,0xff, + 0x88,0xe7,0x8d,0x1d,0xcf,0x4f,0xa7,0xdc,0x6c,0xe4,0xe8,0x6d,0xb6,0xf9,0xdb,0x3e, + 0x97,0x32,0xef,0x5b,0x35,0x34,0xbe,0x25,0x68,0xff,0xf9,0x6a,0xa6,0x46,0x57,0x47, + 0x5,0x5c,0xd7,0xd0,0x8c,0x73,0xe9,0x79,0x6d,0x86,0x56,0xae,0xd,0x4e,0xfe,0xc1, + 0xb5,0xbe,0x29,0xd9,0xf0,0x4a,0xcb,0x83,0x59,0xec,0x79,0x68,0xef,0x8,0x78,0xab, + 0xb6,0xda,0xec,0xa8,0xd2,0x8c,0xa9,0x53,0xba,0x22,0x22,0x29,0x29,0x39,0xcd,0xc4, + 0xd0,0x32,0xd0,0xda,0x84,0x9b,0x6f,0xa4,0xe9,0x50,0xa1,0xb8,0x40,0xfb,0xa4,0x96, + 0xbe,0x73,0x62,0x4b,0x4b,0x3b,0x65,0xb8,0x1e,0xd7,0x6e,0x95,0xd4,0xdc,0x2e,0xa8, + 0x7a,0x7f,0xeb,0x6e,0x65,0xdb,0xf5,0xdb,0xe5,0x4d,0xa7,0x53,0xae,0xe7,0x6f,0xf3, + 0x8a,0xdc,0xd3,0x77,0xf8,0xdc,0x7f,0x16,0x29,0xe2,0x68,0xa6,0x64,0xfe,0xfd,0xea, + 0xc3,0x35,0xcf,0x9a,0xea,0x99,0xbe,0xdf,0x79,0x31,0x5d,0xba,0x96,0xda,0x18,0xf3, + 0x7f,0x69,0x57,0x4b,0x5a,0xd,0xed,0xb7,0xbd,0x9,0xbf,0x7c,0x1d,0x67,0xc9,0x9b, + 0x89,0x55,0x6f,0x10,0x59,0xd2,0x80,0x2d,0x57,0xcb,0x60,0x9c,0x52,0x88,0xd5,0x9, + 0x57,0xa0,0xbc,0xce,0xee,0x89,0xf4,0xec,0x99,0x52,0xff,0x44,0x42,0x59,0x5e,0x59, + 0xc5,0xd1,0x72,0x5b,0xc3,0x21,0xdf,0x33,0xf0,0xdb,0x12,0xf,0x27,0x83,0x0,0x38, + 0x98,0x5,0xe0,0x7c,0x5a,0x2e,0x2e,0x66,0xdd,0x6a,0xd7,0x5f,0xbf,0xdd,0x85,0xc5, + 0x1a,0x3f,0x56,0x79,0x85,0xa3,0x98,0xe6,0x4a,0x97,0xd9,0x7f,0x8e,0x93,0x17,0xa6, + 0xb5,0x98,0x4c,0x7d,0xdf,0x65,0xbf,0xed,0xc8,0x84,0x84,0x13,0x37,0x55,0xcf,0x5c, + 0xba,0x6b,0x75,0xe2,0x42,0x9e,0x63,0x74,0x52,0xb6,0xb1,0xef,0xc1,0xb,0x3a,0xa9, + 0xd9,0xf,0x8b,0x6e,0xe7,0xd7,0x61,0x7f,0xec,0x65,0xa4,0x3f,0x79,0x8b,0x4b,0x4f, + 0xdf,0xe0,0xd4,0xc3,0x46,0x24,0x96,0x37,0x20,0xf8,0x6e,0x35,0x2c,0xcf,0xdd,0x81, + 0xf1,0xb9,0x3c,0xe8,0x27,0x66,0x42,0x4e,0xdf,0xb8,0x8a,0x2d,0x2c,0x3c,0xee,0xdb, + 0x1d,0xa5,0xa5,0x17,0x88,0x3a,0xac,0x77,0x6b,0x3c,0x1d,0x93,0x8d,0xe3,0x87,0xae, + 0x60,0xb7,0x73,0x14,0x36,0x1a,0xef,0x83,0xf5,0x86,0x7d,0x70,0xa1,0x8e,0xa7,0x22, + 0x6f,0xdf,0x3e,0x53,0x54,0xca,0xfe,0xfb,0x90,0xfe,0xe0,0x5d,0x9a,0x6b,0x6c,0xb5, + 0xe,0x24,0xa6,0x23,0x36,0x25,0x1f,0xe1,0x67,0x73,0x51,0xfa,0x92,0xa,0x9a,0x6a, + 0x27,0xff,0xf5,0x47,0x64,0xd5,0x7f,0x80,0x6f,0xde,0x63,0xb8,0x64,0x14,0xc3,0xee, + 0x72,0x11,0xf4,0x82,0x13,0xb0,0x60,0x91,0x4c,0xe4,0xb7,0x5b,0xe8,0x6a,0xeb,0x1f, + 0x3f,0x7f,0xec,0x1a,0xee,0xe5,0x3e,0x44,0xd6,0xf9,0x7c,0x4,0xef,0x3c,0x6,0x3f, + 0xb7,0x23,0xd8,0x61,0x77,0x10,0x8e,0x6,0xfe,0xb0,0x59,0xb1,0x7,0xea,0xd2,0xc6, + 0xf5,0x33,0x66,0x4c,0x11,0xf8,0x41,0x78,0x5d,0xdf,0x6e,0x61,0xef,0x10,0x76,0xee, + 0x41,0x35,0xaa,0x5e,0xbd,0xc7,0x13,0xaa,0xaa,0xe6,0xb6,0x36,0x30,0xad,0xa3,0x84, + 0x5a,0xde,0x8d,0x97,0x1f,0x71,0xb0,0xb8,0xe,0x6e,0xd9,0x65,0x14,0x25,0x70,0xce, + 0x28,0x82,0xe2,0x6a,0xf3,0x77,0x12,0x82,0x23,0x27,0x75,0xae,0xac,0xa8,0xa8,0x28, + 0xeb,0xb5,0xdd,0xef,0x5d,0x41,0x4e,0x25,0xf2,0x73,0xca,0x70,0x21,0xe9,0x3a,0xf6, + 0x6f,0x8b,0x87,0x2f,0xf7,0x30,0xbc,0x9d,0x23,0xb1,0xdd,0x2a,0x1c,0xae,0x66,0x41, + 0x30,0xd3,0x70,0xc3,0xc2,0xf9,0x4b,0x74,0xba,0x46,0xf4,0x3,0x77,0x88,0xd0,0xe7, + 0x81,0x3d,0xe1,0x51,0xc5,0xcf,0xbe,0xa8,0x71,0xa6,0x4c,0x6a,0xa8,0x77,0x17,0xbd, + 0x3,0xae,0xd1,0x7c,0x14,0x53,0xfa,0x2,0xdc,0xab,0xa5,0x70,0xcd,0x2a,0x6,0x37, + 0xfb,0x1,0x4c,0xa3,0x4e,0x42,0x52,0x5e,0x31,0x81,0x2d,0x20,0xd0,0x8b,0xd9,0x4a, + 0x4f,0x4f,0xef,0xd2,0x89,0x84,0x8b,0xc8,0x49,0x2b,0xa2,0xb8,0x87,0xa4,0x43,0xe9, + 0xf0,0xe3,0x1e,0x81,0xcf,0xa6,0x68,0xec,0x74,0x88,0x80,0xfb,0xfa,0x50,0x70,0xcd, + 0x2,0x61,0xa5,0xe5,0x8d,0xc5,0x12,0xea,0x9,0x13,0x15,0x26,0xf6,0xfc,0x1,0x88, + 0xff,0x7e,0xeb,0xd2,0x15,0x2b,0xd4,0x4c,0x3,0xc2,0xdf,0x14,0xd3,0x48,0x4a,0x1d, + 0xe,0x4c,0xbb,0xa2,0xc9,0x16,0x95,0xc4,0xe2,0x2e,0x9d,0xce,0x19,0x64,0xa1,0xc3, + 0x65,0x8d,0x1d,0x4,0x32,0x8b,0x29,0x8a,0x60,0x72,0x26,0x7,0xd3,0x34,0x75,0x31, + 0x7b,0xe2,0x44,0x49,0x66,0x75,0x7d,0x7d,0xfd,0xab,0x27,0x8e,0x5e,0xc2,0xe5,0xd3, + 0x79,0xb8,0x7c,0x26,0xf,0x31,0x1,0xe7,0x78,0xe0,0xbd,0x9c,0x48,0x7d,0xeb,0x70, + 0xb8,0xad,0xb,0xc6,0x66,0x93,0xfd,0xb0,0x5f,0xe5,0xb,0xd,0x29,0x4b,0x88,0x4f, + 0x9f,0x2f,0xfb,0x4b,0x8,0x98,0x72,0x64,0x6,0xaa,0x3b,0x73,0x8b,0x56,0x27,0xa5, + 0x61,0xdf,0xf5,0x7b,0xa8,0xa6,0x23,0xe3,0x11,0x8d,0xd5,0x15,0x4,0xbe,0x90,0x7a, + 0x76,0xe,0x9d,0xce,0x97,0x6a,0x9b,0x11,0x5b,0xda,0x8,0xb7,0xab,0x25,0xd8,0x92, + 0x79,0x9f,0xa2,0x8,0x6,0x49,0x57,0x20,0xa4,0xaa,0x85,0xe9,0x93,0x27,0xf2,0x80, + 0x68,0x6a,0x6a,0xee,0x8c,0xe,0x3a,0x8e,0xf3,0x9,0x39,0x48,0x49,0xb8,0x86,0xb0, + 0xdd,0xc9,0xd8,0xb5,0x31,0x2,0x9e,0xb6,0x7,0x49,0xfd,0x10,0xb8,0x9a,0x1e,0xc0, + 0x26,0xe3,0xfd,0xd8,0x65,0x7f,0x8,0xeb,0x34,0xb7,0x63,0x8e,0x98,0xcc,0x4f,0xcd, + 0x59,0x9f,0xc9,0xeb,0xaa,0x28,0x88,0xac,0xd,0x3c,0xf4,0x3a,0x9e,0x5a,0x66,0xc4, + 0xbd,0x6a,0xdc,0x21,0xc5,0xb,0x8,0x38,0xf3,0x98,0xd3,0xf8,0x11,0xa9,0x34,0x9d, + 0x9e,0x7a,0xfc,0xe,0x51,0xd4,0x4e,0xb9,0x59,0xf,0xb0,0x99,0xfc,0xbf,0x39,0xe3, + 0x1e,0xf4,0xe,0x5f,0xc4,0x14,0x69,0xc5,0x6,0x91,0xd1,0xa3,0x27,0x32,0x8b,0x2d, + 0x94,0x5e,0xb8,0x6c,0x8f,0x47,0x30,0x4e,0x45,0x67,0x22,0x39,0xea,0x32,0xe,0x78, + 0x24,0xc0,0xc3,0x2a,0xac,0x3,0xfc,0xda,0x40,0xb8,0xac,0x21,0xf5,0xf5,0x7d,0xe1, + 0xed,0x18,0x3,0xb,0xdd,0xad,0x2d,0x33,0xa7,0x49,0xce,0xfc,0x25,0x19,0x58,0x26, + 0x2b,0x25,0x68,0x7f,0xf0,0xc8,0x8b,0x23,0xf,0x5f,0x21,0xa1,0x82,0xa6,0x41,0xb2, + 0x4b,0xd6,0x8b,0xf,0xb8,0xf2,0xfc,0x3,0x2e,0x92,0xf2,0x27,0x9,0x7c,0xe2,0xc3, + 0xd7,0x38,0x74,0xbf,0x8e,0xac,0x73,0x9f,0xc0,0x17,0xc2,0x29,0x3d,0x1f,0x3a,0x61, + 0xc7,0x30,0x63,0xfe,0x82,0xf3,0x4,0xe2,0x37,0x6,0xc8,0xbc,0x79,0xb3,0x84,0xad, + 0xd6,0x3a,0xbe,0x4e,0x8,0x4d,0xc7,0xd1,0xe0,0x8b,0xf0,0xe7,0xc6,0xc1,0xcd,0x3c, + 0x88,0xa,0xf7,0x0,0x81,0xdf,0x7,0x47,0x43,0x7f,0x98,0xa9,0x7a,0x42,0x4f,0xd6, + 0x9,0x4a,0x32,0xea,0xae,0xbf,0x4,0x3c,0xb3,0x8,0x87,0xc5,0xea,0x66,0xe9,0xe9, + 0x7d,0x2c,0xa2,0xa8,0x1a,0xf1,0x95,0x8d,0x38,0x4d,0xc3,0xdc,0x19,0x8a,0x93,0xd5, + 0x6f,0x71,0x8c,0x3e,0xee,0x25,0xd0,0xac,0x12,0x57,0xde,0x88,0xb0,0x7b,0x4f,0x79, + 0xca,0x6f,0xbe,0x5c,0x80,0xd,0x29,0xb7,0xa0,0xb1,0x3b,0xc,0x7f,0x89,0xfe,0x15, + 0xf0,0x5,0x90,0xdf,0x54,0x97,0xaa,0x27,0xf8,0x6e,0x8d,0x41,0xf4,0xfe,0x14,0xf8, + 0xbb,0xc5,0x61,0x13,0xa9,0xce,0x3,0xbf,0xda,0x1f,0xeb,0x39,0xbb,0xa0,0xcb,0x76, + 0xc5,0x22,0x31,0x8d,0x27,0xac,0xfe,0xac,0x3f,0x7f,0x19,0x1,0x66,0x21,0xa5,0xc5, + 0x8b,0x5,0xec,0xbc,0xfd,0xcb,0x18,0xa5,0xe3,0x2b,0x5f,0x22,0xbe,0xa2,0x23,0x8e, + 0x96,0x37,0xe1,0x48,0xd9,0xb,0xea,0x40,0xcf,0x10,0x78,0xf7,0x21,0x36,0x5d,0x2e, + 0xc4,0xc6,0x4b,0x79,0x30,0x3e,0x71,0xd,0xb2,0x1b,0x9c,0x21,0x3c,0x76,0xf4,0xb7, + 0xe3,0xf6,0x28,0xd,0xc5,0x55,0x65,0x9e,0xd4,0xf7,0x7d,0x5c,0x62,0x79,0xaa,0xdb, + 0xe8,0xf8,0xf0,0x94,0xd7,0x92,0x72,0xc6,0x52,0x9,0x93,0x56,0x9,0x51,0xc9,0xb5, + 0xbf,0x14,0x7c,0xe7,0x62,0x54,0x84,0xe,0xfb,0x2f,0xdf,0x42,0x3c,0x59,0xe9,0x70, + 0x69,0x3d,0x15,0xed,0x73,0xc4,0x94,0x3c,0x43,0xf4,0x83,0x1a,0x44,0xdd,0xaf,0x86, + 0xdf,0xed,0x32,0x38,0xa5,0xdd,0x85,0xf9,0xc9,0x6c,0xf2,0xff,0x5,0xcc,0x5c,0xa2, + 0xf0,0x44,0xb0,0x6f,0xdf,0xe1,0x9f,0xde,0xdf,0x57,0x9b,0xa3,0x67,0xc1,0x75,0xf1, + 0xc,0xb2,0x30,0xb3,0x2e,0x58,0xa3,0xe9,0x4,0x5b,0xbd,0xbd,0x58,0xa3,0xbc,0xd, + 0x2b,0x16,0x38,0x41,0x43,0x72,0x23,0x74,0xa5,0x5d,0xb0,0x50,0x42,0xee,0x97,0x4c, + 0xb8,0xff,0x51,0x0,0xd1,0xf1,0xc3,0x87,0xad,0x71,0x76,0xad,0xc,0x2f,0x7a,0x4a, + 0xc0,0x6b,0x11,0x5d,0xfc,0x84,0x7,0xfc,0xd0,0xbd,0x2a,0x44,0xde,0x7b,0x88,0x9d, + 0xd9,0xf7,0x8,0xfc,0x55,0x18,0x26,0x5f,0x85,0x9c,0x3d,0x17,0x13,0xc7,0xb,0x74, + 0x28,0xc9,0xcf,0xea,0x63,0x62,0xb0,0xee,0x54,0xb8,0xdf,0x31,0xa4,0x9f,0xcc,0xc3, + 0x89,0x98,0x4c,0xac,0x92,0xdd,0xc4,0xb3,0x8d,0x3,0x15,0xad,0x85,0xfa,0x4e,0xea, + 0xfd,0xbb,0x61,0xab,0xbb,0x7,0xf2,0x33,0x57,0x37,0x18,0x68,0x6e,0xb8,0xa8,0xaa, + 0xa0,0xe5,0x38,0x60,0x40,0x4f,0x5e,0xf1,0xff,0xd2,0x6b,0xc9,0x2,0xf6,0x52,0x73, + 0xef,0x80,0xc6,0xbd,0x39,0xf7,0x11,0x7c,0xa7,0x1c,0x21,0x77,0xca,0xe8,0xb1,0x14, + 0x7e,0xd7,0xb,0xb1,0xfe,0x54,0x36,0x56,0x27,0x65,0x60,0xd9,0x36,0x5f,0x4c,0x98, + 0x38,0x29,0x89,0x36,0xe6,0x7d,0xe0,0x37,0xd0,0x31,0x30,0xd,0xdb,0x9b,0x80,0xa3, + 0x41,0x69,0x38,0xb8,0xe7,0x14,0xc2,0xbc,0x4f,0xc0,0x4c,0x6d,0x3b,0xd4,0x66,0xdb, + 0x42,0x77,0xb1,0xb,0x56,0xc9,0x6c,0x1,0x67,0xde,0x46,0xc8,0x89,0x98,0xc3,0x58, + 0xd9,0x3,0x47,0xe,0xa4,0x21,0xd8,0xeb,0x38,0x6c,0x4c,0xb8,0xf5,0xb3,0x66,0xce, + 0xde,0x46,0x4b,0x74,0xff,0xa5,0x24,0x96,0xaa,0x6b,0x9c,0xde,0x98,0x9c,0xe,0xd7, + 0xd4,0x5c,0x78,0x90,0xa5,0xb6,0xa7,0xe7,0xc2,0xf1,0x1c,0xd9,0x26,0xee,0x12,0xa4, + 0x7d,0xc2,0xb1,0x58,0xdf,0xb8,0x5d,0xdb,0xd6,0xb1,0x48,0xdd,0xca,0xfe,0xb6,0x98, + 0xac,0x42,0x92,0xc6,0xd2,0x15,0x15,0x89,0x21,0x69,0x88,0xf4,0x3f,0x8b,0x10,0xaf, + 0x64,0x4,0x50,0xfb,0xdc,0xe7,0x7e,0x14,0x5b,0x2d,0x83,0x60,0xa1,0xb1,0x13,0xab, + 0x15,0xdc,0xb0,0x6a,0xc9,0x66,0x98,0x2c,0xdb,0x46,0xc3,0x5d,0xc,0x82,0x3c,0x8f, + 0x21,0x64,0xd7,0x9,0x4,0x6e,0x3b,0xe,0x4d,0x99,0xb5,0x10,0x10,0x10,0x74,0xfb, + 0x59,0x2,0xbf,0x2f,0x59,0xb2,0x64,0x91,0xb5,0xab,0xfb,0x5e,0x9b,0xed,0x3e,0xb9, + 0x6c,0x13,0xfb,0xb7,0x76,0xe7,0xaf,0xc3,0x2c,0xf9,0x32,0xc,0x8f,0x9e,0xc3,0xaa, + 0xd8,0x93,0x90,0xf,0x3e,0x8a,0x69,0x3b,0x3,0xd1,0xc7,0xd0,0x1a,0x73,0xad,0xdd, + 0xe1,0x93,0x93,0xf,0xfb,0x73,0x99,0x90,0xda,0x1b,0x6,0x41,0xcd,0x55,0x58,0xa3, + 0x63,0x85,0x88,0x3d,0x67,0x70,0xc0,0x33,0x11,0x3b,0xe8,0xa0,0x72,0xb7,0xc,0xa5, + 0x8,0xe9,0x18,0x1f,0xd6,0x6,0xc1,0x99,0xba,0x91,0xd,0x59,0xc8,0x4c,0xcd,0x93, + 0x97,0x1d,0xa6,0xa8,0xd,0xe4,0x5c,0xc1,0x99,0xeb,0x88,0x19,0x93,0xa4,0x5e,0xd, + 0x19,0xdf,0x5f,0xe8,0x7f,0x44,0x42,0x6e,0x9,0x5b,0xc1,0xd1,0x63,0x67,0x5a,0x54, + 0x6a,0x56,0x7b,0x76,0xed,0x6b,0xa4,0x3d,0x7a,0x9,0x31,0x43,0x7,0x8,0x19,0xda, + 0x63,0xee,0x16,0x5f,0xcc,0xe2,0xfa,0x42,0xd8,0x79,0x27,0x46,0xac,0xdb,0x84,0x7e, + 0x5a,0xe6,0x18,0xac,0x66,0x8c,0x25,0x1e,0xfb,0xa1,0x71,0x30,0x11,0x73,0x76,0x87, + 0x60,0xd2,0x36,0x7f,0x8c,0xdc,0xe2,0x8d,0xe1,0x6c,0x5,0x70,0x2d,0x7d,0xb0,0xcb, + 0x21,0xa,0x4e,0xe4,0x7d,0xa6,0xfb,0x6c,0xd4,0xf7,0xa3,0x83,0x6b,0x2f,0xec,0xa8, + 0x98,0x19,0xff,0x5b,0xae,0xf0,0x82,0xa9,0xea,0x76,0x18,0x2a,0x70,0xa1,0xbd,0xc8, + 0x19,0x1a,0xf3,0x1c,0xa0,0x3e,0xcb,0x1,0x8b,0xa7,0xae,0xc4,0x18,0x81,0x31,0xee, + 0x3f,0x4c,0x40,0x49,0x56,0xd6,0xd0,0x71,0x87,0x77,0xeb,0x8d,0xfa,0xb7,0xc8,0xa3, + 0xe1,0xe7,0x46,0x7d,0x33,0xae,0xd7,0xbd,0x47,0x1c,0xf9,0x5e,0xcf,0x3b,0xc,0x73, + 0x2d,0xb7,0x42,0xdc,0xc2,0x15,0xe2,0x1b,0xb6,0x62,0x8e,0xbd,0x27,0xa4,0xdd,0x3, + 0xa0,0x1a,0x78,0x14,0x4a,0x21,0x71,0x4,0x3e,0x14,0x7f,0x6d,0xdf,0x87,0x89,0xae, + 0x3e,0xe0,0x77,0xda,0x89,0xbe,0x6,0xeb,0xa0,0x20,0xa7,0x3,0xf,0x8b,0x50,0xde, + 0x89,0xeb,0x6c,0xb4,0xf,0x4e,0x44,0xc2,0xc1,0xc0,0xf,0x76,0xab,0x88,0x80,0xde, + 0x1e,0x58,0xeb,0xec,0x26,0x1b,0x79,0xf0,0x6a,0x62,0x25,0x9b,0x8,0x48,0x3a,0x40, + 0x65,0x86,0x35,0xe4,0xa6,0x9a,0x61,0xc2,0x98,0xa9,0xb7,0x59,0xa3,0x7f,0xe0,0x43, + 0x8d,0xcc,0xc2,0x85,0x42,0xfa,0x66,0xe6,0x8d,0x31,0x77,0xcb,0x71,0xf1,0x49,0x13, + 0x52,0xab,0x1b,0x71,0xb1,0xaa,0x11,0x27,0x2b,0x9e,0x23,0xb1,0xa2,0x9e,0x6,0xb7, + 0x7a,0x3a,0xb8,0x9e,0x90,0x55,0x1e,0xc0,0x35,0x3d,0xf,0xd6,0x67,0xb3,0x61,0x94, + 0x70,0x9,0xcb,0xf,0x1e,0xc3,0x62,0xff,0x48,0x88,0x7b,0x5,0x61,0xf2,0x56,0x5f, + 0x8,0xb8,0xec,0xc2,0x50,0x5b,0x77,0xf4,0x5b,0xe7,0x2,0x41,0x49,0x39,0x38,0x1b, + 0xfa,0x60,0x8b,0x49,0xc0,0x67,0x12,0xcc,0x67,0x0,0x66,0x7c,0xe8,0xcc,0xc2,0x1a, + 0x65,0x77,0x2c,0x9d,0x69,0x45,0xad,0xd5,0x11,0x6a,0xb3,0x6c,0xa1,0x34,0x6d,0x3d, + 0x64,0x85,0xd7,0x41,0x64,0xac,0x64,0xf3,0xd0,0x91,0x7d,0xa6,0x7f,0x77,0x16,0x54, + 0x95,0x95,0x3,0x77,0xc4,0x24,0x22,0x96,0x7a,0x7c,0x44,0xfe,0x43,0x44,0x14,0x54, + 0x21,0x2c,0xbf,0xa,0xa1,0x14,0x21,0xcc,0x63,0xc1,0x63,0xf8,0xdf,0x2c,0x3,0x37, + 0xed,0x36,0x36,0x9c,0xca,0x84,0x61,0xdc,0x5,0xac,0x38,0x74,0x12,0xaa,0x61,0x89, + 0x50,0xa,0x3a,0x2,0xb6,0xdf,0x21,0x22,0xb0,0x17,0xa3,0x9c,0x3c,0xc1,0x67,0xc5, + 0x45,0x7f,0xf3,0x4d,0x18,0xcc,0x56,0x82,0x85,0xe6,0x26,0xb8,0xd1,0xcc,0xef,0x62, + 0x1c,0xd0,0x91,0x85,0xd5,0xfb,0xa8,0x95,0x76,0x64,0xc1,0x46,0xd7,0x87,0x57,0xd0, + 0x8b,0x26,0x18,0x43,0x4d,0xc2,0xe,0x2a,0x33,0xad,0xa1,0x20,0xb2,0xe,0xd2,0x42, + 0x6b,0x31,0x43,0x40,0x11,0xc3,0x86,0xd,0x36,0xfe,0x2e,0x2,0xa,0x6c,0xf6,0x68, + 0x3d,0x23,0xe3,0xe7,0x7,0x73,0x1f,0x20,0xfa,0xde,0x63,0x44,0x12,0xf8,0x83,0x14, + 0xe1,0xf4,0x65,0x53,0x18,0x5,0xf3,0xb8,0xef,0x56,0x39,0x6c,0xcf,0x90,0xea,0xf1, + 0x17,0xa0,0x13,0x7d,0x9a,0xc0,0x9f,0x20,0xdf,0x27,0x63,0x79,0x58,0x12,0x54,0x43, + 0x13,0xa0,0x12,0x1a,0x8f,0x79,0x3e,0x61,0x18,0xe7,0x42,0xf5,0x61,0xb3,0x15,0xfd, + 0x4c,0x9d,0xd0,0x6b,0x89,0xa,0xf4,0x95,0x2d,0xb1,0xd5,0x3c,0x84,0xc6,0xe6,0x2f, + 0xb2,0xc0,0xb3,0x92,0x2f,0xac,0xb4,0x77,0x43,0x8f,0xba,0xd1,0xfc,0x31,0x86,0x50, + 0x16,0xb5,0x84,0xb2,0x98,0x25,0x64,0x84,0xd7,0x62,0xd1,0x78,0x13,0x48,0x8c,0x56, + 0xc7,0xf0,0xe1,0x23,0x42,0xbf,0x8f,0x80,0xb4,0xf4,0x1a,0xfb,0x5d,0x7b,0x10,0x5b, + 0x5c,0x83,0xc8,0xc2,0x2a,0x9e,0xfa,0x9d,0x4,0xc2,0xb,0x1f,0x53,0x16,0x1e,0xc1, + 0xe1,0x5c,0xe,0x56,0x1d,0x39,0xb,0xbd,0xd8,0xb3,0x58,0x19,0x75,0xa,0x1c,0x22, + 0xa0,0x7e,0xf0,0x38,0x2f,0x3,0xcb,0x42,0xe2,0xa1,0x1c,0x74,0x14,0x72,0x1,0x31, + 0x98,0xb4,0x65,0x37,0x84,0x9c,0x77,0xa0,0xaf,0x91,0x1d,0x7a,0xc8,0x2d,0xc7,0x72, + 0x59,0x23,0x6c,0x5b,0x17,0xc2,0xb3,0x11,0x33,0x3a,0x33,0x73,0x10,0x93,0x85,0x8d, + 0x64,0x25,0x13,0x15,0xf,0x68,0x2f,0x74,0xc6,0x1c,0xfe,0x55,0x90,0x27,0xe5,0x15, + 0xa7,0x5a,0x90,0xfa,0xa6,0x58,0x28,0x60,0x84,0xd9,0xfc,0x5a,0x18,0x39,0x64,0x5c, + 0x26,0x11,0xf8,0xbd,0x4b,0x12,0x2a,0x4b,0x97,0x26,0xfb,0x9c,0xb8,0x80,0x98,0xfb, + 0x4f,0xbe,0x52,0x9f,0x51,0x3e,0xe0,0x76,0x39,0xfc,0x73,0xcb,0x60,0x76,0x2c,0xd, + 0xfa,0x47,0x53,0xa0,0x17,0x73,0x16,0xda,0x44,0x40,0x33,0xe2,0x4,0x96,0x87,0x1f, + 0x23,0xe5,0x13,0xb0,0x34,0x38,0xe,0x8a,0x81,0x47,0xa0,0x10,0x18,0x8b,0xc9,0xae, + 0x7b,0x30,0xdd,0xcd,0x7,0x3,0x8d,0x6c,0xd1,0x5d,0x41,0x13,0xf2,0xd2,0x3a,0xd8, + 0xb1,0xe1,0x10,0xb6,0xae,0x65,0xe6,0xff,0x40,0x22,0x11,0xc0,0xeb,0x4a,0x16,0x1a, + 0xbb,0xe8,0x2c,0xd8,0x2,0x4d,0x3a,0xd0,0x66,0xd,0xd3,0x83,0xec,0xe4,0xb5,0x90, + 0x9b,0x62,0x4e,0xea,0x1b,0x63,0xfe,0x68,0x3,0x48,0xc,0xd3,0xc5,0x48,0xbe,0x9, + 0xe5,0xfd,0xbb,0x1a,0xf2,0xd8,0xe2,0xe2,0x43,0xb4,0xf5,0xd,0xab,0xc2,0x72,0xa, + 0x79,0xf6,0x39,0xf4,0xa5,0xfa,0x44,0xc0,0x89,0xf9,0x1e,0x28,0xbb,0x8,0xa6,0x49, + 0xa9,0x58,0x75,0xf8,0x5c,0x87,0x7d,0x22,0x4f,0xf2,0xec,0xa3,0x16,0x9e,0xf4,0x49, + 0xfd,0x38,0x28,0x1c,0x38,0xcc,0x23,0x20,0x42,0x4,0xc4,0xe9,0x64,0x1e,0x61,0xe6, + 0x88,0x6e,0xf2,0x5a,0x18,0x2f,0x3c,0xfd,0xb5,0xae,0x8a,0x59,0xeb,0x7a,0x1d,0x77, + 0x2a,0xde,0x3d,0x54,0xbc,0x7e,0x34,0x4a,0x78,0x63,0x8d,0xc2,0x36,0x22,0xc0,0x85, + 0xfa,0x1c,0x7,0xcc,0x1a,0xaa,0xc3,0x2b,0x5c,0x26,0xd8,0x82,0xa6,0x98,0xc7,0xbf, + 0x1a,0xd3,0xff,0xe4,0x60,0xd8,0x60,0x81,0x17,0xbd,0x6,0xb3,0xc6,0xfe,0x6b,0x6, + 0xa4,0x17,0xce,0x93,0x32,0xb1,0x71,0x68,0xe3,0x79,0xff,0x93,0x7d,0x18,0xe5,0x99, + 0x8,0xba,0x53,0x9,0x93,0xb8,0xb3,0xf0,0xcc,0x2c,0x80,0x19,0x7d,0x3a,0xd3,0x25, + 0xfb,0x30,0xea,0x77,0xda,0x47,0xe5,0x93,0x7d,0x14,0xa9,0x95,0xca,0x1f,0x88,0xa5, + 0x2c,0x10,0x81,0xcd,0xbb,0x31,0x75,0xb3,0x17,0x4,0xad,0x5d,0xf1,0xbb,0xa2,0xe, + 0xfe,0x1c,0x3b,0x25,0x45,0x43,0x56,0xc7,0x42,0x76,0xc1,0xb2,0x50,0x99,0x5,0x6a, + 0x69,0x72,0xf3,0x35,0xf2,0x64,0x24,0x39,0xf7,0xa5,0x67,0x6b,0x16,0xcd,0x9f,0xbe, + 0xec,0xb6,0xc4,0x64,0x99,0x54,0xe1,0x11,0xf3,0x93,0xc5,0x4,0xa5,0xaf,0x88,0x9, + 0x2c,0xb9,0x35,0x95,0x9f,0x5d,0x38,0x71,0xe8,0xdc,0xfc,0x51,0x7c,0xc2,0x59,0x7c, + 0x83,0xf8,0xe8,0xfb,0xa2,0x2e,0x7e,0xab,0x93,0x95,0x96,0xb6,0xd8,0xe8,0xb3,0x1f, + 0x31,0xc5,0x4f,0xbf,0x56,0x9f,0xbc,0xef,0x9f,0x5b,0xa,0xdd,0xa8,0x63,0x70,0xbf, + 0x9c,0x87,0x75,0xc9,0x57,0x78,0xea,0x6b,0x31,0xea,0x47,0x30,0xea,0x7f,0x6d,0x1f, + 0x79,0xf2,0xbf,0x52,0xe0,0x61,0x4c,0xb0,0xf7,0x80,0xa0,0x9d,0x3b,0x44,0xe9,0x30, + 0xfb,0x6d,0x8e,0xc,0x86,0x8c,0x98,0x10,0x1b,0xef,0x91,0x35,0x7d,0xf7,0x86,0x78, + 0xf1,0x2d,0xc6,0x7,0xc4,0x2d,0x75,0x3d,0x24,0xd7,0xa8,0xdb,0xcf,0x37,0x52,0xb3, + 0x9f,0xcb,0x91,0xdb,0x20,0xbe,0x6c,0xbe,0xf5,0x54,0x71,0x7e,0x83,0xc9,0x72,0xe2, + 0xeb,0x27,0x2f,0x14,0xd6,0x9c,0x26,0x21,0xa0,0x34,0x7d,0xc6,0x28,0x5,0xd1,0xe9, + 0xa3,0x64,0x84,0x4,0x4,0x4,0x6,0x75,0xe9,0x7f,0x19,0x69,0xe9,0x70,0xcf,0x23, + 0xc9,0x3c,0x2,0xdf,0x16,0xef,0x9e,0x9c,0x62,0x68,0x86,0x1d,0x85,0xcb,0x85,0x1b, + 0xb0,0xa2,0xd6,0xb9,0xf2,0x73,0xf7,0x61,0x8a,0x97,0xec,0x43,0x9d,0x47,0x39,0xe8, + 0x93,0x7d,0x28,0x3,0xb2,0xfb,0xa2,0x30,0x94,0xfa,0x3f,0x1f,0x67,0xd,0xf8,0xe7, + 0x2d,0xaa,0x61,0xf5,0x1b,0x7c,0x68,0xdc,0xb8,0xa9,0xf2,0x1e,0x16,0x7,0x67,0xba, + 0x98,0xec,0x9b,0xb9,0xd9,0x2c,0x50,0x6c,0xb3,0x49,0xd0,0x34,0xae,0x59,0xb8,0xc8, + 0xe6,0x35,0xa1,0x53,0x6c,0x57,0xfa,0x4f,0xa6,0x3,0x6c,0xf2,0xbc,0x91,0x46,0xc2, + 0x64,0x25,0x21,0xf5,0x59,0xd6,0xe3,0xe5,0x85,0xad,0xc6,0x2d,0x9e,0xb2,0x4e,0x40, + 0x6c,0xb8,0xfc,0x38,0x3e,0x3e,0xbe,0x1,0x5d,0x11,0xf8,0x4d,0x41,0x41,0xe1,0x8a, + 0x5f,0x4a,0x6,0xa2,0xa9,0x80,0xbf,0x6a,0x9d,0x94,0x1,0x6f,0xf2,0xbe,0x4a,0x50, + 0x34,0x6c,0x4e,0x67,0xc2,0xf2,0x54,0x6,0x59,0xe8,0xc,0x38,0x11,0x27,0x3b,0xba, + 0xf,0x53,0xbc,0xd4,0x7d,0x94,0xa8,0xfb,0x28,0x5,0x1d,0x26,0xf5,0x8f,0x40,0xc4, + 0xcd,0xf,0xbd,0xb5,0xd7,0xa2,0xdb,0x88,0x31,0x2f,0xfb,0x8f,0x1b,0xa7,0xd2,0xd3, + 0x6c,0xc7,0xb8,0x21,0x12,0x4b,0x26,0x6d,0x5c,0xb5,0x73,0x8a,0xb3,0xa9,0xff,0x64, + 0xae,0xf1,0xbe,0x49,0xe,0x86,0xbe,0x42,0x36,0x7a,0x3e,0x13,0xad,0x75,0xf6,0x8c, + 0xb7,0xd3,0xf3,0x16,0xd4,0x62,0x3b,0x8e,0x9b,0x3f,0xde,0x74,0xac,0xea,0x2c,0xdb, + 0x31,0xa,0xd3,0x2c,0x47,0xcb,0x8,0x5b,0x8c,0x94,0x9a,0x6c,0xc2,0x2f,0x22,0xc0, + 0x1e,0xd1,0xa5,0x7d,0xe6,0x8a,0x8a,0xe,0x53,0x51,0xd7,0xa8,0x8,0xcc,0xca,0x43, + 0x54,0xd1,0xd7,0x4,0xc2,0xe8,0xe0,0xda,0x91,0x55,0x8,0xa5,0x80,0x48,0x2a,0xe0, + 0x8b,0xbc,0x2e,0xa4,0x1d,0x75,0x9a,0x80,0x27,0x51,0xe7,0x49,0xec,0x68,0x9f,0x44, + 0x42,0x91,0x48,0x2c,0xa2,0x2,0x9e,0xe2,0xe6,0x8f,0xbe,0xcb,0xd,0xd0,0x9d,0x7f, + 0x6c,0x6b,0xaf,0x41,0x7c,0xce,0xd2,0xa7,0x2e,0x8d,0xea,0xa9,0x63,0x3d,0xbe,0xa7, + 0x94,0x94,0xa0,0x81,0xaa,0xd5,0x38,0xae,0x69,0xf0,0xd8,0x4d,0xe6,0x1,0x63,0x36, + 0xea,0xfa,0x8d,0x76,0x30,0xda,0x37,0xd2,0x5a,0x77,0xf,0xbf,0xbd,0x81,0xd7,0x88, + 0x35,0xd2,0xce,0xc3,0x35,0xa7,0x5b,0xe,0x5d,0xc9,0xe6,0xe,0x51,0x93,0x70,0xfa, + 0x53,0x4e,0xc4,0x86,0x4f,0x79,0x9a,0xf9,0xe0,0x89,0x13,0x67,0x33,0xea,0xff,0x7b, + 0xb,0x95,0x99,0x3f,0x7f,0xac,0xbc,0xa2,0xd2,0xb,0xdf,0x94,0x4c,0x1c,0xae,0x7c, + 0x81,0xe8,0xf2,0xfa,0x4f,0xd1,0x80,0x88,0x92,0xe7,0xd8,0x75,0xbd,0x84,0x54,0x3e, + 0x4c,0x63,0x73,0xa,0x4c,0x4e,0x64,0x80,0x13,0x7b,0xe,0xf2,0x61,0x9,0x90,0xa, + 0x88,0x85,0x84,0xef,0x21,0x88,0x79,0x85,0x60,0x3c,0x73,0xf2,0x6a,0xad,0x41,0xcf, + 0xbf,0xc4,0xf1,0xc7,0xc0,0x41,0xd7,0x7,0xd,0x1b,0xa6,0xbb,0x20,0x2e,0x63,0xe8, + 0xc,0xee,0xae,0x91,0xbd,0xb5,0x2d,0x46,0xf6,0x51,0x52,0x1a,0xb1,0x4c,0x5a,0x7b, + 0xf8,0xf6,0xd5,0xe1,0x43,0x6d,0x4d,0x83,0x87,0xd8,0xae,0xdc,0x3d,0xc4,0x46,0xd3, + 0x87,0xcf,0x5c,0x67,0xc7,0x60,0x2b,0xd5,0xbd,0x83,0x4c,0x65,0x76,0xe,0x34,0x52, + 0x71,0xe8,0xaf,0x32,0xcf,0xa1,0xbf,0x9e,0xa8,0x5d,0xdf,0xa5,0xe2,0xa6,0x7d,0x34, + 0x47,0xdb,0xf4,0x16,0x11,0x11,0xe9,0xfa,0x87,0x76,0x71,0x71,0xf1,0x1e,0x52,0x52, + 0x52,0x6e,0xcb,0x56,0xac,0x2c,0x33,0xdb,0xea,0xd9,0x68,0xe3,0x17,0xfc,0xde,0xfe, + 0xc0,0xa1,0xf7,0xd6,0xfe,0xa1,0x2f,0x4d,0x3d,0x7d,0x6b,0x34,0xed,0x5c,0x1e,0xcc, + 0x59,0xa1,0x9b,0x3b,0x47,0xc7,0xb0,0x74,0xa1,0xc9,0x86,0xe7,0x73,0x8c,0xd7,0xbf, + 0x11,0xd3,0x37,0x69,0x11,0x5a,0xa1,0xf7,0x6e,0xa4,0xbc,0xea,0xb,0x3e,0x89,0xf9, + 0x15,0x7d,0xc7,0x4f,0xba,0xda,0x67,0xe0,0x60,0x7f,0xbe,0x81,0x3,0xd5,0xa5,0xac, + 0xad,0xf9,0xe3,0xda,0xdb,0x7b,0x8b,0xf8,0x84,0xf2,0x89,0x70,0x7d,0xf8,0x6,0x9a, + 0x3b,0xd,0x1e,0xa8,0x6a,0x30,0x48,0x5c,0x5c,0x66,0x20,0x57,0xd7,0x6f,0x80,0x83, + 0xd1,0xae,0xfe,0xeb,0x38,0xdc,0x7e,0x64,0x9d,0xbe,0x44,0xa2,0xb7,0x81,0x1,0xb7, + 0x17,0x97,0x13,0xff,0x87,0xa9,0x69,0x70,0xf,0x36,0x9b,0xdb,0x9d,0xc3,0xe2,0x74, + 0x63,0xb1,0xb8,0x8c,0xea,0x5d,0x1f,0x5e,0x9d,0xc5,0xc1,0xa5,0x9b,0xa5,0x17,0x48, + 0x8b,0x6a,0xe8,0x1a,0x2c,0x52,0xd2,0xd4,0x56,0x90,0x55,0x53,0x93,0x93,0x51,0x53, + 0x63,0xcb,0x68,0x68,0xcf,0x5a,0x69,0xb6,0x41,0x88,0xbb,0x2b,0x6c,0xe4,0x1c,0x19, + 0x65,0x21,0x9,0x36,0x7b,0xd6,0x24,0x11,0xd1,0x5,0x2,0x13,0x84,0x17,0x8f,0x11, + 0x14,0x94,0x1a,0x3b,0x76,0x82,0xb8,0x90,0x90,0xd0,0x78,0x8e,0xa9,0xe3,0x40,0xfa, + 0xc2,0xae,0x3b,0x45,0x37,0xd3,0x5c,0xf4,0x51,0x9,0xb,0xeb,0x2f,0xc2,0xdd,0xdf, + 0x6f,0xb8,0x9d,0x77,0xdf,0xd1,0x36,0x36,0xbd,0x59,0x6,0x6,0xbd,0x44,0x38,0x9c, + 0x3f,0x82,0x4d,0x73,0x7b,0x30,0x40,0xe3,0xe9,0x77,0x62,0xe,0x2b,0xbe,0x1b,0x97, + 0x7,0x14,0xf4,0xf5,0x4b,0x67,0xf0,0xbe,0x8a,0xf9,0x32,0xba,0xaa,0xdf,0xff,0x7e, + 0x9d,0xc3,0xe1,0xc,0x3c,0x56,0x54,0xfd,0x67,0x7b,0x7b,0xfb,0x0,0x8a,0xfe,0x4c, + 0x94,0xd0,0xdf,0xe9,0x8d,0x18,0x74,0xbc,0x12,0x83,0xe2,0x9f,0xa1,0x1f,0x1,0xec, + 0x45,0xd1,0x83,0x1,0xda,0x19,0xb9,0xf4,0xdc,0xb2,0xa4,0xbd,0xa7,0x41,0x44,0x7a, + 0x2f,0x5,0x3f,0xbf,0x9e,0xa6,0xc1,0xb9,0x3d,0xc4,0x9,0x24,0xf3,0x63,0x36,0x8b, + 0xc3,0xa8,0xc9,0x53,0xb2,0x13,0x14,0xb,0x4,0x16,0x9f,0x9f,0x77,0x0,0xa7,0xb5, + 0xbe,0x8a,0x2f,0xef,0xff,0x6e,0x6,0x6c,0x36,0xbb,0xbb,0x8e,0x8e,0xce,0xe0,0xe3, + 0xc7,0xf3,0x6,0xc5,0x5f,0x2c,0x1f,0x78,0xf6,0x6c,0xc9,0x80,0xe4,0xe4,0xfb,0xfd, + 0xe3,0xe3,0xb,0xfb,0x9d,0x3f,0x7f,0xa7,0xef,0xc9,0x93,0xb9,0x7d,0xd2,0xd3,0x2b, + 0x7b,0xf9,0x9d,0x3d,0xdb,0x93,0xcb,0xa5,0x94,0x7,0x93,0x92,0xf1,0xa4,0x24,0xf, + 0x24,0xbe,0x51,0x92,0x1,0xf6,0x37,0x35,0x3b,0x40,0xf2,0xd4,0xfe,0xfa,0x35,0x1e, + 0xa9,0x2f,0x48,0x7c,0x7a,0xfd,0xbb,0xb1,0x7f,0xbe,0x91,0x29,0x1a,0x2e,0x37,0xa2, + 0x57,0x4,0xa9,0x19,0x5f,0x58,0xf8,0x47,0x6e,0x6e,0x6e,0x8f,0xf4,0xf4,0xf4,0xee, + 0xc,0x50,0xda,0xe0,0xf7,0xbf,0x29,0x45,0x9b,0xb2,0x3a,0xe3,0x2b,0x2b,0xfc,0x67, + 0x4b,0x74,0xa8,0xff,0xf7,0xf8,0x51,0xc5,0xff,0xb,0x29,0xf,0xf2,0x63,0x5,0x3e, + 0xff,0x4e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/contacts.png + 0x0,0x0,0x20,0x51, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8e,0x7c,0xfb,0x51,0x93, + 0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x87,0xf,0x0,0x0,0x8c,0xf, + 0x0,0x0,0xfd,0x52,0x0,0x0,0x81,0x40,0x0,0x0,0x7d,0x79,0x0,0x0,0xe9,0x8b, + 0x0,0x0,0x3c,0xe5,0x0,0x0,0x19,0xcc,0x73,0x3c,0x85,0x77,0x0,0x0,0xa,0x39, + 0x69,0x43,0x43,0x50,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x49,0x43, + 0x43,0x20,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x0,0x0,0x48,0xc7,0x9d,0x96,0x77, + 0x54,0x54,0xd7,0x16,0x87,0xcf,0xbd,0x77,0x7a,0xa1,0xcd,0x30,0xd2,0x19,0x7a,0x93, + 0x2e,0x30,0x80,0xf4,0x2e,0x20,0x1d,0x4,0x51,0x18,0x66,0x6,0x18,0xca,0x0,0xc3, + 0xc,0x4d,0x6c,0x88,0xa8,0x40,0x44,0x11,0x11,0x1,0x45,0x90,0xa0,0x80,0x1,0xa3, + 0xa1,0x48,0xac,0x88,0x62,0x21,0x28,0xa8,0x60,0xf,0x48,0x10,0x50,0x62,0x30,0x8a, + 0xa8,0xa8,0x64,0x46,0xd6,0x4a,0x7c,0x79,0x79,0xef,0xe5,0xe5,0xf7,0xc7,0xbd,0xdf, + 0xda,0x67,0xef,0x73,0xf7,0xd9,0x7b,0x9f,0xb5,0x2e,0x0,0x24,0x4f,0x1f,0x2e,0x2f, + 0x5,0x96,0x2,0x20,0x99,0x27,0xe0,0x7,0x7a,0x38,0xd3,0x57,0x85,0x47,0xd0,0xb1, + 0xfd,0x0,0x6,0x78,0x80,0x1,0xa6,0x0,0x30,0x59,0xe9,0xa9,0xbe,0x41,0xee,0xc1, + 0x40,0x24,0x2f,0x37,0x17,0x7a,0xba,0xc8,0x9,0xfc,0x8b,0xde,0xc,0x1,0x48,0xfc, + 0xbe,0x65,0xe8,0xe9,0x4f,0xa7,0x83,0xff,0x4f,0xd2,0xac,0x54,0xbe,0x0,0x0,0xc8, + 0x5f,0xc4,0xe6,0x6c,0x4e,0x3a,0x4b,0xc4,0xf9,0x22,0x4e,0xca,0x14,0xa4,0x8a,0xed, + 0x33,0x22,0xa6,0xc6,0x24,0x8a,0x19,0x46,0x89,0x99,0x2f,0x4a,0x50,0xc4,0x72,0x62, + 0x8e,0x5b,0xe4,0xa5,0x9f,0x7d,0x16,0xd9,0x51,0xcc,0xec,0x64,0x1e,0x5b,0xc4,0xe2, + 0x9c,0x53,0xd9,0xc9,0x6c,0x31,0xf7,0x88,0x78,0x7b,0x86,0x90,0x23,0x62,0xc4,0x47, + 0xc4,0x5,0x19,0x5c,0x4e,0xa6,0x88,0x6f,0x8b,0x58,0x33,0x49,0x98,0xcc,0x15,0xf1, + 0x5b,0x71,0x6c,0x32,0x87,0x99,0xe,0x0,0x8a,0x24,0xb6,0xb,0x38,0xac,0x78,0x11, + 0x9b,0x88,0x98,0xc4,0xf,0xe,0x74,0x11,0xf1,0x72,0x0,0x70,0xa4,0xb8,0x2f,0x38, + 0xe6,0xb,0x16,0x70,0xb2,0x4,0xe2,0x43,0xb9,0xa4,0xa4,0x66,0xf3,0xb9,0x71,0xf1, + 0x2,0xba,0x2e,0x4b,0x8f,0x6e,0x6a,0x6d,0xcd,0xa0,0x7b,0x72,0x32,0x93,0x38,0x2, + 0x81,0xa1,0x3f,0x93,0x95,0xc8,0xe4,0xb3,0xe9,0x2e,0x29,0xc9,0xa9,0x4c,0x5e,0x36, + 0x0,0x8b,0x67,0xfe,0x2c,0x19,0x71,0x6d,0xe9,0xa2,0x22,0x5b,0x9a,0x5a,0x5b,0x5a, + 0x1a,0x9a,0x19,0x99,0x7e,0x51,0xa8,0xff,0xba,0xf8,0x37,0x25,0xee,0xed,0x22,0xbd, + 0xa,0xf8,0xdc,0x33,0x88,0xd6,0xf7,0x87,0xed,0xaf,0xfc,0x52,0xea,0x0,0x60,0xcc, + 0x8a,0x6a,0xb3,0xeb,0xf,0x5b,0xcc,0x7e,0x0,0x3a,0xb6,0x2,0x20,0x77,0xff,0xf, + 0x9b,0xe6,0x21,0x0,0x24,0x45,0x7d,0x6b,0xbf,0xf1,0xc5,0x79,0x68,0xe2,0x79,0x89, + 0x17,0x8,0x52,0x6d,0x8c,0x8d,0x33,0x33,0x33,0x8d,0xb8,0x1c,0x96,0x91,0xb8,0xa0, + 0xbf,0xeb,0x7f,0x3a,0xfc,0xd,0x7d,0xf1,0x3d,0x23,0xf1,0x76,0xbf,0x97,0x87,0xee, + 0xca,0x89,0x65,0xa,0x93,0x4,0x74,0x71,0xdd,0x58,0x29,0x49,0x29,0x42,0x3e,0x3d, + 0x3d,0x95,0xc9,0xe2,0xd0,0xd,0xff,0x3c,0xc4,0xff,0x38,0xf0,0xaf,0xf3,0x58,0x1a, + 0xc8,0x89,0xe5,0xf0,0x39,0x3c,0x51,0x44,0xa8,0x68,0xca,0xb8,0xbc,0x38,0x51,0xbb, + 0x79,0x6c,0xae,0x80,0x9b,0xc2,0xa3,0x73,0x79,0xff,0xa9,0x89,0xff,0x30,0xec,0x4f, + 0x5a,0x9c,0x6b,0x91,0x28,0xf5,0x9f,0x0,0x35,0xca,0x8,0x48,0xdd,0xa0,0x2,0xe4, + 0xe7,0x3e,0x80,0xa2,0x10,0x1,0x12,0x79,0x50,0xdc,0xf5,0xdf,0xfb,0xe6,0x83,0xf, + 0x5,0xe2,0x9b,0x17,0xa6,0x3a,0xb1,0x38,0xf7,0x9f,0x5,0xfd,0xfb,0xae,0x70,0x89, + 0xf8,0x91,0xce,0x8d,0xfb,0x1c,0xe7,0x12,0x18,0x4c,0x67,0x9,0xf9,0x19,0x8b,0x6b, + 0xe2,0x6b,0x9,0xd0,0x80,0x0,0x24,0x1,0x15,0xc8,0x3,0x15,0xa0,0x1,0x74,0x81, + 0x21,0x30,0x3,0x56,0xc0,0x16,0x38,0x2,0x37,0xb0,0x2,0xf8,0x81,0x60,0x10,0xe, + 0xd6,0x2,0x16,0x88,0x7,0xc9,0x80,0xf,0x32,0x41,0x2e,0xd8,0xc,0xa,0x40,0x11, + 0xd8,0x5,0xf6,0x82,0x4a,0x50,0x3,0xea,0x41,0x23,0x68,0x1,0x27,0x40,0x7,0x38, + 0xd,0x2e,0x80,0xcb,0xe0,0x3a,0xb8,0x9,0xee,0x80,0x7,0x60,0x4,0x8c,0x83,0xe7, + 0x60,0x6,0xbc,0x1,0xf3,0x10,0x4,0x61,0x21,0x32,0x44,0x81,0xe4,0x21,0x55,0x48, + 0xb,0x32,0x80,0xcc,0x20,0x6,0x64,0xf,0xb9,0x41,0x3e,0x50,0x20,0x14,0xe,0x45, + 0x43,0x71,0x10,0xf,0x12,0x42,0xb9,0xd0,0x16,0xa8,0x8,0x2a,0x85,0x2a,0xa1,0x5a, + 0xa8,0x11,0xfa,0x16,0x3a,0x5,0x5d,0x80,0xae,0x42,0x3,0xd0,0x3d,0x68,0x14,0x9a, + 0x82,0x7e,0x85,0xde,0xc3,0x8,0x4c,0x82,0xa9,0xb0,0x32,0xac,0xd,0x1b,0xc3,0xc, + 0xd8,0x9,0xf6,0x86,0x83,0xe1,0x35,0x70,0x1c,0x9c,0x6,0xe7,0xc0,0xf9,0xf0,0x4e, + 0xb8,0x2,0xae,0x83,0x8f,0xc1,0xed,0xf0,0x5,0xf8,0x3a,0x7c,0x7,0x1e,0x81,0x9f, + 0xc3,0xb3,0x8,0x40,0x88,0x8,0xd,0x51,0x43,0xc,0x11,0x6,0xe2,0x82,0xf8,0x21, + 0x11,0x48,0x2c,0xc2,0x47,0x36,0x20,0x85,0x48,0x39,0x52,0x87,0xb4,0x20,0x5d,0x48, + 0x2f,0x72,0xb,0x19,0x41,0xa6,0x91,0x77,0x28,0xc,0x8a,0x82,0xa2,0xa3,0xc,0x51, + 0xb6,0x28,0x4f,0x54,0x8,0x8a,0x85,0x4a,0x43,0x6d,0x40,0x15,0xa3,0x2a,0x51,0x47, + 0x51,0xed,0xa8,0x1e,0xd4,0x2d,0xd4,0x28,0x6a,0x6,0xf5,0x9,0x4d,0x46,0x2b,0xa1, + 0xd,0xd0,0x36,0x68,0x2f,0xf4,0x2a,0x74,0x1c,0x3a,0x13,0x5d,0x80,0x2e,0x47,0x37, + 0xa0,0xdb,0xd0,0x97,0xd0,0x77,0xd0,0xe3,0xe8,0x37,0x18,0xc,0x86,0x86,0xd1,0xc1, + 0x58,0x61,0x3c,0x31,0xe1,0x98,0x4,0xcc,0x3a,0x4c,0x31,0xe6,0x0,0xa6,0x15,0x73, + 0x1e,0x33,0x80,0x19,0xc3,0xcc,0x62,0xb1,0x58,0x79,0xac,0x1,0xd6,0xe,0xeb,0x87, + 0x65,0x62,0x5,0xd8,0x2,0xec,0x7e,0xec,0x31,0xec,0x39,0xec,0x20,0x76,0x1c,0xfb, + 0x16,0x47,0xc4,0xa9,0xe2,0xcc,0x70,0xee,0xb8,0x8,0x1c,0xf,0x97,0x87,0x2b,0xc7, + 0x35,0xe1,0xce,0xe2,0x6,0x71,0x13,0xb8,0x79,0xbc,0x14,0x5e,0xb,0x6f,0x83,0xf7, + 0xc3,0xb3,0xf1,0xd9,0xf8,0x12,0x7c,0x3d,0xbe,0xb,0x7f,0x3,0x3f,0x8e,0x9f,0x27, + 0x48,0x13,0x74,0x8,0x76,0x84,0x60,0x42,0x2,0x61,0x33,0xa1,0x82,0xd0,0x42,0xb8, + 0x44,0x78,0x48,0x78,0x45,0x24,0x12,0xd5,0x89,0xd6,0xc4,0x0,0x22,0x97,0xb8,0x89, + 0x58,0x41,0x3c,0x4e,0xbc,0x42,0x1c,0x25,0xbe,0x23,0xc9,0x90,0xf4,0x49,0x2e,0xa4, + 0x48,0x92,0x90,0xb4,0x93,0x74,0x84,0x74,0x9e,0x74,0x8f,0xf4,0x8a,0x4c,0x26,0x6b, + 0x93,0x1d,0xc9,0x11,0x64,0x1,0x79,0x27,0xb9,0x91,0x7c,0x91,0xfc,0x98,0xfc,0x56, + 0x82,0x22,0x61,0x24,0xe1,0x25,0xc1,0x96,0xd8,0x28,0x51,0x25,0xd1,0x2e,0x31,0x28, + 0xf1,0x42,0x12,0x2f,0xa9,0x25,0xe9,0x24,0xb9,0x56,0x32,0x47,0xb2,0x5c,0xf2,0xa4, + 0xe4,0xd,0xc9,0x69,0x29,0xbc,0x94,0xb6,0x94,0x8b,0x14,0x53,0x6a,0x83,0x54,0x95, + 0xd4,0x29,0xa9,0x61,0xa9,0x59,0x69,0x8a,0xb4,0xa9,0xb4,0x9f,0x74,0xb2,0x74,0xb1, + 0x74,0x93,0xf4,0x55,0xe9,0x49,0x19,0xac,0x8c,0xb6,0x8c,0x9b,0xc,0x5b,0x26,0x5f, + 0xe6,0xb0,0xcc,0x45,0x99,0x31,0xa,0x42,0xd1,0xa0,0xb8,0x50,0x58,0x94,0x2d,0x94, + 0x7a,0xca,0x25,0xca,0x38,0x15,0x43,0xd5,0xa1,0x7a,0x51,0x13,0xa8,0x45,0xd4,0x6f, + 0xa8,0xfd,0xd4,0x19,0x59,0x19,0xd9,0x65,0xb2,0xa1,0xb2,0x59,0xb2,0x55,0xb2,0x67, + 0x64,0x47,0x68,0x8,0x4d,0x9b,0xe6,0x45,0x4b,0xa2,0x95,0xd0,0x4e,0xd0,0x86,0x68, + 0xef,0x97,0x28,0x2f,0x71,0x5a,0xc2,0x59,0xb2,0x63,0x49,0xcb,0x92,0xc1,0x25,0x73, + 0x72,0x8a,0x72,0x8e,0x72,0x1c,0xb9,0x42,0xb9,0x56,0xb9,0x3b,0x72,0xef,0xe5,0xe9, + 0xf2,0x6e,0xf2,0x89,0xf2,0xbb,0xe5,0x3b,0xe4,0x1f,0x29,0xa0,0x14,0xf4,0x15,0x2, + 0x14,0x32,0x15,0xe,0x2a,0x5c,0x52,0x98,0x56,0xa4,0x2a,0xda,0x2a,0xb2,0x14,0xb, + 0x15,0x4f,0x28,0xde,0x57,0x82,0x95,0xf4,0x95,0x2,0x95,0xd6,0x29,0x1d,0x56,0xea, + 0x53,0x9a,0x55,0x56,0x51,0xf6,0x50,0x4e,0x55,0xde,0xaf,0x7c,0x51,0x79,0x5a,0x85, + 0xa6,0xe2,0xa8,0x92,0xa0,0x52,0xa6,0x72,0x56,0x65,0x4a,0x95,0xa2,0x6a,0xaf,0xca, + 0x55,0x2d,0x53,0x3d,0xa7,0xfa,0x8c,0x2e,0x4b,0x77,0xa2,0x27,0xd1,0x2b,0xe8,0x3d, + 0xf4,0x19,0x35,0x25,0x35,0x4f,0x35,0xa1,0x5a,0xad,0x5a,0xbf,0xda,0xbc,0xba,0x8e, + 0x7a,0x88,0x7a,0x9e,0x7a,0xab,0xfa,0x23,0xd,0x82,0x6,0x43,0x23,0x56,0xa3,0x4c, + 0xa3,0x5b,0x63,0x46,0x53,0x55,0xd3,0x57,0x33,0x57,0xb3,0x59,0xf3,0xbe,0x16,0x5e, + 0x8b,0xa1,0x15,0xaf,0xb5,0x4f,0xab,0x57,0x6b,0x4e,0x5b,0x47,0x3b,0x4c,0x7b,0x9b, + 0x76,0x87,0xf6,0xa4,0x8e,0x9c,0x8e,0x97,0x4e,0x8e,0x4e,0xb3,0xce,0x43,0x5d,0xb2, + 0xae,0x83,0x6e,0x9a,0x6e,0x9d,0xee,0x6d,0x3d,0x8c,0x1e,0x43,0x2f,0x51,0xef,0x80, + 0xde,0x4d,0x7d,0x58,0xdf,0x42,0x3f,0x5e,0xbf,0x4a,0xff,0x86,0x1,0x6c,0x60,0x69, + 0xc0,0x35,0x38,0x60,0x30,0xb0,0x14,0xbd,0xd4,0x7a,0x29,0x6f,0x69,0xdd,0xd2,0x61, + 0x43,0x92,0xa1,0x93,0x61,0x86,0x61,0xb3,0xe1,0xa8,0x11,0xcd,0xc8,0xc7,0x28,0xcf, + 0xa8,0xc3,0xe8,0x85,0xb1,0xa6,0x71,0x84,0xf1,0x6e,0xe3,0x5e,0xe3,0x4f,0x26,0x16, + 0x26,0x49,0x26,0xf5,0x26,0xf,0x4c,0x65,0x4c,0x57,0x98,0xe6,0x99,0x76,0x99,0xfe, + 0x6a,0xa6,0x6f,0xc6,0x32,0xab,0x32,0xbb,0x6d,0x4e,0x36,0x77,0x37,0xdf,0x68,0xde, + 0x69,0xfe,0x72,0x99,0xc1,0x32,0xce,0xb2,0x83,0xcb,0xee,0x5a,0x50,0x2c,0x7c,0x2d, + 0xb6,0x59,0x74,0x5b,0x7c,0xb4,0xb4,0xb2,0xe4,0x5b,0xb6,0x58,0x4e,0x59,0x69,0x5a, + 0x45,0x5b,0x55,0x5b,0xd,0x33,0xa8,0xc,0x7f,0x46,0x31,0xe3,0x8a,0x35,0xda,0xda, + 0xd9,0x7a,0xa3,0xf5,0x69,0xeb,0x77,0x36,0x96,0x36,0x2,0x9b,0x13,0x36,0xbf,0xd8, + 0x1a,0xda,0x26,0xda,0x36,0xd9,0x4e,0x2e,0xd7,0x59,0xce,0x59,0x5e,0xbf,0x7c,0xcc, + 0x4e,0xdd,0x8e,0x69,0x57,0x6b,0x37,0x62,0x4f,0xb7,0x8f,0xb6,0x3f,0x64,0x3f,0xe2, + 0xa0,0xe6,0xc0,0x74,0xa8,0x73,0x78,0xe2,0xa8,0xe1,0xc8,0x76,0x6c,0x70,0x9c,0x70, + 0xd2,0x73,0x4a,0x70,0x3a,0xe6,0xf4,0xc2,0xd9,0xc4,0x99,0xef,0xdc,0xe6,0x3c,0xe7, + 0x62,0xe3,0xb2,0xde,0xe5,0xbc,0x2b,0xe2,0xea,0xe1,0x5a,0xe8,0xda,0xef,0x26,0xe3, + 0x16,0xe2,0x56,0xe9,0xf6,0xd8,0x5d,0xdd,0x3d,0xce,0xbd,0xd9,0x7d,0xc6,0xc3,0xc2, + 0x63,0x9d,0xc7,0x79,0x4f,0xb4,0xa7,0xb7,0xe7,0x6e,0xcf,0x61,0x2f,0x65,0x2f,0x96, + 0x57,0xa3,0xd7,0xcc,0xa,0xab,0x15,0xeb,0x57,0xf4,0x78,0x93,0xbc,0x83,0xbc,0x2b, + 0xbd,0x9f,0xf8,0xe8,0xfb,0xf0,0x7d,0xba,0x7c,0x61,0xdf,0x15,0xbe,0x7b,0x7c,0x1f, + 0xae,0xd4,0x5a,0xc9,0x5b,0xd9,0xe1,0x7,0xfc,0xbc,0xfc,0xf6,0xf8,0x3d,0xf2,0xd7, + 0xf1,0x4f,0xf3,0xff,0x3e,0x0,0x13,0xe0,0x1f,0x50,0x15,0xf0,0x34,0xd0,0x34,0x30, + 0x37,0xb0,0x37,0x88,0x12,0x14,0x15,0xd4,0x14,0xf4,0x26,0xd8,0x39,0xb8,0x24,0xf8, + 0x41,0x88,0x6e,0x88,0x30,0xa4,0x3b,0x54,0x32,0x34,0x32,0xb4,0x31,0x74,0x2e,0xcc, + 0x35,0xac,0x34,0x6c,0x64,0x95,0xf1,0xaa,0xf5,0xab,0xae,0x87,0x2b,0x84,0x73,0xc3, + 0x3b,0x23,0xb0,0x11,0xa1,0x11,0xd,0x11,0xb3,0xab,0xdd,0x56,0xef,0x5d,0x3d,0x1e, + 0x69,0x11,0x59,0x10,0x39,0xb4,0x46,0x67,0x4d,0xd6,0x9a,0xab,0x6b,0x15,0xd6,0x26, + 0xad,0x3d,0x13,0x25,0x19,0xc5,0x8c,0x3a,0x19,0x8d,0x8e,0xe,0x8b,0x6e,0x8a,0xfe, + 0xc0,0xf4,0x63,0xd6,0x31,0x67,0x63,0xbc,0x62,0xaa,0x63,0x66,0x58,0x2e,0xac,0x7d, + 0xac,0xe7,0x6c,0x47,0x76,0x19,0x7b,0x8a,0x63,0xc7,0x29,0xe5,0x4c,0xc4,0xda,0xc5, + 0x96,0xc6,0x4e,0xc6,0xd9,0xc5,0xed,0x89,0x9b,0x8a,0x77,0x88,0x2f,0x8f,0x9f,0xe6, + 0xba,0x70,0x2b,0xb9,0x2f,0x13,0x3c,0x13,0x6a,0x12,0xe6,0x12,0xfd,0x12,0x8f,0x24, + 0x2e,0x24,0x85,0x25,0xb5,0x26,0xe3,0x92,0xa3,0x93,0x4f,0xf1,0x64,0x78,0x89,0xbc, + 0x9e,0x14,0x95,0x94,0xac,0x94,0x81,0x54,0x83,0xd4,0x82,0xd4,0x91,0x34,0x9b,0xb4, + 0xbd,0x69,0x33,0x7c,0x6f,0x7e,0x43,0x3a,0x94,0xbe,0x26,0xbd,0x53,0x40,0x15,0xfd, + 0x4c,0xf5,0x9,0x75,0x85,0x5b,0x85,0xa3,0x19,0xf6,0x19,0x55,0x19,0x6f,0x33,0x43, + 0x33,0x4f,0x66,0x49,0x67,0xf1,0xb2,0xfa,0xb2,0xf5,0xb3,0x77,0x64,0x4f,0xe4,0xb8, + 0xe7,0x7c,0xbd,0xe,0xb5,0x8e,0xb5,0xae,0x3b,0x57,0x2d,0x77,0x73,0xee,0xe8,0x7a, + 0xa7,0xf5,0xb5,0x1b,0xa0,0xd,0x31,0x1b,0xba,0x37,0x6a,0x6c,0xcc,0xdf,0x38,0xbe, + 0xc9,0x63,0xd3,0xd1,0xcd,0x84,0xcd,0x89,0x9b,0x7f,0xc8,0x33,0xc9,0x2b,0xcd,0x7b, + 0xbd,0x25,0x6c,0x4b,0x57,0xbe,0x72,0xfe,0xa6,0xfc,0xb1,0xad,0x1e,0x5b,0x9b,0xb, + 0x24,0xa,0xf8,0x5,0xc3,0xdb,0x6c,0xb7,0xd5,0x6c,0x47,0x6d,0xe7,0x6e,0xef,0xdf, + 0x61,0xbe,0x63,0xff,0x8e,0x4f,0x85,0xec,0xc2,0x6b,0x45,0x26,0x45,0xe5,0x45,0x1f, + 0x8a,0x59,0xc5,0xd7,0xbe,0x32,0xfd,0xaa,0xe2,0xab,0x85,0x9d,0xb1,0x3b,0xfb,0x4b, + 0x2c,0x4b,0xe,0xee,0xc2,0xec,0xe2,0xed,0x1a,0xda,0xed,0xb0,0xfb,0x68,0xa9,0x74, + 0x69,0x4e,0xe9,0xd8,0x1e,0xdf,0x3d,0xed,0x65,0xf4,0xb2,0xc2,0xb2,0xd7,0x7b,0xa3, + 0xf6,0x5e,0x2d,0x5f,0x56,0x5e,0xb3,0x8f,0xb0,0x4f,0xb8,0x6f,0xa4,0xc2,0xa7,0xa2, + 0x73,0xbf,0xe6,0xfe,0x5d,0xfb,0x3f,0x54,0xc6,0x57,0xde,0xa9,0x72,0xae,0x6a,0xad, + 0x56,0xaa,0xde,0x51,0x3d,0x77,0x80,0x7d,0x60,0xf0,0xa0,0xe3,0xc1,0x96,0x1a,0xe5, + 0x9a,0xa2,0x9a,0xf7,0x87,0xb8,0x87,0xee,0xd6,0x7a,0xd4,0xb6,0xd7,0x69,0xd7,0x95, + 0x1f,0xc6,0x1c,0xce,0x38,0xfc,0xb4,0x3e,0xb4,0xbe,0xf7,0x6b,0xc6,0xd7,0x8d,0xd, + 0xa,0xd,0x45,0xd,0x1f,0x8f,0xf0,0x8e,0x8c,0x1c,0xd,0x3c,0xda,0xd3,0x68,0xd5, + 0xd8,0xd8,0xa4,0xd4,0x54,0xd2,0xc,0x37,0xb,0x9b,0xa7,0x8e,0x45,0x1e,0xbb,0xf9, + 0x8d,0xeb,0x37,0x9d,0x2d,0x86,0x2d,0xb5,0xad,0xb4,0xd6,0xa2,0xe3,0xe0,0xb8,0xf0, + 0xf8,0xb3,0x6f,0xa3,0xbf,0x1d,0x3a,0xe1,0x7d,0xa2,0xfb,0x24,0xe3,0x64,0xcb,0x77, + 0x5a,0xdf,0x55,0xb7,0x51,0xda,0xa,0xdb,0xa1,0xf6,0xec,0xf6,0x99,0x8e,0xf8,0x8e, + 0x91,0xce,0xf0,0xce,0x81,0x53,0x2b,0x4e,0x75,0x77,0xd9,0x76,0xb5,0x7d,0x6f,0xf4, + 0xfd,0x91,0xd3,0x6a,0xa7,0xab,0xce,0xc8,0x9e,0x29,0x39,0x4b,0x38,0x9b,0x7f,0x76, + 0xe1,0x5c,0xce,0xb9,0xd9,0xf3,0xa9,0xe7,0xa7,0x2f,0xc4,0x5d,0x18,0xeb,0x8e,0xea, + 0x7e,0x70,0x71,0xd5,0xc5,0xdb,0x3d,0x1,0x3d,0xfd,0x97,0xbc,0x2f,0x5d,0xb9,0xec, + 0x7e,0xf9,0x62,0xaf,0x53,0xef,0xb9,0x2b,0x76,0x57,0x4e,0x5f,0xb5,0xb9,0x7a,0xea, + 0x1a,0xe3,0x5a,0xc7,0x75,0xcb,0xeb,0xed,0x7d,0x16,0x7d,0x6d,0x3f,0x58,0xfc,0xd0, + 0xd6,0x6f,0xd9,0xdf,0x7e,0xc3,0xea,0x46,0xe7,0x4d,0xeb,0x9b,0x5d,0x3,0xcb,0x7, + 0xce,0xe,0x3a,0xc,0x5e,0xb8,0xe5,0x7a,0xeb,0xf2,0x6d,0xaf,0xdb,0xd7,0xef,0xac, + 0xbc,0x33,0x30,0x14,0x32,0x74,0x77,0x38,0x72,0x78,0xe4,0x2e,0xfb,0xee,0xe4,0xbd, + 0xa4,0x7b,0x2f,0xef,0x67,0xdc,0x9f,0x7f,0xb0,0xe9,0x21,0xfa,0x61,0xe1,0x23,0xa9, + 0x47,0xe5,0x8f,0x95,0x1e,0xd7,0xfd,0xa8,0xf7,0x63,0xeb,0x88,0xe5,0xc8,0x99,0x51, + 0xd7,0xd1,0xbe,0x27,0x41,0x4f,0x1e,0x8c,0xb1,0xc6,0x9e,0xff,0x94,0xfe,0xd3,0x87, + 0xf1,0xfc,0xa7,0xe4,0xa7,0xe5,0x13,0xaa,0x13,0x8d,0x93,0x66,0x93,0xa7,0xa7,0xdc, + 0xa7,0x6e,0x3e,0x5b,0xfd,0x6c,0xfc,0x79,0xea,0xf3,0xf9,0xe9,0x82,0x9f,0xa5,0x7f, + 0xae,0x7e,0xa1,0xfb,0xe2,0xbb,0x5f,0x1c,0x7f,0xe9,0x9b,0x59,0x35,0x33,0xfe,0x92, + 0xff,0x72,0xe1,0xd7,0xe2,0x57,0xf2,0xaf,0x8e,0xbc,0x5e,0xf6,0xba,0x7b,0xd6,0x7f, + 0xf6,0xf1,0x9b,0xe4,0x37,0xf3,0x73,0x85,0x6f,0xe5,0xdf,0x1e,0x7d,0xc7,0x78,0xd7, + 0xfb,0x3e,0xec,0xfd,0xc4,0x7c,0xe6,0x7,0xec,0x87,0x8a,0x8f,0x7a,0x1f,0xbb,0x3e, + 0x79,0x7f,0x7a,0xb8,0x90,0xbc,0xb0,0xf0,0x1b,0xf7,0x84,0xf3,0xfb,0xe2,0xe6,0x1d, + 0xc2,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x12,0x0,0x0,0xb, + 0x12,0x1,0xd2,0xdd,0x7e,0xfc,0x0,0x0,0x15,0x82,0x49,0x44,0x41,0x54,0x68,0x43, + 0xed,0x59,0x67,0x54,0x55,0xd7,0xd6,0xbd,0x22,0x8a,0x88,0x5,0x10,0x94,0x2a,0xa2, + 0x28,0x4,0x11,0xa4,0x88,0xa2,0x20,0x4d,0xaa,0x48,0x95,0xde,0x7b,0x47,0xfa,0xa5, + 0x48,0x6f,0x52,0xa5,0xf7,0xde,0x7b,0x97,0xde,0x41,0x91,0x26,0xb1,0x45,0x51,0xc1, + 0x1a,0x13,0x6b,0x62,0x6c,0x51,0x93,0xcc,0x6f,0x43,0xf2,0xca,0xc8,0x78,0xef,0xc5, + 0xbc,0xf7,0xfd,0xcc,0x19,0x63,0x8e,0x73,0xcb,0x3e,0x77,0xaf,0x39,0xf7,0x5a,0x6b, + 0xaf,0xb5,0x2f,0x85,0xf2,0xd7,0xf5,0x97,0x2,0x7f,0x29,0xf0,0x97,0x2,0x7f,0x29, + 0xf0,0x97,0x2,0x7f,0xa8,0x0,0x17,0xfd,0x16,0x7e,0x57,0xe,0xfe,0x83,0xd4,0x1d, + 0x7c,0x92,0xfe,0x5c,0x14,0x41,0x97,0xd,0x7f,0xf8,0xc8,0xe7,0xd,0xa0,0xd9,0xbc, + 0xdd,0x84,0x49,0x5e,0x3d,0x98,0x47,0xdb,0xfc,0xcc,0x17,0x27,0x4d,0xcf,0xf2,0x1f, + 0xd3,0x8c,0xe7,0xe0,0xa3,0xa4,0xd1,0x7d,0xde,0xe3,0x9f,0x31,0xca,0xd8,0x38,0x89, + 0xc5,0xde,0x39,0xef,0xb0,0x93,0x7b,0x9e,0xb9,0xa3,0x5b,0xa1,0xb,0x81,0x95,0xbd, + 0x7b,0x9e,0xac,0xa5,0x4b,0x9,0xdb,0x67,0x3c,0xfe,0x6f,0x87,0x88,0x6b,0x84,0xad, + 0xb7,0x74,0x48,0x17,0xf0,0xf1,0x29,0x39,0x1e,0x1a,0x5e,0xe1,0x18,0x1a,0x59,0x15, + 0x1c,0x1c,0x52,0x16,0xe0,0x19,0x50,0x62,0xee,0xe0,0x9a,0x2b,0x61,0x69,0x59,0xc2, + 0xf8,0xbf,0xfc,0x3e,0x45,0x56,0x36,0x8c,0xd1,0xc6,0x21,0xf3,0xe8,0x99,0x84,0x7a, + 0xcf,0xca,0xf2,0xfe,0xdc,0x96,0xfa,0xf1,0x8e,0xda,0xb2,0xe1,0xc1,0xf2,0xbc,0xde, + 0x73,0x69,0xf1,0x8d,0xf9,0x41,0x41,0x25,0x4e,0x26,0x76,0x67,0xf7,0x6f,0x53,0xf2, + 0x61,0xf8,0x93,0x13,0xad,0xe6,0x17,0xf5,0xe3,0x70,0xf5,0xce,0x57,0x49,0xcf,0x6c, + 0xf,0x6b,0x6e,0x38,0x5f,0x75,0xae,0xed,0x7c,0x7f,0x5b,0xd3,0xc8,0x4c,0x55,0x65, + 0xf7,0xc5,0x9c,0xbc,0x96,0x8e,0xd0,0xe8,0xa2,0x64,0x57,0xef,0xc,0x4d,0x7d,0xfd, + 0x4c,0x22,0x52,0xfd,0xea,0x3f,0xf9,0xfb,0xcb,0xc3,0xf5,0x57,0xbb,0x79,0xe6,0xcb, + 0x44,0xc5,0xd4,0xe6,0x54,0x54,0xc,0x2e,0x4c,0x8e,0x5d,0xfd,0xee,0xf6,0xd5,0xa5, + 0x37,0xd7,0xa7,0x6e,0xbe,0x9b,0xec,0xbe,0xf4,0xb6,0x21,0xbf,0xf7,0x45,0x72,0x74, + 0xed,0x79,0x4f,0x8f,0xec,0x10,0x3,0x9b,0x44,0xa1,0xdf,0x4d,0x40,0x23,0x2e,0xee, + 0xb0,0x46,0x55,0xd5,0x9d,0x4e,0x55,0x35,0x8d,0x4e,0x5c,0x3c,0x6f,0xd,0xf9,0x9e, + 0xe6,0x6f,0x63,0x98,0x76,0x3a,0x6c,0x36,0x30,0x4e,0x3c,0x11,0x1b,0xdf,0x50,0xd8, + 0xd2,0x7c,0xfe,0xd6,0xe5,0xb9,0xc5,0x1f,0xee,0x7c,0x75,0xf7,0xdd,0xc2,0xe5,0x85, + 0xf,0x17,0xc7,0xa7,0x3e,0xb4,0xb6,0xf5,0xbf,0x49,0x4a,0x2f,0x7b,0xe4,0x17,0x92, + 0x55,0x6a,0xeb,0x90,0x76,0x42,0x51,0x31,0x76,0xcb,0x9f,0x24,0x20,0xbb,0x4e,0xf9, + 0x38,0x55,0x24,0x2a,0xae,0x26,0xbc,0xa1,0x71,0xec,0xe6,0x95,0xcb,0xf7,0xf1,0xdd, + 0x93,0xd7,0x78,0xf7,0xf2,0x2d,0x5e,0x3e,0x78,0x8e,0xfb,0xf3,0xf7,0x31,0xd5,0x31, + 0x8f,0xaa,0xf4,0xae,0xf,0x49,0x41,0x15,0xa3,0xfe,0x1e,0xb9,0x96,0xb2,0x1a,0x61, + 0x2c,0xcb,0x93,0x6c,0xd9,0x62,0xb3,0x51,0x4b,0x3f,0x7a,0xbf,0x9d,0x63,0x8e,0x96, + 0xa7,0x77,0x89,0xe9,0x29,0xdf,0x72,0xb,0x47,0x97,0x1c,0x2d,0x3,0xb3,0x64,0x11, + 0xa,0x45,0x63,0xfd,0xf2,0x18,0xb3,0x93,0x89,0xbc,0x81,0xc1,0x65,0x67,0xca,0xcb, + 0x87,0xee,0x5d,0x9e,0xbf,0x8b,0xf7,0x3f,0x7c,0xc4,0x87,0xd7,0x3f,0xe2,0x87,0xa7, + 0x2f,0x71,0xff,0xd6,0x12,0xa6,0x26,0x67,0x50,0x5e,0xd3,0x84,0xf0,0x84,0xec,0xfb, + 0x4e,0x3e,0x89,0xe9,0x26,0x2e,0xd1,0xfb,0xff,0xc,0x81,0x55,0x12,0x32,0xde,0xdc, + 0x16,0x56,0xb1,0x6e,0x59,0xb9,0x6d,0x63,0x97,0xbf,0xbc,0xf3,0xfa,0xc3,0xbb,0x4f, + 0xf8,0xf0,0xf6,0x3,0xbe,0x7f,0xf6,0x3d,0xbe,0xb9,0xfb,0x18,0x8b,0xf3,0x77,0x70, + 0xa5,0xef,0xa,0x46,0xcb,0xce,0xa3,0x24,0xb2,0xe1,0x49,0x88,0x73,0x56,0x89,0x96, + 0x6e,0x88,0x9e,0x86,0x41,0xb4,0x98,0x6f,0x70,0xb5,0x6a,0x70,0x44,0x5d,0x68,0x64, + 0x6c,0x73,0x63,0x6c,0x42,0xfb,0x60,0xd4,0x99,0xd6,0xb1,0xd0,0xa8,0x86,0x86,0xc0, + 0xb0,0xda,0xd3,0xce,0x9e,0xb9,0xca,0xf2,0x2a,0x7e,0xfc,0xfe,0x81,0x39,0x6,0xb9, + 0xb9,0x2d,0x83,0x23,0x43,0xf3,0xbf,0x3c,0x7f,0xf2,0x3d,0x7e,0xfa,0xf1,0x3,0xde, + 0xbf,0x7a,0x8b,0x17,0x8f,0x9f,0xe3,0xde,0xcd,0x25,0x4c,0x4f,0x4e,0xa1,0xa1,0xb5, + 0x19,0xd1,0xa9,0xe9,0x70,0xf0,0xb,0x9b,0x35,0xb0,0xf5,0xb7,0x96,0x94,0x74,0xdf, + 0xa4,0xaf,0xaf,0xff,0x39,0xae,0x24,0xbb,0xce,0xc4,0x32,0xe6,0x8,0x35,0x28,0xaf, + 0xb8,0xba,0xba,0xef,0xe5,0xc3,0xfb,0x4f,0xb1,0x7c,0x7d,0xfa,0xf1,0x23,0x5e,0x12, + 0x85,0xbe,0x5e,0x7a,0x84,0x3b,0x97,0x6e,0xe1,0xda,0xc0,0x15,0xcc,0xd6,0x4c,0xa3, + 0x3a,0xaa,0xf1,0x67,0x7f,0x9b,0xc4,0xc5,0x93,0x7a,0xc1,0x9d,0xe,0xee,0x99,0x85, + 0xa9,0xd9,0xfd,0x75,0x15,0xf5,0xd3,0xb3,0x35,0xcd,0xb3,0x4f,0x2b,0xeb,0xa6,0xde, + 0x14,0x57,0x9d,0x7f,0x9f,0x5f,0x36,0xfa,0x24,0xb3,0x60,0xe0,0x52,0x44,0x7c,0x7d, + 0x93,0x9d,0x47,0x6a,0x76,0x40,0x58,0x6e,0x73,0x6d,0x7d,0xcf,0xe3,0x3b,0xb,0xf7, + 0xf1,0xee,0x87,0x37,0xf8,0xf8,0xee,0x3d,0xde,0xbc,0xfc,0x1,0xcf,0x1e,0x3d,0xc3, + 0xd2,0x57,0x4b,0x98,0x59,0x26,0xd0,0xd6,0x80,0xe8,0xf4,0x44,0x98,0xb9,0xbb,0xbd, + 0x54,0x33,0xb0,0x2e,0x91,0x91,0xb7,0x51,0x26,0x6e,0xb9,0xb2,0xca,0x7f,0x70,0xed, + 0x63,0x3a,0x75,0xea,0xac,0x61,0x46,0x66,0xc3,0x60,0x5f,0xef,0x45,0x3c,0x79,0xfc, + 0x12,0x9f,0xde,0x7f,0xc0,0x5b,0x32,0xd1,0xb3,0x6f,0x9e,0xe1,0xe1,0xad,0x7,0x58, + 0x98,0xb9,0x89,0x2f,0xbb,0x2f,0xe1,0x62,0xe9,0x4,0xea,0x22,0x9a,0x10,0x68,0x97, + 0x2,0x7b,0x9b,0x33,0x3f,0x47,0xc4,0xd6,0xbe,0x6d,0x6c,0x9b,0x7f,0x37,0x3e,0x75, + 0xef,0xe7,0x99,0xcb,0xdf,0x60,0xec,0xe2,0x7d,0xf4,0x8d,0xde,0x46,0x7b,0xff,0x75, + 0xd4,0xb4,0xce,0x20,0x25,0xa7,0xf3,0x17,0x9f,0xd3,0x5,0xef,0x82,0xa3,0xa,0xde, + 0x36,0xb7,0xf4,0x7d,0xba,0x7b,0x6b,0x11,0xdf,0x3f,0x7d,0x81,0xd7,0xcf,0xbf,0xc7, + 0x4b,0xa2,0xfe,0x37,0x4b,0x8f,0x71,0xf3,0xf2,0x4d,0x4c,0x8c,0x4f,0xa0,0xbc,0xbe, + 0x1c,0xfe,0xb1,0x1,0xd0,0xb4,0x34,0xf8,0x78,0x54,0x4d,0xe7,0xf2,0x21,0x69,0xa3, + 0x30,0x61,0x61,0xc3,0x3d,0x7f,0x64,0xfd,0x2a,0xa,0x85,0x77,0x5b,0x50,0x50,0x86, + 0x5d,0x4d,0x75,0xf7,0xf4,0xfc,0xec,0x4d,0x3c,0x7b,0xfc,0x2,0xaf,0x9e,0x7d,0x87, + 0xe7,0xdf,0x3e,0xc7,0xe3,0x7b,0x8f,0x71,0xf7,0xda,0x12,0xae,0x9f,0xbf,0x86,0x99, + 0x96,0x29,0x8c,0xe7,0xe,0xa1,0x3e,0xac,0x19,0x67,0xbc,0x8b,0x11,0x1b,0x53,0x87, + 0xc6,0xb6,0x59,0x5c,0xbd,0x49,0xdc,0xe0,0xd1,0x5b,0x2c,0x3e,0x78,0x8d,0xf9,0xeb, + 0x4f,0x31,0x3e,0xfd,0x10,0xfd,0xe3,0x8b,0x38,0x37,0x74,0x13,0x15,0x8d,0x17,0x11, + 0x97,0xda,0x82,0xb8,0x94,0x5a,0x34,0x34,0xf4,0xe3,0xea,0xdc,0x35,0x3c,0xba,0xfd, + 0x0,0x4f,0xef,0x7d,0x8b,0xc7,0x77,0x1e,0x61,0xf1,0xda,0x1d,0xcc,0x5d,0x9c,0x43, + 0x4f,0x7f,0xf,0xb2,0xcb,0xb3,0xe1,0x1c,0xe2,0xc,0x5,0x3,0x55,0x88,0xcb,0x2a, + 0x7d,0x2d,0x2a,0xa6,0x91,0x2d,0xb4,0xe7,0x84,0xf0,0x67,0x10,0x60,0x65,0xf3,0xf7, + 0x4f,0x76,0xac,0xae,0x68,0xfb,0x72,0x7e,0xea,0x2b,0x7c,0x7d,0xe7,0x31,0x1e,0x2f, + 0x7e,0x8d,0x87,0xb7,0x1f,0x62,0xe9,0xda,0x22,0x6e,0x4e,0xdd,0xc0,0x7c,0xef,0x25, + 0x4c,0x94,0x8f,0xa1,0x33,0xbe,0x1d,0xa5,0x41,0x75,0x48,0xb,0xaf,0x47,0x59,0xf9, + 0x8,0xa6,0x49,0x70,0x3f,0x79,0xfe,0xe,0xcf,0x5e,0xfe,0x88,0xfb,0x5f,0xbf,0xc2, + 0x95,0xaf,0x9e,0x90,0x55,0xb8,0x87,0xee,0xa1,0x5,0xb4,0xf7,0x5d,0x45,0x4d,0xcb, + 0x45,0x64,0x14,0x76,0x23,0x31,0xad,0x11,0x39,0xb9,0xad,0xe8,0x68,0x19,0xc2,0xec, + 0xf9,0x4b,0x58,0xb8,0x7c,0x3,0xd7,0xe7,0xae,0x62,0xe6,0xfc,0x34,0xfa,0xfa,0xfb, + 0x50,0xd9,0x5c,0x8d,0xe8,0xac,0x18,0x18,0x9d,0x32,0x86,0x84,0x8a,0xd4,0xcf,0x5f, + 0x48,0x1c,0xbc,0x2d,0x28,0xa4,0x90,0xb0,0x77,0xf7,0xb1,0x2f,0xfe,0x88,0x0,0xf9, + 0x7e,0x13,0xb3,0xab,0x53,0xb8,0x65,0x7a,0x52,0xf1,0x6c,0x5f,0xcb,0x18,0xbe,0x9a, + 0xba,0x49,0x82,0xf6,0x36,0x6e,0xcd,0x2c,0xe0,0xda,0xf8,0x55,0xcc,0xf7,0x10,0xd7, + 0xa9,0xbb,0x80,0x9e,0xf4,0x1e,0x14,0x53,0x2b,0x90,0xe2,0x53,0x8a,0xec,0x94,0xe, + 0x9c,0x23,0x6,0xde,0xb8,0xf3,0x1c,0xdf,0x7d,0xff,0x1,0xaf,0x5e,0x7f,0xc4,0x37, + 0x4f,0xdf,0xe0,0xab,0x85,0xa7,0x98,0x98,0x26,0x4,0x86,0x6f,0xa2,0xb5,0xf7,0xa, + 0xea,0x3b,0xa7,0x51,0x5c,0x37,0x8c,0xc4,0x8c,0x26,0x9c,0x8e,0x28,0x44,0x7c,0x42, + 0x31,0xea,0xea,0xda,0x30,0x34,0x38,0x84,0xfe,0xfe,0x7e,0xb4,0x75,0xb6,0xa1,0xac, + 0xbe,0xc,0x89,0x45,0xc9,0x70,0x8b,0xf2,0x80,0xa2,0x99,0x32,0x76,0x4b,0xed,0x7d, + 0xbb,0x63,0xaf,0xf0,0x0,0xbf,0xa0,0x9c,0xe3,0x3e,0x3e,0x1d,0xae,0xcf,0x20,0x40, + 0xa1,0x37,0x35,0xf4,0x50,0xc,0xf0,0x8c,0xab,0x2a,0x4a,0xa9,0xf9,0x76,0xac,0x61, + 0xfc,0xd3,0x75,0x12,0xb0,0x57,0x89,0x1,0x73,0xc4,0x45,0x26,0xab,0x26,0x31,0x9e, + 0x33,0x82,0xe6,0x88,0x36,0xc4,0x39,0xe5,0x22,0xd0,0x23,0x17,0xd9,0x79,0xbd,0x18, + 0xb9,0xb0,0x88,0x85,0xa5,0x17,0xf8,0xf6,0x9,0x89,0x95,0x17,0xef,0xf0,0xf0,0xf1, + 0xf,0xb8,0x7a,0xe3,0x9,0xc6,0xa7,0xee,0xa2,0x8b,0xb8,0x4f,0x4b,0xcf,0x65,0x34, + 0x9c,0x23,0xe9,0xb1,0x69,0xc,0xd1,0xc9,0x55,0x30,0xb7,0xd,0x81,0x99,0x95,0xf, + 0x22,0xce,0x24,0xa3,0xb0,0xba,0x14,0x85,0xb5,0xc5,0xc8,0xac,0xc8,0x42,0x54,0x4e, + 0xc,0x5c,0xa3,0xdd,0xa1,0xe1,0xa4,0x85,0x7d,0x2a,0x62,0xe0,0x10,0xe1,0x5d,0x62, + 0xdb,0xbd,0x3b,0x6e,0xcf,0x1e,0xc5,0x3,0x87,0xf9,0x6d,0x36,0x7e,0xe,0x1,0x8a, + 0x84,0x8c,0x16,0xb7,0x89,0xbe,0xab,0x43,0xb8,0x67,0x62,0x77,0x65,0x7c,0xf5,0xcb, + 0xa1,0x82,0x1,0x8c,0x15,0x8d,0x62,0x28,0x77,0x10,0xbd,0x49,0x3d,0xe8,0x8,0x6d, + 0x45,0xa1,0x6b,0x29,0xbc,0x4d,0x93,0xe1,0xec,0x9e,0x85,0xcc,0xe2,0x41,0x62,0xe8, + 0x3d,0x5c,0x5b,0x78,0x8e,0xdb,0x84,0xc4,0xe2,0xbd,0x97,0x2b,0xab,0x31,0xf3,0xe5, + 0xd7,0x18,0x3a,0x4f,0xfc,0x7f,0xf0,0x6,0x21,0xf0,0x25,0x1a,0xc8,0xa,0x94,0xd4, + 0xd,0x81,0x1a,0x96,0x8d,0x63,0x6a,0xe6,0x90,0x3a,0xaa,0x1,0x53,0x47,0x17,0x50, + 0xe3,0xc3,0x41,0x3d,0x7b,0x1a,0x5e,0x89,0xde,0xb0,0xe,0xb1,0x81,0x8a,0x83,0x3a, + 0xf6,0xa9,0x8b,0x82,0xf3,0xc0,0xce,0x77,0x2c,0x82,0xdb,0x7b,0x99,0x77,0xf2,0xe8, + 0x88,0xb3,0xff,0xba,0x87,0x7c,0xfe,0xb5,0x91,0x65,0xcf,0x9,0x45,0xd3,0x70,0x4f, + 0x23,0xbf,0x85,0x33,0xe,0x9,0xc8,0x74,0xc9,0x44,0x9e,0x4b,0x2e,0x32,0xad,0xd3, + 0x11,0xab,0x15,0x89,0x53,0xa,0x7e,0x30,0x52,0xa3,0xc2,0xd6,0x23,0xb,0x59,0x65, + 0x23,0x18,0xbe,0x70,0x17,0x53,0xf3,0x8f,0x57,0x8c,0x9e,0xbd,0xfc,0x35,0x2e,0x5e, + 0x7a,0x84,0x91,0xc9,0xbb,0xe8,0x19,0x21,0xfe,0xdf,0x7f,0x6d,0x85,0x40,0x6d,0xdb, + 0x24,0xb2,0x4b,0xbb,0xe0,0xe2,0x1d,0x87,0x3,0x52,0x6a,0xd8,0x25,0x20,0x8e,0x83, + 0xca,0xea,0x50,0xb1,0xd4,0x87,0xbc,0xa5,0xa,0xe,0x1a,0x4b,0x61,0xaf,0xa6,0x30, + 0xb6,0xcb,0xf3,0x82,0x55,0x94,0xfd,0x13,0x33,0x3f,0xe7,0x2,0xcb,0xf6,0x9d,0xb1, + 0x9b,0x29,0xbb,0x77,0x7e,0xbe,0xe1,0x64,0xcb,0xe7,0x53,0x55,0xa5,0x13,0x12,0x57, + 0x16,0x10,0xdd,0x77,0xd4,0x5f,0x7a,0xbf,0xe2,0xfc,0x49,0x19,0x23,0x78,0x9f,0xf0, + 0x41,0xb8,0x5e,0x18,0x2,0xd4,0xfd,0x61,0x7f,0xd0,0x1a,0xda,0x22,0x6,0x50,0x91, + 0x75,0x80,0xb5,0x6b,0x1a,0x32,0x4a,0x86,0xd0,0x4b,0xd2,0xe5,0xc8,0x85,0x7b,0x18, + 0x9c,0x58,0xc4,0x10,0xc1,0xc0,0xf8,0x1d,0xf4,0xc,0x2f,0xa0,0x63,0xe0,0x3a,0xf1, + 0xff,0xcb,0x68,0x26,0x69,0xb7,0xbc,0x71,0xc,0xf1,0x19,0x75,0x30,0xb3,0xb,0x84, + 0xb0,0x98,0x2,0xb8,0x77,0xee,0xc3,0x5e,0x49,0x19,0x1c,0x50,0x57,0x84,0xf0,0x71, + 0x9,0xec,0x56,0xe2,0x7,0xb7,0xc,0x2f,0xd8,0xf,0x72,0x63,0xeb,0x7e,0xae,0xf7, + 0x6c,0x82,0xbc,0xe7,0x39,0x5,0x4,0xa9,0x3b,0xf6,0xee,0x17,0xe1,0xb1,0x94,0x5d, + 0x27,0x2b,0x2b,0x4b,0x4b,0xa1,0x84,0xfd,0xbd,0x24,0xf9,0x3d,0x29,0x7a,0xe,0x5e, + 0xe1,0x3d,0x26,0x8a,0x76,0x1a,0x71,0xf6,0x67,0x9d,0x33,0x4e,0xe5,0x46,0x1a,0x29, + 0x59,0x34,0xa,0xf2,0x9,0xdf,0x53,0x92,0x51,0x45,0x8c,0x57,0x2c,0xa,0x43,0xa, + 0x10,0xef,0x18,0x87,0x60,0xb3,0x0,0x38,0x1b,0x7a,0x40,0xe3,0xb8,0x13,0xf4,0x2d, + 0xc3,0x91,0x90,0xd5,0x4e,0xfc,0xfc,0xc6,0x4a,0xce,0xef,0x1c,0xf8,0xea,0x57,0x90, + 0xdc,0xdf,0x46,0x2,0xbb,0x95,0x28,0xdf,0xd4,0x3d,0xb7,0xe2,0xff,0xf9,0x95,0xfd, + 0xa0,0x46,0xe5,0x42,0x4d,0xd7,0x1,0xbb,0x5,0xa4,0xb1,0x83,0x57,0xc,0x87,0x65, + 0xd4,0x60,0x6c,0x6b,0x7,0xd7,0xe0,0x53,0xf0,0x8a,0xf1,0x81,0x63,0xa0,0xb,0x74, + 0x2d,0xf4,0x21,0xa5,0x24,0xfd,0x81,0x5f,0x7e,0xdf,0xd,0x1e,0x83,0x3d,0xd,0x9c, + 0x5e,0x7c,0x89,0x3c,0x1,0x82,0x81,0xdb,0x8d,0x85,0xdc,0xb8,0x64,0x45,0x55,0xb9, + 0x45,0xf,0x73,0xfc,0xde,0x78,0x5a,0x6,0xc6,0xad,0xfb,0xa4,0xf6,0xab,0x9c,0x72, + 0xd6,0xf2,0x69,0xce,0x74,0xcb,0xbf,0x55,0x1b,0xda,0xf0,0x32,0xdc,0x36,0xf2,0x8d, + 0x92,0x94,0xd2,0x27,0x7d,0x3d,0x7d,0x14,0x64,0x17,0xa0,0xbd,0xb2,0xd,0xc5,0x49, + 0x45,0xc8,0x4f,0xc8,0x45,0x62,0x54,0xa,0x2c,0x2d,0x7d,0xa0,0x67,0xe4,0x8b,0xb0, + 0x33,0xe5,0x68,0x3a,0x37,0x8b,0xce,0xc1,0x6b,0x68,0x23,0x6a,0x2f,0x2b,0xde,0xd2, + 0x4d,0xc,0xef,0xba,0x84,0x46,0xf2,0x79,0x6d,0xfb,0x24,0x51,0x7f,0x1c,0xf1,0x59, + 0x8d,0xb0,0x72,0x8b,0xc4,0x21,0x79,0x3,0xf0,0x9,0xca,0x40,0x58,0x54,0x16,0xda, + 0x7a,0x46,0x8,0x8d,0x8e,0x40,0x59,0x43,0x39,0xda,0x87,0x3b,0x50,0xdd,0x5a,0x83, + 0xc8,0x98,0x48,0x9c,0xb4,0xd2,0xff,0x45,0xcc,0x42,0xe2,0x3,0xaf,0x2f,0xdf,0x1b, + 0xae,0x98,0x9d,0xaf,0xb8,0x43,0xf8,0xbf,0xe3,0xb4,0x15,0xb8,0xcf,0xa1,0xb6,0xb7, + 0x9a,0x53,0x54,0x58,0x77,0xf,0x45,0xf6,0x1f,0xbb,0xb2,0x80,0x80,0xc0,0x16,0x11, + 0xfe,0x23,0x8e,0x9a,0xd2,0xc6,0x63,0x61,0xa6,0x31,0xcf,0x9b,0x4e,0xb7,0x60,0x3c, + 0x6d,0x2,0x15,0xa1,0x15,0xf0,0x30,0x76,0x87,0x85,0x81,0x39,0xa8,0xbe,0x54,0xc4, + 0x46,0xc5,0x21,0x36,0x2c,0x6,0x51,0xa1,0x91,0x8,0xf2,0xb,0x86,0xab,0x8d,0xf, + 0x9c,0x6d,0x83,0x11,0x12,0x91,0x83,0xdc,0xf2,0x6e,0xd4,0x75,0x4e,0x11,0xc5,0xe7, + 0x57,0xdc,0xa5,0x91,0x28,0x5e,0xdf,0x31,0x85,0xda,0xd6,0x49,0x12,0xb8,0x23,0x48, + 0x2d,0xec,0x84,0xe7,0xe9,0x6c,0xa8,0xe8,0xb8,0x40,0xf8,0xd0,0x71,0x88,0xc9,0xa9, + 0x42,0xf1,0xa4,0x26,0xf4,0xec,0xf5,0xe0,0x18,0x64,0x87,0x80,0x44,0x7f,0x84,0x65, + 0x84,0x81,0x9a,0x4c,0xe2,0x2a,0xc8,0x6,0x6a,0x9e,0xaa,0x90,0x8,0x92,0xc4,0x17, + 0x29,0x42,0xd8,0x95,0x2b,0x0,0x9e,0x34,0x1,0xb0,0x5,0xf3,0x81,0xd5,0x70,0xd7, + 0x43,0xf6,0x3,0x2,0xb9,0x3c,0xc,0x22,0xf2,0x7c,0x14,0xd5,0x5f,0x9b,0x1e,0x3e, + 0x1e,0x61,0x51,0x5,0xf1,0x13,0x45,0xd6,0xca,0x2e,0x1f,0x73,0x5c,0xb,0x30,0x10, + 0x33,0x80,0x89,0xd4,0x9,0x74,0x24,0x76,0x20,0x37,0x28,0x17,0x54,0x5b,0x2a,0xec, + 0x8d,0xed,0xe1,0xe6,0xe8,0x86,0xd3,0x1,0xa7,0x11,0xe0,0x1b,0x0,0x3f,0x57,0x3f, + 0xc4,0xfa,0xc4,0xe0,0xec,0xe9,0x4c,0x44,0x85,0x64,0x22,0x3c,0xb6,0x10,0x69,0x85, + 0x24,0x8f,0x37,0x8c,0xa2,0xaa,0xf9,0xfc,0xa,0x4a,0x1b,0xc6,0x90,0x57,0x39,0x40, + 0x94,0x6f,0x82,0x77,0x68,0xe,0x74,0xcc,0xfc,0x21,0x2a,0x75,0x12,0xa2,0x32,0xea, + 0x50,0xb7,0x35,0x82,0x79,0x84,0x5,0xc,0xc2,0xb4,0xa1,0xe6,0xad,0x80,0xa3,0x4e, + 0x87,0x21,0x69,0x25,0x1,0x31,0x6b,0x51,0x88,0xb9,0x8a,0x41,0xfc,0xb4,0x38,0xc4, + 0x92,0x25,0xb0,0x2f,0x5b,0x14,0xbb,0xb3,0x5,0xc1,0x95,0xb1,0xb,0xcc,0xf1,0x5c, + 0x60,0xb4,0xe7,0xfa,0xc4,0x7a,0x78,0xe7,0x35,0x76,0x76,0x1,0x2a,0xeb,0x7a,0xc1, + 0x5f,0x1b,0xaa,0x5d,0xdc,0x42,0x6,0xda,0x87,0x8d,0x6,0x2,0xf4,0x42,0x51,0xe3, + 0x5b,0x87,0xa1,0xb8,0x41,0x8c,0xa5,0x8c,0x62,0x20,0x7d,0x0,0xdd,0x19,0xdd,0xa8, + 0x4e,0xa8,0x46,0x5e,0x74,0x2e,0x8a,0x53,0x8b,0xd0,0x50,0xd6,0x80,0xfa,0xb2,0x3a, + 0xd4,0xe5,0xd7,0xa2,0xbb,0xb0,0x1d,0xcd,0xe9,0xcd,0x48,0xa0,0x66,0xc0,0xc3,0x25, + 0x1a,0xde,0x81,0x67,0x11,0x99,0x42,0x36,0xb7,0xfc,0x76,0x64,0x96,0xf4,0x20,0x39, + 0xaf,0x3,0xe1,0xc9,0x35,0x70,0xf6,0x4f,0x85,0x86,0xb1,0x37,0xc4,0x65,0xc,0xb0, + 0x5b,0x48,0x19,0x52,0xea,0x9a,0xb0,0x8c,0xb2,0x83,0x5f,0x9d,0x7,0x5c,0x2a,0xad, + 0x60,0x98,0xa1,0x5,0xd5,0x58,0x5,0x48,0x87,0x48,0x41,0x32,0xe4,0x0,0xe,0xc4, + 0x10,0xa4,0x4a,0x42,0x22,0x5b,0x12,0xc2,0x39,0x62,0xd8,0x93,0x25,0x8,0xce,0x4c, + 0x5e,0x30,0xa6,0x70,0x60,0xa3,0x17,0x7,0x98,0x8e,0x71,0xbd,0x67,0xe1,0xe7,0x29, + 0x65,0x61,0xdf,0x25,0x46,0xa1,0x60,0x15,0x85,0x97,0xe3,0x8b,0x60,0x33,0x59,0x9b, + 0xb9,0x33,0xa6,0x89,0xa8,0xf5,0xae,0x43,0x7b,0x48,0x3b,0xfa,0xe2,0x7b,0x31,0x94, + 0x39,0x84,0x89,0x92,0x9,0xb2,0xf3,0x5e,0xc4,0x7c,0xe7,0x1c,0x6e,0x8c,0x5d,0xc7, + 0xdd,0x4b,0x8b,0x78,0x70,0xed,0x2e,0x96,0x66,0x6e,0xe1,0xa,0x71,0x95,0xb6,0xb4, + 0x56,0x44,0x3b,0xc5,0xc3,0xc1,0xc0,0x7,0xd6,0x36,0x1,0xb0,0xf7,0x8a,0x86,0x83, + 0x4f,0x2,0x1c,0x7d,0x53,0x60,0xed,0x91,0x0,0x3d,0xeb,0xd3,0x50,0xd0,0x72,0x86, + 0xf8,0x51,0x3,0xec,0x95,0x50,0x87,0xa0,0xf8,0x31,0xc8,0x1b,0x68,0xc2,0x3e,0xc5, + 0x6,0xc1,0x5d,0x1e,0x8,0xe8,0x73,0xc5,0xa9,0x73,0x76,0x70,0x68,0xb7,0x80,0x59, + 0xa3,0x21,0x74,0xab,0xb5,0xa1,0x5a,0xa6,0xa,0xd9,0x62,0x39,0x48,0xe6,0x1d,0xc2, + 0xbe,0x8c,0xfd,0xd8,0x95,0x24,0x0,0xf6,0xa4,0x1d,0xd8,0x9c,0xc0,0x8e,0xd,0xd4, + 0x6d,0xd8,0xa8,0xcb,0x86,0x8d,0x92,0xec,0x3,0xcc,0xbc,0x9c,0x7a,0x3c,0x14,0x11, + 0x46,0xa,0xf,0x1b,0x7f,0xbe,0xfd,0x31,0xe7,0x7b,0xd9,0xb6,0xb9,0xa8,0x74,0xab, + 0x44,0x85,0x67,0x5,0xda,0x22,0xdb,0x30,0x92,0x35,0x82,0xc9,0xb2,0x49,0xcc,0x35, + 0xcd,0xe1,0x7a,0xdf,0x35,0x2c,0x4d,0x2d,0xe2,0xf1,0xb5,0x87,0x78,0x76,0xe7,0x5b, + 0x3c,0x98,0x5f,0xc2,0x85,0x96,0x9,0x14,0x84,0x15,0xc2,0x5b,0x9f,0xa,0x2b,0xd, + 0x27,0x58,0x5a,0x9c,0x82,0xa1,0xd5,0x29,0xc8,0x6b,0x58,0x41,0x42,0xce,0x88,0x14, + 0x61,0x86,0xd8,0x7b,0x50,0x1b,0x2,0xe2,0xc7,0xb1,0x5f,0x4a,0x13,0x87,0xe4,0xb4, + 0x71,0x48,0x51,0x15,0x4a,0xa6,0xc7,0x61,0x15,0x67,0xa,0xdf,0x6,0x67,0xf8,0x9d, + 0x73,0x86,0x67,0x8f,0x3,0x9c,0x7b,0xac,0x61,0xd5,0x61,0xa,0x83,0x6,0x3d,0xa8, + 0x57,0xaa,0x43,0xbe,0x54,0x1,0x7,0xb,0xa4,0x20,0x74,0x56,0x4,0x3c,0x61,0xbb, + 0xc1,0x7a,0x9a,0xb,0x9b,0xa2,0xd8,0xb0,0x3e,0x74,0x2b,0xe8,0xad,0x59,0x40,0x2f, + 0xc7,0xf2,0xe5,0x26,0x9e,0x6d,0x1,0xcc,0x14,0x9e,0x2f,0x28,0x5c,0x5b,0x77,0x75, + 0x3a,0x2a,0xb9,0xbe,0x2a,0x71,0x2c,0x45,0x91,0x5d,0x11,0x32,0x6c,0x33,0x50,0x13, + 0x54,0x8b,0xc1,0x8c,0xc1,0x95,0x15,0x98,0x6d,0x9c,0xc5,0x15,0x52,0xa,0xcc,0xf6, + 0xcc,0x60,0xa4,0x7d,0x4,0xfd,0xad,0xc3,0xe8,0x6a,0x1c,0x42,0x4d,0x41,0x3b,0xe2, + 0x2,0x32,0x61,0xab,0xeb,0x1,0x6d,0x5,0x43,0x68,0x6b,0x1a,0x41,0xcf,0xd0,0x2, + 0x1a,0x7a,0x96,0x50,0x3e,0x61,0x1,0x45,0xd,0x73,0x1c,0x23,0x58,0x7e,0xad,0xa2, + 0x61,0x2,0x45,0x55,0x6d,0x1c,0x55,0x51,0x81,0xba,0x89,0x2e,0xec,0xc3,0xdc,0xe1, + 0x97,0x1f,0x86,0x53,0x5,0x1,0xb0,0xcd,0x76,0x84,0x71,0x96,0x31,0x4e,0x16,0xea, + 0xae,0xac,0x80,0x7a,0xa5,0x1a,0xe4,0x4a,0xe4,0x71,0xb0,0x90,0x6c,0x6c,0x89,0x22, + 0xe0,0xf2,0xe4,0x5,0x93,0xb,0x51,0x3d,0x64,0x1b,0xe8,0x63,0x59,0xb1,0xc6,0x8b, + 0x9,0x6b,0x54,0x19,0xef,0x33,0x70,0x6f,0x29,0xd8,0x44,0xd9,0xaa,0x44,0x61,0x67, + 0xde,0x3e,0xed,0x74,0xcc,0xe5,0xa7,0x72,0xe7,0xa,0xe4,0x5a,0xe5,0x20,0xce,0x38, + 0xe,0xc5,0xa4,0x44,0xee,0x39,0xdb,0x83,0xf1,0xe2,0x71,0xcc,0xb7,0x5c,0xc2,0x97, + 0x5d,0xf3,0x68,0x2f,0xed,0x40,0x62,0x64,0x1a,0x2,0xa9,0x9,0x88,0x8c,0x2a,0x44, + 0x6a,0x5a,0x13,0xce,0xc4,0x55,0xc0,0xc1,0x2e,0x8,0xa,0xb2,0x27,0x70,0x50,0xf2, + 0x8,0x34,0xb5,0xb4,0xe1,0xe5,0x43,0x45,0x68,0xc4,0x19,0xf8,0x7,0x91,0x6c,0x15, + 0x1a,0x8b,0x80,0xa0,0x8,0x98,0x5b,0xd8,0x40,0x5e,0x51,0x9,0x47,0xe5,0x95,0x61, + 0x68,0xe9,0x82,0x80,0xe8,0x1c,0x44,0x67,0x34,0xc0,0x2b,0x32,0xf,0x6,0xae,0xfe, + 0x50,0x71,0x34,0x81,0x72,0x88,0x6,0x34,0xf2,0x35,0x8,0x1,0x55,0xc8,0x95,0xca, + 0xe3,0x50,0xf1,0x61,0x8,0xc6,0xed,0x3,0x87,0xd,0x37,0x36,0x9b,0xb0,0x82,0xc1, + 0x7f,0x2b,0xd6,0x25,0xb1,0x60,0x75,0xc8,0x66,0xac,0xd6,0xdc,0xf8,0xfd,0x3a,0x8e, + 0xcd,0xbd,0xc,0x14,0x46,0x53,0xa,0xc7,0x16,0xee,0x45,0x37,0x15,0xf,0x54,0xb9, + 0x54,0x23,0xcb,0x3c,0xb,0x61,0xba,0x61,0x2b,0xa5,0xc3,0x72,0x16,0x1a,0x2b,0x1a, + 0xc3,0x64,0xcd,0x5,0x74,0x97,0x74,0xe3,0x6c,0x44,0x16,0x1c,0xc9,0x2e,0x6a,0x6a, + 0x15,0x8,0x4f,0xff,0x2c,0xc4,0xa7,0xb5,0x21,0x35,0xa7,0x3,0xc1,0x91,0x39,0x38, + 0x69,0x64,0xf,0xc9,0x83,0xd2,0x90,0x91,0x91,0x81,0x99,0xa9,0x9,0xec,0xed,0xec, + 0x60,0x62,0x62,0xa,0x73,0x73,0xe2,0xdb,0x66,0x66,0x50,0x55,0x51,0x86,0xb4,0xc, + 0xc9,0xfb,0x3a,0xe6,0xf0,0xa5,0xa6,0x21,0x39,0xad,0x17,0x29,0xe9,0x17,0x40,0xd, + 0xea,0x80,0xb1,0x79,0x3a,0x94,0x74,0xbc,0x20,0x6d,0xa6,0x87,0xa3,0x81,0xa,0x50, + 0xc8,0x90,0x85,0x5c,0x99,0x1c,0xa4,0x2a,0xa5,0x21,0x18,0x2d,0x84,0xad,0x27,0xd9, + 0xc1,0xa0,0xc2,0x8,0x7a,0x27,0x66,0xd0,0xc5,0x6f,0x1,0x4d,0xd4,0x46,0xd0,0xe8, + 0x32,0x7c,0xa4,0x63,0x67,0x58,0x58,0x47,0xd9,0xe8,0x4d,0xe1,0x64,0xd9,0xfe,0xdc, + 0x4d,0xc5,0x1d,0xe5,0x4e,0x15,0x48,0x35,0x4e,0x5,0xf5,0x4,0x15,0x49,0xb6,0x49, + 0x68,0x3b,0xd3,0x46,0x56,0x80,0xd4,0xfd,0xd9,0x9d,0x48,0xa,0x4a,0x83,0xab,0x7d, + 0x30,0xac,0x6d,0xc3,0xe1,0xe2,0x99,0x8e,0xb0,0xd8,0x1a,0x9c,0xcd,0xee,0x42,0x4e, + 0x51,0x3f,0xb2,0xa,0x3a,0x49,0x79,0x9c,0x9,0x3,0x13,0x7b,0x1c,0x96,0x96,0x83, + 0x88,0x88,0x28,0xf8,0x76,0xf1,0x81,0x93,0x93,0x13,0x5c,0x5c,0x5c,0xd8,0xb9,0x6b, + 0x27,0x84,0x85,0xf7,0x43,0x4d,0xe3,0x24,0x7c,0xc8,0xea,0x65,0xe4,0x9e,0x43,0x5e, + 0xf1,0x5,0xa4,0x64,0x4e,0x20,0x34,0x6a,0x0,0x4e,0xee,0x2d,0xd0,0x31,0xce,0xc2, + 0x61,0x55,0x7b,0x8,0x6b,0x49,0xe3,0x80,0x9f,0x4,0x64,0x8b,0x64,0x71,0xa4,0x4e, + 0x6,0x82,0x51,0x42,0xd8,0xa2,0xb2,0x15,0x74,0x12,0xc,0xa0,0x33,0xdc,0x84,0xb5, + 0x91,0x4c,0xa0,0x89,0x21,0x4,0xc,0x19,0xb0,0x86,0x93,0xfe,0x1d,0x1d,0x85,0x3e, + 0x8e,0xb8,0x10,0xc7,0x7b,0x2b,0x39,0x1b,0xa4,0x9a,0xa7,0x21,0x52,0x27,0x12,0x9e, + 0xaa,0x5e,0x88,0xb7,0x4a,0x40,0x77,0x52,0x17,0xe6,0xaa,0xc9,0x4e,0x9a,0x58,0x7, + 0x7,0x53,0x4f,0xa2,0x9e,0x33,0x1c,0x5c,0x92,0x11,0x18,0x56,0x8d,0x98,0xc4,0x56, + 0x9c,0xcd,0x5a,0x36,0x64,0x0,0x65,0xd5,0xa3,0xe4,0xde,0x85,0xc8,0xb8,0x3c,0x38, + 0xba,0x50,0xa1,0x7b,0xd2,0x2,0xc7,0x54,0x34,0x89,0xcb,0xa8,0x43,0x4e,0x51,0xd, + 0xca,0x6a,0x3a,0x30,0x36,0x73,0x80,0x5f,0x10,0x29,0xa,0x49,0x8a,0x2d,0xaf,0x9b, + 0x44,0x61,0xc5,0x45,0x24,0x67,0x8f,0x22,0x22,0x7e,0x18,0x5e,0x81,0x43,0x30,0xb1, + 0x6e,0xc0,0x91,0xa3,0x54,0xf0,0x4b,0x28,0x42,0xc8,0x4c,0x2,0xd2,0x59,0x32,0x90, + 0x69,0x39,0xa,0xa1,0x78,0x61,0x30,0x2b,0xb0,0x82,0x96,0x9f,0xe,0x6b,0xb5,0x9, + 0x89,0x68,0x46,0xd0,0x24,0x6d,0xc2,0x2a,0x6b,0x6,0xac,0xe6,0xa3,0xc7,0xea,0x35, + 0x6b,0x33,0x29,0x5b,0x36,0x6d,0x79,0xae,0x24,0xac,0x4,0x47,0x45,0x27,0x58,0x49, + 0x5b,0xc3,0xf8,0xb0,0x9,0xbc,0xb5,0x7d,0x48,0xb7,0x55,0x82,0xde,0xac,0x1e,0xa4, + 0x7,0x65,0x43,0xe7,0xb8,0x35,0x54,0x4f,0x38,0xc3,0xdd,0x3b,0x97,0xa8,0x5d,0x4f, + 0x94,0xab,0x45,0x7c,0x4a,0xb,0x59,0x81,0x3e,0x94,0x54,0x8e,0xa0,0xbc,0x76,0x14, + 0x15,0xa4,0x54,0x2e,0xab,0x5e,0x7e,0xdf,0x45,0xd0,0x89,0xd2,0xaa,0x73,0x4,0xe4, + 0x5e,0xdd,0x85,0x8a,0xda,0x3e,0x54,0x35,0x8e,0xa2,0xba,0x89,0x94,0x15,0x84,0x40, + 0x2e,0xe9,0xa7,0x93,0x32,0x87,0x11,0x1a,0xd7,0x8f,0x53,0x81,0xfd,0x30,0xb5,0x6b, + 0xc1,0x51,0xd9,0x58,0x8,0x88,0xe8,0x43,0x40,0xfd,0x8,0xc4,0x83,0x25,0x71,0x20, + 0xe7,0x0,0xf6,0x4,0xa,0x80,0xf1,0x20,0x13,0x56,0x73,0xd3,0xfe,0xbc,0x46,0x91, + 0xfe,0x27,0x3a,0xdf,0x4d,0x3f,0xd1,0x84,0x6c,0xf8,0x89,0x62,0xbc,0xfe,0x67,0xca, + 0x6e,0xba,0x1f,0x29,0xf4,0x6b,0xe2,0x29,0xeb,0xe9,0xd6,0x9f,0xdf,0xc1,0xba,0xe3, + 0x89,0xe8,0xe,0xd1,0xef,0x84,0xb9,0x84,0x5f,0x9,0x6f,0x17,0x79,0x21,0xb3,0xf7, + 0xe8,0x73,0x23,0x45,0xc3,0xf7,0x9e,0x26,0x9e,0xb0,0x3d,0xe9,0xa,0x65,0x25,0x73, + 0xe8,0x18,0x50,0xe1,0x4d,0x2d,0x41,0x40,0x48,0x15,0x51,0xb3,0x18,0x51,0x67,0xea, + 0x90,0x5d,0xd0,0x4b,0x8c,0x1d,0x46,0x65,0xc3,0x4,0x9a,0x3b,0x67,0xd0,0x4d,0x9a, + 0x9f,0xc1,0xf1,0x9b,0x18,0x9b,0xba,0x8d,0xf3,0xb3,0x4b,0x2b,0x18,0x9f,0x5e,0x24, + 0xe5,0xf6,0x2d,0x52,0xf0,0x5d,0x47,0x63,0xc7,0x1c,0xca,0x6a,0x2f,0x20,0xab,0x70, + 0x14,0x67,0xce,0xf6,0x21,0x20,0xbc,0x3,0xae,0xbe,0x1d,0x30,0xb1,0x6b,0x86,0xbc, + 0x72,0x6,0x4,0xf7,0x3b,0x61,0xc7,0x1,0x39,0xf0,0xaa,0x93,0xca,0x54,0x9f,0x1b, + 0x2c,0x8a,0xac,0x1f,0xe9,0x79,0xd6,0x3f,0x58,0xc5,0xb8,0x6a,0x9e,0x66,0xef,0x9a, + 0x8b,0x6b,0xd4,0xd7,0x4d,0xad,0xd2,0xa6,0x9b,0xa6,0x1c,0x59,0x3b,0x4d,0xe1,0xa0, + 0x1d,0xa4,0xd0,0xd1,0x38,0x92,0x23,0x33,0x9a,0xb0,0xd5,0xab,0x56,0xd7,0xd0,0xd2, + 0xd0,0xb6,0x12,0x74,0x10,0x34,0xd1,0xd1,0xd2,0x35,0x32,0x6f,0x64,0x1a,0xd9,0xb3, + 0x7d,0xcf,0x3,0x49,0x51,0xc5,0x77,0x2a,0xaa,0x76,0x3f,0xdb,0x38,0x24,0xc2,0x37, + 0xb0,0x1c,0x5e,0xfe,0x45,0x38,0xe5,0x93,0x85,0xf0,0x98,0xca,0x5f,0x9,0x54,0xd, + 0x93,0x53,0x84,0x31,0xd4,0xb5,0x5e,0x40,0xcb,0xb9,0x69,0x74,0x92,0x9e,0xb9,0x67, + 0x68,0x1e,0x7d,0x23,0x97,0x57,0xd0,0x3b,0x7c,0x19,0x5d,0x3,0xf3,0x68,0x25,0x55, + 0x69,0x7d,0xdb,0x34,0x4a,0x49,0x52,0xc8,0x24,0x4,0xa2,0x12,0x48,0x7d,0x44,0xad, + 0x85,0x9d,0x5b,0xd,0x8c,0x6c,0x1a,0x70,0xec,0x44,0x9,0x84,0xe,0x4,0x81,0x63, + 0xf7,0x31,0x30,0x72,0xb3,0xff,0xb8,0x76,0xeb,0xda,0x47,0x34,0x1b,0x57,0x8f,0xae, + 0xa2,0x5d,0x55,0x48,0x59,0x45,0x89,0xa0,0xac,0xa5,0x50,0x29,0xeb,0x69,0x2,0x8, + 0x2,0x29,0xeb,0x28,0x41,0x14,0x5a,0x8a,0xb,0x29,0x24,0xa4,0x96,0xab,0x9,0x51, + 0x2,0x65,0x82,0xe3,0x4,0x27,0x8,0xd4,0x7e,0x83,0x15,0x85,0xb2,0x2a,0x9b,0x5f, + 0xe0,0xc8,0xbc,0xa6,0x8e,0xcf,0x3b,0x77,0xaf,0x7c,0xa2,0x7c,0x39,0xdc,0xbc,0xb2, + 0xe0,0xe2,0x91,0x42,0xdc,0xa8,0xec,0x1f,0x4,0xea,0x46,0x51,0xdb,0x3c,0x81,0x26, + 0x52,0x79,0xb6,0x75,0x11,0x12,0x7d,0x33,0xc4,0xe8,0xb9,0x15,0x9c,0xeb,0x9f,0x43, + 0x47,0xef,0x2c,0x9a,0x49,0x81,0x57,0x4b,0x4e,0x33,0xca,0x6a,0x2f,0x22,0x87,0xa4, + 0xe7,0xc8,0xf8,0x36,0x38,0x7b,0x16,0xc2,0xdc,0xae,0x0,0x6,0x56,0xb5,0x50,0xd1, + 0xad,0x87,0xf0,0xc1,0x4,0xb0,0x71,0x1f,0x7,0x3d,0x3d,0xcb,0x12,0xb1,0x21,0x97, + 0x40,0x9f,0x40,0x8e,0x60,0x3f,0x81,0x20,0xc1,0xde,0xdf,0xb0,0x7c,0x9c,0xb9,0x8b, + 0x80,0xf9,0x3f,0x35,0x3b,0x9c,0xe4,0x4b,0xfb,0x7d,0xa2,0x2a,0xbd,0xc6,0x66,0x91, + 0xaf,0xbd,0xfd,0x7f,0x55,0xdf,0xce,0x39,0x1e,0x76,0x4e,0x31,0x8,0xe,0x2f,0xfa, + 0x8d,0x0,0x89,0x81,0x3f,0x41,0xa0,0xbc,0x6e,0xa,0xf9,0xe5,0x93,0xa4,0x1f,0x6e, + 0x81,0xad,0x53,0x2a,0xf4,0x4d,0xcf,0x42,0xdf,0xa2,0xa,0x6a,0xfa,0xed,0x10,0x3d, + 0x9c,0xd,0x36,0x2e,0x3d,0xac,0x5b,0xb7,0x6d,0x9e,0xcc,0x6d,0xf6,0x67,0x3a,0xb1, + 0x7f,0x35,0x96,0x9d,0x7c,0xe8,0x2b,0x2c,0xaa,0x36,0x6d,0x6e,0x1d,0xff,0xa3,0x4f, + 0x40,0x35,0x9c,0x3c,0x32,0x60,0x44,0x1a,0x1a,0x13,0xb,0x2a,0xa8,0xc1,0xd9,0x2b, + 0x4,0x4a,0x49,0x16,0xaa,0xf8,0x13,0x4,0x2a,0x1a,0xa6,0x51,0x50,0x31,0x85,0xd0, + 0x98,0x7a,0x18,0x5b,0x44,0xe1,0x84,0x6e,0x24,0xf4,0xcc,0xca,0x71,0xdc,0xb0,0x1b, + 0x62,0xd2,0x45,0x60,0xdb,0x6e,0x4,0x3a,0x7a,0xf6,0x5b,0x64,0x6e,0xe3,0xff,0x95, + 0x0,0x59,0xb6,0x55,0x79,0x5f,0x8,0x1d,0xfd,0xc6,0xd8,0x3c,0xea,0x17,0x2f,0x6a, + 0x25,0xec,0x48,0x1a,0x55,0x3b,0x61,0xf,0xb5,0xe3,0x56,0xf0,0x22,0x5,0x5b,0x61, + 0xf9,0xb2,0xeb,0x4c,0xa3,0xa6,0xe9,0x2,0x39,0xe,0x9c,0x24,0x81,0x3c,0xf5,0x6f, + 0x5d,0xa8,0xa5,0x6b,0x96,0xc4,0xc0,0x2c,0xc9,0x44,0x73,0x2b,0x4,0xfc,0x4f,0x17, + 0x93,0xdf,0x72,0x25,0xc1,0xeb,0x5,0x5d,0xb3,0xa,0x68,0x99,0xe,0x91,0xa2,0xaf, + 0x4,0x6c,0x3c,0x46,0x58,0x43,0xcf,0xf6,0x82,0x18,0xef,0x47,0x40,0xff,0xbf,0x90, + 0x38,0x44,0x8,0xd4,0xed,0xe0,0x15,0x7e,0xaf,0xae,0xe5,0xe,0x7,0xb7,0x4c,0x58, + 0xd8,0x46,0x43,0x4a,0x5a,0x7,0xa2,0xe2,0xa,0xb0,0x75,0x8,0x41,0x61,0xd9,0x30, + 0xea,0x5a,0x66,0xff,0x4e,0xa0,0x85,0x10,0x68,0xef,0x9e,0x21,0x7e,0x3f,0x8b,0xee, + 0xc1,0x4b,0x2b,0xe8,0x1a,0xb8,0x44,0x62,0x62,0x6e,0x25,0x88,0x97,0xb3,0x50,0x65, + 0xc3,0xc,0x32,0xb,0x86,0xe1,0xe0,0x1a,0xb,0xf1,0x83,0xea,0x10,0x3d,0x60,0xc, + 0x4d,0xc3,0x42,0x68,0x9a,0xf4,0x60,0xff,0xe1,0x74,0xb0,0x70,0x6a,0x82,0x96,0x8e, + 0xf5,0x15,0x31,0x3c,0x96,0x60,0x3b,0x1,0x39,0x31,0xfc,0xef,0xae,0xa3,0xe4,0xb1, + 0x5e,0x26,0x66,0x76,0xec,0x15,0x96,0x83,0xdc,0x31,0x73,0xc8,0x90,0x76,0x90,0x77, + 0xa7,0x8,0x38,0x38,0x76,0x41,0xf1,0xd8,0x49,0x52,0xef,0xa4,0x21,0x31,0xb5,0x6, + 0x99,0x79,0xad,0x64,0xf,0x18,0xc0,0x32,0x81,0xfe,0x91,0xeb,0x18,0xbd,0x78,0x8b, + 0x1c,0xb5,0xdc,0x21,0xb8,0x4d,0x5e,0xdf,0x26,0x8d,0xfe,0x2,0x21,0x72,0x8d,0x64, + 0xaa,0x29,0x92,0x42,0x7b,0x48,0xfc,0x14,0x43,0x43,0xcb,0x16,0x3c,0x3b,0x85,0x9, + 0x8e,0xe0,0x90,0xac,0x37,0xa4,0xe4,0x23,0xb0,0x63,0x8f,0x5,0x36,0x30,0xee,0x7, + 0xd,0xed,0xa6,0x87,0x64,0xee,0x30,0x82,0xe5,0x13,0x89,0xff,0x9a,0xc0,0x11,0xf2, + 0x70,0x1b,0x2d,0xed,0x5a,0x30,0x6c,0x60,0xc4,0x32,0x11,0x46,0x26,0x36,0x12,0x60, + 0x1b,0x8,0xd6,0x83,0x93,0x7b,0x27,0x59,0xd,0x65,0xe8,0x19,0xd8,0x91,0xac,0x14, + 0x8a,0x88,0x98,0x1c,0xe4,0x17,0xb7,0x11,0x12,0x93,0x24,0x7d,0x5e,0x41,0xff,0xe8, + 0xd5,0x95,0x7b,0xcf,0xf0,0x15,0x72,0x72,0x77,0x9,0x35,0xe4,0x54,0x22,0x2d,0xa7, + 0x11,0x3e,0x1,0xc9,0xd0,0x35,0x70,0xc1,0x3e,0x11,0x19,0x30,0x6d,0xe1,0xc4,0x66, + 0x46,0x6e,0xb0,0x73,0x49,0x60,0x1b,0x87,0x18,0xd6,0x6f,0xe0,0xc2,0x6a,0xda,0xd, + 0x2f,0x28,0xab,0xd6,0x9c,0x23,0x7,0x24,0xcb,0x41,0xfc,0x1f,0xb3,0xcc,0x1f,0xad, + 0xcb,0x72,0x9a,0x72,0x25,0xc8,0x27,0x28,0xfe,0x1d,0x4a,0x69,0x69,0x69,0x5b,0x19, + 0x99,0x58,0x26,0xf9,0x76,0xef,0xbd,0x2d,0x79,0x48,0xee,0xa5,0x92,0x8a,0xf6,0x2f, + 0x46,0xa6,0xe,0x70,0x71,0xf,0x80,0xb7,0x5f,0x4,0xbc,0xfd,0xc3,0xc9,0x3d,0x1c, + 0x9e,0xbe,0xe1,0xf0,0xf0,0xa,0x21,0x2e,0xe7,0x3,0x3,0x63,0xfb,0xd7,0xa,0x4a, + 0x3a,0xf,0x84,0xf6,0x1d,0xbe,0xba,0x95,0x8d,0x77,0x78,0xfd,0x7a,0xa6,0xc6,0xb5, + 0x6b,0x37,0x94,0xae,0x5d,0xb7,0xa9,0x78,0xf5,0xea,0x55,0x7f,0x9b,0x23,0x91,0xcc, + 0x65,0x45,0xa1,0xac,0x59,0x4e,0x99,0xcb,0xff,0xee,0xfc,0xd7,0xd7,0x72,0xd3,0xcc, + 0x4a,0xc0,0xf3,0x2f,0xc0,0x47,0x3e,0x53,0x20,0x70,0x5b,0xbb,0x76,0x5d,0xfa,0x86, + 0xd,0x9b,0xce,0x6d,0xde,0xcc,0x7c,0x95,0x99,0x99,0xf5,0x29,0x2b,0x2b,0xdb,0xfb, + 0x6d,0xdb,0x38,0x3e,0xfe,0xa,0xf6,0x8f,0x5b,0xb7,0xb1,0x7f,0x20,0xaf,0xbf,0x23, + 0xf7,0x5b,0x2c,0xac,0x6c,0x43,0x84,0x74,0x9,0x3,0xc3,0xc6,0xc8,0x35,0x6b,0xd6, + 0x99,0x11,0x11,0x96,0x37,0xa2,0x65,0xa1,0xfe,0x79,0x8e,0xe5,0xf4,0xcd,0x44,0xf0, + 0xff,0xf7,0x4f,0xe5,0xbf,0x91,0x80,0x1c,0x34,0xad,0x4c,0x2e,0x4b,0x60,0x44,0xe0, + 0xf1,0x9b,0xdf,0xc6,0x93,0x7b,0xc2,0xef,0x10,0x45,0xde,0xfb,0x10,0x58,0x12,0xa8, + 0x12,0x88,0x13,0x6c,0xfb,0xaf,0xa5,0xfd,0xa7,0x7,0xff,0xf,0xd3,0x46,0x64,0xd6, + 0x93,0x98,0x5,0x28,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + + // /home/maemo/tietoopcom/resources/unknown.png + 0x0,0x0,0xe,0xba, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x44,0x0,0x0,0x0,0x44,0x8,0x6,0x0,0x0,0x0,0x38,0x13,0x93,0xb2, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0, + 0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1, + 0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0xb, + 0xf,0xd,0xb,0x40,0x64,0xfa,0x6e,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43, + 0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77, + 0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0xe,0x15, + 0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x5a,0xdb,0x6f,0x1d,0xd5,0x7e,0xfe,0xd6,0xac, + 0xb5,0xe6,0xba,0x67,0xf6,0xf6,0xbe,0x78,0x5f,0xe2,0xd8,0xe0,0x24,0x84,0x98,0x63, + 0xa7,0x90,0x28,0x5c,0x7a,0x4a,0xc2,0xad,0x3d,0x42,0xa2,0xa,0xea,0x3,0x5,0x1, + 0xf,0x7d,0xe9,0x7f,0xc0,0x2b,0x95,0x78,0x5,0xc1,0x6b,0x25,0x1e,0x4e,0x5f,0x50, + 0x49,0xa4,0xa,0x2a,0xa1,0x22,0x20,0x4a,0x42,0xa3,0x83,0x94,0x9a,0x20,0x68,0x48, + 0x5d,0xac,0x5c,0x8d,0x9d,0xd8,0xde,0xd7,0xd9,0x7b,0xcf,0x7d,0x66,0xf5,0x21,0x99, + 0xa9,0x9d,0xe4,0xc0,0x51,0x21,0xe,0xa6,0xfe,0xa4,0xa5,0x6d,0x4b,0xe3,0x19,0xcf, + 0xb7,0x7f,0xbf,0xef,0xf7,0xad,0xdf,0x6f,0x1,0x5b,0xd8,0xc2,0x16,0xb6,0xb0,0x85, + 0x2d,0x6c,0x61,0xb,0x5b,0xd8,0xc2,0x2f,0x11,0x64,0xa3,0x1f,0xf8,0xf4,0xd3,0x4f, + 0xb3,0x57,0x5f,0x7d,0x55,0xb1,0x2c,0x8b,0x97,0xcb,0x65,0x42,0x8,0x41,0x14,0x45, + 0x58,0x5a,0x5a,0xc2,0x70,0x38,0x14,0xb,0xb,0xb,0xd1,0x89,0x13,0x27,0xbc,0x93, + 0x27,0x4f,0x46,0x77,0x83,0x10,0xb6,0xc1,0xcf,0x53,0x9f,0x7f,0xfe,0xf9,0x69,0x55, + 0x55,0x1f,0x54,0x14,0x65,0x5c,0x51,0x14,0x19,0x0,0x92,0x24,0x81,0xae,0xeb,0x18, + 0xc,0x6,0xc2,0x30,0x8c,0x2b,0xfb,0xf7,0xef,0xff,0xe2,0xe4,0xc9,0x93,0xff,0x9, + 0x20,0xfc,0xd5,0x12,0x72,0xea,0xd4,0x29,0x73,0x71,0x71,0xf1,0x21,0xd3,0x34,0xff, + 0x52,0x51,0x94,0x27,0x65,0x59,0xde,0x23,0x49,0x92,0x2e,0x84,0x0,0x21,0x4,0x8c, + 0x31,0x68,0x9a,0x16,0x47,0x51,0xf4,0x5f,0x42,0x88,0xd1,0xd7,0x5e,0x7b,0x4d,0xa, + 0xc3,0xf0,0xdb,0xb7,0xdf,0x7e,0xdb,0xfd,0xd5,0x11,0x72,0xe4,0xc8,0x91,0x9c,0x10, + 0xe2,0x89,0xf1,0xf1,0xf1,0xc3,0x86,0x61,0x3c,0xcc,0x39,0xdf,0xa1,0xeb,0xba,0xc2, + 0x18,0x43,0x18,0x86,0x70,0x5d,0x17,0xaa,0xaa,0x42,0xd3,0x34,0xbe,0xbc,0xbc,0x3c, + 0xc3,0x18,0xe3,0x8c,0x31,0xcd,0x71,0x9c,0x23,0x0,0xbe,0x4,0x20,0x36,0x8a,0x10, + 0x7a,0xa7,0x1f,0xf0,0xfa,0xeb,0xaf,0xcb,0x7b,0xf7,0xee,0xdd,0x65,0x59,0xd6,0xdf, + 0xe6,0xf3,0xf9,0xe7,0x2b,0x95,0xca,0x44,0x3e,0x9f,0x67,0x0,0xe0,0x79,0x1e,0x5c, + 0xd7,0x85,0xe7,0x79,0xf0,0x7d,0x1f,0x49,0x92,0x40,0x96,0x65,0x89,0x10,0x32,0x1a, + 0x4,0x41,0xc1,0xf7,0xfd,0x66,0xb1,0x58,0xfc,0xfe,0x81,0x7,0x1e,0x18,0x9e,0x3b, + 0x77,0x6e,0x43,0x48,0x91,0xee,0x30,0x19,0xd2,0x9e,0x3d,0x7b,0x1a,0xaa,0xaa,0x1e, + 0x28,0x14,0xa,0x7b,0xab,0xd5,0x6a,0xb9,0x5c,0x2e,0x43,0x51,0x14,0x50,0x4a,0x21, + 0x49,0x12,0x8,0x21,0xeb,0x16,0x63,0xc,0x86,0x61,0x80,0x31,0x36,0x41,0x8,0x79, + 0xb4,0x5e,0xaf,0xef,0x63,0x8c,0xe5,0x7f,0x15,0x55,0x66,0x76,0x76,0x96,0x7b,0x9e, + 0xf7,0x64,0xa1,0x50,0x78,0xb9,0x5a,0xad,0x3e,0x55,0x2c,0x16,0xeb,0x92,0x24,0x61, + 0x38,0x1c,0xc2,0x75,0x5d,0x2c,0x2c,0x2c,0x60,0x71,0x71,0x11,0xd7,0xae,0x5d,0x43, + 0xb7,0xdb,0x85,0xe3,0x38,0x70,0x5d,0x37,0xfb,0xf4,0x3c,0xf,0x51,0x14,0xf5,0x7c, + 0xdf,0x3f,0x1d,0x4,0xc1,0x47,0x51,0x14,0xfd,0xfe,0xe3,0x8f,0x3f,0xee,0x6d,0x5a, + 0xd,0x59,0x59,0x59,0x19,0xa9,0xd5,0x6a,0xd3,0x8a,0xa2,0x3c,0x44,0x8,0xa9,0xc4, + 0x71,0x8c,0x38,0x8e,0x91,0x24,0x9,0x84,0x10,0xf8,0xf6,0xdb,0x6f,0x31,0x31,0x31, + 0x81,0xa9,0xa9,0x29,0x94,0x4a,0x25,0x58,0x96,0x85,0x38,0x8e,0x11,0x4,0x1,0xa2, + 0x28,0x42,0x14,0x45,0xb8,0x74,0xe9,0x52,0xfe,0xd2,0xa5,0x4b,0xcf,0xcc,0xce,0xce, + 0x3e,0x33,0x3b,0x3b,0xfb,0xce,0xa1,0x43,0x87,0xfe,0x21,0x8a,0xa2,0x77,0x4e,0x9d, + 0x3a,0xd5,0xdb,0x4c,0x1a,0x22,0x3d,0xfb,0xec,0xb3,0x55,0xc3,0x30,0xe,0x8c,0x8e, + 0x8e,0x3e,0x37,0x32,0x32,0xb2,0x2f,0x97,0xcb,0xa9,0x51,0x14,0x21,0x8e,0x63,0x84, + 0x61,0x88,0x28,0x8a,0x70,0xe1,0xc2,0x5,0x3c,0xf7,0xdc,0x73,0x58,0x58,0x58,0x40, + 0xaf,0xd7,0xc3,0xca,0xca,0xa,0x96,0x96,0x96,0x70,0xf9,0xf2,0x65,0x9c,0x3f,0x7f, + 0x1e,0xdf,0x7d,0xf7,0x1d,0xda,0xed,0x36,0x8a,0xc5,0x22,0x1e,0x7d,0xf4,0x51,0x3c, + 0xf3,0xcc,0x33,0xe8,0x76,0xbb,0x87,0x2e,0x5e,0xbc,0xf8,0xbb,0x46,0xa3,0xf1,0xcf, + 0x8b,0x8b,0x8b,0xfe,0xa6,0x88,0x10,0xc6,0x18,0x65,0x8c,0xcd,0xd8,0xb6,0xfd,0xd7, + 0xb6,0x6d,0xef,0x13,0x42,0x18,0x29,0x11,0xa9,0xef,0x8,0x82,0x20,0xbb,0x7e,0x72, + 0x72,0x32,0xfb,0x39,0xc,0x43,0x4,0x41,0x80,0x66,0xb3,0x89,0xf9,0xf9,0x79,0xf4, + 0x7a,0x3d,0x34,0x9b,0x4d,0x9c,0x39,0x73,0x6,0xf7,0xdd,0x77,0x1f,0x5e,0x7c,0xf1, + 0x45,0x4,0x41,0xf0,0x67,0x9f,0x7f,0xfe,0xf9,0xef,0x1,0x3c,0xbf,0x29,0x8,0x69, + 0x34,0x1a,0x8c,0x73,0x7e,0x5f,0x10,0x4,0x7f,0x11,0x4,0xc1,0x58,0x92,0x24,0xf0, + 0x3c,0x6f,0x1d,0x21,0xbe,0xef,0x23,0x97,0xcb,0xe1,0xe8,0xd1,0xa3,0x19,0x11,0xc3, + 0xe1,0x10,0xbe,0xef,0x83,0x73,0x8e,0x3,0x7,0xe,0xe0,0xb1,0xc7,0x1e,0xc3,0xa9, + 0x53,0xa7,0xe0,0x38,0xe,0x0,0x60,0x6e,0x6e,0xe,0x9d,0x4e,0x7,0x2f,0xbf,0xfc, + 0x32,0xce,0x9d,0x3b,0x77,0x78,0xff,0xfe,0xfd,0x7,0x67,0x67,0x67,0x4f,0xfe,0xe2, + 0x53,0xe6,0xde,0x7b,0xef,0x55,0x46,0x47,0x47,0x9f,0x36,0x4d,0xf3,0xaf,0xb6,0x6f, + 0xdf,0xae,0xe6,0xf3,0xd7,0x8b,0x44,0xaa,0xd,0x61,0x18,0x22,0x8e,0x63,0x58,0x96, + 0x5,0xd3,0x34,0xa1,0xeb,0x3a,0x54,0x55,0x45,0x2e,0x97,0x83,0xae,0xeb,0xe8,0xf5, + 0x7a,0xf8,0xe8,0xa3,0x8f,0x50,0x28,0x14,0x70,0xe0,0xc0,0x1,0xb4,0xdb,0x6d,0x74, + 0x3a,0x1d,0xa4,0x26,0xe,0x0,0xa,0x85,0x2,0xce,0x9e,0x3d,0x8b,0xa5,0xa5,0xa5, + 0xf,0x37,0x45,0xd9,0x95,0x24,0x89,0x26,0x49,0xc2,0xa3,0x28,0x82,0xe7,0x79,0xd9, + 0x72,0x5d,0x17,0xbe,0xef,0x67,0x2b,0xc,0xc3,0x4c,0x53,0xa2,0x28,0x42,0x10,0x4, + 0x90,0x65,0x19,0xc5,0x62,0x11,0xef,0xbd,0xf7,0x1e,0xda,0xed,0x36,0x76,0xec,0xd8, + 0xb1,0xee,0xde,0x9d,0x4e,0x7,0xf,0x3e,0xf8,0x20,0x0,0x1c,0xda,0x14,0x3e,0x84, + 0x73,0x2e,0x92,0x24,0x19,0x26,0x49,0xd2,0x4b,0x4d,0x97,0xef,0xfb,0x99,0x1,0x4b, + 0x3f,0x83,0x20,0x58,0x57,0x51,0x82,0x20,0x80,0xeb,0xba,0x59,0xea,0x4,0x41,0x80, + 0x13,0x27,0x4e,0xdc,0xf6,0x19,0xe5,0x72,0x19,0x0,0xee,0xd9,0x14,0x1a,0xd2,0x6c, + 0x36,0x93,0xb1,0xb1,0xb1,0xae,0x10,0x62,0xd9,0x71,0x9c,0xb2,0xef,0xfb,0x94,0x10, + 0x92,0x69,0x48,0xaa,0x23,0x69,0x19,0x4e,0xd3,0x28,0x25,0xc3,0xb6,0x6d,0xf4,0x7a, + 0x3d,0xf4,0xfb,0x7d,0x2c,0x2d,0x2d,0xa5,0x2f,0xbf,0xe,0x9e,0xe7,0x6d,0x1e,0x1f, + 0xa2,0x28,0x4a,0x1c,0x86,0xe1,0x85,0x24,0x49,0xfe,0xe0,0xfb,0xbe,0x65,0xdb,0xf6, + 0x3d,0x84,0x90,0xcc,0x7f,0xa4,0xeb,0x66,0x32,0x6,0x83,0x1,0x3a,0x9d,0xe,0x56, + 0x57,0x57,0xd1,0xe9,0x74,0xb2,0x4a,0xd4,0xed,0x76,0x6f,0xdd,0x36,0xab,0xea,0xe6, + 0x21,0x64,0x6e,0x6e,0x2e,0x1e,0x1f,0x1f,0x3f,0x2b,0x49,0x12,0xf1,0x3c,0x6f,0xb4, + 0xd9,0x6c,0x8e,0xb1,0xeb,0x0,0x80,0xcc,0x9c,0xa5,0x26,0xcc,0xf7,0x7d,0xc,0x6, + 0x3,0x74,0xbb,0x5d,0x34,0x9b,0x4d,0x2c,0x2f,0x2f,0xc3,0xb6,0x6d,0x10,0x42,0xa0, + 0xaa,0x6a,0x56,0x65,0x36,0xf3,0x6e,0x37,0xf9,0xe4,0x93,0x4f,0xae,0x4e,0x4f,0x4f, + 0x3b,0x2b,0x2b,0x2b,0x8f,0xba,0xae,0xfb,0xe7,0x71,0x1c,0x57,0x4c,0xd3,0x94,0x28, + 0xa5,0x48,0x92,0x4,0x49,0x92,0x20,0x8a,0xa2,0xcc,0xaa,0x77,0xbb,0x5d,0xb4,0xdb, + 0x6d,0xac,0xae,0xae,0xa2,0xd9,0x6c,0xc2,0xf7,0x7d,0x54,0x2a,0x15,0xcc,0xcc,0xcc, + 0xa0,0xd5,0x6a,0xdd,0x12,0x1d,0xc3,0xe1,0x10,0x0,0x3e,0xd8,0x54,0xd6,0xfd,0xad, + 0xb7,0xde,0x72,0xe,0x1f,0x3e,0x7c,0xa9,0x50,0x28,0xcc,0x3b,0x8e,0xa3,0x8d,0x8c, + 0x8c,0x58,0x8a,0xa2,0x80,0x10,0x2,0x21,0x4,0x82,0x20,0x80,0xe3,0x38,0xe8,0xf7, + 0xfb,0x19,0x21,0xbd,0x5e,0xf,0x8e,0xe3,0x40,0xd3,0x34,0x54,0xab,0x55,0x4c,0x4f, + 0x4f,0xe3,0xd3,0x4f,0x3f,0x5d,0x77,0xdf,0x4a,0xa5,0x82,0x63,0xc7,0x8e,0x6d,0x3e, + 0x42,0x0,0xc4,0xe7,0xcf,0x9f,0x3f,0xdb,0x68,0x34,0x4e,0xb9,0xae,0x5b,0x69,0xb5, + 0x5a,0x96,0x2c,0xcb,0x10,0x42,0x64,0xa9,0xe3,0xfb,0x3e,0x1c,0xc7,0x81,0x6d,0xdb, + 0xb0,0x6d,0x1b,0x41,0x10,0x80,0x10,0x82,0xb1,0xb1,0xb1,0xe4,0xa5,0x97,0x5e,0x92, + 0x96,0x97,0x97,0x11,0x45,0xd1,0x5a,0x17,0xc,0xc3,0x30,0xf0,0xe1,0x87,0x1f,0x76, + 0x67,0x67,0x67,0xff,0x69,0xb3,0x11,0x92,0x34,0x9b,0xcd,0x4b,0xa5,0x52,0xe9,0xdb, + 0x7e,0xbf,0xff,0xdb,0x20,0x8,0x76,0x33,0xc6,0xb2,0x12,0x9b,0xa,0x6a,0x6a,0xd7, + 0xa3,0x28,0x2,0xa5,0x14,0x3b,0x77,0xee,0xc4,0xc1,0x83,0x7,0xa5,0x3d,0x7b,0xf6, + 0xe0,0xb3,0xcf,0x3e,0x5b,0x77,0xc3,0xc9,0xc9,0x49,0x1c,0x39,0x72,0x4,0x84,0x90, + 0x77,0x36,0xdd,0x6e,0xb7,0x5c,0x2e,0x8f,0xd4,0xeb,0xf5,0x1a,0x21,0x64,0x4,0x80, + 0x62,0x18,0x6,0xca,0xe5,0x32,0x5c,0xd7,0xc5,0xe2,0xe2,0x22,0xba,0xdd,0x2e,0x5c, + 0xd7,0x45,0x14,0x45,0xe0,0x9c,0xc3,0xb2,0x2c,0x6c,0xdf,0xbe,0x1d,0x33,0x33,0x33, + 0x78,0xe1,0x85,0x17,0x70,0xfa,0xf4,0xe9,0x75,0xa5,0xba,0x54,0x2a,0x61,0x38,0x1c, + 0xe2,0x8b,0x2f,0xbe,0xb8,0xb4,0x59,0x8,0x21,0x7,0xf,0x1e,0xa4,0x53,0x53,0x53, + 0x66,0xad,0x56,0xab,0xda,0xb6,0xbd,0xf3,0xda,0xb5,0x6b,0xf,0xd8,0xb6,0x7d,0x80, + 0x10,0xd2,0x28,0x16,0x8b,0xb8,0xff,0xfe,0xfb,0x21,0x84,0x80,0xa6,0x69,0x10,0x42, + 0xc0,0xb6,0x6d,0x44,0x51,0x4,0xc3,0x30,0xb0,0x6d,0xdb,0x36,0x54,0xab,0x55,0xbc, + 0xf2,0xca,0x2b,0xb8,0x72,0xe5,0xca,0xba,0x72,0xcb,0x39,0xc7,0xd4,0xd4,0x14,0xde, + 0x7c,0xf3,0x4d,0x8,0x21,0xfe,0xee,0xf4,0xe9,0xd3,0xbd,0x5f,0x34,0x21,0x8a,0xa2, + 0x18,0x8f,0x3f,0xfe,0xf8,0xd4,0xcc,0xcc,0xcc,0xfd,0xbb,0x77,0xef,0x1e,0x6f,0x34, + 0x1a,0xa5,0x6e,0xb7,0xdb,0xb8,0x7c,0xf9,0xf2,0xc4,0xfc,0xfc,0xfc,0xf6,0xd5,0xd5, + 0xd5,0xb2,0xeb,0xba,0xe0,0x9c,0xa3,0x56,0xab,0x41,0x55,0x55,0x94,0xcb,0xe5,0xb4, + 0x5a,0x40,0xd3,0x34,0x10,0x42,0xf0,0xf0,0xc3,0xf,0x43,0x8,0x81,0x85,0x85,0x85, + 0x75,0xf7,0x9f,0x9a,0x9a,0xc2,0xc9,0x93,0x27,0xd1,0xeb,0xf5,0xfe,0x35,0x8e,0xe3, + 0xc2,0xe4,0xe4,0xe4,0x3d,0x17,0x2e,0x5c,0xb8,0xf4,0x4b,0x24,0x44,0xda,0xbd,0x7b, + 0xb7,0x59,0xab,0xd5,0x1e,0xaa,0x56,0xab,0xbf,0x33,0x4d,0xf3,0xa0,0x61,0x18,0x3b, + 0x72,0xb9,0x9c,0xa2,0xaa,0x2a,0xe3,0x9c,0x33,0xc7,0x71,0x68,0xb3,0xd9,0x94,0x96, + 0x96,0x96,0x30,0x3f,0x3f,0xf,0xc6,0x18,0x72,0xb9,0x1c,0x76,0xed,0xda,0x85,0x38, + 0x8e,0x41,0x29,0x85,0xef,0xfb,0xb8,0x78,0xf1,0x22,0x1e,0x79,0xe4,0x11,0x7c,0xf3, + 0xcd,0x37,0xb7,0xd8,0x74,0xc7,0x71,0x70,0xfa,0xf4,0xe9,0x30,0x9f,0xcf,0xef,0x13, + 0x42,0x70,0x21,0xc4,0x7,0xb2,0x2c,0xff,0xdb,0xf9,0xf3,0xe7,0xaf,0x86,0x61,0xf8, + 0xb3,0xcd,0x70,0x7e,0xf2,0x6e,0xb7,0x5e,0xaf,0x97,0xcb,0xe5,0xf2,0x53,0xb5,0x5a, + 0xed,0x6f,0xc6,0xc7,0xc7,0x9f,0x6c,0x34,0x1a,0x33,0x13,0x13,0x13,0xb9,0x52,0xa9, + 0xa4,0xe8,0xba,0xce,0x75,0x5d,0xa7,0xbe,0xef,0x93,0x95,0x95,0x15,0xac,0xac,0xac, + 0xa0,0xdf,0xef,0x63,0x38,0x1c,0x66,0x6d,0xc2,0xe1,0x70,0x88,0xe1,0x70,0x88,0x4e, + 0xa7,0x83,0xe9,0xe9,0x69,0x54,0xab,0x55,0xac,0xae,0xae,0x66,0x62,0xb,0x0,0x7b, + 0xf7,0xee,0xc5,0xbb,0xef,0xbe,0x8b,0xb1,0xb1,0x31,0xca,0x18,0xb3,0x84,0x10,0xd5, + 0x24,0x49,0xa,0x61,0x18,0x12,0x49,0x92,0x3a,0xb6,0x6d,0xb7,0x7e,0x11,0x11,0xf2, + 0xd4,0x53,0x4f,0xd1,0x76,0xbb,0xbd,0xd3,0xb2,0xac,0xe7,0xa,0x85,0xc2,0xb3,0xa3, + 0xa3,0xa3,0xa5,0x4a,0xa5,0x82,0x30,0xc,0xd1,0x6a,0xb5,0x40,0xe9,0x75,0xbe,0x4d, + 0xd3,0x44,0xbd,0x5e,0x47,0xa7,0xd3,0x41,0xbb,0xdd,0x86,0x6d,0xdb,0xd0,0x34,0xd, + 0x9a,0xa6,0x65,0xd7,0x4c,0x4d,0x4d,0x61,0x62,0x62,0x22,0x4b,0xa1,0x14,0xd3,0xd3, + 0xd3,0x78,0xff,0xfd,0xf7,0x51,0x2a,0x95,0xc0,0x18,0x83,0x69,0x9a,0x10,0x42,0x58, + 0x41,0x10,0xfc,0x76,0x38,0x1c,0x72,0xc3,0x30,0x56,0xf7,0xed,0xdb,0x77,0xe1,0xcb, + 0x2f,0xbf,0xc,0xef,0x36,0x21,0x92,0x6d,0xdb,0xe5,0x72,0xb9,0xbc,0xc7,0x34,0xcd, + 0xe9,0x4a,0xa5,0x52,0x2a,0x95,0x4a,0xe0,0x9c,0x67,0xdf,0x3c,0x0,0x10,0x42,0x10, + 0xc7,0x31,0x46,0x47,0x47,0xe1,0x38,0xe,0xae,0x5c,0xb9,0x82,0x76,0xbb,0x8d,0x76, + 0xbb,0x9d,0xf5,0x37,0x52,0xed,0x28,0x14,0xa,0x70,0xdd,0xff,0x9d,0x4b,0x8d,0x8c, + 0x8c,0xe0,0xe2,0xc5,0x8b,0x58,0x5c,0x5c,0xcc,0x36,0x78,0x9c,0x73,0xe8,0xba,0xe, + 0xd3,0x34,0xd5,0x5e,0xaf,0x37,0x15,0x86,0xe1,0x6f,0x3c,0xcf,0xfb,0xf,0x4a,0xe9, + 0x42,0x1c,0xc7,0xc1,0x5d,0x23,0xa4,0x5e,0xaf,0xab,0x0,0x26,0x75,0x5d,0x9f,0x2e, + 0x16,0x8b,0xe5,0x42,0xa1,0x90,0x69,0x41,0xea,0x29,0x84,0x10,0x48,0x92,0x4,0x0, + 0x90,0xcb,0xe5,0x30,0x3e,0x3e,0xe,0xce,0x39,0x4c,0xd3,0xcc,0xb6,0xf8,0x71,0x1c, + 0x67,0x4d,0x9f,0xd1,0xd1,0x51,0x9c,0x3b,0x77,0x6e,0xed,0x33,0xf0,0xc1,0x7,0x1f, + 0xa0,0x50,0x28,0x64,0x76,0x3f,0xbd,0x56,0x55,0x55,0xe8,0xba,0x9e,0xb,0xc3,0x70, + 0xb7,0xe7,0x79,0xd3,0x96,0x65,0xf5,0x3a,0x9d,0x4e,0xf3,0xae,0x11,0x42,0x8,0xc9, + 0x11,0x42,0x76,0x53,0x4a,0xa7,0x72,0xb9,0x5c,0x21,0x97,0xcb,0x41,0x92,0x24,0xf8, + 0xbe,0xf,0xd7,0x75,0x21,0x84,0x0,0xa5,0x34,0x73,0xa5,0x84,0x10,0xe8,0xba,0x8e, + 0x5a,0xad,0x6,0xd3,0x34,0xb3,0xe6,0x50,0x1c,0xc7,0xd9,0x35,0x37,0xef,0x60,0xd, + 0xc3,0xc0,0x95,0x2b,0x57,0x50,0x28,0x14,0x32,0x13,0x27,0x49,0x12,0x84,0x10,0xe0, + 0x9c,0x43,0x51,0x14,0x85,0x52,0xba,0x3,0xc0,0x6f,0x28,0xa5,0xff,0xd,0xe0,0xee, + 0x11,0x12,0x86,0xa1,0x16,0x4,0xc1,0x2e,0x0,0xbb,0x2c,0xcb,0x52,0x4d,0xd3,0x84, + 0x24,0x49,0xe8,0xf7,0xfb,0xb0,0x6d,0x3b,0x8b,0x4,0x4a,0x29,0xa2,0x28,0xca,0x22, + 0xc5,0x30,0xc,0xe8,0xba,0x9e,0x45,0x4f,0xba,0x6e,0x87,0x94,0xb8,0xb4,0xe7,0xea, + 0x38,0xe,0x28,0xa5,0x90,0x65,0x39,0x4d,0x1d,0xd2,0xe9,0x74,0xc6,0xe2,0x38,0xbe, + 0x9f,0x52,0x5a,0xbc,0xab,0x1a,0x22,0x49,0x92,0x26,0x84,0x68,0x50,0x4a,0x1b,0xa6, + 0x69,0x32,0xd3,0x34,0x11,0x4,0x1,0x6,0x83,0x1,0xda,0xed,0x36,0xc,0xc3,0x80, + 0x61,0x18,0x59,0x94,0xa4,0xbd,0x90,0x34,0xe4,0x1,0x64,0x7d,0x91,0xb5,0xd8,0xbb, + 0x77,0xef,0xba,0x2e,0x5a,0x7a,0x9d,0xef,0xfb,0x18,0xe,0x87,0x60,0x8c,0x81,0x31, + 0x6,0x45,0x51,0xa0,0x69,0x1a,0xe1,0x9c,0x8f,0x10,0x42,0xb6,0xb,0x21,0xac,0xbb, + 0x49,0x8,0x29,0x14,0xa,0x5,0x55,0x55,0x4b,0x9a,0xa6,0x29,0x9a,0xa6,0x41,0x96, + 0xe5,0xac,0x73,0xde,0x6a,0xb5,0x20,0x84,0x40,0xa5,0x52,0xb9,0x85,0x80,0xb4,0x17, + 0x92,0xf6,0x43,0xd2,0xe8,0xe0,0x9c,0xe3,0x8d,0x37,0xde,0xb8,0x65,0x72,0x97,0x56, + 0xa1,0xb4,0x37,0xcb,0x39,0xcf,0xb4,0x84,0x31,0x6,0x59,0x96,0x19,0xe7,0xbc,0xac, + 0xaa,0x6a,0xb5,0x52,0xa9,0xe4,0x56,0x57,0x57,0x7,0x1b,0x4e,0x48,0xb5,0x5a,0xd5, + 0xf3,0xf9,0x7c,0x3d,0x9f,0xcf,0xe7,0x53,0xed,0x48,0x5f,0x30,0xdd,0xb9,0xaa,0xaa, + 0xba,0x4e,0x4,0xd7,0x76,0xca,0x6e,0xb7,0x52,0xdd,0x91,0x65,0x19,0x94,0x52,0x18, + 0x86,0x91,0xfd,0x7d,0xda,0x6a,0x5c,0x3b,0xc6,0x58,0x4b,0xa4,0xa2,0x28,0x39,0x55, + 0x55,0xb7,0xfb,0xbe,0x5f,0x3,0x70,0x11,0x40,0xbc,0x91,0x4d,0x66,0xaa,0x69,0x5a, + 0x59,0xd7,0xf5,0x31,0xd3,0x34,0xad,0x34,0x2d,0xd6,0xf6,0x44,0xd3,0xa,0x72,0x73, + 0xcb,0xf0,0xe6,0x75,0x73,0xea,0xfc,0xd0,0x35,0xe9,0x70,0xeb,0x66,0x31,0xa6,0x94, + 0x82,0x73,0xae,0x50,0x4a,0xab,0x84,0x90,0x2a,0x0,0x65,0xa3,0x23,0x84,0x1,0xa8, + 0x53,0x4a,0xc7,0x74,0x5d,0xcf,0xe9,0xba,0xe,0x4a,0x69,0xd6,0xec,0xf1,0x3c,0xf, + 0x41,0x10,0x64,0x4e,0x73,0x6d,0x15,0xb9,0xdd,0xcb,0xa,0x21,0x60,0x59,0x16,0x8, + 0x21,0x59,0x83,0xa8,0xdb,0xed,0x66,0xc4,0xe,0x6,0x3,0xd4,0x6a,0x35,0xc8,0xb2, + 0x8c,0x20,0x8,0xb2,0x21,0x97,0xa2,0x28,0x19,0x21,0x8c,0x31,0x4e,0x8,0x29,0xa, + 0x21,0x2a,0x8c,0x31,0x2d,0x8a,0x22,0x67,0xc3,0x8,0x91,0x24,0x89,0x13,0x42,0x46, + 0x25,0x49,0xaa,0xeb,0xba,0x6e,0xac,0x8d,0x90,0x54,0xc,0xd3,0x6f,0xd3,0xf3,0x3c, + 0xa8,0xaa,0xfa,0x47,0x9,0x49,0x23,0xa8,0x50,0x28,0x60,0x72,0x72,0x12,0xdb,0xb6, + 0x6d,0xc3,0xf2,0xf2,0x32,0x96,0x97,0x97,0x71,0xed,0xda,0x35,0x4,0x41,0x80,0x85, + 0x85,0x5,0x1c,0x3f,0x7e,0x1c,0x3b,0x76,0xec,0xc8,0xbc,0x4d,0x3a,0x23,0x4e,0x53, + 0x86,0x73,0xce,0x9,0x21,0xa5,0x24,0x49,0x2a,0x42,0x8,0x6d,0x43,0xe7,0x32,0x42, + 0x8,0x16,0x45,0x51,0x5e,0x8,0x51,0xd4,0x34,0x4d,0x35,0xc,0x63,0x9d,0x86,0xa4, + 0x2f,0x9b,0x46,0x8c,0xef,0xfb,0xb7,0x54,0x92,0xdb,0x55,0x99,0xe9,0xe9,0x69,0x74, + 0x3a,0x1d,0xb4,0x5a,0x2d,0x5c,0xbd,0x7a,0x15,0xfd,0x7e,0x1f,0xba,0xae,0xe3,0x89, + 0x27,0x9e,0xc8,0xca,0xee,0xda,0xfb,0xa7,0xfa,0x72,0x43,0x43,0x64,0x42,0x48,0x29, + 0x8a,0xa2,0x8a,0x10,0x42,0xdd,0x50,0x42,0x0,0xd0,0x38,0x8e,0x73,0x84,0x90,0xbc, + 0xaa,0xaa,0x8a,0xa6,0x69,0x60,0x8c,0xad,0x13,0xba,0xb4,0x4c,0x3a,0x8e,0x83,0x30, + 0xc,0x7f,0x34,0x65,0xd2,0x6f,0xfa,0x87,0x10,0x4,0xc1,0x2d,0x91,0x95,0xb6,0x14, + 0x39,0xe7,0x8c,0x10,0x52,0x16,0x42,0xfc,0x64,0x42,0xfe,0x4f,0x1a,0x92,0x24,0x49, + 0x91,0x10,0x52,0xd6,0x34,0x8d,0xa7,0x55,0x26,0xc,0x43,0xc8,0xb2,0xc,0x59,0x96, + 0xa1,0x28,0xa,0x24,0x49,0xca,0xaa,0xc3,0x8f,0x9,0xe6,0x9f,0xd4,0x8b,0x4c,0x12, + 0x48,0x92,0x4,0xce,0x39,0x18,0x63,0xd9,0x9,0xa4,0x1b,0x9e,0x84,0x12,0x42,0xa, + 0x42,0x88,0x2a,0x0,0x6d,0xa3,0x9,0xe1,0x84,0x90,0x5a,0x92,0x24,0xd,0xc6,0x18, + 0x53,0x14,0x25,0xfb,0x67,0x29,0xa5,0xd0,0x75,0x1d,0xb9,0x5c,0x2e,0xcd,0xed,0xac, + 0xc3,0xfe,0xa7,0x54,0x92,0x1f,0xd9,0x2a,0x40,0x51,0x94,0xec,0x38,0xd6,0xd,0x3d, + 0xcb,0x16,0x80,0x5c,0x92,0x24,0xa3,0x0,0x36,0x36,0x42,0x34,0x4d,0xe3,0x8c,0xb1, + 0x9a,0xef,0xfb,0xd6,0xca,0xca,0xa,0xe6,0xe7,0xe7,0x21,0x84,0xc8,0xc6,0x9,0xe9, + 0xc4,0x2d,0xb5,0xd7,0x9c,0xf3,0x5b,0xdc,0xea,0xf,0x39,0xd5,0x3f,0xda,0xbe,0x8f, + 0xe3,0xec,0x48,0x85,0x10,0x2,0xc3,0xe1,0x30,0x3b,0xa3,0x66,0xdb,0x36,0x3c,0xcf, + 0xa3,0x0,0xaa,0x94,0x52,0x75,0x6d,0x97,0xfe,0x8e,0x13,0x52,0xa9,0x54,0xc0,0x18, + 0x13,0xb6,0x6d,0xe3,0xeb,0xaf,0xbf,0xc6,0xdc,0xdc,0x5c,0xe6,0x40,0xc3,0x30,0xc4, + 0x60,0x70,0xdd,0x28,0xd6,0x6a,0xb5,0xf4,0x8c,0x18,0x14,0x45,0xb9,0x2d,0x1,0x6b, + 0x7f,0x3f,0x73,0xe6,0xc,0xea,0xf5,0x3a,0x86,0xc3,0x21,0x8a,0xc5,0x22,0xe2,0x38, + 0x46,0xbf,0xdf,0xc7,0xf1,0xe3,0xc7,0x1,0x20,0x73,0xc0,0xa9,0x5b,0xa5,0x94,0x66, + 0xd1,0x17,0x45,0x11,0x1c,0xc7,0x1,0x21,0x44,0x28,0x8a,0x82,0xd,0x25,0x24,0x9f, + 0xcf,0xf,0x3d,0xcf,0xfb,0xc3,0x60,0x30,0xd0,0xba,0xdd,0xee,0xba,0x93,0x40,0x37, + 0x22,0x60,0xb7,0xa6,0x69,0xbb,0x18,0x63,0x50,0x55,0x15,0xbe,0xef,0xc3,0xb2,0x2c, + 0xc8,0xb2,0x9c,0xe5,0x7c,0x4a,0x46,0x5a,0x25,0xba,0xdd,0x2e,0xbe,0xfa,0xea,0x2b, + 0x1c,0x3b,0x76,0xc,0xed,0x76,0xfb,0x16,0x1f,0xa2,0x28,0xa,0x5a,0xad,0x16,0x3a, + 0x9d,0xe,0x6,0x83,0xc1,0x32,0x80,0xb3,0x84,0x10,0x77,0xed,0x4e,0xfa,0x86,0xa6, + 0xcc,0x71,0xce,0x97,0x37,0x34,0x65,0xa2,0x28,0xea,0x32,0xc6,0xfe,0xc5,0xf7,0xfd, + 0x13,0xe9,0x94,0x3e,0xb5,0xe7,0x8c,0x31,0x58,0x96,0xf5,0x62,0x14,0x45,0x7f,0xdf, + 0x6a,0xb5,0xf2,0x8e,0xe3,0x60,0x71,0x71,0x11,0xf9,0x7c,0x1e,0x96,0x65,0xc1,0xb2, + 0x2c,0xe8,0xba,0x9e,0x69,0xb,0xe7,0x1c,0xb2,0x2c,0xa3,0xdd,0x6e,0x67,0x4e,0x37, + 0x8,0x82,0x4c,0x30,0x7d,0xdf,0xcf,0x6,0x58,0x8e,0xe3,0xa4,0x43,0xac,0x7f,0x77, + 0x5d,0xf7,0x1f,0x85,0x10,0xcd,0xb5,0xfa,0x72,0xa3,0xfc,0xe,0x55,0x55,0xbd,0xfa, + 0x93,0xc6,0x6,0x3f,0x77,0xd7,0x7a,0x62,0x62,0xe2,0x91,0x28,0x8a,0x5e,0x4e,0x92, + 0xa4,0x11,0x86,0xa1,0x25,0xcb,0xf2,0x88,0xae,0xeb,0xa6,0x69,0x9a,0x5a,0x2e,0x97, + 0x53,0x34,0x4d,0x53,0x25,0x49,0x52,0x9,0x21,0x3c,0x25,0x44,0x92,0xa4,0x6c,0xf3, + 0xe6,0xba,0x6e,0x12,0x45,0x51,0xe8,0x38,0x4e,0xd0,0xed,0x76,0x87,0xfd,0x7e,0xbf, + 0xef,0x38,0xce,0x0,0x40,0x8f,0x10,0xd2,0xa3,0x94,0x1e,0xe9,0x76,0xbb,0xef,0xdd, + 0xa9,0x59,0xd2,0xcf,0x3e,0xa8,0xaa,0xd7,0xeb,0x5f,0x5f,0xbd,0x7a,0xb5,0x1b,0x4, + 0x41,0x25,0x49,0x92,0x6d,0x41,0x10,0x4c,0xc4,0x71,0x5c,0x77,0x5d,0x77,0xa4,0xd9, + 0x6c,0x9a,0x94,0x52,0xb,0x40,0x5e,0x8,0x91,0x7,0x30,0x2,0xc0,0x4,0x20,0x25, + 0xd7,0x4d,0x4c,0x53,0x8,0xd1,0x8a,0xe3,0xd8,0x8d,0xa2,0x68,0x18,0xc7,0xf1,0x6a, + 0x14,0x45,0xd7,0x84,0x10,0xcb,0x92,0x24,0x7d,0x2f,0x49,0xd2,0xf7,0x8c,0xb1,0xb9, + 0x3b,0x39,0x5c,0xbb,0x93,0x7,0x77,0x49,0x2e,0x97,0x2b,0x71,0xce,0xab,0x51,0x14, + 0x15,0x93,0x24,0xc9,0x5,0x41,0xa0,0xb,0x21,0x74,0x21,0x84,0x1,0xc0,0x10,0x42, + 0x98,0x84,0x10,0x4d,0x8,0x41,0xc4,0x75,0x41,0xb0,0x6f,0x2c,0x1f,0x80,0x47,0x29, + 0xed,0x72,0xce,0xbb,0x92,0x24,0x75,0x74,0x5d,0x5f,0x3d,0x74,0xe8,0xd0,0xea,0xd1, + 0xa3,0x47,0x63,0x6c,0x61,0xb,0x5b,0xd8,0xc2,0x16,0xb6,0xb0,0x85,0x2d,0x6c,0x61, + 0xb,0xff,0xef,0xf0,0x3f,0xa5,0x5b,0xfc,0x85,0xc7,0xa6,0x58,0x6f,0x0,0x0,0x0, + 0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // /home/maemo/tietoopcom/resources/account.png + 0x0,0x0,0x2a,0xf9, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x48,0x0,0x0,0x0,0x3e,0x8,0x6,0x0,0x0,0x0,0x88,0x96,0x5d,0x9b, + 0x0,0x0,0xa,0x4d,0x69,0x43,0x43,0x50,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f, + 0x70,0x20,0x49,0x43,0x43,0x20,0x70,0x72,0x6f,0x66,0x69,0x6c,0x65,0x0,0x0,0x78, + 0xda,0x9d,0x53,0x77,0x58,0x93,0xf7,0x16,0x3e,0xdf,0xf7,0x65,0xf,0x56,0x42,0xd8, + 0xf0,0xb1,0x97,0x6c,0x81,0x0,0x22,0x23,0xac,0x8,0xc8,0x10,0x59,0xa2,0x10,0x92, + 0x0,0x61,0x84,0x10,0x12,0x40,0xc5,0x85,0x88,0xa,0x56,0x14,0x15,0x11,0x9c,0x48, + 0x55,0xc4,0x82,0xd5,0xa,0x48,0x9d,0x88,0xe2,0xa0,0x28,0xb8,0x67,0x41,0x8a,0x88, + 0x5a,0x8b,0x55,0x5c,0x38,0xee,0x1f,0xdc,0xa7,0xb5,0x7d,0x7a,0xef,0xed,0xed,0xfb, + 0xd7,0xfb,0xbc,0xe7,0x9c,0xe7,0xfc,0xce,0x79,0xcf,0xf,0x80,0x11,0x12,0x26,0x91, + 0xe6,0xa2,0x6a,0x0,0x39,0x52,0x85,0x3c,0x3a,0xd8,0x1f,0x8f,0x4f,0x48,0xc4,0xc9, + 0xbd,0x80,0x2,0x15,0x48,0xe0,0x4,0x20,0x10,0xe6,0xcb,0xc2,0x67,0x5,0xc5,0x0, + 0x0,0xf0,0x3,0x79,0x78,0x7e,0x74,0xb0,0x3f,0xfc,0x1,0xaf,0x6f,0x0,0x2,0x0, + 0x70,0xd5,0x2e,0x24,0x12,0xc7,0xe1,0xff,0x83,0xba,0x50,0x26,0x57,0x0,0x20,0x91, + 0x0,0xe0,0x22,0x12,0xe7,0xb,0x1,0x90,0x52,0x0,0xc8,0x2e,0x54,0xc8,0x14,0x0, + 0xc8,0x18,0x0,0xb0,0x53,0xb3,0x64,0xa,0x0,0x94,0x0,0x0,0x6c,0x79,0x7c,0x42, + 0x22,0x0,0xaa,0xd,0x0,0xec,0xf4,0x49,0x3e,0x5,0x0,0xd8,0xa9,0x93,0xdc,0x17, + 0x0,0xd8,0xa2,0x1c,0xa9,0x8,0x0,0x8d,0x1,0x0,0x99,0x28,0x47,0x24,0x2,0x40, + 0xbb,0x0,0x60,0x55,0x81,0x52,0x2c,0x2,0xc0,0xc2,0x0,0xa0,0xac,0x40,0x22,0x2e, + 0x4,0xc0,0xae,0x1,0x80,0x59,0xb6,0x32,0x47,0x2,0x80,0xbd,0x5,0x0,0x76,0x8e, + 0x58,0x90,0xf,0x40,0x60,0x0,0x80,0x99,0x42,0x2c,0xcc,0x0,0x20,0x38,0x2,0x0, + 0x43,0x1e,0x13,0xcd,0x3,0x20,0x4c,0x3,0xa0,0x30,0xd2,0xbf,0xe0,0xa9,0x5f,0x70, + 0x85,0xb8,0x48,0x1,0x0,0xc0,0xcb,0x95,0xcd,0x97,0x4b,0xd2,0x33,0x14,0xb8,0x95, + 0xd0,0x1a,0x77,0xf2,0xf0,0xe0,0xe2,0x21,0xe2,0xc2,0x6c,0xb1,0x42,0x61,0x17,0x29, + 0x10,0x66,0x9,0xe4,0x22,0x9c,0x97,0x9b,0x23,0x13,0x48,0xe7,0x3,0x4c,0xce,0xc, + 0x0,0x0,0x1a,0xf9,0xd1,0xc1,0xfe,0x38,0x3f,0x90,0xe7,0xe6,0xe4,0xe1,0xe6,0x66, + 0xe7,0x6c,0xef,0xf4,0xc5,0xa2,0xfe,0x6b,0xf0,0x6f,0x22,0x3e,0x21,0xf1,0xdf,0xfe, + 0xbc,0x8c,0x2,0x4,0x0,0x10,0x4e,0xcf,0xef,0xda,0x5f,0xe5,0xe5,0xd6,0x3,0x70, + 0xc7,0x1,0xb0,0x75,0xbf,0x6b,0xa9,0x5b,0x0,0xda,0x56,0x0,0x68,0xdf,0xf9,0x5d, + 0x33,0xdb,0x9,0xa0,0x5a,0xa,0xd0,0x7a,0xf9,0x8b,0x79,0x38,0xfc,0x40,0x1e,0x9e, + 0xa1,0x50,0xc8,0x3c,0x1d,0x1c,0xa,0xb,0xb,0xed,0x25,0x62,0xa1,0xbd,0x30,0xe3, + 0x8b,0x3e,0xff,0x33,0xe1,0x6f,0xe0,0x8b,0x7e,0xf6,0xfc,0x40,0x1e,0xfe,0xdb,0x7a, + 0xf0,0x0,0x71,0x9a,0x40,0x99,0xad,0xc0,0xa3,0x83,0xfd,0x71,0x61,0x6e,0x76,0xae, + 0x52,0x8e,0xe7,0xcb,0x4,0x42,0x31,0x6e,0xf7,0xe7,0x23,0xfe,0xc7,0x85,0x7f,0xfd, + 0x8e,0x29,0xd1,0xe2,0x34,0xb1,0x5c,0x2c,0x15,0x8a,0xf1,0x58,0x89,0xb8,0x50,0x22, + 0x4d,0xc7,0x79,0xb9,0x52,0x91,0x44,0x21,0xc9,0x95,0xe2,0x12,0xe9,0x7f,0x32,0xf1, + 0x1f,0x96,0xfd,0x9,0x93,0x77,0xd,0x0,0xac,0x86,0x4f,0xc0,0x4e,0xb6,0x7,0xb5, + 0xcb,0x6c,0xc0,0x7e,0xee,0x1,0x2,0x8b,0xe,0x58,0xd2,0x76,0x0,0x40,0x7e,0xf3, + 0x2d,0x8c,0x1a,0xb,0x91,0x0,0x10,0x67,0x34,0x32,0x79,0xf7,0x0,0x0,0x93,0xbf, + 0xf9,0x8f,0x40,0x2b,0x1,0x0,0xcd,0x97,0xa4,0xe3,0x0,0x0,0xbc,0xe8,0x18,0x5c, + 0xa8,0x94,0x17,0x4c,0xc6,0x8,0x0,0x0,0x44,0xa0,0x81,0x2a,0xb0,0x41,0x7,0xc, + 0xc1,0x14,0xac,0xc0,0xe,0x9c,0xc1,0x1d,0xbc,0xc0,0x17,0x2,0x61,0x6,0x44,0x40, + 0xc,0x24,0xc0,0x3c,0x10,0x42,0x6,0xe4,0x80,0x1c,0xa,0xa1,0x18,0x96,0x41,0x19, + 0x54,0xc0,0x3a,0xd8,0x4,0xb5,0xb0,0x3,0x1a,0xa0,0x11,0x9a,0xe1,0x10,0xb4,0xc1, + 0x31,0x38,0xd,0xe7,0xe0,0x12,0x5c,0x81,0xeb,0x70,0x17,0x6,0x60,0x18,0x9e,0xc2, + 0x18,0xbc,0x86,0x9,0x4,0x41,0xc8,0x8,0x13,0x61,0x21,0x3a,0x88,0x11,0x62,0x8e, + 0xd8,0x22,0xce,0x8,0x17,0x99,0x8e,0x4,0x22,0x61,0x48,0x34,0x92,0x80,0xa4,0x20, + 0xe9,0x88,0x14,0x51,0x22,0xc5,0xc8,0x72,0xa4,0x2,0xa9,0x42,0x6a,0x91,0x5d,0x48, + 0x23,0xf2,0x2d,0x72,0x14,0x39,0x8d,0x5c,0x40,0xfa,0x90,0xdb,0xc8,0x20,0x32,0x8a, + 0xfc,0x8a,0xbc,0x47,0x31,0x94,0x81,0xb2,0x51,0x3,0xd4,0x2,0x75,0x40,0xb9,0xa8, + 0x1f,0x1a,0x8a,0xc6,0xa0,0x73,0xd1,0x74,0x34,0xf,0x5d,0x80,0x96,0xa2,0x6b,0xd1, + 0x1a,0xb4,0x1e,0x3d,0x80,0xb6,0xa2,0xa7,0xd1,0x4b,0xe8,0x75,0x74,0x0,0x7d,0x8a, + 0x8e,0x63,0x80,0xd1,0x31,0xe,0x66,0x8c,0xd9,0x61,0x5c,0x8c,0x87,0x45,0x60,0x89, + 0x58,0x1a,0x26,0xc7,0x16,0x63,0xe5,0x58,0x35,0x56,0x8f,0x35,0x63,0x1d,0x58,0x37, + 0x76,0x15,0x1b,0xc0,0x9e,0x61,0xef,0x8,0x24,0x2,0x8b,0x80,0x13,0xec,0x8,0x5e, + 0x84,0x10,0xc2,0x6c,0x82,0x90,0x90,0x47,0x58,0x4c,0x58,0x43,0xa8,0x25,0xec,0x23, + 0xb4,0x12,0xba,0x8,0x57,0x9,0x83,0x84,0x31,0xc2,0x27,0x22,0x93,0xa8,0x4f,0xb4, + 0x25,0x7a,0x12,0xf9,0xc4,0x78,0x62,0x3a,0xb1,0x90,0x58,0x46,0xac,0x26,0xee,0x21, + 0x1e,0x21,0x9e,0x25,0x5e,0x27,0xe,0x13,0x5f,0x93,0x48,0x24,0xe,0xc9,0x92,0xe4, + 0x4e,0xa,0x21,0x25,0x90,0x32,0x49,0xb,0x49,0x6b,0x48,0xdb,0x48,0x2d,0xa4,0x53, + 0xa4,0x3e,0xd2,0x10,0x69,0x9c,0x4c,0x26,0xeb,0x90,0x6d,0xc9,0xde,0xe4,0x8,0xb2, + 0x80,0xac,0x20,0x97,0x91,0xb7,0x90,0xf,0x90,0x4f,0x92,0xfb,0xc9,0xc3,0xe4,0xb7, + 0x14,0x3a,0xc5,0x88,0xe2,0x4c,0x9,0xa2,0x24,0x52,0xa4,0x94,0x12,0x4a,0x35,0x65, + 0x3f,0xe5,0x4,0xa5,0x9f,0x32,0x42,0x99,0xa0,0xaa,0x51,0xcd,0xa9,0x9e,0xd4,0x8, + 0xaa,0x88,0x3a,0x9f,0x5a,0x49,0x6d,0xa0,0x76,0x50,0x2f,0x53,0x87,0xa9,0x13,0x34, + 0x75,0x9a,0x25,0xcd,0x9b,0x16,0x43,0xcb,0xa4,0x2d,0xa3,0xd5,0xd0,0x9a,0x69,0x67, + 0x69,0xf7,0x68,0x2f,0xe9,0x74,0xba,0x9,0xdd,0x83,0x1e,0x45,0x97,0xd0,0x97,0xd2, + 0x6b,0xe8,0x7,0xe9,0xe7,0xe9,0x83,0xf4,0x77,0xc,0xd,0x86,0xd,0x83,0xc7,0x48, + 0x62,0x28,0x19,0x6b,0x19,0x7b,0x19,0xa7,0x18,0xb7,0x19,0x2f,0x99,0x4c,0xa6,0x5, + 0xd3,0x97,0x99,0xc8,0x54,0x30,0xd7,0x32,0x1b,0x99,0x67,0x98,0xf,0x98,0x6f,0x55, + 0x58,0x2a,0xf6,0x2a,0x7c,0x15,0x91,0xca,0x12,0x95,0x3a,0x95,0x56,0x95,0x7e,0x95, + 0xe7,0xaa,0x54,0x55,0x73,0x55,0x3f,0xd5,0x79,0xaa,0xb,0x54,0xab,0x55,0xf,0xab, + 0x5e,0x56,0x7d,0xa6,0x46,0x55,0xb3,0x50,0xe3,0xa9,0x9,0xd4,0x16,0xab,0xd5,0xa9, + 0x1d,0x55,0xbb,0xa9,0x36,0xae,0xce,0x52,0x77,0x52,0x8f,0x50,0xcf,0x51,0x5f,0xa3, + 0xbe,0x5f,0xfd,0x82,0xfa,0x63,0xd,0xb2,0x86,0x85,0x46,0xa0,0x86,0x48,0xa3,0x54, + 0x63,0xb7,0xc6,0x19,0x8d,0x21,0x16,0xc6,0x32,0x65,0xf1,0x58,0x42,0xd6,0x72,0x56, + 0x3,0xeb,0x2c,0x6b,0x98,0x4d,0x62,0x5b,0xb2,0xf9,0xec,0x4c,0x76,0x5,0xfb,0x1b, + 0x76,0x2f,0x7b,0x4c,0x53,0x43,0x73,0xaa,0x66,0xac,0x66,0x91,0x66,0x9d,0xe6,0x71, + 0xcd,0x1,0xe,0xc6,0xb1,0xe0,0xf0,0x39,0xd9,0x9c,0x4a,0xce,0x21,0xce,0xd,0xce, + 0x7b,0x2d,0x3,0x2d,0x3f,0x2d,0xb1,0xd6,0x6a,0xad,0x66,0xad,0x7e,0xad,0x37,0xda, + 0x7a,0xda,0xbe,0xda,0x62,0xed,0x72,0xed,0x16,0xed,0xeb,0xda,0xef,0x75,0x70,0x9d, + 0x40,0x9d,0x2c,0x9d,0xf5,0x3a,0x6d,0x3a,0xf7,0x75,0x9,0xba,0x36,0xba,0x51,0xba, + 0x85,0xba,0xdb,0x75,0xcf,0xea,0x3e,0xd3,0x63,0xeb,0x79,0xe9,0x9,0xf5,0xca,0xf5, + 0xe,0xe9,0xdd,0xd1,0x47,0xf5,0x6d,0xf4,0xa3,0xf5,0x17,0xea,0xef,0xd6,0xef,0xd1, + 0x1f,0x37,0x30,0x34,0x8,0x36,0x90,0x19,0x6c,0x31,0x38,0x63,0xf0,0xcc,0x90,0x63, + 0xe8,0x6b,0x98,0x69,0xb8,0xd1,0xf0,0x84,0xe1,0xa8,0x11,0xcb,0x68,0xba,0x91,0xc4, + 0x68,0xa3,0xd1,0x49,0xa3,0x27,0xb8,0x26,0xee,0x87,0x67,0xe3,0x35,0x78,0x17,0x3e, + 0x66,0xac,0x6f,0x1c,0x62,0xac,0x34,0xde,0x65,0xdc,0x6b,0x3c,0x61,0x62,0x69,0x32, + 0xdb,0xa4,0xc4,0xa4,0xc5,0xe4,0xbe,0x29,0xcd,0x94,0x6b,0x9a,0x66,0xba,0xd1,0xb4, + 0xd3,0x74,0xcc,0xcc,0xc8,0x2c,0xdc,0xac,0xd8,0xac,0xc9,0xec,0x8e,0x39,0xd5,0x9c, + 0x6b,0x9e,0x61,0xbe,0xd9,0xbc,0xdb,0xfc,0x8d,0x85,0xa5,0x45,0x9c,0xc5,0x4a,0x8b, + 0x36,0x8b,0xc7,0x96,0xda,0x96,0x7c,0xcb,0x5,0x96,0x4d,0x96,0xf7,0xac,0x98,0x56, + 0x3e,0x56,0x79,0x56,0xf5,0x56,0xd7,0xac,0x49,0xd6,0x5c,0xeb,0x2c,0xeb,0x6d,0xd6, + 0x57,0x6c,0x50,0x1b,0x57,0x9b,0xc,0x9b,0x3a,0x9b,0xcb,0xb6,0xa8,0xad,0x9b,0xad, + 0xc4,0x76,0x9b,0x6d,0xdf,0x14,0xe2,0x14,0x8f,0x29,0xd2,0x29,0xf5,0x53,0x6e,0xda, + 0x31,0xec,0xfc,0xec,0xa,0xec,0x9a,0xec,0x6,0xed,0x39,0xf6,0x61,0xf6,0x25,0xf6, + 0x6d,0xf6,0xcf,0x1d,0xcc,0x1c,0x12,0x1d,0xd6,0x3b,0x74,0x3b,0x7c,0x72,0x74,0x75, + 0xcc,0x76,0x6c,0x70,0xbc,0xeb,0xa4,0xe1,0x34,0xc3,0xa9,0xc4,0xa9,0xc3,0xe9,0x57, + 0x67,0x1b,0x67,0xa1,0x73,0x9d,0xf3,0x35,0x17,0xa6,0x4b,0x90,0xcb,0x12,0x97,0x76, + 0x97,0x17,0x53,0x6d,0xa7,0x8a,0xa7,0x6e,0x9f,0x7a,0xcb,0x95,0xe5,0x1a,0xee,0xba, + 0xd2,0xb5,0xd3,0xf5,0xa3,0x9b,0xbb,0x9b,0xdc,0xad,0xd9,0x6d,0xd4,0xdd,0xcc,0x3d, + 0xc5,0x7d,0xab,0xfb,0x4d,0x2e,0x9b,0x1b,0xc9,0x5d,0xc3,0x3d,0xef,0x41,0xf4,0xf0, + 0xf7,0x58,0xe2,0x71,0xcc,0xe3,0x9d,0xa7,0x9b,0xa7,0xc2,0xf3,0x90,0xe7,0x2f,0x5e, + 0x76,0x5e,0x59,0x5e,0xfb,0xbd,0x1e,0x4f,0xb3,0x9c,0x26,0x9e,0xd6,0x30,0x6d,0xc8, + 0xdb,0xc4,0x5b,0xe0,0xbd,0xcb,0x7b,0x60,0x3a,0x3e,0x3d,0x65,0xfa,0xce,0xe9,0x3, + 0x3e,0xc6,0x3e,0x2,0x9f,0x7a,0x9f,0x87,0xbe,0xa6,0xbe,0x22,0xdf,0x3d,0xbe,0x23, + 0x7e,0xd6,0x7e,0x99,0x7e,0x7,0xfc,0x9e,0xfb,0x3b,0xfa,0xcb,0xfd,0x8f,0xf8,0xbf, + 0xe1,0x79,0xf2,0x16,0xf1,0x4e,0x5,0x60,0x1,0xc1,0x1,0xe5,0x1,0xbd,0x81,0x1a, + 0x81,0xb3,0x3,0x6b,0x3,0x1f,0x4,0x99,0x4,0xa5,0x7,0x35,0x5,0x8d,0x5,0xbb, + 0x6,0x2f,0xc,0x3e,0x15,0x42,0xc,0x9,0xd,0x59,0x1f,0x72,0x93,0x6f,0xc0,0x17, + 0xf2,0x1b,0xf9,0x63,0x33,0xdc,0x67,0x2c,0x9a,0xd1,0x15,0xca,0x8,0x9d,0x15,0x5a, + 0x1b,0xfa,0x30,0xcc,0x26,0x4c,0x1e,0xd6,0x11,0x8e,0x86,0xcf,0x8,0xdf,0x10,0x7e, + 0x6f,0xa6,0xf9,0x4c,0xe9,0xcc,0xb6,0x8,0x88,0xe0,0x47,0x6c,0x88,0xb8,0x1f,0x69, + 0x19,0x99,0x17,0xf9,0x7d,0x14,0x29,0x2a,0x32,0xaa,0x2e,0xea,0x51,0xb4,0x53,0x74, + 0x71,0x74,0xf7,0x2c,0xd6,0xac,0xe4,0x59,0xfb,0x67,0xbd,0x8e,0xf1,0x8f,0xa9,0x8c, + 0xb9,0x3b,0xdb,0x6a,0xb6,0x72,0x76,0x67,0xac,0x6a,0x6c,0x52,0x6c,0x63,0xec,0x9b, + 0xb8,0x80,0xb8,0xaa,0xb8,0x81,0x78,0x87,0xf8,0x45,0xf1,0x97,0x12,0x74,0x13,0x24, + 0x9,0xed,0x89,0xe4,0xc4,0xd8,0xc4,0x3d,0x89,0xe3,0x73,0x2,0xe7,0x6c,0x9a,0x33, + 0x9c,0xe4,0x9a,0x54,0x96,0x74,0x63,0xae,0xe5,0xdc,0xa2,0xb9,0x17,0xe6,0xe9,0xce, + 0xcb,0x9e,0x77,0x3c,0x59,0x35,0x59,0x90,0x7c,0x38,0x85,0x98,0x12,0x97,0xb2,0x3f, + 0xe5,0x83,0x20,0x42,0x50,0x2f,0x18,0x4f,0xe5,0xa7,0x6e,0x4d,0x1d,0x13,0xf2,0x84, + 0x9b,0x85,0x4f,0x45,0xbe,0xa2,0x8d,0xa2,0x51,0xb1,0xb7,0xb8,0x4a,0x3c,0x92,0xe6, + 0x9d,0x56,0x95,0xf6,0x38,0xdd,0x3b,0x7d,0x43,0xfa,0x68,0x86,0x4f,0x46,0x75,0xc6, + 0x33,0x9,0x4f,0x52,0x2b,0x79,0x91,0x19,0x92,0xb9,0x23,0xf3,0x4d,0x56,0x44,0xd6, + 0xde,0xac,0xcf,0xd9,0x71,0xd9,0x2d,0x39,0x94,0x9c,0x94,0x9c,0xa3,0x52,0xd,0x69, + 0x96,0xb4,0x2b,0xd7,0x30,0xb7,0x28,0xb7,0x4f,0x66,0x2b,0x2b,0x93,0xd,0xe4,0x79, + 0xe6,0x6d,0xca,0x1b,0x93,0x87,0xca,0xf7,0xe4,0x23,0xf9,0x73,0xf3,0xdb,0x15,0x6c, + 0x85,0x4c,0xd1,0xa3,0xb4,0x52,0xae,0x50,0xe,0x16,0x4c,0x2f,0xa8,0x2b,0x78,0x5b, + 0x18,0x5b,0x78,0xb8,0x48,0xbd,0x48,0x5a,0xd4,0x33,0xdf,0x66,0xfe,0xea,0xf9,0x23, + 0xb,0x82,0x16,0x7c,0xbd,0x90,0xb0,0x50,0xb8,0xb0,0xb3,0xd8,0xb8,0x78,0x59,0xf1, + 0xe0,0x22,0xbf,0x45,0xbb,0x16,0x23,0x8b,0x53,0x17,0x77,0x2e,0x31,0x5d,0x52,0xba, + 0x64,0x78,0x69,0xf0,0xd2,0x7d,0xcb,0x68,0xcb,0xb2,0x96,0xfd,0x50,0xe2,0x58,0x52, + 0x55,0xf2,0x6a,0x79,0xdc,0xf2,0x8e,0x52,0x83,0xd2,0xa5,0xa5,0x43,0x2b,0x82,0x57, + 0x34,0x95,0xa9,0x94,0xc9,0xcb,0x6e,0xae,0xf4,0x5a,0xb9,0x63,0x15,0x61,0x95,0x64, + 0x55,0xef,0x6a,0x97,0xd5,0x5b,0x56,0x7f,0x2a,0x17,0x95,0x5f,0xac,0x70,0xac,0xa8, + 0xae,0xf8,0xb0,0x46,0xb8,0xe6,0xe2,0x57,0x4e,0x5f,0xd5,0x7c,0xf5,0x79,0x6d,0xda, + 0xda,0xde,0x4a,0xb7,0xca,0xed,0xeb,0x48,0xeb,0xa4,0xeb,0x6e,0xac,0xf7,0x59,0xbf, + 0xaf,0x4a,0xbd,0x6a,0x41,0xd5,0xd0,0x86,0xf0,0xd,0xad,0x1b,0xf1,0x8d,0xe5,0x1b, + 0x5f,0x6d,0x4a,0xde,0x74,0xa1,0x7a,0x6a,0xf5,0x8e,0xcd,0xb4,0xcd,0xca,0xcd,0x3, + 0x35,0x61,0x35,0xed,0x5b,0xcc,0xb6,0xac,0xdb,0xf2,0xa1,0x36,0xa3,0xf6,0x7a,0x9d, + 0x7f,0x5d,0xcb,0x56,0xfd,0xad,0xab,0xb7,0xbe,0xd9,0x26,0xda,0xd6,0xbf,0xdd,0x77, + 0x7b,0xf3,0xe,0x83,0x1d,0x15,0x3b,0xde,0xef,0x94,0xec,0xbc,0xb5,0x2b,0x78,0x57, + 0x6b,0xbd,0x45,0x7d,0xf5,0x6e,0xd2,0xee,0x82,0xdd,0x8f,0x1a,0x62,0x1b,0xba,0xbf, + 0xe6,0x7e,0xdd,0xb8,0x47,0x77,0x4f,0xc5,0x9e,0x8f,0x7b,0xa5,0x7b,0x7,0xf6,0x45, + 0xef,0xeb,0x6a,0x74,0x6f,0x6c,0xdc,0xaf,0xbf,0xbf,0xb2,0x9,0x6d,0x52,0x36,0x8d, + 0x1e,0x48,0x3a,0x70,0xe5,0x9b,0x80,0x6f,0xda,0x9b,0xed,0x9a,0x77,0xb5,0x70,0x5a, + 0x2a,0xe,0xc2,0x41,0xe5,0xc1,0x27,0xdf,0xa6,0x7c,0x7b,0xe3,0x50,0xe8,0xa1,0xce, + 0xc3,0xdc,0xc3,0xcd,0xdf,0x99,0x7f,0xb7,0xf5,0x8,0xeb,0x48,0x79,0x2b,0xd2,0x3a, + 0xbf,0x75,0xac,0x2d,0xa3,0x6d,0xa0,0x3d,0xa1,0xbd,0xef,0xe8,0x8c,0xa3,0x9d,0x1d, + 0x5e,0x1d,0x47,0xbe,0xb7,0xff,0x7e,0xef,0x31,0xe3,0x63,0x75,0xc7,0x35,0x8f,0x57, + 0x9e,0xa0,0x9d,0x28,0x3d,0xf1,0xf9,0xe4,0x82,0x93,0xe3,0xa7,0x64,0xa7,0x9e,0x9d, + 0x4e,0x3f,0x3d,0xd4,0x99,0xdc,0x79,0xf7,0x4c,0xfc,0x99,0x6b,0x5d,0x51,0x5d,0xbd, + 0x67,0x43,0xcf,0x9e,0x3f,0x17,0x74,0xee,0x4c,0xb7,0x5f,0xf7,0xc9,0xf3,0xde,0xe7, + 0x8f,0x5d,0xf0,0xbc,0x70,0xf4,0x22,0xf7,0x62,0xdb,0x25,0xb7,0x4b,0xad,0x3d,0xae, + 0x3d,0x47,0x7e,0x70,0xfd,0xe1,0x48,0xaf,0x5b,0x6f,0xeb,0x65,0xf7,0xcb,0xed,0x57, + 0x3c,0xae,0x74,0xf4,0x4d,0xeb,0x3b,0xd1,0xef,0xd3,0x7f,0xfa,0x6a,0xc0,0xd5,0x73, + 0xd7,0xf8,0xd7,0x2e,0x5d,0x9f,0x79,0xbd,0xef,0xc6,0xec,0x1b,0xb7,0x6e,0x26,0xdd, + 0x1c,0xb8,0x25,0xba,0xf5,0xf8,0x76,0xf6,0xed,0x17,0x77,0xa,0xee,0x4c,0xdc,0x5d, + 0x7a,0x8f,0x78,0xaf,0xfc,0xbe,0xda,0xfd,0xea,0x7,0xfa,0xf,0xea,0x7f,0xb4,0xfe, + 0xb1,0x65,0xc0,0x6d,0xe0,0xf8,0x60,0xc0,0x60,0xcf,0xc3,0x59,0xf,0xef,0xe,0x9, + 0x87,0x9e,0xfe,0x94,0xff,0xd3,0x87,0xe1,0xd2,0x47,0xcc,0x47,0xd5,0x23,0x46,0x23, + 0x8d,0x8f,0x9d,0x1f,0x1f,0x1b,0xd,0x1a,0xbd,0xf2,0x64,0xce,0x93,0xe1,0xa7,0xb2, + 0xa7,0x13,0xcf,0xca,0x7e,0x56,0xff,0x79,0xeb,0x73,0xab,0xe7,0xdf,0xfd,0xe2,0xfb, + 0x4b,0xcf,0x58,0xfc,0xd8,0xf0,0xb,0xf9,0x8b,0xcf,0xbf,0xae,0x79,0xa9,0xf3,0x72, + 0xef,0xab,0xa9,0xaf,0x3a,0xc7,0x23,0xc7,0x1f,0xbc,0xce,0x79,0x3d,0xf1,0xa6,0xfc, + 0xad,0xce,0xdb,0x7d,0xef,0xb8,0xef,0xba,0xdf,0xc7,0xbd,0x1f,0x99,0x28,0xfc,0x40, + 0xfe,0x50,0xf3,0xd1,0xfa,0x63,0xc7,0xa7,0xd0,0x4f,0xf7,0x3e,0xe7,0x7c,0xfe,0xfc, + 0x2f,0xf7,0x84,0xf3,0xfb,0x25,0xd2,0x9f,0x33,0x0,0x0,0x0,0x6,0x62,0x4b,0x47, + 0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x9,0x70, + 0x48,0x59,0x73,0x0,0x0,0xb,0x12,0x0,0x0,0xb,0x12,0x1,0xd2,0xdd,0x7e,0xfc, + 0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xd9,0x3,0x2,0xf,0x7,0x1f,0xdd, + 0x59,0x89,0x13,0x0,0x0,0x20,0x0,0x49,0x44,0x41,0x54,0x78,0xda,0xd5,0x7b,0x69, + 0x8f,0x2c,0xe7,0x75,0xde,0xf3,0x2e,0xb5,0x76,0xf5,0x3a,0xd3,0x33,0x77,0xb6,0xbb, + 0x92,0x97,0xe4,0xe5,0x25,0x25,0x52,0x96,0x29,0x89,0x22,0x6d,0x58,0x72,0xa4,0x58, + 0x30,0x1d,0xb,0x16,0x14,0x44,0x94,0x82,0x20,0xf9,0x22,0xc0,0xd0,0xaf,0x31,0x60, + 0xe4,0xab,0x61,0x3,0x1,0x84,0xd8,0x81,0x1d,0xc2,0x71,0xec,0x0,0xb6,0x43,0x5b, + 0xb2,0x65,0x4a,0xa2,0x48,0x71,0xbb,0xb,0xef,0x32,0xfb,0x74,0x4f,0x2f,0xb5,0xbe, + 0x7b,0x3e,0x54,0x77,0xcf,0xdc,0x4b,0x52,0xdc,0x4c,0x27,0x69,0xa0,0xa6,0xab,0xbb, + 0x6a,0xba,0xeb,0x7d,0xea,0x9c,0xe7,0x9c,0xf3,0x9c,0xd3,0xc0,0x27,0xf0,0x78,0xea, + 0xa9,0xa7,0xde,0xf7,0x9c,0xe5,0x87,0x96,0x3f,0xd6,0x77,0x3c,0xf0,0x40,0xbd,0xdd, + 0xff,0xde,0xff,0xb3,0x8f,0xaf,0x7f,0xfd,0xeb,0xef,0xf6,0x36,0x1,0x40,0xd1,0x6, + 0xc3,0xa,0xd8,0xec,0xf5,0x3b,0x1e,0xcd,0xcf,0x34,0xdf,0xf3,0x73,0xbf,0xfd,0xed, + 0x6f,0xe2,0xdb,0xdf,0xfe,0xe6,0xc7,0xba,0xb6,0xb5,0xb5,0x8f,0x7e,0x33,0xf8,0x27, + 0x8c,0x5b,0xc4,0xbb,0x5e,0xdc,0xe8,0x44,0xcc,0xe3,0x86,0xc,0x8a,0x3c,0x43,0x86, + 0xc,0xff,0x1f,0x3d,0xc8,0xc7,0xfd,0x80,0xef,0x7e,0xf7,0xbb,0x0,0x80,0xdf,0xff, + 0xfd,0xdf,0x9f,0xbf,0x15,0xff,0xf6,0xd7,0x7f,0xfb,0xfc,0x4a,0x6f,0xe5,0x81,0xd8, + 0x8f,0x37,0xb5,0xd4,0xad,0x4a,0x54,0x5c,0x49,0x49,0x84,0x92,0x69,0x21,0xca,0xfd, + 0xc1,0xf4,0xe8,0xee,0xed,0xe9,0xed,0xeb,0xdb,0x2f,0x6f,0x1f,0xcc,0xff,0xe9,0xe1, + 0xc7,0x1e,0x6,0x0,0x34,0x5e,0x79,0x3,0xff,0xe4,0x1c,0x8,0x79,0xe7,0xa5,0x3d, + 0xf3,0xf9,0xcd,0xf6,0xf2,0xca,0x83,0xab,0xa0,0x51,0xcf,0x3a,0x2f,0xb1,0x96,0x33, + 0x29,0x64,0x2c,0x95,0xf0,0x95,0xb6,0x79,0x59,0xe5,0x22,0xcf,0xc7,0x55,0x3e,0xd9, + 0x9b,0xc,0x8f,0xc6,0xc7,0x85,0xc0,0x10,0x40,0x79,0xcf,0x1d,0x8b,0x80,0xb2,0xfc, + 0x17,0x2,0xe8,0x77,0x7f,0xf7,0x77,0xf1,0x7b,0xbf,0xf7,0x7b,0x8b,0xd7,0xdf,0xfa, + 0xd6,0xb7,0x3a,0x9c,0xf2,0x4f,0x2d,0x2f,0x2d,0xff,0x5a,0x2b,0x69,0x3d,0xdd,0x8c, + 0x9a,0xeb,0x56,0xd9,0xa4,0x2a,0x2b,0x26,0x2a,0x41,0xcb,0xb2,0x2c,0xb2,0x22,0xdb, + 0x3f,0x1a,0x1f,0xbd,0x31,0x2a,0x46,0xff,0xeb,0x7a,0x7a,0xfd,0x6f,0xab,0xb2,0x3a, + 0x3c,0x7c,0xf5,0x50,0xbe,0xdb,0xe7,0x7f,0xfe,0xea,0x19,0x7a,0xf5,0xf3,0x5f,0xf5, + 0x9a,0xad,0x95,0xa0,0x2c,0x8b,0x33,0xd6,0xda,0x7,0x9,0xa1,0x57,0x9,0xe5,0x17, + 0x0,0xb6,0x6c,0x2c,0xf3,0x95,0x94,0x2d,0x29,0x65,0xa0,0xad,0x9b,0x56,0xa2,0x2a, + 0xca,0x22,0x9b,0x54,0xf9,0x78,0x37,0x4d,0x47,0x6f,0x4f,0x26,0x93,0xb7,0x8c,0xc5, + 0x5b,0x7b,0xbb,0x77,0xc7,0x52,0x54,0x1a,0x80,0xfa,0xbf,0xe6,0x62,0xbf,0xfe,0x1b, + 0xbf,0xbe,0x91,0x34,0x92,0x5f,0xdf,0x5a,0xdb,0xfa,0xce,0xe6,0xda,0xe6,0xa3,0x67, + 0xfa,0xab,0xcd,0x30,0x88,0x38,0x1c,0x88,0x12,0x8a,0x94,0x59,0x89,0x7c,0x9c,0xbb, + 0xd1,0x60,0xb4,0xbe,0x7d,0xb0,0xfd,0xf8,0xdd,0xa3,0xbb,0x4f,0x59,0x6d,0x9f,0x3e, + 0x50,0x7,0xff,0xf9,0x10,0x87,0xaf,0x1,0xd0,0xf7,0x7f,0x66,0xd2,0xee,0x37,0x9, + 0x61,0x4f,0x58,0x6b,0xbe,0xda,0x68,0xf6,0xaf,0xfa,0x7e,0x6b,0x33,0x88,0x92,0xd5, + 0x56,0xab,0x17,0x37,0x92,0x16,0x25,0x60,0xc4,0x58,0x4b,0x8d,0x36,0xc4,0x38,0x67, + 0xcb,0xb2,0xb2,0xd3,0xe9,0xd4,0x1e,0xf,0xf,0xf4,0xc1,0xde,0xed,0xe9,0xde,0xee, + 0xdb,0x7b,0x47,0x87,0x77,0xde,0xe,0x2,0xff,0xef,0xa5,0xa8,0xfe,0x37,0x80,0x57, + 0x1,0xd8,0x4f,0x1c,0xa0,0xdf,0xfc,0xc6,0x6f,0x2,0xc0,0xc2,0x7a,0xbe,0xfc,0xaf, + 0xbf,0xbc,0xf4,0xd9,0xc7,0x3f,0xfb,0xd5,0xd5,0xfe,0xea,0xf3,0xe7,0x36,0xcf,0x3f, + 0xb5,0xb2,0xdc,0x8f,0x3a,0xed,0x36,0x18,0xe3,0x70,0xce,0x41,0x4b,0xd,0x91,0xa, + 0x88,0x44,0x60,0x29,0x5e,0xe2,0xed,0xb0,0x8d,0x86,0xd7,0x78,0x34,0x20,0x41,0xcc, + 0xd,0x2f,0xdd,0x23,0xee,0x8f,0xdf,0x78,0xfd,0x8d,0x1f,0x0,0x70,0x0,0xf0,0xec, + 0xd3,0xf,0x25,0x9f,0xfe,0xf4,0x97,0x3e,0x15,0x27,0xfd,0xcf,0xc7,0x49,0xf7,0xf3, + 0xed,0xce,0xd2,0x63,0x71,0xa3,0xb5,0xee,0x5,0x71,0xc3,0xc1,0x43,0x14,0xc6,0x88, + 0xa2,0x6,0x8,0x63,0x70,0x96,0x40,0x48,0x85,0x2c,0x2b,0x10,0x86,0x16,0xad,0x76, + 0x1f,0xfd,0x95,0x35,0xac,0xad,0x6f,0xf5,0xb6,0xce,0x5d,0xda,0x3a,0xd8,0xdf,0xb9, + 0xbc,0xbb,0x7d,0xe3,0xc1,0x3b,0xb7,0xdf,0xbc,0x7a,0xfb,0xd6,0x9b,0x7f,0xe3,0xac, + 0xf9,0x11,0x80,0x9b,0xf3,0xef,0xfa,0x44,0x0,0xfa,0xb3,0xef,0xff,0xd9,0x62,0xff, + 0xf9,0xef,0x3c,0x9f,0x24,0x71,0xf2,0xcc,0xfa,0x99,0xf5,0xdf,0x39,0xbb,0x79,0xf6, + 0x57,0xaf,0x3c,0xf2,0x28,0x9a,0x49,0x2,0xeb,0x2c,0x8c,0x31,0x50,0x5a,0x81,0x79, + 0xc,0xc,0xc,0x11,0x8b,0xd0,0xf2,0x5b,0xe8,0xc7,0x7d,0x34,0x79,0x13,0x9e,0xf1, + 0x2e,0x4c,0xd3,0xe9,0xbf,0x2f,0xa2,0x42,0x90,0x3e,0xd9,0x76,0xc2,0xed,0xfe,0x87, + 0xaf,0x7f,0xb3,0xd1,0xe9,0xae,0x3f,0xd1,0xe9,0xac,0x7c,0xc7,0xf,0x5a,0x5f,0x49, + 0x9a,0xcb,0xeb,0x9b,0x67,0x2f,0x62,0xb9,0xbf,0x82,0x20,0xc,0x50,0xe4,0x2,0xd6, + 0x5a,0x50,0x4a,0x1,0x42,0x61,0x2c,0x40,0x72,0x81,0xf1,0x38,0x85,0xd6,0x16,0x41, + 0x18,0x62,0x69,0xa9,0x8f,0xb3,0x67,0x2f,0x41,0x88,0x92,0x1d,0xec,0xef,0x2d,0xbd, + 0xf9,0xc6,0x4f,0x96,0x3c,0x2f,0x7c,0xd2,0x5a,0xf7,0xf8,0xd1,0xd1,0xee,0x7f,0x2d, + 0xf3,0xc9,0xb,0x0,0xee,0xdc,0xcf,0x4f,0xef,0xf6,0x60,0x1f,0xd7,0xb5,0x9e,0xfc, + 0xec,0x93,0xf,0x5e,0xd8,0xbc,0xf0,0xbd,0x47,0x2e,0x3f,0xf2,0xf4,0x95,0x47,0xae, + 0xc4,0x49,0xb3,0x1,0x10,0xc0,0x68,0xd,0x6b,0x6b,0x90,0x8c,0x32,0x30,0xd2,0xc0, + 0x8,0x3,0x2b,0x2d,0xa0,0x0,0xf,0x1e,0x38,0x38,0xca,0xb2,0x8c,0x2b,0x51,0x39, + 0x63,0x8c,0xba,0x74,0x7e,0x6b,0x74,0xf5,0xea,0xe7,0xbe,0xdc,0xed,0xad,0x7f,0x6f, + 0xf3,0xec,0xc3,0xcf,0x2e,0xf7,0xb7,0x56,0xbb,0x4b,0x2b,0xe8,0xf7,0x7b,0x68,0x34, + 0x2,0x50,0xa,0x58,0xa3,0xc0,0x39,0x81,0xef,0x33,0x10,0xa,0x10,0x4a,0xa0,0x8d, + 0xc6,0x64,0x32,0xc1,0xce,0xce,0x36,0x6e,0xdf,0xbe,0x8d,0x3c,0xcb,0x40,0x28,0xd0, + 0x68,0x34,0x90,0x24,0x4d,0xac,0xae,0x6e,0x62,0x6d,0xfd,0x22,0x6d,0x36,0x7b,0x2b, + 0x5a,0xa9,0x87,0x86,0xc3,0x83,0xb,0xd6,0xa8,0x3,0x0,0x47,0xef,0xc7,0x4b,0x1f, + 0x1a,0xa0,0xd6,0x66,0xb,0x62,0x2a,0x0,0x0,0x5f,0x7b,0xee,0x6b,0xab,0x57,0x1e, + 0xb8,0xf2,0xcc,0x85,0xb3,0x17,0xfe,0xdd,0xd9,0xad,0xb3,0xeb,0xeb,0x1b,0xeb,0x70, + 0xc4,0xc1,0x18,0x3,0x6b,0x2d,0x9c,0x3,0xac,0xa9,0x41,0xb2,0xda,0xc2,0xca,0x7a, + 0x73,0xd2,0x81,0x5a,0xa,0xab,0x2d,0xa6,0xe9,0x14,0xc3,0xc9,0x30,0x54,0x56,0x75, + 0xaf,0x7c,0xea,0xc9,0xf5,0xcb,0xf,0x3f,0xfe,0x6b,0x6b,0x6b,0xe7,0x9e,0xe9,0x74, + 0x57,0xda,0xad,0x76,0x1b,0xed,0x76,0x13,0xdd,0x4e,0x82,0x20,0xe4,0x60,0x14,0xa0, + 0xd4,0x81,0x7b,0x1c,0x9c,0x33,0xd0,0x59,0xa4,0x73,0xce,0xc1,0x5a,0x8b,0xa2,0x28, + 0x30,0x9d,0x4c,0x31,0x1e,0x4f,0xe0,0x79,0x3e,0xda,0x9d,0x36,0x2,0xdf,0x47,0x14, + 0x35,0x10,0xc7,0x4d,0xc4,0x71,0x8b,0x33,0xca,0x7b,0x8c,0xd2,0x33,0x55,0x55,0x36, + 0xcb,0x32,0x2d,0x0,0xec,0xfc,0x22,0x90,0x3e,0xb4,0x8b,0x4d,0xb7,0xa7,0x8b,0xfd, + 0x87,0x2e,0x3c,0x74,0x69,0xa9,0xbd,0xf4,0xc5,0xcd,0xb5,0xcd,0x7e,0xbb,0xd5,0x82, + 0xb1,0x6,0xc6,0x58,0x58,0xe7,0x4e,0x3c,0xfc,0xfe,0x38,0xe9,0x0,0xeb,0x2c,0xac, + 0xb3,0x20,0x94,0x20,0x60,0x1,0x7c,0x78,0xcb,0x4d,0xbf,0xf9,0x6c,0x1c,0x36,0x3f, + 0xd7,0xee,0x2c,0x85,0x97,0x1e,0x78,0xc4,0x33,0xd6,0xc2,0xf7,0x28,0xe2,0xc8,0x43, + 0xb3,0x19,0x80,0x52,0xa,0x63,0x2c,0xfc,0x80,0xc1,0x18,0x7,0x6b,0x8,0x34,0xb3, + 0x0,0x31,0x8,0xc,0x43,0xa7,0xdd,0xc4,0xd6,0xd6,0x3a,0x0,0x82,0x6b,0xd7,0x6e, + 0x22,0xcf,0x33,0x54,0x65,0x5,0x4a,0x8,0x8,0x24,0x8,0x21,0xb8,0x70,0xe1,0x21, + 0xc4,0x61,0x3,0x1,0xf,0x56,0xf,0xe,0xb6,0x9f,0x9f,0x4c,0x8e,0x89,0xd6,0xe5, + 0x10,0xc0,0x4f,0x1,0x54,0xff,0xec,0x51,0xac,0x91,0x34,0x1e,0x88,0xe2,0xf8,0x97, + 0xc3,0x20,0xa,0x28,0x61,0x50,0x52,0x81,0x32,0xa,0x4a,0x8,0x34,0xdc,0x9,0xf, + 0x9e,0xce,0x69,0x8,0x40,0x29,0x85,0x23,0xe,0xd6,0x59,0x54,0x5a,0x80,0x3a,0xc2, + 0x62,0x1a,0x31,0x53,0xd9,0x80,0x51,0x86,0xee,0x72,0xb,0x1c,0xe,0xbe,0xcf,0x10, + 0xf8,0x1c,0x1e,0xa7,0x20,0x84,0xc0,0x5a,0x40,0x5b,0xb,0xa5,0xea,0x4d,0x1b,0x80, + 0x10,0xd,0x29,0x5,0xb2,0x74,0x82,0x38,0x8a,0x70,0xe9,0xd2,0x45,0x28,0xa5,0x61, + 0x1d,0x41,0x5e,0xe4,0x8,0x2,0xbf,0xe6,0x2b,0x0,0x9c,0x53,0xb4,0xdb,0x1d,0x2c, + 0xaf,0xac,0xa3,0xdd,0x59,0x65,0x83,0xc1,0xfe,0xaf,0xea,0xac,0x2c,0x0,0xec,0xce, + 0x38,0xe9,0xa3,0x3,0xf4,0xa7,0x7f,0xfa,0xa7,0x0,0x80,0xe7,0x9e,0x7b,0xe,0x57, + 0x9f,0xb8,0xea,0x5d,0x7e,0xe0,0xf2,0xa3,0xdd,0x76,0xf7,0x73,0xad,0xa4,0x79,0x89, + 0x51,0xca,0xa5,0x90,0xb0,0xce,0xa2,0xd1,0x6c,0x80,0x32,0xa,0xc6,0x18,0xac,0xb5, + 0x20,0xd4,0x81,0x52,0x5a,0x5f,0x24,0x7,0x28,0xa7,0xb0,0xd4,0x22,0x15,0x29,0x86, + 0x93,0x21,0xb2,0x2a,0x5,0x1,0x45,0x48,0x42,0x88,0x49,0x8e,0xa3,0xdd,0x1d,0xc, + 0x8f,0x76,0x70,0xe1,0xdc,0x79,0x34,0x93,0x18,0x8c,0x3a,0x10,0xd4,0x89,0xa3,0x73, + 0x80,0x36,0xe,0x8a,0x59,0x14,0x4e,0x20,0x4d,0x53,0xa4,0x59,0x81,0xa2,0x94,0xf0, + 0x7d,0x8e,0x28,0x6a,0xc0,0x38,0x82,0x66,0xb3,0x81,0xd1,0x68,0x82,0xe9,0x74,0x82, + 0xa5,0x5e,0xf,0x9e,0xe7,0x41,0x4a,0x89,0xd1,0x78,0x88,0x74,0x32,0x46,0x96,0xa7, + 0x30,0xd6,0x81,0x52,0xef,0xac,0xc7,0xa3,0x5f,0x51,0xba,0xfc,0x1,0x80,0xbf,0x0, + 0x70,0xf0,0x91,0x1,0x7a,0xee,0xb9,0xe7,0x4e,0x32,0xda,0xcf,0x3e,0xd3,0x69,0x35, + 0x5b,0xff,0xa6,0xdd,0x68,0x3d,0xd3,0x6d,0x76,0x12,0x0,0x28,0xf2,0x2,0xa4,0x20, + 0x20,0x94,0x20,0x8c,0x6a,0x97,0x70,0xce,0x1,0xce,0xc1,0x39,0x7,0x87,0x7a,0xdf, + 0x5a,0xb,0x21,0x5,0x6,0xe3,0x1,0x76,0x6,0x3b,0xc8,0xca,0xc,0x20,0x4,0x9c, + 0x7a,0xd0,0x69,0x85,0xbb,0xd7,0xaf,0xa1,0xdd,0x8b,0x71,0xe9,0xfc,0x59,0x34,0x62, + 0x6,0x6b,0x1d,0x8,0xa9,0x3d,0xd5,0x39,0x7,0x6a,0x0,0xca,0x28,0x84,0x14,0x98, + 0x4c,0x46,0x38,0x3c,0x3c,0x86,0xb1,0x4,0xab,0xab,0xeb,0xf0,0xc3,0x8,0x69,0x5a, + 0x82,0x31,0x8a,0xb2,0x2c,0x90,0xe7,0x5,0x36,0x37,0x36,0xe1,0xfb,0x1,0x84,0xa8, + 0x70,0xfb,0xf6,0x2d,0x1c,0x1d,0xec,0x62,0xe7,0xee,0x4d,0x64,0x69,0xa,0x4a,0x3d, + 0x84,0x51,0xf3,0x82,0x2d,0xf4,0xd7,0x8d,0x51,0x47,0x0,0xfe,0xfc,0x9f,0xc3,0xc5, + 0x78,0xa3,0xd1,0xb8,0xd4,0x49,0x3a,0x5f,0x69,0xc6,0xcd,0x87,0xbb,0xed,0xe,0x8, + 0x25,0x50,0x52,0x41,0x6b,0xd,0xa5,0x14,0x82,0xc0,0x87,0x1f,0xfa,0xe0,0x9c,0xc3, + 0x3a,0x7,0x25,0x15,0x64,0x26,0x51,0x8d,0x2b,0xa4,0x83,0x14,0x83,0xfd,0x1,0xe, + 0xe,0xf,0x30,0x9c,0xe,0x61,0xad,0x9d,0x79,0x1e,0x45,0x33,0x48,0x20,0x26,0x25, + 0xf6,0xee,0x6c,0xc3,0x68,0x9,0x2,0x80,0xd1,0x13,0xf7,0x24,0x84,0xc0,0x23,0x0, + 0xa5,0x80,0xef,0x7b,0x27,0x40,0x14,0x12,0x4b,0xcb,0x2b,0x8,0x8,0xc0,0x38,0x45, + 0x1c,0x37,0x20,0xa5,0xc4,0x60,0x70,0x8c,0x95,0x95,0x33,0xe8,0xf5,0x34,0x46,0xa3, + 0x21,0x5e,0xfa,0xd1,0xf,0xb0,0xb7,0x7b,0x7,0x45,0x3e,0x86,0x54,0x2,0x9e,0x1f, + 0xc0,0x18,0x12,0x78,0x5a,0x3c,0x4b,0xb4,0x78,0x55,0xab,0xea,0xc7,0xb3,0xc8,0x66, + 0x3f,0x32,0x40,0x5f,0x7e,0xee,0x4b,0x2d,0x4a,0xe8,0xd9,0xd0,0x8b,0x36,0x3,0x2f, + 0xe0,0x9e,0xe7,0x43,0xdb,0x9a,0x71,0xac,0xb1,0x28,0x45,0x1,0x51,0x54,0x60,0x9c, + 0x81,0x32,0x6,0xa3,0x35,0xaa,0x42,0xa0,0x4c,0x4b,0x14,0x93,0x2,0xe9,0x28,0xc5, + 0xf1,0xf0,0x18,0x69,0x96,0x42,0x1a,0x59,0x9b,0x6,0x21,0x30,0xce,0xd4,0x20,0xe7, + 0x1a,0xf9,0x24,0x45,0x96,0x4e,0x60,0x56,0x97,0xc0,0x66,0xfc,0x71,0x2,0x52,0xd, + 0x90,0xc7,0x19,0x7a,0xdd,0xe,0xd2,0x7e,0x1,0x6f,0x92,0x83,0x33,0xa,0x67,0xd, + 0x28,0x21,0x68,0xb5,0x5b,0xe8,0x76,0x7b,0x18,0x8d,0x26,0xb8,0x7e,0xfd,0x26,0xa2, + 0x68,0x17,0x65,0x99,0x62,0x77,0x6f,0x17,0xc3,0xc1,0x11,0x8c,0xaa,0x40,0x8,0x5, + 0xe3,0x1e,0x9c,0x73,0xc4,0xf3,0xa2,0xae,0x83,0x7b,0x4c,0xab,0xea,0x71,0x0,0x2f, + 0x9e,0xce,0x8f,0x3e,0x34,0x40,0xad,0xa4,0x9d,0x10,0x90,0x25,0x8f,0xfa,0xa0,0xa8, + 0x79,0xc6,0xcd,0xee,0x2e,0xa1,0x14,0xce,0x69,0x88,0x4a,0xc0,0xe8,0x3a,0xbc,0x57, + 0x45,0x85,0x22,0x2d,0x90,0x4d,0x32,0x54,0x45,0x5,0x21,0x4,0xaa,0xaa,0x82,0xb5, + 0x16,0x8c,0x32,0x80,0xd4,0x2e,0xa4,0x8d,0xc6,0x34,0x9d,0x82,0x39,0xa,0xab,0xd, + 0x8e,0x87,0x43,0x9c,0x59,0x5b,0x45,0xab,0xf9,0x4e,0x29,0xa4,0x4e,0x14,0x9,0x96, + 0x97,0x97,0x40,0xa9,0x87,0xd1,0x24,0x83,0x73,0x14,0x5a,0x6b,0x38,0x7,0x24,0x49, + 0x82,0xcd,0xad,0x2d,0xe4,0x79,0x85,0x9f,0xbd,0xf2,0x1a,0xf2,0x22,0x3,0x9c,0x82, + 0x56,0x1a,0xbe,0x1f,0x42,0xc1,0x1,0xda,0xc1,0x59,0x3,0x42,0x8,0xb8,0x17,0xc2, + 0x58,0x7d,0x11,0x60,0x4f,0x1,0xf6,0x27,0x80,0x5b,0x0,0x44,0x3f,0x2c,0x40,0xd4, + 0x52,0x2,0x7,0x4a,0x66,0x41,0xca,0xdd,0x97,0xb0,0x13,0x5a,0x3,0x55,0x87,0xf7, + 0x19,0x7,0x59,0xb,0x67,0x6b,0x2e,0x22,0x20,0x60,0x8c,0x81,0x52,0xa,0x2,0x2, + 0x42,0x28,0x1c,0x6a,0x6e,0x32,0xd6,0x40,0x1b,0x3,0x21,0x4,0x46,0xa3,0x11,0xca, + 0xf7,0x28,0xbb,0x9d,0x3,0xac,0x3,0x9c,0xb5,0xf0,0x7d,0x1f,0xcd,0x24,0x81,0xe7, + 0x79,0x0,0x21,0x33,0x97,0x75,0xe8,0x76,0xbb,0x38,0x7b,0xee,0x1c,0x7a,0xbd,0x1e, + 0xe0,0x8,0xf2,0xbc,0x2,0x28,0x87,0xef,0x47,0xf0,0xfd,0x10,0x9c,0x71,0x10,0x42, + 0x17,0x96,0x44,0x29,0xdb,0x62,0xdc,0xfb,0x2c,0xa5,0xec,0x1e,0xf1,0xe8,0x43,0x3, + 0x24,0xb5,0x34,0x46,0x1b,0xa9,0xb5,0xaa,0x73,0x99,0xfb,0x64,0x89,0x7a,0xd1,0xa8, + 0xf3,0x8f,0x39,0xbb,0x92,0xda,0x35,0x6a,0xf0,0x8,0x28,0xa1,0x8b,0x63,0x4,0xf5, + 0xa2,0xb4,0x51,0x30,0xc6,0xd4,0x3c,0xa6,0xf5,0xc,0x34,0xf3,0x2e,0xd6,0x3,0x18, + 0xe3,0x60,0x8c,0x85,0x36,0xb5,0x6b,0x13,0x3a,0xd7,0xe2,0xea,0xcd,0xd9,0xda,0xa2, + 0x83,0x20,0x40,0xa7,0xd3,0x46,0x18,0x46,0xb0,0x8e,0x80,0x51,0xf,0xcc,0xf3,0xc1, + 0xb8,0x7,0x42,0x69,0x7d,0x4d,0x4,0xa0,0x84,0x81,0x52,0xd6,0x66,0x8c,0x5f,0x22, + 0x84,0xf4,0x1,0x78,0x1f,0x19,0xa0,0xe3,0xec,0xb8,0x94,0x5a,0x4e,0x2a,0x59,0x49, + 0x6d,0xf4,0x6c,0xf1,0xe4,0x9e,0x84,0x90,0xb8,0xda,0x7a,0x8,0x99,0xbb,0x1e,0x1, + 0x68,0xd,0x18,0x1,0xa9,0x23,0xda,0xc,0x1c,0x0,0x30,0xc6,0x40,0x2a,0x9,0xa5, + 0x15,0x8c,0x35,0x60,0x8c,0xa2,0xd9,0x4c,0xc0,0x38,0x87,0x10,0xb2,0x8e,0x86,0x0, + 0xac,0x75,0x50,0xda,0x40,0x2a,0xb,0xa5,0x2d,0x94,0xb1,0x50,0x5a,0x43,0x29,0xd, + 0x63,0x1d,0x8c,0x75,0x50,0x5a,0x23,0xcf,0xb,0xc,0x87,0x43,0x1c,0x1f,0xf,0xc1, + 0x18,0x43,0x10,0x6,0xf0,0xb8,0x37,0xb7,0x14,0x80,0xd0,0x1a,0x48,0x9c,0x5c,0x27, + 0xa5,0xc,0x94,0x79,0x4b,0x20,0xe4,0xc,0x80,0xe4,0x23,0x73,0xd0,0x8b,0xff,0xe3, + 0xc5,0xd1,0xd5,0xff,0x74,0xf5,0x56,0x56,0x65,0x43,0xa1,0xc4,0x45,0xab,0xd,0xc0, + 0x4f,0xe3,0x33,0x37,0x17,0x72,0x2a,0x95,0x26,0xef,0x22,0x44,0xd5,0xef,0x59,0x67, + 0xa1,0xb4,0x82,0x10,0x2,0x4,0x4,0xad,0xa0,0x85,0xf6,0x72,0x1b,0x4b,0xcb,0xcb, + 0x8,0xc3,0x18,0x52,0x59,0x58,0x58,0x90,0x19,0xf7,0x68,0x65,0x21,0xb5,0x85,0x94, + 0xa6,0x4e,0x16,0xb5,0x83,0x31,0xe,0x20,0x14,0x42,0x48,0x1c,0x1e,0x1c,0xe0,0xc6, + 0x8d,0xb7,0x71,0x74,0x74,0x8c,0x69,0x56,0x20,0xcb,0x5,0xca,0xb2,0x82,0xe7,0xf9, + 0xb0,0xc6,0xc1,0x68,0x2,0xd4,0xb7,0xa8,0xde,0x5c,0x7d,0x47,0x29,0xa1,0xe0,0x94, + 0xfb,0xca,0xe1,0x2c,0x80,0x1e,0x80,0xd1,0x47,0xd,0xf3,0xb6,0x2c,0xcb,0xbb,0x53, + 0x6f,0xfa,0xd7,0x85,0x28,0x5a,0x69,0x91,0x3d,0xd4,0x6e,0xb7,0x6a,0xc2,0x75,0xef, + 0x51,0xd2,0xb8,0xd3,0xbb,0xee,0x94,0x2b,0xd6,0x85,0xa6,0x10,0x15,0x2a,0x51,0x82, + 0x7,0x3e,0xfa,0x1b,0xab,0x78,0xf0,0x91,0x47,0x90,0x24,0x6d,0x68,0xe5,0x20,0x64, + 0x85,0x20,0x0,0x8,0xa1,0xb0,0xd6,0x40,0xeb,0x99,0xf5,0x28,0xb,0xad,0x1,0x63, + 0x6a,0x97,0xab,0x2a,0x89,0xc1,0x70,0x88,0x3b,0x77,0xee,0xe0,0xee,0xdd,0x3b,0x18, + 0x8d,0xa6,0xa8,0x84,0x81,0xd4,0xf5,0xf1,0x3a,0x71,0xad,0xbf,0xdf,0x39,0xb,0xe7, + 0x6c,0x8d,0x4e,0x9d,0x60,0x81,0x10,0xa,0x4a,0x39,0x23,0x20,0x67,0x0,0xb4,0x3e, + 0xb4,0x5,0x7d,0xed,0x6b,0x5f,0x3,0x0,0xbc,0xf0,0xc2,0xb,0xb8,0x71,0xeb,0xc6, + 0xb0,0x99,0x34,0xff,0xcb,0xf9,0xf3,0xe7,0x5b,0xc7,0x93,0xe3,0x8d,0x4e,0xa7,0xd3, + 0xe0,0xec,0x84,0x8d,0xdc,0x2f,0xd0,0x2d,0xe7,0x67,0xcd,0x9f,0x2b,0x59,0x21,0x2f, + 0x73,0x8,0x25,0x10,0x36,0x9a,0xb8,0xf0,0xd0,0x65,0x3c,0xf6,0xe9,0xcf,0x80,0x52, + 0x1f,0x93,0x49,0x86,0x4a,0x8,0xc4,0xb1,0x3,0xe7,0x1e,0x1c,0x0,0xad,0xeb,0x7a, + 0x4f,0x29,0xb,0xa5,0x1d,0x8c,0xb6,0x90,0x52,0x63,0x32,0x99,0x62,0x77,0x67,0x7, + 0x77,0xef,0xde,0x45,0x51,0x8,0x0,0x1c,0x9c,0x73,0x18,0xeb,0xe0,0x9c,0x86,0xb5, + 0xba,0x6,0xc6,0x9a,0x93,0x6d,0x6,0x92,0x9b,0x59,0x3d,0x61,0x94,0x12,0x42,0x5b, + 0x0,0xa2,0x8f,0x55,0x8b,0xbd,0xf8,0x77,0x2f,0x4a,0x0,0x2f,0x3f,0xfb,0xf9,0x67, + 0xfe,0x3a,0xcf,0xb2,0xcb,0xce,0xba,0x2f,0x50,0x4a,0x2,0xca,0x29,0xa0,0xcd,0xc, + 0xa1,0xb9,0xab,0xbd,0x8b,0x84,0x40,0x19,0x2c,0xa9,0x5d,0x6b,0x3a,0x9d,0x62,0x3c, + 0x19,0x43,0x3b,0x83,0x73,0x97,0x2e,0xe1,0xfc,0xa5,0xcb,0x68,0xb6,0x96,0x50,0x9, + 0x89,0x2c,0x9d,0xa2,0x28,0xb,0xa4,0x59,0x89,0x46,0xd2,0x46,0x18,0xc6,0xd0,0xda, + 0x40,0x6b,0x83,0xb2,0xac,0x30,0x1e,0x4f,0x41,0x8,0x87,0xb1,0x4,0x83,0xc1,0x31, + 0x86,0xc3,0x63,0x64,0x59,0xe,0x4a,0x3d,0x78,0x41,0x0,0x28,0xc0,0x38,0xd,0x6b, + 0xeb,0xb0,0xe7,0x8c,0x85,0xb5,0x6,0xd6,0x99,0x3a,0x0,0x38,0xbb,0xc8,0xad,0xe6, + 0xfc,0x38,0xbb,0x5e,0xf7,0xa1,0x1,0x7a,0xe1,0x85,0x17,0x0,0x0,0xdf,0xf9,0xd6, + 0x77,0xf0,0x7,0x7f,0xf4,0x7,0x0,0x60,0xf6,0xb6,0x77,0x7e,0xe6,0x51,0xef,0x7, + 0x3b,0xcd,0x9d,0x27,0xdb,0x9d,0x76,0x10,0x86,0xc1,0x2c,0xff,0xb1,0x80,0x31,0xef, + 0xb0,0x24,0x42,0x8,0x18,0x65,0x30,0xd4,0x40,0x48,0x81,0xe9,0x74,0x8a,0xc9,0x74, + 0x2,0x65,0x14,0xe2,0x6e,0x82,0xad,0x8b,0x97,0xd0,0xee,0xf5,0xa1,0x94,0x43,0x95, + 0x4b,0x14,0xa5,0x44,0x51,0x8,0x68,0x53,0x42,0x48,0x8b,0x56,0x8b,0x80,0x52,0xe, + 0xa5,0xc,0xb2,0xac,0xc4,0xe1,0xe1,0x11,0x8,0xf1,0xc0,0xfd,0x8,0x52,0x19,0x30, + 0xe6,0x23,0x8a,0x12,0x68,0xc3,0xe0,0x24,0xa0,0x8d,0x1,0x21,0x73,0x82,0x37,0xb0, + 0x46,0x2f,0x36,0x67,0x6b,0xbd,0xaa,0x76,0xb3,0x5,0x2a,0xce,0xd5,0x59,0xb4,0xfb, + 0xc8,0x7a,0xd0,0xcb,0xaf,0xbc,0xbc,0xd8,0x7f,0xe5,0xc7,0x3f,0x97,0xab,0xbd,0x33, + 0x5c,0x6b,0xfd,0xb4,0xc7,0xf8,0x52,0xbb,0xd5,0x86,0x25,0x80,0xb3,0xb5,0xe9,0x3b, + 0xe7,0xea,0xb0,0x2d,0x15,0x94,0x50,0x70,0x76,0x56,0x8b,0x9,0x81,0xe3,0xe3,0x11, + 0xe,0xe,0xf,0x30,0x19,0x8f,0xc0,0x2,0x8e,0x33,0xe7,0xcf,0xe2,0xd1,0x5f,0x7e, + 0xa,0xdd,0xfe,0x2a,0x8c,0x76,0x10,0x42,0x40,0x2b,0x3,0xa5,0x34,0xf2,0x34,0x87, + 0x90,0xa6,0x56,0xf,0xa9,0xf,0xa5,0x2c,0xd2,0x2c,0xc7,0x60,0x30,0x44,0x55,0x9, + 0x18,0x3,0x50,0xe6,0x83,0x31,0xf,0x84,0x71,0x28,0xe5,0x20,0x84,0x81,0x10,0x6, + 0x5a,0x2b,0x68,0x5d,0x41,0xa9,0x2,0x4a,0x96,0x50,0xb2,0x84,0x56,0x5,0xa4,0x2a, + 0x6b,0xa0,0x66,0x85,0xb0,0xb5,0x16,0x5a,0x6b,0xa1,0x54,0xf9,0x13,0x67,0xf5,0xcb, + 0x33,0x9d,0xe8,0xe3,0x29,0x8a,0xa,0x4a,0x5c,0xdc,0xbc,0x54,0x2a,0x25,0x97,0x61, + 0xb1,0xa6,0x85,0xee,0x50,0xc6,0xe0,0xf1,0x5a,0xd0,0x22,0x94,0xd6,0xa0,0x28,0xb, + 0xa3,0xea,0x52,0x22,0xcf,0x72,0x1c,0x1e,0x1e,0xe1,0xe8,0xe8,0x8,0x93,0xc9,0x18, + 0x42,0x55,0x58,0xde,0xd8,0xc4,0x3,0x8f,0x3f,0x81,0x73,0x97,0x1f,0x81,0xef,0x87, + 0x10,0x65,0x5,0xa5,0x34,0xb4,0xad,0x23,0x94,0x50,0x6,0x45,0x51,0x22,0xcf,0xb, + 0x68,0xe3,0x60,0x1d,0x1,0xe5,0x3e,0xc2,0xa8,0x5,0x10,0xf,0x55,0x25,0x50,0x55, + 0x2,0x61,0xd4,0x40,0x23,0x69,0x61,0x3c,0x9a,0x62,0x38,0x1c,0x63,0x3c,0x9e,0xc0, + 0x18,0x9,0xad,0x2b,0x68,0x59,0x42,0xab,0x12,0x52,0x15,0x90,0xa2,0x80,0x51,0xd5, + 0x2c,0x93,0x9e,0x5,0x0,0x63,0x60,0xb4,0x28,0xb5,0x2a,0xff,0xce,0x59,0xf3,0xd3, + 0x79,0x65,0xff,0xa1,0x1,0x7a,0xee,0xb9,0xe7,0xf0,0xe6,0x9b,0x6f,0x2e,0x5e,0xdf, + 0xb9,0x73,0x3b,0x4b,0x1a,0xc9,0x24,0xf2,0xc2,0x44,0x9,0x75,0xde,0x6a,0x13,0x2a, + 0xa9,0x88,0x52,0xa,0xb2,0x12,0x28,0x8b,0x12,0x59,0x9a,0x23,0x9d,0xa4,0x98,0x8c, + 0xc7,0x18,0xe,0x8f,0x71,0x78,0x74,0x88,0xe9,0x64,0x2,0xa5,0x15,0xfc,0xa4,0x89, + 0xf5,0xcb,0xf,0x63,0xeb,0xa1,0xab,0x48,0x5a,0xdd,0x1a,0x10,0x21,0xea,0xbc,0xc6, + 0xb8,0x5a,0xde,0xd0,0x6,0x65,0x29,0x90,0xe7,0x5,0x8a,0x4a,0xa0,0x28,0x2b,0x48, + 0x59,0xbb,0x94,0xb1,0xe,0x42,0x29,0x8,0x21,0x11,0x84,0x21,0xc2,0x28,0x46,0x51, + 0x54,0x90,0x52,0x42,0x29,0x9,0x29,0xb,0x54,0x55,0x6,0x21,0x32,0x28,0x59,0x40, + 0xca,0x1c,0x5a,0x55,0x30,0x5a,0xd6,0x9e,0x44,0x48,0x2d,0xc6,0x69,0x5,0xad,0x45, + 0x61,0x74,0xf5,0x82,0x73,0xf6,0x67,0x0,0xc6,0x1f,0x89,0xa4,0xe7,0xba,0xd0,0xf9, + 0x7,0xcf,0xe3,0xd6,0xb5,0x5b,0xc8,0x75,0x6e,0xfe,0xf2,0x7,0x7f,0xf9,0xf7,0xcb, + 0xed,0xe5,0xf5,0xb2,0xac,0x2e,0x97,0x59,0xf9,0xb9,0x28,0x8a,0x42,0x3f,0xf4,0xe1, + 0x79,0x1e,0xb4,0x36,0xc8,0xb3,0x1c,0xe3,0xd1,0x18,0xd3,0xf1,0x14,0x59,0x9a,0x21, + 0xcf,0x73,0x68,0xad,0xe0,0xf9,0x1,0x92,0xf5,0xd,0x34,0x57,0xd7,0x41,0xc3,0x4, + 0xa3,0x49,0xa,0xdf,0xe3,0xf0,0x38,0x83,0xc7,0xcc,0x4c,0xe8,0x72,0xb0,0xd6,0xc1, + 0x58,0x6,0xa5,0x1d,0x26,0xd3,0x1,0xa4,0xd2,0x20,0x94,0x23,0x49,0xba,0x68,0x34, + 0x9a,0xe0,0x9c,0xc3,0xf3,0xfc,0xba,0x9c,0x31,0x16,0x67,0x56,0xfa,0x8,0x83,0x0, + 0xad,0x66,0x84,0x1b,0x37,0x2a,0x14,0xb9,0x82,0x14,0x5,0xa4,0x28,0xa1,0x95,0x80, + 0xb1,0x1a,0xf6,0xbe,0x74,0xc3,0x39,0xb,0x6b,0xb5,0x4,0xc8,0x5d,0x0,0xc7,0x1f, + 0x88,0xa4,0xaf,0x5c,0xb9,0x2,0x0,0x78,0xed,0xb5,0xd7,0xde,0x71,0xec,0xd6,0xb5, + 0x5b,0x0,0x80,0x27,0xae,0x3c,0xd1,0xea,0x36,0xba,0x8f,0x99,0xc2,0x7c,0x91,0xfa, + 0xf4,0x7c,0xd2,0x6c,0x72,0x25,0x25,0xe,0xf6,0xe,0x60,0x8d,0x83,0x52,0xa,0x65, + 0x59,0x22,0xcf,0x72,0x28,0x59,0x97,0x13,0x8c,0x33,0xb4,0x92,0x16,0x38,0xf7,0xe1, + 0x2a,0x85,0xe3,0x9d,0xbb,0xd0,0xd6,0x60,0x69,0x79,0x15,0x8d,0xb8,0x1,0xee,0xf1, + 0x9a,0x2e,0x29,0x1,0x63,0x1c,0x41,0x18,0xc1,0x58,0xe,0x63,0x18,0x94,0x6,0x8a, + 0x42,0xa0,0xac,0x26,0x38,0x38,0x18,0xa0,0xd3,0x5d,0xc2,0xea,0xea,0x1a,0x3a,0xed, + 0x2e,0x7c,0xcf,0x83,0x73,0xe,0x1e,0xf7,0x90,0x24,0xd,0x74,0x5a,0x9,0xe2,0x20, + 0xc0,0xed,0x46,0x88,0xed,0xbb,0xc0,0x60,0x20,0x20,0xa,0x5,0x2d,0xab,0x59,0xf6, + 0x3f,0x4b,0x1a,0x9d,0x83,0x73,0xd6,0x59,0xa3,0xb7,0x1,0x6c,0x3,0x48,0xdf,0x17, + 0xa0,0xe7,0x9f,0x7f,0x1e,0x7f,0xf8,0x87,0x7f,0x78,0x4f,0x10,0xfa,0xde,0x7f,0xfc, + 0x5e,0xe7,0x81,0xcb,0xf,0x24,0x9d,0x6e,0xa7,0x49,0x9,0xed,0xc4,0x71,0xdc,0xda, + 0xbd,0xbd,0xbb,0xf1,0xd2,0xdf,0xbd,0xf4,0x85,0x72,0x54,0xfe,0xb2,0x2d,0xed,0x5a, + 0xe0,0x5,0x2c,0x8,0x2,0x28,0xad,0x91,0x4d,0xb2,0x5a,0xc2,0x90,0x1a,0xce,0x3a, + 0x70,0xce,0x11,0x86,0x21,0x38,0xe7,0x60,0x8e,0xc1,0x2a,0x8b,0x2c,0x2b,0xa1,0xf9, + 0x31,0x5c,0x1c,0x20,0xec,0xb6,0xe1,0x69,0xa,0x2b,0xc,0x84,0xd6,0x10,0x5a,0xc3, + 0x80,0x80,0x7,0x9,0x3c,0x3f,0x0,0x1,0x81,0x36,0xc,0xda,0x50,0x54,0x95,0xc1, + 0x74,0x9a,0xc2,0x58,0x8a,0x24,0x69,0xa3,0xbf,0xbc,0x2,0xcf,0xf3,0xa0,0x94,0x6, + 0x67,0x4,0x9c,0x71,0xb0,0x16,0x85,0xdb,0x70,0xf0,0x19,0x43,0x23,0x88,0xd1,0x6e, + 0xb4,0x71,0xeb,0xb6,0xc5,0xfe,0xc1,0x14,0xa0,0xb3,0x7a,0x10,0x64,0xd6,0x64,0x30, + 0x87,0xc6,0xa8,0xd7,0x9c,0xb5,0x87,0x1f,0x28,0xcc,0xdf,0x7,0x8e,0xf7,0x5b,0xbf, + 0xf1,0x5b,0x2b,0x5b,0x9b,0x5b,0x4f,0xb6,0x9a,0xad,0x87,0x9a,0x49,0xf3,0x7c,0x1c, + 0xc6,0xeb,0x94,0xd1,0xcd,0xe5,0xa5,0xe5,0x8d,0x7e,0xbb,0xbf,0xba,0x33,0xd8,0x61, + 0xc5,0xa4,0x40,0x99,0x96,0x58,0xd9,0x5c,0x41,0xbb,0xdb,0xc6,0xe0,0x70,0x80,0xe9, + 0x78,0x8a,0xb2,0x28,0x21,0x85,0x9c,0xe9,0xc2,0x1c,0x1e,0xf3,0x20,0x72,0x81,0x6c, + 0x94,0x1,0x42,0xa3,0x4d,0x38,0xce,0xb6,0x9a,0xd8,0xea,0x84,0x70,0xce,0x20,0x4d, + 0x53,0x10,0xa5,0x21,0xf2,0x2,0xd3,0xbc,0x44,0x26,0x2d,0xa2,0xd6,0x32,0x92,0x56, + 0xbf,0x26,0x7d,0xe7,0x3,0x24,0x84,0xb1,0x15,0xa4,0x74,0x10,0x42,0x42,0x29,0x5, + 0x4a,0x28,0xb4,0xd2,0x8b,0x4e,0x8a,0xd1,0x16,0x3e,0xf3,0xb1,0xbe,0x7a,0x16,0xbd, + 0xe6,0x19,0xac,0x2f,0x9d,0x87,0xaa,0x4a,0x1c,0x1c,0xde,0xae,0x93,0x44,0xc2,0x40, + 0x1,0x68,0x2d,0x60,0xb4,0xbc,0x6d,0x8c,0xfc,0x47,0xc0,0x8d,0x7f,0xa1,0xa2,0xf8, + 0xd8,0x17,0x1f,0xab,0x43,0xf8,0x8b,0xaf,0xa0,0xb3,0xdc,0x21,0xe7,0x2f,0x9d,0x5f, + 0xfa,0xca,0xd3,0x5f,0x79,0x66,0x6b,0x7d,0xeb,0x5f,0x5d,0x38,0x7b,0xe1,0xd3,0xbd, + 0x6e,0xaf,0x1f,0xc7,0x71,0x8,0x82,0x8,0x4,0x11,0x77,0x3c,0xec,0xf6,0xba,0x64, + 0xff,0xf6,0x3e,0x26,0x83,0x9,0x6e,0xbd,0x71,0xb,0xa2,0x14,0xe8,0x9d,0xe9,0x21, + 0x8e,0x62,0x84,0x7e,0x8,0x29,0x24,0x84,0x10,0x90,0x95,0x84,0x28,0x5,0xca,0xac, + 0x44,0x3a,0x4e,0x51,0xe4,0x5,0x28,0x65,0x68,0x75,0xdb,0xe8,0xaf,0x2c,0x21,0x49, + 0x62,0x38,0x0,0x9e,0xc7,0xd1,0x71,0xe,0x7d,0xa5,0x30,0x18,0x8d,0xf0,0xca,0x1b, + 0xaf,0x63,0xfb,0x70,0xf,0xac,0xd1,0xc7,0xca,0xda,0x3,0x20,0x84,0x43,0x48,0x40, + 0x2a,0xc0,0x39,0xe,0x46,0xfd,0x59,0xa9,0xe3,0x60,0xb5,0xa9,0x55,0x81,0x59,0xe4, + 0x34,0x4a,0xc3,0x1a,0x2,0x59,0x49,0x14,0x59,0x6,0x29,0x45,0xed,0x56,0x33,0x29, + 0xd7,0x11,0xb,0x25,0x4b,0x18,0x23,0xdf,0x4,0xdc,0xf,0xef,0x6f,0x26,0xbe,0x3, + 0xa0,0x57,0x5e,0x7c,0x65,0xb1,0xff,0x85,0x2f,0x7e,0xa1,0xb1,0xb1,0xbc,0xf1,0xc5, + 0xb5,0x95,0xb5,0xdf,0x39,0xb3,0x7c,0xe6,0xab,0xed,0x56,0xbb,0x17,0xc7,0x31,0x7c, + 0xdf,0x9f,0x9,0xf2,0x4,0x49,0x33,0xc1,0xfa,0xb9,0x75,0x1c,0x1f,0x1e,0xa3,0x2a, + 0x2a,0x8c,0x87,0x63,0x58,0x6b,0x51,0x95,0x15,0x92,0x76,0x52,0xcb,0xae,0xc6,0x42, + 0x29,0x5,0x59,0xca,0x1a,0x9c,0x49,0x5a,0xb7,0x64,0x18,0x45,0xd2,0x6b,0xa2,0xb3, + 0xd4,0x41,0x94,0xc4,0x70,0xb3,0x90,0xeb,0x7,0x41,0x2d,0xb5,0xba,0x10,0xc4,0x18, + 0x2c,0x47,0x21,0x6,0x47,0xdb,0x38,0x1c,0x8d,0x1,0xda,0x40,0x10,0x77,0x61,0xb4, + 0x81,0xd6,0xe,0x79,0x51,0x62,0x34,0x1a,0x23,0x5d,0xea,0xa2,0x11,0x45,0xb0,0xc6, + 0x42,0x4b,0x3,0xad,0x34,0x94,0xd0,0x75,0xfe,0xa5,0x8,0xf2,0x69,0x8a,0x9d,0xbd, + 0xb7,0x71,0x3c,0xda,0x87,0x31,0xa,0x84,0xd4,0x6d,0x71,0x6b,0x94,0x55,0x5a,0xdc, + 0xd2,0x4a,0xfc,0x4,0xc0,0x9b,0xf7,0xf7,0xc8,0x7e,0x21,0x49,0x77,0x5a,0x9d,0xf5, + 0xd5,0xe5,0xd5,0x7f,0xbb,0xdc,0x5b,0xfe,0xb5,0xf5,0xd5,0xf5,0x5e,0x14,0x47,0x30, + 0xa6,0x76,0x1,0x6b,0x2c,0x40,0xea,0xa,0x7b,0xe3,0xe2,0x6,0x84,0xa8,0x9b,0x89, + 0x47,0x3b,0x47,0x28,0x8b,0x12,0x7b,0x77,0xf6,0x6a,0xb2,0x45,0x9d,0x38,0xd6,0x45, + 0x21,0x16,0xdd,0xd6,0x20,0xc,0xd0,0x68,0x35,0xd0,0x5f,0xeb,0xa3,0xd9,0x6b,0xd5, + 0x32,0x45,0x5a,0xdc,0xa3,0x2f,0x39,0xeb,0xa0,0x35,0xb0,0xd1,0x3f,0x8b,0xc9,0x38, + 0xc3,0x74,0xe7,0x2e,0xf6,0xb6,0xaf,0xa1,0xd1,0xdd,0x42,0x23,0xee,0xc2,0x58,0x85, + 0xe1,0x60,0x8c,0xaa,0x18,0xc1,0x67,0xc0,0xc6,0xda,0x3a,0xe2,0x28,0x59,0x0,0xa3, + 0x2a,0x5,0x29,0x14,0xa0,0x29,0xf2,0x34,0xc3,0xed,0xbb,0x6f,0xe0,0x60,0x70,0x17, + 0x52,0x9,0x84,0xa1,0xf,0x67,0x35,0x94,0xaa,0x72,0xad,0xca,0xbf,0x34,0x56,0xfd, + 0x3,0xf0,0xce,0xd9,0xa5,0x7b,0x0,0xba,0xf8,0x99,0x8b,0xb8,0xf9,0xd2,0xcd,0xb9, + 0xab,0xad,0x74,0x5b,0xdd,0xcf,0x9e,0x59,0x3e,0xf3,0x4b,0x91,0x1f,0xf5,0xb5,0xd4, + 0x18,0x8b,0x31,0xac,0xb3,0x70,0xc6,0xc1,0x9a,0xba,0xf9,0x67,0xad,0x85,0x35,0x16, + 0xad,0x6e,0xb,0x97,0x1e,0xbd,0x84,0xfe,0x46,0x1f,0xf9,0x34,0x47,0x55,0x54,0xf5, + 0x45,0x4a,0x55,0x4b,0xa4,0x9c,0x82,0xf3,0xba,0x80,0xe4,0x1e,0x47,0x10,0x6,0x8, + 0xe3,0x10,0x7e,0xe0,0xc3,0x1a,0x8b,0xc9,0xf1,0x4,0x73,0xd,0xc2,0xba,0x3a,0xb, + 0x77,0xb6,0xfe,0x1e,0xa7,0x2c,0x7a,0x49,0x7,0x6b,0x9d,0xc,0x6f,0x1c,0xee,0x42, + 0x6a,0x3,0xdb,0x33,0x70,0x56,0xa3,0x2a,0x33,0x14,0x99,0xc0,0xcf,0x4d,0x9,0x25, + 0x2a,0x9c,0xdd,0xb8,0x8,0x67,0x50,0x83,0x53,0x2a,0x68,0x69,0x51,0x15,0x29,0xe, + 0x7,0xdb,0x18,0x8e,0x76,0x20,0x54,0x31,0xd3,0xa2,0x2d,0x94,0xaa,0x94,0xa8,0xb2, + 0x57,0xad,0x35,0xff,0xd,0xc0,0x2b,0xef,0xdb,0x17,0x9b,0x83,0x3,0x0,0x8f,0x5f, + 0x7c,0xfc,0xc1,0x76,0xa3,0xfd,0x2b,0xdd,0x56,0x77,0x3d,0xf0,0x2,0x54,0x55,0x5, + 0x21,0x45,0xed,0xbb,0x20,0x27,0x2d,0x65,0x5b,0x2f,0x86,0x31,0x86,0xde,0x4a,0xf, + 0xcd,0x6e,0x13,0x65,0x5e,0xa2,0xcc,0x4a,0x88,0x52,0x40,0xa,0x9,0x63,0xc,0x28, + 0xaf,0x7b,0x65,0x9c,0x71,0x78,0x9e,0x7,0xee,0x71,0x10,0x4a,0x60,0xb4,0x81,0x52, + 0xb5,0x5e,0x3c,0x7,0xdb,0xda,0x7a,0x73,0xb6,0xee,0xd0,0x52,0x4a,0x11,0x47,0x9, + 0x56,0x3b,0x7d,0xdc,0x3a,0xd8,0x45,0x9a,0x1e,0x62,0x42,0x39,0x2,0x2f,0x80,0x14, + 0x39,0x44,0x99,0xa2,0x2a,0x8e,0xd1,0x8a,0x12,0x74,0x93,0x3e,0x18,0x3c,0x58,0xe5, + 0x20,0xa,0x81,0x3c,0x4b,0xb1,0x7f,0x74,0x1b,0xb7,0x77,0x5e,0xc3,0x34,0x3f,0xae, + 0x5b,0x47,0x94,0x41,0xc9,0xd2,0x2a,0x59,0xbe,0x2c,0x65,0xf9,0x67,0x80,0xfd,0xd1, + 0xe9,0xd0,0xfe,0x41,0x5c,0x8c,0x2e,0xb5,0x97,0x1e,0x6b,0x46,0xcd,0x67,0x9b,0x71, + 0x93,0xfb,0x9e,0xf,0xa3,0xc,0x60,0x31,0x8b,0x22,0xf7,0x2e,0xc4,0x9e,0xd2,0x9c, + 0x9d,0x75,0x8,0xc2,0x0,0x7e,0xe0,0x2f,0x6a,0xaf,0xf9,0xf1,0x5,0x0,0xb3,0xcd, + 0x28,0x53,0xbb,0xaa,0x5,0x28,0xa1,0xf3,0x89,0xc6,0x5a,0x41,0x3c,0xa5,0xb3,0x69, + 0xad,0xeb,0xdc,0x26,0x6e,0xa2,0xdf,0x6c,0xa1,0x9a,0xa4,0x98,0x8e,0x77,0xd1,0x88, + 0x3b,0x30,0x46,0x41,0xaa,0x1c,0x4a,0x1a,0xe4,0xe9,0x14,0xc5,0x38,0x83,0xc7,0x22, + 0x50,0xc7,0x21,0x8a,0xa,0xbb,0x7,0x37,0xf0,0xfa,0x8d,0x7f,0xc4,0x9d,0xbd,0x37, + 0xea,0xac,0x99,0x50,0x58,0xa3,0x4d,0x55,0x4e,0x6e,0x69,0x25,0xfe,0x4,0xb0,0x7f, + 0x30,0xcf,0x9a,0x3f,0x18,0x40,0xd,0xd0,0xf5,0x73,0xeb,0xcb,0x61,0x10,0x3e,0x18, + 0x4,0xc1,0x65,0xce,0x38,0xa1,0x84,0x42,0x5a,0x79,0xd2,0x5b,0x9f,0x2f,0x7a,0x26, + 0x85,0x3a,0xeb,0x66,0x61,0xb5,0x5e,0xb0,0x9b,0x35,0xb,0x4f,0x3,0x73,0xfa,0xf8, + 0xe2,0xd9,0x9a,0x5,0xb0,0xb5,0xb8,0x5c,0x57,0xfc,0xf3,0x56,0x71,0x2d,0xe2,0xeb, + 0x85,0x2c,0x4b,0x9,0xc5,0x7a,0xef,0xc,0x46,0x45,0x89,0xc1,0xf0,0x0,0xc4,0xd5, + 0x9a,0x8e,0x56,0x25,0xe0,0x1c,0x64,0x29,0xa0,0x4a,0xd,0x1e,0x12,0x18,0x67,0x91, + 0x15,0x53,0xdc,0xda,0x79,0x1d,0x7,0xc7,0x77,0x51,0xa9,0xa,0x1e,0xf3,0x60,0x8d, + 0x36,0x5a,0x55,0xaf,0x18,0xa3,0xfe,0xc8,0xc1,0xfc,0xf9,0xbc,0x28,0xfd,0xc0,0x0, + 0x7d,0xe9,0x99,0x2f,0x79,0x51,0x18,0x9d,0x8f,0xc3,0xf8,0x6c,0x14,0x46,0x84,0x12, + 0xba,0x58,0xb0,0x73,0xae,0x8e,0xe,0x4a,0xcd,0xe6,0x73,0x4e,0x48,0x57,0x2b,0xd, + 0xad,0x75,0x3d,0xc5,0x61,0xec,0x3d,0xee,0x62,0x6c,0x3d,0xdd,0x61,0x8c,0xb9,0xf7, + 0xd8,0x8c,0xc3,0x16,0xfa,0x27,0x1,0x18,0x67,0xf0,0x3c,0xf,0x61,0x14,0x2e,0xf8, + 0xcb,0x98,0x1a,0x28,0xe7,0x80,0x6e,0x73,0x9,0xad,0x60,0x1f,0x54,0x57,0xa8,0x8a, + 0x31,0x8c,0x35,0xa0,0x70,0x48,0xa2,0xe,0x22,0x3f,0x81,0xc7,0x42,0x10,0x4b,0x30, + 0xce,0x6,0xd8,0xde,0x7f,0xb,0x3b,0x7,0xd7,0x91,0xe6,0x23,0x0,0xce,0x18,0x23, + 0xa7,0x5a,0x89,0x57,0xa4,0xc8,0xff,0x27,0x60,0xff,0x78,0x36,0x48,0xf5,0xe1,0x6, + 0xa8,0x36,0x57,0x37,0x3d,0xce,0xf9,0x43,0x49,0x98,0xf4,0x9b,0x51,0x73,0x61,0x9, + 0xf3,0xbb,0x58,0x16,0x35,0xb7,0x44,0x8d,0x8,0x84,0xcd,0x38,0x44,0xaa,0x7b,0xad, + 0x62,0xf6,0x3f,0xd6,0xcd,0x5e,0x1b,0x77,0x62,0x6d,0x38,0x1,0x7b,0xae,0xbc,0x2c, + 0xf8,0xcc,0xd8,0x5,0x91,0x27,0xad,0xa4,0x6,0xc8,0x58,0x14,0x79,0x1,0x6b,0x2c, + 0x28,0xa1,0xf0,0xb8,0x8f,0x66,0x94,0xa0,0x19,0x4,0x18,0x54,0x29,0x2a,0x25,0x11, + 0x7,0xd,0x2c,0x77,0xd6,0xd1,0xef,0x6e,0x21,0xe,0xdb,0xc8,0xcb,0x9,0x6e,0xef, + 0xbe,0x86,0x57,0xaf,0xff,0x3d,0xc6,0xd3,0x3,0x68,0x55,0x19,0xc0,0x6e,0x4b,0x59, + 0xfc,0x8d,0xb5,0xe6,0x4f,0x0,0xf2,0xd7,0xef,0xc5,0x39,0xef,0xa,0xd0,0x67,0xbe, + 0xfc,0x19,0x0,0xc0,0x4b,0x7f,0xf5,0x12,0xe2,0x28,0xf6,0x40,0x70,0xd5,0xf7,0xfd, + 0x8d,0x24,0x4e,0x6a,0x15,0xa9,0xfe,0x3,0x51,0xd5,0x4d,0x3f,0xa3,0xcd,0x3d,0x61, + 0xfb,0xb4,0x36,0xbf,0x68,0xe7,0xcc,0xda,0x3e,0x94,0xd4,0xc3,0xa,0xc4,0x91,0x85, + 0xfb,0x38,0xe7,0x40,0x41,0x61,0x89,0x5,0x31,0x75,0xd7,0x83,0xd8,0xfa,0x78,0xad, + 0x2,0x48,0x30,0x9f,0xc1,0xb,0x3c,0x28,0x5d,0x4b,0x24,0xc6,0x18,0x10,0x56,0x9f, + 0xd3,0x8a,0x9a,0xe8,0x25,0x1d,0xec,0x8c,0xaf,0x43,0x18,0x8d,0x24,0x6a,0xc1,0x63, + 0x3e,0xf2,0x62,0x84,0x1b,0x77,0x5f,0xc6,0xce,0xfe,0x5b,0x78,0x7b,0xe7,0x55,0xec, + 0x1d,0xbe,0x95,0x2a,0x29,0x6e,0x3a,0xd8,0x9f,0x51,0x42,0x7f,0x64,0xad,0xf9,0x47, + 0x0,0x6f,0xdd,0x9f,0x2d,0xbf,0x2f,0x40,0x2f,0xfd,0xd5,0x4b,0x27,0x1a,0x8f,0x55, + 0x51,0xe4,0x47,0xf,0x70,0xce,0xfb,0x61,0x10,0xc2,0xe9,0x7a,0xf0,0xc0,0xc1,0x41, + 0x54,0x2,0xa2,0x12,0x33,0x95,0xe0,0xa4,0x8d,0xb3,0xe0,0x8d,0x59,0x5,0x63,0x51, + 0x3,0x42,0x1d,0x5d,0x34,0x96,0xe6,0xa0,0xcc,0xf7,0xe7,0xe2,0xfd,0xe2,0x89,0xb9, + 0x5,0x21,0x4b,0x59,0xb7,0x7a,0xfc,0x86,0x8f,0x58,0xc7,0x20,0xfb,0xb5,0xa0,0x35, + 0x7,0x3a,0xe,0x63,0x74,0x9b,0x5d,0x47,0xac,0x92,0x46,0xc9,0xdc,0x5a,0x5d,0x95, + 0xd5,0x94,0x1e,0xc,0x6e,0x69,0x21,0xb,0x79,0x77,0xef,0x4d,0x79,0x38,0xbc,0x3d, + 0xaa,0x8a,0xc9,0xed,0xd9,0xec,0xcf,0x3f,0xd9,0x3a,0x8c,0x1f,0x7e,0xec,0x29,0xd7, + 0x52,0x94,0xcd,0x66,0xd4,0xec,0x33,0xca,0x1a,0x1e,0xf3,0x20,0x54,0xdd,0x8e,0x81, + 0x3,0xb4,0xd4,0x90,0x55,0xdd,0x4f,0x77,0xce,0x81,0x32,0x5a,0x37,0x2,0xdd,0xc9, + 0xc2,0x89,0xab,0xad,0x6,0x74,0x6,0xd4,0xec,0x7f,0x29,0xa5,0xb,0xe0,0xee,0xb7, + 0xb2,0x79,0xef,0x8c,0xe2,0x14,0xaf,0x29,0x3,0xce,0x39,0xe2,0x24,0x6,0xe3,0x6c, + 0xe1,0x8a,0x84,0x12,0x78,0xdc,0x47,0x2b,0x6e,0x9a,0x86,0x1f,0xee,0x67,0x45,0xfa, + 0xd3,0xc9,0x78,0xff,0xad,0xeb,0xd5,0xd4,0x57,0x5a,0x4e,0x8a,0x32,0xdd,0x85,0x33, + 0xbb,0xc6,0xea,0xf9,0x88,0xdd,0x3e,0x0,0xf1,0x41,0x87,0x36,0xdf,0xf,0x20,0x9f, + 0x11,0xb6,0x1a,0xf0,0xa0,0xc9,0x9,0xe7,0x8b,0x86,0xdd,0x6c,0x20,0x53,0x4a,0x9, + 0x29,0x64,0xbd,0x58,0x6b,0xc1,0xc0,0x16,0x96,0x53,0xe7,0x17,0xf5,0xfe,0x1c,0x98, + 0x7b,0xdc,0xa,0x27,0x91,0xca,0x51,0x7,0xb,0xb,0xa,0x7a,0xf,0xa8,0x96,0xd8, + 0x93,0x59,0x22,0x2,0x78,0x9e,0x7,0xc6,0x18,0x18,0x67,0x35,0xa8,0x33,0x97,0xa6, + 0x84,0x20,0xf2,0x23,0xd7,0x6f,0xf5,0xf2,0x4a,0x14,0x3f,0x1d,0xa4,0x83,0xbf,0x28, + 0xcb,0x11,0x73,0xce,0x56,0x0,0xa6,0xb3,0x2d,0x9f,0xd5,0x55,0xfa,0xe3,0xa8,0xa6, + 0xf7,0x0,0xf4,0xc4,0x17,0x9f,0x68,0x7b,0xd4,0xdb,0x88,0x82,0x28,0x61,0x94,0x2d, + 0x42,0xb0,0x75,0x75,0x68,0xae,0xeb,0x1b,0x35,0x53,0xe0,0xc,0x3c,0xdf,0xab,0x17, + 0x6f,0xeb,0xc6,0x9b,0x23,0xee,0x5e,0xab,0x98,0x59,0x6,0x71,0x33,0x8b,0x99,0xed, + 0x9f,0x6,0xe4,0xf4,0x39,0x73,0x30,0xb9,0xc7,0xeb,0x68,0xe6,0x7b,0x80,0xab,0x15, + 0x80,0xf9,0xd0,0xc2,0xdc,0xad,0x3,0xee,0x93,0x6e,0xd2,0xf5,0xb3,0x2a,0xb3,0x83, + 0x74,0x30,0x72,0xce,0x56,0x7e,0x98,0xb8,0x28,0x6a,0x11,0xcf,0x6b,0x4,0xd6,0x6a, + 0x4f,0x88,0x2c,0xc9,0xd3,0x63,0x5,0x18,0x31,0xb3,0x22,0x83,0xfb,0x44,0xf9,0xf, + 0x5,0x50,0xbf,0xd5,0x6f,0x7b,0xdc,0xdb,0x8,0x83,0xb0,0xc9,0x19,0x5f,0x44,0xa2, + 0xd3,0x79,0x8c,0x52,0xa,0x4,0x75,0xf4,0x2,0xea,0x61,0xa6,0xc5,0x60,0x82,0x23, + 0xa8,0xbd,0x64,0xb6,0x60,0x4a,0x16,0xfb,0xb,0xde,0x9a,0x3,0x6,0xbc,0xeb,0x39, + 0x94,0xd5,0x0,0x5,0x51,0x80,0x20,0xa,0x60,0xb4,0x1,0x65,0xf4,0x1e,0x80,0x38, + 0xe5,0xe0,0x94,0x33,0x9f,0x7,0x1b,0x70,0xf8,0xc,0x80,0x7d,0xea,0xc7,0xfb,0x71, + 0xa3,0xe7,0xe2,0xb8,0x1d,0x4,0x41,0x87,0x1a,0xa3,0x24,0xa1,0xbc,0x28,0x8b,0x34, + 0xb5,0xc6,0xa4,0xf7,0x59,0x96,0xfa,0x48,0x0,0x71,0xce,0x63,0x4a,0x68,0xd7,0xf7, + 0x7c,0x9f,0x31,0xb6,0x8,0xcd,0x70,0x98,0xc9,0x99,0x6e,0x1,0x8c,0x56,0xb5,0x8, + 0x46,0x79,0xcd,0x37,0x73,0x52,0x76,0xa8,0x2d,0x6e,0x9e,0xec,0xc1,0x9d,0x64,0xc7, + 0x75,0x8b,0xae,0x3e,0x6f,0x7e,0xce,0x69,0xb2,0x76,0xb6,0x76,0xd3,0x79,0xbd,0x36, + 0xb7,0xd0,0xf9,0x67,0xcd,0x15,0x4,0x7,0x7,0x42,0x9,0x9,0xfd,0x20,0x8a,0xfc, + 0x38,0x4,0xa0,0x41,0xfc,0x7d,0x3f,0x6c,0x9b,0x66,0xb2,0xd2,0x58,0x5d,0x79,0x98, + 0x10,0x8f,0xdb,0x49,0x76,0xa0,0x9,0xd,0xcc,0x74,0xbc,0xe3,0x69,0x99,0x26,0x8c, + 0x11,0xe2,0xac,0xe5,0xda,0x98,0x2,0x80,0x40,0x10,0x18,0xcc,0x8a,0xec,0xf,0x4, + 0x10,0x21,0x24,0x76,0x70,0xbd,0xc0,0xb,0x38,0x9f,0x4d,0xc9,0xcf,0x17,0xb6,0xd8, + 0x9f,0x59,0x8b,0x94,0x12,0x5a,0xeb,0x5,0x3f,0x9c,0x76,0x1f,0x42,0x4f,0x59,0xc8, + 0x7c,0xca,0xe3,0xb4,0x65,0x91,0x77,0x39,0x87,0xd6,0x6e,0x48,0x9,0x5,0x65,0x14, + 0xbe,0x5f,0x6b,0xda,0x73,0xcb,0x5b,0xe4,0x4e,0x6e,0x1e,0xc,0x80,0xc0,0xb,0x10, + 0x87,0xd,0x0,0x7e,0x6a,0x59,0x7c,0xbb,0xdd,0x7b,0x50,0x2e,0x35,0xda,0xad,0x4f, + 0x3f,0xf6,0x35,0x84,0xbd,0x15,0xec,0xe,0x6f,0x52,0x6b,0x2,0xe6,0xac,0x63,0xd9, + 0xf8,0x36,0x8,0x35,0xdc,0x10,0x1d,0x2e,0x12,0x35,0x21,0xdc,0xfb,0xfd,0x34,0x81, + 0xdf,0xdb,0x42,0x77,0x2d,0xeb,0xec,0x6a,0xe0,0x7,0x94,0x33,0xbe,0x28,0x16,0x4f, + 0x8f,0xf4,0x12,0x5a,0x17,0xaa,0xf3,0x4a,0xdd,0xf3,0xbc,0x45,0xd4,0x72,0xce,0x81, + 0xd8,0x77,0xf2,0xcb,0xe9,0x32,0xe2,0xf4,0x36,0xe7,0xac,0x93,0x79,0xc6,0x3a,0xe7, + 0xa2,0x94,0x22,0xc,0xc3,0x5a,0x42,0x95,0xea,0x9e,0x4c,0x7e,0x3e,0x2e,0xe3,0x1c, + 0xe0,0x31,0xf,0x81,0x17,0xf2,0x24,0x6c,0x30,0xa1,0xd2,0xfc,0xda,0x9d,0x9d,0xa2, + 0x48,0x6e,0x12,0x3f,0x70,0xe8,0xac,0xff,0x12,0x58,0x74,0x16,0xe7,0x36,0x9e,0x85, + 0x67,0x2,0x6c,0x13,0x8a,0xaa,0xda,0xa6,0xa5,0x95,0xf5,0x70,0x4b,0x59,0xf8,0xf5, + 0xbc,0x32,0x91,0xf5,0x3c,0xca,0xbb,0xe3,0x44,0xbf,0xf1,0x8d,0x6f,0x9c,0x4c,0x25, + 0x18,0xcb,0x8,0x21,0x7e,0x14,0x46,0xc4,0xf7,0xfd,0x77,0xb4,0x8d,0x17,0xed,0x59, + 0x8b,0x99,0x5a,0x67,0x16,0xb5,0x16,0x80,0x85,0x3b,0x10,0x7a,0x8a,0xa0,0x29,0x59, + 0xbc,0x47,0x9,0xad,0x37,0x7a,0xef,0xb6,0x18,0x8b,0x99,0x91,0x7d,0x18,0x85,0xe8, + 0xf4,0x3a,0x48,0x5a,0x9,0x7c,0xdf,0xaf,0xc1,0xe2,0x1e,0x28,0xea,0xa1,0x2b,0x46, + 0x67,0xaa,0x0,0xf3,0xc0,0x29,0x23,0xce,0x59,0x38,0x55,0x59,0x4c,0xfe,0xc1,0x1e, + 0x1d,0xdd,0x2a,0xae,0x5d,0x7b,0xb5,0xd8,0xb9,0x73,0xab,0x10,0xb9,0x28,0x9a,0xf1, + 0x6a,0xb1,0xba,0xf2,0x58,0xb1,0xbc,0xfc,0x50,0x1,0x47,0x73,0xdf,0xf7,0x8a,0x66, + 0xb3,0x5d,0x51,0xba,0xa4,0x81,0xc4,0x1,0x8e,0x2,0xf6,0x3d,0x7f,0xf5,0xc4,0xbf, + 0xff,0xfd,0xef,0x9f,0x36,0x21,0xdf,0x1a,0x1b,0x5a,0x6b,0xe9,0x7b,0xf1,0xfc,0x5c, + 0xd0,0x52,0xaa,0x1e,0xda,0xd4,0x46,0x2f,0xac,0x80,0x52,0xa,0xb0,0x93,0xd1,0x96, + 0x39,0xe7,0xcc,0xf9,0x69,0x91,0x51,0xe3,0xd4,0x10,0xd5,0x2c,0x7f,0x5a,0x3c,0x13, + 0x40,0x5b,0x8d,0x34,0x4f,0x1,0xf,0x48,0xb3,0x14,0xc6,0x99,0x5,0x7,0xcd,0x33, + 0x78,0x29,0x5,0xa6,0xc5,0x14,0x79,0x99,0x6a,0xa9,0x2a,0xa9,0x51,0x9f,0x23,0xe5, + 0x58,0xed,0xec,0x4e,0x31,0x1d,0xdd,0x74,0xa1,0x96,0x18,0x12,0x82,0x76,0xf7,0x22, + 0xd6,0xd6,0x9e,0xc2,0xcf,0x7f,0xfe,0xdf,0xf1,0xd0,0xa5,0x1e,0xd9,0x58,0xbf,0x8a, + 0x1f,0x8c,0x2d,0x29,0xf5,0xb5,0x77,0xd3,0xc8,0xde,0xdb,0xc5,0x18,0xa5,0x1d,0x21, + 0xab,0xee,0xd1,0xf1,0x11,0x67,0x84,0x21,0x89,0x93,0x7b,0x24,0xd,0xb,0x5b,0xbb, + 0x12,0x75,0xa8,0x54,0x85,0x42,0x14,0xf0,0x84,0x7,0x46,0x59,0x7d,0x87,0x39,0x5, + 0xa3,0xac,0x76,0x39,0x83,0x93,0x2a,0x9d,0xe2,0xde,0xcc,0x79,0xb6,0x48,0x47,0xea, + 0xc8,0x67,0x9d,0x85,0x9d,0xb5,0xaa,0x85,0x14,0x28,0xf6,0xb,0xc,0x7e,0x38,0xa8, + 0x25,0x5b,0x70,0xc,0x87,0x43,0x64,0x22,0xab,0x33,0x6c,0x52,0x9f,0x33,0x4a,0x47, + 0xb8,0xbe,0x7b,0x1d,0xc3,0x74,0x58,0x28,0x2b,0x46,0xa7,0xb8,0xc4,0x0,0x33,0xab, + 0x9d,0xd,0x4a,0xd5,0xa3,0xc8,0x66,0x36,0x34,0x35,0x53,0x19,0x3e,0x60,0xa4,0x5f, + 0x0,0xf4,0xc4,0xa7,0x9e,0xc,0x1a,0x51,0xa3,0xa4,0x84,0xee,0xed,0x1d,0xee,0xad, + 0xa6,0x59,0xda,0xb,0xbc,0x80,0x12,0x52,0x73,0x8e,0xa8,0x84,0x4b,0x27,0xa9,0xc8, + 0xb3,0x5c,0x48,0x29,0x25,0x13,0xdc,0x1c,0x64,0x7,0xb1,0xe7,0x7b,0xcd,0x66,0xd4, + 0xc,0x5b,0x8d,0x16,0x92,0xb8,0x76,0x9,0xdf,0xf3,0xc1,0x3d,0x8e,0xd0,0xb,0x1, + 0xf,0x8b,0xea,0x7d,0x2e,0x8b,0x28,0xa9,0x50,0x56,0x25,0xca,0xa2,0x44,0x59,0x96, + 0x48,0xf3,0x14,0x93,0xe9,0x4,0xc7,0x93,0x63,0x57,0xca,0xb2,0x60,0x1,0x9b,0xae, + 0xa8,0x95,0xe3,0x9e,0xee,0x55,0xd4,0x52,0xec,0xee,0xef,0x86,0xd3,0xd1,0xd4,0x97, + 0x95,0x64,0xe,0xe,0xc6,0x18,0x9b,0x57,0xb9,0x29,0x44,0xe1,0x84,0x16,0x6f,0xcd, + 0x86,0x9d,0x4e,0x91,0xc8,0x9b,0x98,0xe4,0x6f,0xe2,0x6f,0x7f,0xf8,0xce,0x5,0xbf, + 0x75,0xa3,0xc4,0x5b,0x37,0xf6,0x3e,0x5c,0xa2,0xc8,0x9a,0x8c,0x4c,0xaa,0x11,0x4b, + 0x1a,0xcd,0x51,0xe8,0x87,0xaf,0xe7,0x65,0xce,0x8a,0xb2,0x58,0x22,0x84,0x78,0x8c, + 0x31,0x67,0x8d,0x25,0xaa,0x52,0xb6,0x2a,0xaa,0xb2,0x2c,0xcb,0x5c,0x6b,0x5d,0x7a, + 0xc6,0xd7,0x55,0x5a,0x35,0xad,0x35,0xfd,0x66,0xa3,0xd9,0x6b,0xc5,0xad,0x66,0x23, + 0x6c,0x44,0xa1,0x1f,0xd2,0x30,0xc,0x59,0x14,0x46,0x2c,0xe,0x63,0xc2,0x28,0x3b, + 0xa9,0xee,0xad,0x85,0x56,0x1a,0x55,0x55,0x21,0xcb,0x32,0x3b,0x49,0x27,0x66,0x9a, + 0x4d,0x4d,0x9a,0xa7,0x76,0x9a,0x4e,0xab,0xc1,0x78,0x30,0x51,0x56,0xd,0x5a,0xdd, + 0xd6,0xe1,0x56,0xb4,0xb5,0x97,0xc4,0x49,0x9e,0x8f,0x73,0x32,0x1a,0x8d,0xe2,0xe3, + 0xe3,0xe3,0x50,0x29,0xc5,0x1d,0x71,0xf0,0x98,0x67,0x9d,0x85,0xa,0xbd,0x50,0x87, + 0x5e,0xf8,0xd6,0x4,0x93,0xec,0xa3,0x96,0x12,0x1f,0x8,0x20,0x93,0x1a,0xdc,0x4c, + 0xdf,0xb6,0x5f,0x62,0x5f,0x3e,0xee,0xb5,0x97,0x5e,0xdf,0x5a,0xdd,0x3c,0x8c,0x83, + 0x98,0x51,0x50,0x63,0x5c,0x9d,0x41,0xa7,0xe3,0x14,0xbb,0x37,0x77,0x5d,0x65,0x2a, + 0x17,0x76,0x43,0xbb,0x7e,0x6e,0xdd,0x46,0x71,0x44,0xa7,0xf9,0x34,0xba,0xb9,0x7d, + 0x73,0x65,0xf7,0x60,0x77,0x3d,0xcf,0xf3,0x33,0xa1,0x1f,0x76,0x38,0xe3,0x1d,0x8f, + 0x7a,0x9d,0xc0,0xb,0x1a,0x9c,0x71,0x3a,0x77,0x3b,0xa9,0x24,0xca,0xaa,0x84,0xd4, + 0x52,0x57,0xa2,0x9a,0xe4,0x65,0x3e,0x9a,0xe4,0x93,0xd4,0x68,0x33,0xc,0x79,0x78, + 0xb8,0xba,0xb4,0xba,0x7b,0x6e,0xeb,0xdc,0xe8,0xe1,0x47,0x1e,0x2e,0xae,0x3c,0x79, + 0xc5,0x12,0x4b,0xdc,0xf6,0x8d,0x6d,0xb8,0xcc,0x91,0xb4,0x95,0x12,0x67,0x1d,0xb1, + 0xc4,0xc2,0xe7,0x81,0x13,0x52,0xd2,0xb7,0xb6,0xdf,0x8,0xb4,0xd3,0xc3,0x83,0xc9, + 0x81,0xfa,0x44,0x1,0x2,0xe0,0xb0,0xb,0xa9,0xad,0x9e,0x12,0x82,0xc3,0x4e,0xb3, + 0x23,0xba,0x49,0x17,0x9c,0x71,0xa5,0x5d,0x3d,0xbe,0xe2,0x3b,0x1f,0x43,0x3a,0x24, + 0xc4,0x27,0xa4,0xd3,0xee,0xa0,0xbf,0xd4,0x47,0xbb,0xd3,0x76,0x7d,0xd9,0xa7,0x8c, + 0xb3,0xbd,0x38,0x88,0xaf,0xd,0x47,0xc3,0x44,0x6a,0xd9,0xca,0xb2,0xac,0x3b,0x4a, + 0x47,0x3d,0x23,0x4d,0x42,0x8,0x89,0x39,0xe3,0x1e,0x63,0x8c,0x8,0x21,0x6c,0x51, + 0x15,0xd2,0xc1,0x15,0x9c,0xf3,0x91,0xef,0xf9,0xc7,0xcb,0xdd,0xe5,0x69,0xc0,0x83, + 0xb4,0x15,0xb5,0xf2,0x7e,0xa7,0x5f,0x6c,0xac,0x6e,0xc8,0xb5,0xee,0x9a,0x5d,0x59, + 0x5a,0xa1,0x42,0x8,0x12,0xc7,0x31,0x9a,0x71,0xd3,0x11,0x39,0xcf,0xc0,0x9d,0xa3, + 0x94,0x93,0x29,0xc9,0x98,0x23,0xe0,0xce,0xb9,0xe3,0x59,0xcd,0xf5,0x89,0x2,0x4, + 0x0,0xb6,0x10,0x45,0x96,0x55,0xd9,0xa8,0xac,0x4a,0x4,0x3c,0x20,0x1e,0xf7,0xb4, + 0x21,0xb5,0x5,0x49,0x2d,0x21,0x9d,0x84,0x63,0x8e,0x10,0x8f,0x40,0x68,0x81,0xb4, + 0x48,0xe1,0x71,0xcf,0x5e,0xb9,0x70,0xc5,0x3c,0xfd,0xa9,0xa7,0x25,0x65,0xd4,0x5e, + 0xbf,0x7b,0xdd,0xfb,0xe9,0xeb,0x3f,0x6d,0x5c,0xbb,0x71,0x2d,0x39,0x3c,0x38,0xc, + 0xa5,0x96,0x21,0x65,0xd4,0xe7,0x9c,0xd3,0xaa,0xaa,0xb4,0x10,0x42,0x84,0x61,0x28, + 0x96,0xbb,0xcb,0xf9,0xe5,0xf3,0x97,0xb3,0x47,0x2e,0x3e,0x52,0xb6,0xe3,0xb6,0x2b, + 0xf3,0x92,0xee,0x1e,0xec,0x7a,0x55,0x55,0xf1,0xfd,0xbd,0x7d,0xd2,0x1f,0xf4,0x61, + 0x61,0x51,0x8a,0x12,0x52,0x49,0x8,0x25,0x16,0xc3,0x6,0xc6,0x9,0x3a,0x2d,0xa7, + 0xc8,0xca,0xd4,0x94,0xb2,0x1c,0xfe,0x4b,0x1,0x84,0x2c,0xcb,0x8a,0x22,0x2e,0xe, + 0x85,0x10,0x52,0x6,0x92,0x3a,0xe2,0x8c,0x86,0xae,0x65,0xe,0x21,0x17,0xed,0x1b, + 0xe6,0x31,0x10,0x47,0x60,0x94,0x81,0x96,0x1a,0x45,0x5a,0xb8,0xfd,0xe1,0x3e,0x40, + 0xe1,0x98,0x63,0xee,0xd1,0x8b,0x8f,0x1e,0x5f,0xb9,0x70,0xc5,0x71,0xcb,0x9d,0x71, + 0x6,0xda,0x69,0x38,0xe7,0x9c,0xd5,0x16,0x4e,0x3b,0x2,0x2,0x8,0x2d,0x88,0x90, + 0x82,0xc,0x6,0x3,0x72,0xa0,0xf,0x88,0x94,0x92,0xe4,0x79,0xe,0x67,0x1d,0xe1, + 0x11,0x47,0x99,0x97,0xf5,0xcf,0xa5,0xb2,0xa,0x5a,0xcc,0xa6,0xc1,0x58,0x9d,0x66, + 0x68,0xa5,0xa8,0x52,0x95,0x53,0x52,0x49,0xa3,0xcc,0x1c,0x20,0xfb,0x89,0x3,0xb4, + 0xb7,0xbf,0x57,0x25,0x5e,0x72,0x2c,0x2a,0x51,0x89,0x48,0x10,0xeb,0x59,0x6b,0x60, + 0x6a,0x4d,0xd9,0x58,0xc0,0x0,0xd4,0xa3,0x20,0xac,0xe,0x97,0x46,0xd6,0xc9,0xa2, + 0x86,0x46,0xe5,0x2a,0x62,0x60,0xd0,0xe4,0x4d,0xdb,0x6b,0xf5,0xec,0x99,0xe5,0x33, + 0x76,0x6d,0x69,0xcd,0x7a,0xbe,0xe7,0xac,0xb5,0xce,0x73,0x9e,0x83,0x2,0x91,0x42, + 0x92,0x34,0x4f,0xe9,0xf5,0xfd,0xeb,0xf4,0xed,0xfd,0xb7,0x69,0x56,0x65,0x54,0x14, + 0x82,0x48,0x21,0x51,0xaa,0xd2,0x51,0x4a,0xd1,0x50,0xd,0xc8,0x54,0x42,0x5b,0x5d, + 0x4b,0xbc,0x5a,0xc0,0xba,0x5a,0x5e,0x31,0x30,0x10,0x46,0x90,0x52,0x96,0xc8,0xab, + 0x5c,0xe6,0x65,0x9e,0x7d,0x5c,0x49,0xe3,0x3,0x3,0xf4,0xe3,0x7f,0xf8,0xb1,0x92, + 0x63,0x99,0x3e,0x7e,0xf6,0xf1,0x82,0x37,0x38,0x61,0xd,0xe6,0xe0,0x0,0x8f,0xd6, + 0x45,0x23,0x17,0xb5,0xc,0x1,0x6,0x48,0x2b,0xc1,0x52,0x6,0xe4,0x0,0x5b,0x61, + 0xb0,0xa1,0x45,0x2a,0x53,0x4c,0xf,0xa7,0xb8,0xbb,0x7d,0x97,0xfc,0x4,0x3f,0x81, + 0x85,0xc5,0x64,0x3a,0x81,0x48,0x5,0x96,0xe9,0x32,0x38,0xe1,0x70,0xa4,0x56,0x16, + 0x4b,0x56,0xa2,0xe4,0xa5,0x63,0x1e,0x3,0x2f,0x38,0x4c,0x6a,0x90,0xb1,0xc,0xbc, + 0xc1,0xa1,0x9c,0x82,0xda,0x55,0xc8,0x5d,0x8e,0x61,0x3a,0xc4,0xc8,0x8c,0x10,0xdb, + 0x18,0x91,0x89,0x30,0x24,0x43,0x8c,0xaa,0x11,0x19,0x64,0x3,0xdc,0x3a,0xbe,0x65, + 0x9c,0x75,0x9f,0x18,0x38,0xef,0x26,0x98,0xd9,0x4a,0x54,0xca,0x1a,0xab,0xec,0x7c, + 0x2,0x74,0x3e,0x19,0x3f,0x2b,0x2c,0xef,0xa9,0xdd,0x8c,0xc3,0x2c,0x81,0x5d,0xfc, + 0x82,0x70,0xfe,0xfb,0x54,0xe3,0x4c,0x7d,0xb7,0xa5,0x40,0x25,0x2a,0x48,0x2a,0xe1, + 0xa8,0x5b,0x0,0xa4,0xb8,0x82,0x26,0x1a,0x84,0x93,0x45,0x6c,0x5a,0x69,0x4a,0x0, + 0x0,0x0,0x21,0x49,0x44,0x41,0x54,0x11,0x6c,0x88,0x1,0x3,0xab,0x8b,0x63,0xed, + 0x16,0xa2,0xff,0x3c,0x93,0xa6,0x6e,0xf6,0x4b,0x45,0x7b,0xd2,0x32,0xfa,0xa4,0xb8, + 0x67,0xfe,0xf8,0x3f,0xd3,0x21,0x9c,0xee,0x31,0xd4,0xfa,0xe1,0x0,0x0,0x0,0x0, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + +}; + +static const unsigned char qt_resource_name[] = { + // offline.png + 0x0,0xb, + 0x0,0xaf,0xcd,0x27, + 0x0,0x6f, + 0x0,0x66,0x0,0x66,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // close.png + 0x0,0x9, + 0x6,0x98,0x83,0x27, + 0x0,0x63, + 0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // addcontact.png + 0x0,0xe, + 0x2,0xf3,0x85,0xe7, + 0x0,0x61, + 0x0,0x64,0x0,0x64,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // contactfemale.png + 0x0,0x11, + 0xa,0xdc,0x51,0xa7, + 0x0,0x63, + 0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x66,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + + // away.png + 0x0,0x8, + 0xd,0x8c,0x5a,0x47, + 0x0,0x61, + 0x0,0x77,0x0,0x61,0x0,0x79,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // themes.png + 0x0,0xa, + 0x3,0xcd,0xa,0xc7, + 0x0,0x74, + 0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // yellowframe.png + 0x0,0xf, + 0x2,0x5c,0x13,0x47, + 0x0,0x79, + 0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x6f,0x0,0x77,0x0,0x66,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // online.png + 0x0,0xa, + 0x0,0x4a,0x9d,0x27, + 0x0,0x6f, + 0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // restore.png + 0x0,0xb, + 0x6,0x79,0xc2,0x27, + 0x0,0x72, + 0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // redframe.png + 0x0,0xc, + 0xb,0x23,0xc,0x47, + 0x0,0x72, + 0x0,0x65,0x0,0x64,0x0,0x66,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // general.png + 0x0,0xb, + 0x8,0xa4,0xde,0xc7, + 0x0,0x67, + 0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x6c,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // settings.png + 0x0,0xc, + 0xb,0xdf,0x21,0x47, + 0x0,0x73, + 0x0,0x65,0x0,0x74,0x0,0x74,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // hidden.png + 0x0,0xa, + 0xa,0xcc,0x88,0x7, + 0x0,0x68, + 0x0,0x69,0x0,0x64,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // busy.png + 0x0,0x8, + 0xc,0xac,0x5a,0x67, + 0x0,0x62, + 0x0,0x75,0x0,0x73,0x0,0x79,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // greenframe.png + 0x0,0xe, + 0x9,0x50,0xd7,0xe7, + 0x0,0x67, + 0x0,0x72,0x0,0x65,0x0,0x65,0x0,0x6e,0x0,0x66,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // contactmale.png + 0x0,0xf, + 0xf,0x6a,0xa8,0xa7, + 0x0,0x63, + 0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // network.png + 0x0,0xb, + 0x6,0x67,0xc0,0x87, + 0x0,0x6e, + 0x0,0x65,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x72,0x0,0x6b,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // tieto-logo.png + 0x0,0xe, + 0xa,0x78,0x9,0x87, + 0x0,0x74, + 0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6f,0x0,0x2d,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x6f,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // activesessions.png + 0x0,0x12, + 0x6,0x89,0xc6,0x47, + 0x0,0x61, + 0x0,0x63,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e, + 0x0,0x67, + // contacts.png + 0x0,0xc, + 0x7,0xfa,0xe3,0xa7, + 0x0,0x63, + 0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // unknown.png + 0x0,0xb, + 0x6,0x59,0xf3,0xe7, + 0x0,0x75, + 0x0,0x6e,0x0,0x6b,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // account.png + 0x0,0xb, + 0xc,0x98,0x63,0x87, + 0x0,0x61, + 0x0,0x63,0x0,0x63,0x0,0x6f,0x0,0x75,0x0,0x6e,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + +}; + +static const unsigned char qt_resource_struct[] = { + // : + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x1, + // :/online.png + 0x0,0x0,0x0,0xd2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x69,0xcb, + // :/offline.png + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, + // :/yellowframe.png + 0x0,0x0,0x0,0xae,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x61,0xf9, + // :/addcontact.png + 0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x14,0x84, + // :/themes.png + 0x0,0x0,0x0,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x43,0x27, + // :/unknown.png + 0x0,0x0,0x2,0x5c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x37,0x9c, + // :/network.png + 0x0,0x0,0x1,0xd6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xde,0x41, + // :/restore.png + 0x0,0x0,0x0,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x75,0x4c, + // :/activesessions.png + 0x0,0x0,0x2,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xf8,0x44, + // :/close.png + 0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x9,0xac, + // :/contacts.png + 0x0,0x0,0x2,0x3e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x17,0x47, + // :/general.png + 0x0,0x0,0x1,0x26,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x83,0x3e, + // :/greenframe.png + 0x0,0x0,0x1,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc7,0x95, + // :/tieto-logo.png + 0x0,0x0,0x1,0xf2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xf4,0x8, + // :/hidden.png + 0x0,0x0,0x1,0x60,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xb0,0x69, + // :/contactfemale.png + 0x0,0x0,0x0,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x23,0x9a, + // :/redframe.png + 0x0,0x0,0x1,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x7e,0x58, + // :/settings.png + 0x0,0x0,0x1,0x42,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x9e,0xff, + // :/account.png + 0x0,0x0,0x2,0x78,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x46,0x5a, + // :/busy.png + 0x0,0x0,0x1,0x7a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xbb,0x62, + // :/away.png + 0x0,0x0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x34,0x56, + // :/contactmale.png + 0x0,0x0,0x1,0xb2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xce,0x6c, + +}; + +QT_BEGIN_NAMESPACE + +extern Q_CORE_EXPORT bool qRegisterResourceData + (int, const unsigned char *, const unsigned char *, const unsigned char *); + +extern Q_CORE_EXPORT bool qUnregisterResourceData + (int, const unsigned char *, const unsigned char *, const unsigned char *); + +QT_END_NAMESPACE + + +int QT_MANGLE_NAMESPACE(qInitResources_application)() +{ + QT_PREPEND_NAMESPACE(qRegisterResourceData) + (0x01, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_application)) + +int QT_MANGLE_NAMESPACE(qCleanupResources_application)() +{ + QT_PREPEND_NAMESPACE(qUnregisterResourceData) + (0x01, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +Q_DESTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qCleanupResources_application)) + diff --git a/build/release/ui_TecAccountSettingsWidget.h b/build/release/ui_TecAccountSettingsWidget.h new file mode 100644 index 0000000..3dc6e20 --- /dev/null +++ b/build/release/ui_TecAccountSettingsWidget.h @@ -0,0 +1,374 @@ +/******************************************************************************** +** Form generated from reading UI file 'TecAccountSettingsWidget.ui' +** +** Created: Fri Jun 18 17:40:58 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TECACCOUNTSETTINGSWIDGET_H +#define UI_TECACCOUNTSETTINGSWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TecAccountSettingsWidgetClass +{ +public: + QHBoxLayout *horizontalLayout_2; + QFrame *frame; + QHBoxLayout *horizontalLayout; + QVBoxLayout *applyButtonLayout_2; + QPushButton *editVCardButton; + QSpacerItem *verticalSpacer_6; + QPushButton *backButton; + QVBoxLayout *verticalLayout_2; + QFormLayout *formLayout; + QLabel *loginLabel; + QLineEdit *loginLineEdit; + QLabel *passwordLabel; + QLineEdit *passwordLineEdit; + QLabel *passwordConfirmLabel; + QLineEdit *passwordConfirmLineEdit; + QSpacerItem *verticalSpacer_5; + QSpacerItem *verticalSpacer_4; + QSpacerItem *verticalSpacer_3; + QHBoxLayout *horizontalLayout_4; + QLabel *protocolLabel; + QComboBox *protocolComboBox; + QLabel *serverLabel; + QLineEdit *serverLineEdit; + QLabel *portLabel; + QLineEdit *portLineEdit; + QSpacerItem *verticalSpacer_2; + QVBoxLayout *applyButtonLayout; + QPushButton *changePasswordButton; + QSpacerItem *verticalSpacer; + QPushButton *okButton; + + void setupUi(QWidget *TecAccountSettingsWidgetClass) + { + if (TecAccountSettingsWidgetClass->objectName().isEmpty()) + TecAccountSettingsWidgetClass->setObjectName(QString::fromUtf8("TecAccountSettingsWidgetClass")); + TecAccountSettingsWidgetClass->resize(609, 388); + TecAccountSettingsWidgetClass->setStyleSheet(QString::fromUtf8("")); + horizontalLayout_2 = new QHBoxLayout(TecAccountSettingsWidgetClass); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + frame = new QFrame(TecAccountSettingsWidgetClass); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setEnabled(true); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(frame->sizePolicy().hasHeightForWidth()); + frame->setSizePolicy(sizePolicy); + frame->setMaximumSize(QSize(16777215, 16777215)); + frame->setStyleSheet(QString::fromUtf8("")); + frame->setFrameShape(QFrame::Box); + frame->setFrameShadow(QFrame::Sunken); + frame->setLineWidth(1); + horizontalLayout = new QHBoxLayout(frame); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + applyButtonLayout_2 = new QVBoxLayout(); +#ifndef Q_OS_MAC + applyButtonLayout_2->setSpacing(-1); +#endif + applyButtonLayout_2->setObjectName(QString::fromUtf8("applyButtonLayout_2")); + applyButtonLayout_2->setSizeConstraint(QLayout::SetMinimumSize); + editVCardButton = new QPushButton(frame); + editVCardButton->setObjectName(QString::fromUtf8("editVCardButton")); + editVCardButton->setEnabled(false); + editVCardButton->setMinimumSize(QSize(80, 80)); + editVCardButton->setMaximumSize(QSize(80, 80)); + editVCardButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout_2->addWidget(editVCardButton); + + verticalSpacer_6 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + applyButtonLayout_2->addItem(verticalSpacer_6); + + backButton = new QPushButton(frame); + backButton->setObjectName(QString::fromUtf8("backButton")); + backButton->setMinimumSize(QSize(80, 80)); + backButton->setMaximumSize(QSize(80, 80)); + backButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout_2->addWidget(backButton); + + + horizontalLayout->addLayout(applyButtonLayout_2); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + formLayout = new QFormLayout(); + formLayout->setObjectName(QString::fromUtf8("formLayout")); + loginLabel = new QLabel(frame); + loginLabel->setObjectName(QString::fromUtf8("loginLabel")); + loginLabel->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + formLayout->setWidget(0, QFormLayout::LabelRole, loginLabel); + + loginLineEdit = new QLineEdit(frame); + loginLineEdit->setObjectName(QString::fromUtf8("loginLineEdit")); + loginLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + formLayout->setWidget(0, QFormLayout::FieldRole, loginLineEdit); + + passwordLabel = new QLabel(frame); + passwordLabel->setObjectName(QString::fromUtf8("passwordLabel")); + passwordLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + formLayout->setWidget(2, QFormLayout::LabelRole, passwordLabel); + + passwordLineEdit = new QLineEdit(frame); + passwordLineEdit->setObjectName(QString::fromUtf8("passwordLineEdit")); + passwordLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + passwordLineEdit->setEchoMode(QLineEdit::Password); + + formLayout->setWidget(2, QFormLayout::FieldRole, passwordLineEdit); + + passwordConfirmLabel = new QLabel(frame); + passwordConfirmLabel->setObjectName(QString::fromUtf8("passwordConfirmLabel")); + passwordConfirmLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + passwordConfirmLabel->setWordWrap(true); + passwordConfirmLabel->setIndent(-1); + + formLayout->setWidget(4, QFormLayout::LabelRole, passwordConfirmLabel); + + passwordConfirmLineEdit = new QLineEdit(frame); + passwordConfirmLineEdit->setObjectName(QString::fromUtf8("passwordConfirmLineEdit")); + passwordConfirmLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + passwordConfirmLineEdit->setEchoMode(QLineEdit::Password); + + formLayout->setWidget(4, QFormLayout::FieldRole, passwordConfirmLineEdit); + + verticalSpacer_5 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Maximum); + + formLayout->setItem(1, QFormLayout::LabelRole, verticalSpacer_5); + + verticalSpacer_4 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Maximum); + + formLayout->setItem(3, QFormLayout::LabelRole, verticalSpacer_4); + + + verticalLayout_2->addLayout(formLayout); + + verticalSpacer_3 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Maximum); + + verticalLayout_2->addItem(verticalSpacer_3); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4")); + protocolLabel = new QLabel(frame); + protocolLabel->setObjectName(QString::fromUtf8("protocolLabel")); + protocolLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(protocolLabel); + + protocolComboBox = new QComboBox(frame); + protocolComboBox->setObjectName(QString::fromUtf8("protocolComboBox")); + protocolComboBox->setMinimumSize(QSize(79, 52)); + protocolComboBox->setStyleSheet(QString::fromUtf8("QComboBox {\n" +" min-height: 48px;\n" +" font: bold 16px;\n" +"}\n" +"")); + + horizontalLayout_4->addWidget(protocolComboBox); + + serverLabel = new QLabel(frame); + serverLabel->setObjectName(QString::fromUtf8("serverLabel")); + serverLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(serverLabel); + + serverLineEdit = new QLineEdit(frame); + serverLineEdit->setObjectName(QString::fromUtf8("serverLineEdit")); + serverLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(serverLineEdit); + + portLabel = new QLabel(frame); + portLabel->setObjectName(QString::fromUtf8("portLabel")); + portLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(portLabel); + + portLineEdit = new QLineEdit(frame); + portLineEdit->setObjectName(QString::fromUtf8("portLineEdit")); + portLineEdit->setMaximumSize(QSize(80, 16777215)); + portLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" min-width: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(portLineEdit); + + + verticalLayout_2->addLayout(horizontalLayout_4); + + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer_2); + + + horizontalLayout->addLayout(verticalLayout_2); + + applyButtonLayout = new QVBoxLayout(); +#ifndef Q_OS_MAC + applyButtonLayout->setSpacing(-1); +#endif + applyButtonLayout->setObjectName(QString::fromUtf8("applyButtonLayout")); + applyButtonLayout->setSizeConstraint(QLayout::SetMinimumSize); + changePasswordButton = new QPushButton(frame); + changePasswordButton->setObjectName(QString::fromUtf8("changePasswordButton")); + changePasswordButton->setEnabled(false); + changePasswordButton->setMinimumSize(QSize(80, 80)); + changePasswordButton->setMaximumSize(QSize(80, 80)); + changePasswordButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout->addWidget(changePasswordButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + applyButtonLayout->addItem(verticalSpacer); + + okButton = new QPushButton(frame); + okButton->setObjectName(QString::fromUtf8("okButton")); + okButton->setMinimumSize(QSize(80, 80)); + okButton->setMaximumSize(QSize(80, 80)); + okButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout->addWidget(okButton); + + + horizontalLayout->addLayout(applyButtonLayout); + + + horizontalLayout_2->addWidget(frame); + + + retranslateUi(TecAccountSettingsWidgetClass); + QObject::connect(loginLineEdit, SIGNAL(textEdited(QString)), TecAccountSettingsWidgetClass, SLOT(loginEdited(QString))); + QObject::connect(protocolComboBox, SIGNAL(currentIndexChanged(QString)), TecAccountSettingsWidgetClass, SLOT(protocolEdited(QString))); + QObject::connect(okButton, SIGNAL(clicked()), TecAccountSettingsWidgetClass, SLOT(onOkButton())); + QObject::connect(changePasswordButton, SIGNAL(clicked()), TecAccountSettingsWidgetClass, SLOT(onChangePasswordButton())); + QObject::connect(serverLineEdit, SIGNAL(textEdited(QString)), TecAccountSettingsWidgetClass, SLOT(disconnectHints())); + QObject::connect(portLineEdit, SIGNAL(textEdited(QString)), TecAccountSettingsWidgetClass, SLOT(disconnectHints())); + + QMetaObject::connectSlotsByName(TecAccountSettingsWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TecAccountSettingsWidgetClass) + { + TecAccountSettingsWidgetClass->setWindowTitle(QApplication::translate("TecAccountSettingsWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + editVCardButton->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Edit\n" +"VCard", 0, QApplication::UnicodeUTF8)); + backButton->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Back", 0, QApplication::UnicodeUTF8)); + loginLabel->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Login", 0, QApplication::UnicodeUTF8)); + passwordLabel->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Password", 0, QApplication::UnicodeUTF8)); + passwordConfirmLabel->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Confirm Password", 0, QApplication::UnicodeUTF8)); + protocolLabel->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Protocol", 0, QApplication::UnicodeUTF8)); + serverLabel->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Server", 0, QApplication::UnicodeUTF8)); + portLabel->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Port", 0, QApplication::UnicodeUTF8)); + changePasswordButton->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Change\n" +"password", 0, QApplication::UnicodeUTF8)); + okButton->setText(QApplication::translate("TecAccountSettingsWidgetClass", "Ok", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TecAccountSettingsWidgetClass: public Ui_TecAccountSettingsWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TECACCOUNTSETTINGSWIDGET_H diff --git a/build/release/ui_TecChatWidget.h b/build/release/ui_TecChatWidget.h new file mode 100644 index 0000000..f282fcb --- /dev/null +++ b/build/release/ui_TecChatWidget.h @@ -0,0 +1,174 @@ +/******************************************************************************** +** Form generated from reading UI file 'TecChatWidget.ui' +** +** Created: Fri Jun 18 17:40:58 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TECCHATWIDGET_H +#define UI_TECCHATWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TecChatWidgetClass +{ +public: + QVBoxLayout *verticalLayout; + QFrame *chatFrame; + QVBoxLayout *verticalLayout_2; + QFrame *frame; + QGridLayout *gridLayout; + QTextEdit *chatTextEdit; + QHBoxLayout *horizontalLayout_2; + QPushButton *smileButton; + QTextEdit *messageTextEdit; + QPushButton *sendButton; + + void setupUi(QWidget *TecChatWidgetClass) + { + if (TecChatWidgetClass->objectName().isEmpty()) + TecChatWidgetClass->setObjectName(QString::fromUtf8("TecChatWidgetClass")); + TecChatWidgetClass->resize(718, 431); + TecChatWidgetClass->setStyleSheet(QString::fromUtf8("")); + verticalLayout = new QVBoxLayout(TecChatWidgetClass); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + chatFrame = new QFrame(TecChatWidgetClass); + chatFrame->setObjectName(QString::fromUtf8("chatFrame")); + chatFrame->setFrameShape(QFrame::StyledPanel); + chatFrame->setFrameShadow(QFrame::Raised); + verticalLayout_2 = new QVBoxLayout(chatFrame); + verticalLayout_2->setSpacing(0); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + frame = new QFrame(chatFrame); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setStyleSheet(QString::fromUtf8("")); + frame->setFrameShape(QFrame::StyledPanel); + frame->setFrameShadow(QFrame::Plain); + gridLayout = new QGridLayout(frame); + gridLayout->setContentsMargins(3, 3, 3, 3); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + gridLayout->setVerticalSpacing(-1); + chatTextEdit = new QTextEdit(frame); + chatTextEdit->setObjectName(QString::fromUtf8("chatTextEdit")); + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(chatTextEdit->sizePolicy().hasHeightForWidth()); + chatTextEdit->setSizePolicy(sizePolicy); + chatTextEdit->setStyleSheet(QString::fromUtf8("QTextEdit {\n" +" background-color: none;\n" +"}")); + chatTextEdit->setFrameShape(QFrame::Box); + chatTextEdit->setFrameShadow(QFrame::Sunken); + chatTextEdit->setLineWidth(1); + chatTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + chatTextEdit->setReadOnly(true); + + gridLayout->addWidget(chatTextEdit, 0, 0, 1, 1); + + + verticalLayout_2->addWidget(frame); + + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setSpacing(4); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + horizontalLayout_2->setContentsMargins(0, 0, -1, -1); + smileButton = new QPushButton(chatFrame); + smileButton->setObjectName(QString::fromUtf8("smileButton")); + QFont font; + font.setPointSize(14); + font.setBold(true); + font.setWeight(75); + smileButton->setFont(font); + smileButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + horizontalLayout_2->addWidget(smileButton); + + messageTextEdit = new QTextEdit(chatFrame); + messageTextEdit->setObjectName(QString::fromUtf8("messageTextEdit")); + QSizePolicy sizePolicy1(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(messageTextEdit->sizePolicy().hasHeightForWidth()); + messageTextEdit->setSizePolicy(sizePolicy1); + messageTextEdit->setMaximumSize(QSize(16777215, 80)); + messageTextEdit->setStyleSheet(QString::fromUtf8("QTextEdit {\n" +" background-color: none;\n" +"}")); + messageTextEdit->setFrameShape(QFrame::Box); + messageTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + messageTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + horizontalLayout_2->addWidget(messageTextEdit); + + sendButton = new QPushButton(chatFrame); + sendButton->setObjectName(QString::fromUtf8("sendButton")); + QSizePolicy sizePolicy2(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + sizePolicy2.setHorizontalStretch(0); + sizePolicy2.setVerticalStretch(0); + sizePolicy2.setHeightForWidth(sendButton->sizePolicy().hasHeightForWidth()); + sendButton->setSizePolicy(sizePolicy2); + sendButton->setMaximumSize(QSize(80, 80)); + sendButton->setFont(font); + sendButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}\n" +"")); + + horizontalLayout_2->addWidget(sendButton); + + + verticalLayout_2->addLayout(horizontalLayout_2); + + + verticalLayout->addWidget(chatFrame); + + + retranslateUi(TecChatWidgetClass); + QObject::connect(sendButton, SIGNAL(clicked()), TecChatWidgetClass, SLOT(pressedSendButton())); + QObject::connect(sendButton, SIGNAL(clicked()), messageTextEdit, SLOT(setFocus())); + + QMetaObject::connectSlotsByName(TecChatWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TecChatWidgetClass) + { + TecChatWidgetClass->setWindowTitle(QApplication::translate("TecChatWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + smileButton->setText(QApplication::translate("TecChatWidgetClass", "Smile", 0, QApplication::UnicodeUTF8)); + sendButton->setText(QApplication::translate("TecChatWidgetClass", "Send", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TecChatWidgetClass: public Ui_TecChatWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TECCHATWIDGET_H diff --git a/build/release/ui_TecEmoticonsDialog.h b/build/release/ui_TecEmoticonsDialog.h new file mode 100644 index 0000000..23c02af --- /dev/null +++ b/build/release/ui_TecEmoticonsDialog.h @@ -0,0 +1,97 @@ +/******************************************************************************** +** Form generated from reading UI file 'TecEmoticonsDialog.ui' +** +** Created: Fri Jun 18 17:40:58 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TECEMOTICONSDIALOG_H +#define UI_TECEMOTICONSDIALOG_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TecEmoticonsDialogClass +{ +public: + QGridLayout *gridLayout; + QListWidget *emoticonsListWidget; + QSpacerItem *horizontalSpacer; + QPushButton *backButton; + QSpacerItem *horizontalSpacer_2; + + void setupUi(QDialog *TecEmoticonsDialogClass) + { + if (TecEmoticonsDialogClass->objectName().isEmpty()) + TecEmoticonsDialogClass->setObjectName(QString::fromUtf8("TecEmoticonsDialogClass")); + TecEmoticonsDialogClass->resize(418, 310); + gridLayout = new QGridLayout(TecEmoticonsDialogClass); + gridLayout->setSpacing(0); + gridLayout->setContentsMargins(11, 11, 11, 11); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + gridLayout->setContentsMargins(0, 9, 9, 0); + emoticonsListWidget = new QListWidget(TecEmoticonsDialogClass); + emoticonsListWidget->setObjectName(QString::fromUtf8("emoticonsListWidget")); + emoticonsListWidget->setProperty("showDropIndicator", QVariant(false)); + emoticonsListWidget->setSpacing(10); + emoticonsListWidget->setViewMode(QListView::ListMode); + + gridLayout->addWidget(emoticonsListWidget, 0, 0, 1, 3); + + horizontalSpacer = new QSpacerItem(142, 77, QSizePolicy::Expanding, QSizePolicy::Minimum); + + gridLayout->addItem(horizontalSpacer, 1, 0, 1, 1); + + backButton = new QPushButton(TecEmoticonsDialogClass); + backButton->setObjectName(QString::fromUtf8("backButton")); + backButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 40px;\n" +" min-width: 80px;\n" +" max-height: 40px;\n" +" max-width: 80px;\n" +"}")); + + gridLayout->addWidget(backButton, 1, 1, 1, 1); + + horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + gridLayout->addItem(horizontalSpacer_2, 1, 2, 1, 1); + + + retranslateUi(TecEmoticonsDialogClass); + + emoticonsListWidget->setCurrentRow(-1); + + + QMetaObject::connectSlotsByName(TecEmoticonsDialogClass); + } // setupUi + + void retranslateUi(QDialog *TecEmoticonsDialogClass) + { + TecEmoticonsDialogClass->setWindowTitle(QApplication::translate("TecEmoticonsDialogClass", "Emoticons", 0, QApplication::UnicodeUTF8)); + backButton->setText(QApplication::translate("TecEmoticonsDialogClass", "Back", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TecEmoticonsDialogClass: public Ui_TecEmoticonsDialogClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TECEMOTICONSDIALOG_H diff --git a/build/release/ui_TecGeneralSettingsWidget.h b/build/release/ui_TecGeneralSettingsWidget.h new file mode 100644 index 0000000..cb86e61 --- /dev/null +++ b/build/release/ui_TecGeneralSettingsWidget.h @@ -0,0 +1,322 @@ +/******************************************************************************** +** Form generated from reading UI file 'TecGeneralSettingsWidget.ui' +** +** Created: Fri Jun 18 17:40:58 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TECGENERALSETTINGSWIDGET_H +#define UI_TECGENERALSETTINGSWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TecGeneralSettingsWidgetClass +{ +public: + QVBoxLayout *verticalLayout; + QFrame *generalSettingsFrame; + QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout_2; + QSpacerItem *verticalSpacer; + QPushButton *backButton; + QGroupBox *sortingGroupBox; + QGridLayout *gridLayout_4; + QSpacerItem *verticalSpacer_3; + QSpacerItem *verticalSpacer_2; + QSpacerItem *verticalSpacer_4; + QSpacerItem *verticalSpacer_5; + QRadioButton *alphaRadioButton; + QRadioButton *dragDropRadioButton; + QRadioButton *presenceRadioButton; + QLabel *alphaLabel; + QLabel *presence; + QLabel *dragDropLabel; + QGroupBox *authorizationGroupBox; + QGridLayout *gridLayout_5; + QRadioButton *askRadioButton; + QRadioButton *denyRadioButton; + QRadioButton *acceptRadioButton; + QSpacerItem *verticalSpacer_7; + QSpacerItem *verticalSpacer_8; + QSpacerItem *verticalSpacer_6; + QSpacerItem *verticalSpacer_9; + QVBoxLayout *verticalLayout_3; + QSpacerItem *verticalSpacer_1; + QPushButton *okButton; + + void setupUi(QWidget *TecGeneralSettingsWidgetClass) + { + if (TecGeneralSettingsWidgetClass->objectName().isEmpty()) + TecGeneralSettingsWidgetClass->setObjectName(QString::fromUtf8("TecGeneralSettingsWidgetClass")); + TecGeneralSettingsWidgetClass->resize(773, 441); + TecGeneralSettingsWidgetClass->setProperty("sizeHint", QVariant(QSize(705, 568))); + verticalLayout = new QVBoxLayout(TecGeneralSettingsWidgetClass); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + generalSettingsFrame = new QFrame(TecGeneralSettingsWidgetClass); + generalSettingsFrame->setObjectName(QString::fromUtf8("generalSettingsFrame")); + generalSettingsFrame->setFrameShape(QFrame::StyledPanel); + generalSettingsFrame->setFrameShadow(QFrame::Raised); + horizontalLayout = new QHBoxLayout(generalSettingsFrame); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer); + + backButton = new QPushButton(generalSettingsFrame); + backButton->setObjectName(QString::fromUtf8("backButton")); + backButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(backButton); + + + horizontalLayout->addLayout(verticalLayout_2); + + sortingGroupBox = new QGroupBox(generalSettingsFrame); + sortingGroupBox->setObjectName(QString::fromUtf8("sortingGroupBox")); + sortingGroupBox->setEnabled(false); + QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(sortingGroupBox->sizePolicy().hasHeightForWidth()); + sortingGroupBox->setSizePolicy(sizePolicy); + sortingGroupBox->setStyleSheet(QString::fromUtf8("QGroupBox {\n" +" font: bold 12px;\n" +"}")); + gridLayout_4 = new QGridLayout(sortingGroupBox); + gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4")); + verticalSpacer_3 = new QSpacerItem(20, 75, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_3, 4, 0, 1, 1); + + verticalSpacer_2 = new QSpacerItem(20, 85, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_2, 1, 0, 1, 1); + + verticalSpacer_4 = new QSpacerItem(20, 75, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_4, 7, 0, 1, 1); + + verticalSpacer_5 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_5, 11, 0, 1, 1); + + alphaRadioButton = new QRadioButton(sortingGroupBox); + alphaRadioButton->setObjectName(QString::fromUtf8("alphaRadioButton")); + QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Fixed); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(alphaRadioButton->sizePolicy().hasHeightForWidth()); + alphaRadioButton->setSizePolicy(sizePolicy1); + alphaRadioButton->setMinimumSize(QSize(0, 25)); + alphaRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" background-color: none;\n" +" min-height: 25px;\n" +"}")); + alphaRadioButton->setChecked(true); + + gridLayout_4->addWidget(alphaRadioButton, 2, 0, 1, 1); + + dragDropRadioButton = new QRadioButton(sortingGroupBox); + dragDropRadioButton->setObjectName(QString::fromUtf8("dragDropRadioButton")); + dragDropRadioButton->setMinimumSize(QSize(0, 25)); + dragDropRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" background-color: none;\n" +" min-height: 25px;\n" +"}")); + + gridLayout_4->addWidget(dragDropRadioButton, 9, 0, 1, 1); + + presenceRadioButton = new QRadioButton(sortingGroupBox); + presenceRadioButton->setObjectName(QString::fromUtf8("presenceRadioButton")); + presenceRadioButton->setEnabled(false); + presenceRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" background-color: none;\n" +" min-height: 25px;\n" +"}")); + + gridLayout_4->addWidget(presenceRadioButton, 5, 0, 1, 1); + + alphaLabel = new QLabel(sortingGroupBox); + alphaLabel->setObjectName(QString::fromUtf8("alphaLabel")); + QFont font; + font.setBold(false); + font.setItalic(false); + font.setWeight(50); + alphaLabel->setFont(font); + alphaLabel->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" font: 14px;\n" +"}")); + + gridLayout_4->addWidget(alphaLabel, 3, 0, 1, 1); + + presence = new QLabel(sortingGroupBox); + presence->setObjectName(QString::fromUtf8("presence")); + presence->setFont(font); + presence->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" font: 14px;\n" +"}")); + + gridLayout_4->addWidget(presence, 6, 0, 1, 1); + + dragDropLabel = new QLabel(sortingGroupBox); + dragDropLabel->setObjectName(QString::fromUtf8("dragDropLabel")); + dragDropLabel->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" font: 14px;\n" +"}")); + + gridLayout_4->addWidget(dragDropLabel, 10, 0, 1, 1); + + + horizontalLayout->addWidget(sortingGroupBox); + + authorizationGroupBox = new QGroupBox(generalSettingsFrame); + authorizationGroupBox->setObjectName(QString::fromUtf8("authorizationGroupBox")); + authorizationGroupBox->setEnabled(false); + sizePolicy.setHeightForWidth(authorizationGroupBox->sizePolicy().hasHeightForWidth()); + authorizationGroupBox->setSizePolicy(sizePolicy); + authorizationGroupBox->setStyleSheet(QString::fromUtf8("QGroupBox {\n" +" font: bold 12px;\n" +"}")); + authorizationGroupBox->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + gridLayout_5 = new QGridLayout(authorizationGroupBox); + gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5")); + askRadioButton = new QRadioButton(authorizationGroupBox); + askRadioButton->setObjectName(QString::fromUtf8("askRadioButton")); + askRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +"\n" +" min-height: 48px;\n" +"}")); + askRadioButton->setChecked(true); + + gridLayout_5->addWidget(askRadioButton, 2, 0, 1, 1); + + denyRadioButton = new QRadioButton(authorizationGroupBox); + denyRadioButton->setObjectName(QString::fromUtf8("denyRadioButton")); + denyRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" min-height: 48px;\n" +"}")); + + gridLayout_5->addWidget(denyRadioButton, 6, 0, 1, 1); + + acceptRadioButton = new QRadioButton(authorizationGroupBox); + acceptRadioButton->setObjectName(QString::fromUtf8("acceptRadioButton")); + acceptRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" min-height: 48px;\n" +"}")); + + gridLayout_5->addWidget(acceptRadioButton, 4, 0, 1, 1); + + verticalSpacer_7 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_7, 3, 0, 1, 1); + + verticalSpacer_8 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_8, 5, 0, 1, 1); + + verticalSpacer_6 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_6, 1, 0, 1, 1); + + verticalSpacer_9 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_9, 7, 0, 1, 1); + + + horizontalLayout->addWidget(authorizationGroupBox); + + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + verticalSpacer_1 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_3->addItem(verticalSpacer_1); + + okButton = new QPushButton(generalSettingsFrame); + okButton->setObjectName(QString::fromUtf8("okButton")); + okButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_3->addWidget(okButton); + + + horizontalLayout->addLayout(verticalLayout_3); + + + verticalLayout->addWidget(generalSettingsFrame); + + + retranslateUi(TecGeneralSettingsWidgetClass); + + QMetaObject::connectSlotsByName(TecGeneralSettingsWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TecGeneralSettingsWidgetClass) + { + TecGeneralSettingsWidgetClass->setWindowTitle(QApplication::translate("TecGeneralSettingsWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + backButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Back", 0, QApplication::UnicodeUTF8)); + sortingGroupBox->setTitle(QApplication::translate("TecGeneralSettingsWidgetClass", "Contact list sorting", 0, QApplication::UnicodeUTF8)); + alphaRadioButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Sort alphabeticaly", 0, QApplication::UnicodeUTF8)); + dragDropRadioButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Disable sorting", 0, QApplication::UnicodeUTF8)); + presenceRadioButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Sort by status", 0, QApplication::UnicodeUTF8)); + alphaLabel->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Sorts contact list items alphabetically", 0, QApplication::UnicodeUTF8)); + presence->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Sorts contact list items by status", 0, QApplication::UnicodeUTF8)); + dragDropLabel->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Disables sorting and enables drag\n" +"and dropping", 0, QApplication::UnicodeUTF8)); + authorizationGroupBox->setTitle(QApplication::translate("TecGeneralSettingsWidgetClass", "Contact authorization rule", 0, QApplication::UnicodeUTF8)); + askRadioButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Ask", 0, QApplication::UnicodeUTF8)); + denyRadioButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Always deny", 0, QApplication::UnicodeUTF8)); + acceptRadioButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Always accept", 0, QApplication::UnicodeUTF8)); + okButton->setText(QApplication::translate("TecGeneralSettingsWidgetClass", "Ok", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TecGeneralSettingsWidgetClass: public Ui_TecGeneralSettingsWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TECGENERALSETTINGSWIDGET_H diff --git a/build/release/ui_TecThemesSettingsWidget.h b/build/release/ui_TecThemesSettingsWidget.h new file mode 100644 index 0000000..0c26550 --- /dev/null +++ b/build/release/ui_TecThemesSettingsWidget.h @@ -0,0 +1,192 @@ +/******************************************************************************** +** Form generated from reading UI file 'TecThemesSettingsWidget.ui' +** +** Created: Fri Jun 18 17:40:58 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TECTHEMESSETTINGSWIDGET_H +#define UI_TECTHEMESSETTINGSWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TecThemesSettingsWidgetClass +{ +public: + QGridLayout *gridLayout_2; + QFrame *frame; + QGridLayout *gridLayout; + QVBoxLayout *verticalLayout_3; + QSpacerItem *verticalSpacer_2; + QPushButton *backThemeButton; + QVBoxLayout *verticalLayout; + QListWidget *themesListWidget; + QVBoxLayout *verticalLayout_2; + QPushButton *addThemeButton; + QSpacerItem *verticalSpacer; + QPushButton *applyThemeButton; + + void setupUi(QWidget *TecThemesSettingsWidgetClass) + { + if (TecThemesSettingsWidgetClass->objectName().isEmpty()) + TecThemesSettingsWidgetClass->setObjectName(QString::fromUtf8("TecThemesSettingsWidgetClass")); + TecThemesSettingsWidgetClass->resize(593, 405); + TecThemesSettingsWidgetClass->setStyleSheet(QString::fromUtf8("")); + gridLayout_2 = new QGridLayout(TecThemesSettingsWidgetClass); + gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); + frame = new QFrame(TecThemesSettingsWidgetClass); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setEnabled(true); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(frame->sizePolicy().hasHeightForWidth()); + frame->setSizePolicy(sizePolicy); + frame->setStyleSheet(QString::fromUtf8("")); + frame->setFrameShape(QFrame::Box); + frame->setFrameShadow(QFrame::Sunken); + frame->setLineWidth(1); + gridLayout = new QGridLayout(frame); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_3->addItem(verticalSpacer_2); + + backThemeButton = new QPushButton(frame); + backThemeButton->setObjectName(QString::fromUtf8("backThemeButton")); + backThemeButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_3->addWidget(backThemeButton); + + + gridLayout->addLayout(verticalLayout_3, 0, 0, 1, 1); + + verticalLayout = new QVBoxLayout(); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + themesListWidget = new QListWidget(frame); + themesListWidget->setObjectName(QString::fromUtf8("themesListWidget")); + QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(themesListWidget->sizePolicy().hasHeightForWidth()); + themesListWidget->setSizePolicy(sizePolicy1); + themesListWidget->setAutoFillBackground(true); + themesListWidget->setStyleSheet(QString::fromUtf8("QListView {\n" +" font: bold 30px;\n" +"}\n" +"\n" +"")); + themesListWidget->setLineWidth(1); + themesListWidget->setMidLineWidth(1); + themesListWidget->setProperty("showDropIndicator", QVariant(false)); + themesListWidget->setAlternatingRowColors(false); + themesListWidget->setSelectionMode(QAbstractItemView::SingleSelection); + themesListWidget->setSelectionBehavior(QAbstractItemView::SelectItems); + themesListWidget->setIconSize(QSize(0, 0)); + themesListWidget->setTextElideMode(Qt::ElideMiddle); + themesListWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); + themesListWidget->setMovement(QListView::Static); + themesListWidget->setFlow(QListView::TopToBottom); + themesListWidget->setProperty("isWrapping", QVariant(false)); + themesListWidget->setResizeMode(QListView::Adjust); + themesListWidget->setSpacing(5); + themesListWidget->setViewMode(QListView::ListMode); + themesListWidget->setModelColumn(0); + themesListWidget->setWordWrap(true); + themesListWidget->setSelectionRectVisible(true); + themesListWidget->setSortingEnabled(false); + + verticalLayout->addWidget(themesListWidget); + + + gridLayout->addLayout(verticalLayout, 0, 1, 1, 1); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + addThemeButton = new QPushButton(frame); + addThemeButton->setObjectName(QString::fromUtf8("addThemeButton")); + addThemeButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(addThemeButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer); + + applyThemeButton = new QPushButton(frame); + applyThemeButton->setObjectName(QString::fromUtf8("applyThemeButton")); + applyThemeButton->setAutoFillBackground(false); + applyThemeButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(applyThemeButton); + + + gridLayout->addLayout(verticalLayout_2, 0, 2, 1, 1); + + + gridLayout_2->addWidget(frame, 0, 0, 1, 1); + + + retranslateUi(TecThemesSettingsWidgetClass); + + themesListWidget->setCurrentRow(-1); + + + QMetaObject::connectSlotsByName(TecThemesSettingsWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TecThemesSettingsWidgetClass) + { + TecThemesSettingsWidgetClass->setWindowTitle(QApplication::translate("TecThemesSettingsWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + backThemeButton->setText(QApplication::translate("TecThemesSettingsWidgetClass", "Back", 0, QApplication::UnicodeUTF8)); + addThemeButton->setText(QApplication::translate("TecThemesSettingsWidgetClass", "Add theme", 0, QApplication::UnicodeUTF8)); + applyThemeButton->setText(QApplication::translate("TecThemesSettingsWidgetClass", "Apply", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TecThemesSettingsWidgetClass: public Ui_TecThemesSettingsWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TECTHEMESSETTINGSWIDGET_H diff --git a/build/release/ui_TecUserInfoWidget.h b/build/release/ui_TecUserInfoWidget.h new file mode 100644 index 0000000..fe28744 --- /dev/null +++ b/build/release/ui_TecUserInfoWidget.h @@ -0,0 +1,329 @@ +/******************************************************************************** +** Form generated from reading UI file 'TecUserInfoWidget.ui' +** +** Created: Fri Jun 18 17:40:58 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TECUSERINFOWIDGET_H +#define UI_TECUSERINFOWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TecUserInfoWidgetClass +{ +public: + QVBoxLayout *verticalLayout_5; + QFrame *userInfoFrame; + QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout; + QPushButton *pictureButton; + QSpacerItem *verticalSpacer; + QPushButton *cancelButton; + QVBoxLayout *verticalLayout_3; + QHBoxLayout *horizontalLayout_2; + QLabel *uidLabel; + QLineEdit *uidLineEdit; + QSpacerItem *horizontalSpacer_4; + QHBoxLayout *horizontalLayout_4; + QLabel *nameLabel; + QLineEdit *nameLineEdit; + QSpacerItem *horizontalSpacer_3; + QPushButton *resolveButton; + QHBoxLayout *horizontalLayout_5; + QLabel *genderLabel; + QComboBox *genderComboBox; + QSpacerItem *horizontalSpacer_6; + QSpacerItem *verticalSpacer_3; + QVBoxLayout *verticalLayout_2; + QSpacerItem *verticalSpacer_2; + QPushButton *okButton; + + void setupUi(QWidget *TecUserInfoWidgetClass) + { + if (TecUserInfoWidgetClass->objectName().isEmpty()) + TecUserInfoWidgetClass->setObjectName(QString::fromUtf8("TecUserInfoWidgetClass")); + TecUserInfoWidgetClass->setWindowModality(Qt::NonModal); + TecUserInfoWidgetClass->resize(544, 256); + TecUserInfoWidgetClass->setFocusPolicy(Qt::ClickFocus); + TecUserInfoWidgetClass->setStyleSheet(QString::fromUtf8("")); + verticalLayout_5 = new QVBoxLayout(TecUserInfoWidgetClass); + verticalLayout_5->setObjectName(QString::fromUtf8("verticalLayout_5")); + userInfoFrame = new QFrame(TecUserInfoWidgetClass); + userInfoFrame->setObjectName(QString::fromUtf8("userInfoFrame")); + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(userInfoFrame->sizePolicy().hasHeightForWidth()); + userInfoFrame->setSizePolicy(sizePolicy); + userInfoFrame->setStyleSheet(QString::fromUtf8("QFrame{\n" +"border:none;\n" +"}")); + userInfoFrame->setFrameShape(QFrame::StyledPanel); + horizontalLayout = new QHBoxLayout(userInfoFrame); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + verticalLayout = new QVBoxLayout(); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + pictureButton = new QPushButton(userInfoFrame); + pictureButton->setObjectName(QString::fromUtf8("pictureButton")); + QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Fixed); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(pictureButton->sizePolicy().hasHeightForWidth()); + pictureButton->setSizePolicy(sizePolicy1); + pictureButton->setMinimumSize(QSize(80, 80)); + pictureButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + pictureButton->setIconSize(QSize(68, 68)); + pictureButton->setFlat(false); + + verticalLayout->addWidget(pictureButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout->addItem(verticalSpacer); + + cancelButton = new QPushButton(userInfoFrame); + cancelButton->setObjectName(QString::fromUtf8("cancelButton")); + cancelButton->setMinimumSize(QSize(80, 80)); + cancelButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout->addWidget(cancelButton); + + + horizontalLayout->addLayout(verticalLayout); + + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + uidLabel = new QLabel(userInfoFrame); + uidLabel->setObjectName(QString::fromUtf8("uidLabel")); + uidLabel->setMinimumSize(QSize(30, 0)); + uidLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" border-radius: none;\n" +" background: none;\n" +" font: bold 12px;\n" +"}")); + uidLabel->setFrameShape(QFrame::StyledPanel); + uidLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + horizontalLayout_2->addWidget(uidLabel); + + uidLineEdit = new QLineEdit(userInfoFrame); + uidLineEdit->setObjectName(QString::fromUtf8("uidLineEdit")); + QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Maximum); + sizePolicy2.setHorizontalStretch(48); + sizePolicy2.setVerticalStretch(48); + sizePolicy2.setHeightForWidth(uidLineEdit->sizePolicy().hasHeightForWidth()); + uidLineEdit->setSizePolicy(sizePolicy2); + uidLineEdit->setMinimumSize(QSize(0, 48)); + QFont font; + font.setBold(true); + font.setItalic(false); + font.setWeight(75); + uidLineEdit->setFont(font); + uidLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_2->addWidget(uidLineEdit); + + horizontalSpacer_4 = new QSpacerItem(20, 20, QSizePolicy::Maximum, QSizePolicy::Minimum); + + horizontalLayout_2->addItem(horizontalSpacer_4); + + + verticalLayout_3->addLayout(horizontalLayout_2); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4")); + nameLabel = new QLabel(userInfoFrame); + nameLabel->setObjectName(QString::fromUtf8("nameLabel")); + nameLabel->setMinimumSize(QSize(30, 0)); + nameLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" border-radius: none;\n" +" background: none;\n" +" font: bold 12px;\n" +"}")); + nameLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + horizontalLayout_4->addWidget(nameLabel); + + nameLineEdit = new QLineEdit(userInfoFrame); + nameLineEdit->setObjectName(QString::fromUtf8("nameLineEdit")); + QSizePolicy sizePolicy3(QSizePolicy::Expanding, QSizePolicy::Fixed); + sizePolicy3.setHorizontalStretch(0); + sizePolicy3.setVerticalStretch(48); + sizePolicy3.setHeightForWidth(nameLineEdit->sizePolicy().hasHeightForWidth()); + nameLineEdit->setSizePolicy(sizePolicy3); + nameLineEdit->setMinimumSize(QSize(0, 48)); + nameLineEdit->setFont(font); + nameLineEdit->setLayoutDirection(Qt::LeftToRight); + nameLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + nameLineEdit->setReadOnly(false); + + horizontalLayout_4->addWidget(nameLineEdit); + + horizontalSpacer_3 = new QSpacerItem(20, 20, QSizePolicy::Maximum, QSizePolicy::Minimum); + + horizontalLayout_4->addItem(horizontalSpacer_3); + + resolveButton = new QPushButton(userInfoFrame); + resolveButton->setObjectName(QString::fromUtf8("resolveButton")); + resolveButton->setMinimumSize(QSize(80, 40)); + resolveButton->setMaximumSize(QSize(80, 40)); + resolveButton->setFont(font); + resolveButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 40px;\n" +" min-width: 80px;\n" +" max-height: 40px;\n" +" max-width: 80px;\n" +"}")); + + horizontalLayout_4->addWidget(resolveButton); + + + verticalLayout_3->addLayout(horizontalLayout_4); + + horizontalLayout_5 = new QHBoxLayout(); + horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5")); + genderLabel = new QLabel(userInfoFrame); + genderLabel->setObjectName(QString::fromUtf8("genderLabel")); + genderLabel->setMinimumSize(QSize(30, 0)); + genderLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" border-radius: none;\n" +" background: none;\n" +" font: bold 12px;\n" +"}")); + genderLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + horizontalLayout_5->addWidget(genderLabel); + + genderComboBox = new QComboBox(userInfoFrame); + genderComboBox->setObjectName(QString::fromUtf8("genderComboBox")); + QSizePolicy sizePolicy4(QSizePolicy::Preferred, QSizePolicy::Fixed); + sizePolicy4.setHorizontalStretch(0); + sizePolicy4.setVerticalStretch(48); + sizePolicy4.setHeightForWidth(genderComboBox->sizePolicy().hasHeightForWidth()); + genderComboBox->setSizePolicy(sizePolicy4); + genderComboBox->setMinimumSize(QSize(110, 52)); + genderComboBox->setFont(font); + genderComboBox->setAutoFillBackground(false); + genderComboBox->setStyleSheet(QString::fromUtf8("QComboBox {\n" +" min-height: 48px;\n" +" font: bold 16px;\n" +"}\n" +"")); + + horizontalLayout_5->addWidget(genderComboBox); + + horizontalSpacer_6 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + horizontalLayout_5->addItem(horizontalSpacer_6); + + + verticalLayout_3->addLayout(horizontalLayout_5); + + verticalSpacer_3 = new QSpacerItem(327, 35, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_3->addItem(verticalSpacer_3); + + + horizontalLayout->addLayout(verticalLayout_3); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer_2); + + okButton = new QPushButton(userInfoFrame); + okButton->setObjectName(QString::fromUtf8("okButton")); + okButton->setMinimumSize(QSize(80, 80)); + okButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(okButton); + + + horizontalLayout->addLayout(verticalLayout_2); + + + verticalLayout_5->addWidget(userInfoFrame); + + + retranslateUi(TecUserInfoWidgetClass); + + genderComboBox->setCurrentIndex(-1); + + + QMetaObject::connectSlotsByName(TecUserInfoWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TecUserInfoWidgetClass) + { + TecUserInfoWidgetClass->setWindowTitle(QApplication::translate("TecUserInfoWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + pictureButton->setText(QString()); + cancelButton->setText(QApplication::translate("TecUserInfoWidgetClass", "Cancel", 0, QApplication::UnicodeUTF8)); + uidLabel->setText(QApplication::translate("TecUserInfoWidgetClass", "User id:", 0, QApplication::UnicodeUTF8)); + uidLineEdit->setText(QString()); + nameLabel->setText(QApplication::translate("TecUserInfoWidgetClass", "Name:", 0, QApplication::UnicodeUTF8)); + nameLineEdit->setText(QString()); + resolveButton->setText(QApplication::translate("TecUserInfoWidgetClass", "Resolve", 0, QApplication::UnicodeUTF8)); + genderLabel->setText(QApplication::translate("TecUserInfoWidgetClass", "Gender:", 0, QApplication::UnicodeUTF8)); + okButton->setText(QApplication::translate("TecUserInfoWidgetClass", "OK", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TecUserInfoWidgetClass: public Ui_TecUserInfoWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TECUSERINFOWIDGET_H diff --git a/build/release/ui_TocAccountSettingsWidget.h b/build/release/ui_TocAccountSettingsWidget.h new file mode 100644 index 0000000..6988e4d --- /dev/null +++ b/build/release/ui_TocAccountSettingsWidget.h @@ -0,0 +1,374 @@ +/******************************************************************************** +** Form generated from reading UI file 'TocAccountSettingsWidget.ui' +** +** Created: Thu Jul 8 08:48:05 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TOCACCOUNTSETTINGSWIDGET_H +#define UI_TOCACCOUNTSETTINGSWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocAccountSettingsWidgetClass +{ +public: + QHBoxLayout *horizontalLayout_2; + QFrame *frame; + QHBoxLayout *horizontalLayout; + QVBoxLayout *applyButtonLayout_2; + QPushButton *editVCardButton; + QSpacerItem *verticalSpacer_6; + QPushButton *backButton; + QVBoxLayout *verticalLayout_2; + QFormLayout *formLayout; + QLabel *loginLabel; + QLineEdit *loginLineEdit; + QLabel *passwordLabel; + QLineEdit *passwordLineEdit; + QLabel *passwordConfirmLabel; + QLineEdit *passwordConfirmLineEdit; + QSpacerItem *verticalSpacer_5; + QSpacerItem *verticalSpacer_4; + QSpacerItem *verticalSpacer_3; + QHBoxLayout *horizontalLayout_4; + QLabel *protocolLabel; + QComboBox *protocolComboBox; + QLabel *serverLabel; + QLineEdit *serverLineEdit; + QLabel *portLabel; + QLineEdit *portLineEdit; + QSpacerItem *verticalSpacer_2; + QVBoxLayout *applyButtonLayout; + QPushButton *changePasswordButton; + QSpacerItem *verticalSpacer; + QPushButton *okButton; + + void setupUi(QWidget *TocAccountSettingsWidgetClass) + { + if (TocAccountSettingsWidgetClass->objectName().isEmpty()) + TocAccountSettingsWidgetClass->setObjectName(QString::fromUtf8("TocAccountSettingsWidgetClass")); + TocAccountSettingsWidgetClass->resize(609, 388); + TocAccountSettingsWidgetClass->setStyleSheet(QString::fromUtf8("")); + horizontalLayout_2 = new QHBoxLayout(TocAccountSettingsWidgetClass); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + frame = new QFrame(TocAccountSettingsWidgetClass); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setEnabled(true); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(frame->sizePolicy().hasHeightForWidth()); + frame->setSizePolicy(sizePolicy); + frame->setMaximumSize(QSize(16777215, 16777215)); + frame->setStyleSheet(QString::fromUtf8("")); + frame->setFrameShape(QFrame::Box); + frame->setFrameShadow(QFrame::Sunken); + frame->setLineWidth(1); + horizontalLayout = new QHBoxLayout(frame); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + applyButtonLayout_2 = new QVBoxLayout(); +#ifndef Q_OS_MAC + applyButtonLayout_2->setSpacing(-1); +#endif + applyButtonLayout_2->setObjectName(QString::fromUtf8("applyButtonLayout_2")); + applyButtonLayout_2->setSizeConstraint(QLayout::SetMinimumSize); + editVCardButton = new QPushButton(frame); + editVCardButton->setObjectName(QString::fromUtf8("editVCardButton")); + editVCardButton->setEnabled(false); + editVCardButton->setMinimumSize(QSize(80, 80)); + editVCardButton->setMaximumSize(QSize(80, 80)); + editVCardButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout_2->addWidget(editVCardButton); + + verticalSpacer_6 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + applyButtonLayout_2->addItem(verticalSpacer_6); + + backButton = new QPushButton(frame); + backButton->setObjectName(QString::fromUtf8("backButton")); + backButton->setMinimumSize(QSize(80, 80)); + backButton->setMaximumSize(QSize(80, 80)); + backButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout_2->addWidget(backButton); + + + horizontalLayout->addLayout(applyButtonLayout_2); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + formLayout = new QFormLayout(); + formLayout->setObjectName(QString::fromUtf8("formLayout")); + loginLabel = new QLabel(frame); + loginLabel->setObjectName(QString::fromUtf8("loginLabel")); + loginLabel->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + formLayout->setWidget(0, QFormLayout::LabelRole, loginLabel); + + loginLineEdit = new QLineEdit(frame); + loginLineEdit->setObjectName(QString::fromUtf8("loginLineEdit")); + loginLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + formLayout->setWidget(0, QFormLayout::FieldRole, loginLineEdit); + + passwordLabel = new QLabel(frame); + passwordLabel->setObjectName(QString::fromUtf8("passwordLabel")); + passwordLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + formLayout->setWidget(2, QFormLayout::LabelRole, passwordLabel); + + passwordLineEdit = new QLineEdit(frame); + passwordLineEdit->setObjectName(QString::fromUtf8("passwordLineEdit")); + passwordLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + passwordLineEdit->setEchoMode(QLineEdit::Password); + + formLayout->setWidget(2, QFormLayout::FieldRole, passwordLineEdit); + + passwordConfirmLabel = new QLabel(frame); + passwordConfirmLabel->setObjectName(QString::fromUtf8("passwordConfirmLabel")); + passwordConfirmLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + passwordConfirmLabel->setWordWrap(true); + passwordConfirmLabel->setIndent(-1); + + formLayout->setWidget(4, QFormLayout::LabelRole, passwordConfirmLabel); + + passwordConfirmLineEdit = new QLineEdit(frame); + passwordConfirmLineEdit->setObjectName(QString::fromUtf8("passwordConfirmLineEdit")); + passwordConfirmLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + passwordConfirmLineEdit->setEchoMode(QLineEdit::Password); + + formLayout->setWidget(4, QFormLayout::FieldRole, passwordConfirmLineEdit); + + verticalSpacer_5 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Maximum); + + formLayout->setItem(1, QFormLayout::LabelRole, verticalSpacer_5); + + verticalSpacer_4 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Maximum); + + formLayout->setItem(3, QFormLayout::LabelRole, verticalSpacer_4); + + + verticalLayout_2->addLayout(formLayout); + + verticalSpacer_3 = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Maximum); + + verticalLayout_2->addItem(verticalSpacer_3); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4")); + protocolLabel = new QLabel(frame); + protocolLabel->setObjectName(QString::fromUtf8("protocolLabel")); + protocolLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(protocolLabel); + + protocolComboBox = new QComboBox(frame); + protocolComboBox->setObjectName(QString::fromUtf8("protocolComboBox")); + protocolComboBox->setMinimumSize(QSize(79, 52)); + protocolComboBox->setStyleSheet(QString::fromUtf8("QComboBox {\n" +" min-height: 48px;\n" +" font: bold 16px;\n" +"}\n" +"")); + + horizontalLayout_4->addWidget(protocolComboBox); + + serverLabel = new QLabel(frame); + serverLabel->setObjectName(QString::fromUtf8("serverLabel")); + serverLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(serverLabel); + + serverLineEdit = new QLineEdit(frame); + serverLineEdit->setObjectName(QString::fromUtf8("serverLineEdit")); + serverLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(serverLineEdit); + + portLabel = new QLabel(frame); + portLabel->setObjectName(QString::fromUtf8("portLabel")); + portLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" background: none;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(portLabel); + + portLineEdit = new QLineEdit(frame); + portLineEdit->setObjectName(QString::fromUtf8("portLineEdit")); + portLineEdit->setMaximumSize(QSize(80, 16777215)); + portLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" min-width: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_4->addWidget(portLineEdit); + + + verticalLayout_2->addLayout(horizontalLayout_4); + + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer_2); + + + horizontalLayout->addLayout(verticalLayout_2); + + applyButtonLayout = new QVBoxLayout(); +#ifndef Q_OS_MAC + applyButtonLayout->setSpacing(-1); +#endif + applyButtonLayout->setObjectName(QString::fromUtf8("applyButtonLayout")); + applyButtonLayout->setSizeConstraint(QLayout::SetMinimumSize); + changePasswordButton = new QPushButton(frame); + changePasswordButton->setObjectName(QString::fromUtf8("changePasswordButton")); + changePasswordButton->setEnabled(false); + changePasswordButton->setMinimumSize(QSize(80, 80)); + changePasswordButton->setMaximumSize(QSize(80, 80)); + changePasswordButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout->addWidget(changePasswordButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + applyButtonLayout->addItem(verticalSpacer); + + okButton = new QPushButton(frame); + okButton->setObjectName(QString::fromUtf8("okButton")); + okButton->setMinimumSize(QSize(80, 80)); + okButton->setMaximumSize(QSize(80, 80)); + okButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + applyButtonLayout->addWidget(okButton); + + + horizontalLayout->addLayout(applyButtonLayout); + + + horizontalLayout_2->addWidget(frame); + + + retranslateUi(TocAccountSettingsWidgetClass); + QObject::connect(loginLineEdit, SIGNAL(textEdited(QString)), TocAccountSettingsWidgetClass, SLOT(loginEdited(QString))); + QObject::connect(protocolComboBox, SIGNAL(currentIndexChanged(QString)), TocAccountSettingsWidgetClass, SLOT(protocolEdited(QString))); + QObject::connect(okButton, SIGNAL(clicked()), TocAccountSettingsWidgetClass, SLOT(onOkButton())); + QObject::connect(changePasswordButton, SIGNAL(clicked()), TocAccountSettingsWidgetClass, SLOT(onChangePasswordButton())); + QObject::connect(serverLineEdit, SIGNAL(textEdited(QString)), TocAccountSettingsWidgetClass, SLOT(disconnectHints())); + QObject::connect(portLineEdit, SIGNAL(textEdited(QString)), TocAccountSettingsWidgetClass, SLOT(disconnectHints())); + + QMetaObject::connectSlotsByName(TocAccountSettingsWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TocAccountSettingsWidgetClass) + { + TocAccountSettingsWidgetClass->setWindowTitle(QApplication::translate("TocAccountSettingsWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + editVCardButton->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Edit\n" +"VCard", 0, QApplication::UnicodeUTF8)); + backButton->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Back", 0, QApplication::UnicodeUTF8)); + loginLabel->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Login", 0, QApplication::UnicodeUTF8)); + passwordLabel->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Password", 0, QApplication::UnicodeUTF8)); + passwordConfirmLabel->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Confirm Password", 0, QApplication::UnicodeUTF8)); + protocolLabel->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Protocol", 0, QApplication::UnicodeUTF8)); + serverLabel->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Server", 0, QApplication::UnicodeUTF8)); + portLabel->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Port", 0, QApplication::UnicodeUTF8)); + changePasswordButton->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Change\n" +"password", 0, QApplication::UnicodeUTF8)); + okButton->setText(QApplication::translate("TocAccountSettingsWidgetClass", "Ok", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TocAccountSettingsWidgetClass: public Ui_TocAccountSettingsWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TOCACCOUNTSETTINGSWIDGET_H diff --git a/build/release/ui_TocChatWidget.h b/build/release/ui_TocChatWidget.h new file mode 100644 index 0000000..d8d5fe4 --- /dev/null +++ b/build/release/ui_TocChatWidget.h @@ -0,0 +1,174 @@ +/******************************************************************************** +** Form generated from reading UI file 'TocChatWidget.ui' +** +** Created: Thu Jul 8 08:48:05 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TOCCHATWIDGET_H +#define UI_TOCCHATWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocChatWidgetClass +{ +public: + QVBoxLayout *verticalLayout; + QFrame *chatFrame; + QVBoxLayout *verticalLayout_2; + QFrame *frame; + QGridLayout *gridLayout; + QTextEdit *chatTextEdit; + QHBoxLayout *horizontalLayout_2; + QPushButton *smileButton; + QTextEdit *messageTextEdit; + QPushButton *sendButton; + + void setupUi(QWidget *TocChatWidgetClass) + { + if (TocChatWidgetClass->objectName().isEmpty()) + TocChatWidgetClass->setObjectName(QString::fromUtf8("TocChatWidgetClass")); + TocChatWidgetClass->resize(718, 431); + TocChatWidgetClass->setStyleSheet(QString::fromUtf8("")); + verticalLayout = new QVBoxLayout(TocChatWidgetClass); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + chatFrame = new QFrame(TocChatWidgetClass); + chatFrame->setObjectName(QString::fromUtf8("chatFrame")); + chatFrame->setFrameShape(QFrame::StyledPanel); + chatFrame->setFrameShadow(QFrame::Raised); + verticalLayout_2 = new QVBoxLayout(chatFrame); + verticalLayout_2->setSpacing(0); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + frame = new QFrame(chatFrame); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setStyleSheet(QString::fromUtf8("")); + frame->setFrameShape(QFrame::StyledPanel); + frame->setFrameShadow(QFrame::Plain); + gridLayout = new QGridLayout(frame); + gridLayout->setContentsMargins(3, 3, 3, 3); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + gridLayout->setVerticalSpacing(-1); + chatTextEdit = new QTextEdit(frame); + chatTextEdit->setObjectName(QString::fromUtf8("chatTextEdit")); + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(chatTextEdit->sizePolicy().hasHeightForWidth()); + chatTextEdit->setSizePolicy(sizePolicy); + chatTextEdit->setStyleSheet(QString::fromUtf8("QTextEdit {\n" +" background-color: none;\n" +"}")); + chatTextEdit->setFrameShape(QFrame::Box); + chatTextEdit->setFrameShadow(QFrame::Sunken); + chatTextEdit->setLineWidth(1); + chatTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + chatTextEdit->setReadOnly(true); + + gridLayout->addWidget(chatTextEdit, 0, 0, 1, 1); + + + verticalLayout_2->addWidget(frame); + + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setSpacing(4); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + horizontalLayout_2->setContentsMargins(0, 0, -1, -1); + smileButton = new QPushButton(chatFrame); + smileButton->setObjectName(QString::fromUtf8("smileButton")); + QFont font; + font.setPointSize(14); + font.setBold(true); + font.setWeight(75); + smileButton->setFont(font); + smileButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + horizontalLayout_2->addWidget(smileButton); + + messageTextEdit = new QTextEdit(chatFrame); + messageTextEdit->setObjectName(QString::fromUtf8("messageTextEdit")); + QSizePolicy sizePolicy1(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(messageTextEdit->sizePolicy().hasHeightForWidth()); + messageTextEdit->setSizePolicy(sizePolicy1); + messageTextEdit->setMaximumSize(QSize(16777215, 80)); + messageTextEdit->setStyleSheet(QString::fromUtf8("QTextEdit {\n" +" background-color: none;\n" +"}")); + messageTextEdit->setFrameShape(QFrame::Box); + messageTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + messageTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + horizontalLayout_2->addWidget(messageTextEdit); + + sendButton = new QPushButton(chatFrame); + sendButton->setObjectName(QString::fromUtf8("sendButton")); + QSizePolicy sizePolicy2(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + sizePolicy2.setHorizontalStretch(0); + sizePolicy2.setVerticalStretch(0); + sizePolicy2.setHeightForWidth(sendButton->sizePolicy().hasHeightForWidth()); + sendButton->setSizePolicy(sizePolicy2); + sendButton->setMaximumSize(QSize(80, 80)); + sendButton->setFont(font); + sendButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}\n" +"")); + + horizontalLayout_2->addWidget(sendButton); + + + verticalLayout_2->addLayout(horizontalLayout_2); + + + verticalLayout->addWidget(chatFrame); + + + retranslateUi(TocChatWidgetClass); + QObject::connect(sendButton, SIGNAL(clicked()), TocChatWidgetClass, SLOT(pressedSendButton())); + QObject::connect(sendButton, SIGNAL(clicked()), messageTextEdit, SLOT(setFocus())); + + QMetaObject::connectSlotsByName(TocChatWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TocChatWidgetClass) + { + TocChatWidgetClass->setWindowTitle(QApplication::translate("TocChatWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + smileButton->setText(QApplication::translate("TocChatWidgetClass", "Smile", 0, QApplication::UnicodeUTF8)); + sendButton->setText(QApplication::translate("TocChatWidgetClass", "Send", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TocChatWidgetClass: public Ui_TocChatWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TOCCHATWIDGET_H diff --git a/build/release/ui_TocEmoticonsDialog.h b/build/release/ui_TocEmoticonsDialog.h new file mode 100644 index 0000000..024f1d3 --- /dev/null +++ b/build/release/ui_TocEmoticonsDialog.h @@ -0,0 +1,97 @@ +/******************************************************************************** +** Form generated from reading UI file 'TocEmoticonsDialog.ui' +** +** Created: Thu Jul 8 08:48:05 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TOCEMOTICONSDIALOG_H +#define UI_TOCEMOTICONSDIALOG_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocEmoticonsDialogClass +{ +public: + QGridLayout *gridLayout; + QListWidget *emoticonsListWidget; + QSpacerItem *horizontalSpacer; + QPushButton *backButton; + QSpacerItem *horizontalSpacer_2; + + void setupUi(QDialog *TocEmoticonsDialogClass) + { + if (TocEmoticonsDialogClass->objectName().isEmpty()) + TocEmoticonsDialogClass->setObjectName(QString::fromUtf8("TocEmoticonsDialogClass")); + TocEmoticonsDialogClass->resize(418, 310); + gridLayout = new QGridLayout(TocEmoticonsDialogClass); + gridLayout->setSpacing(0); + gridLayout->setContentsMargins(11, 11, 11, 11); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + gridLayout->setContentsMargins(0, 9, 9, 0); + emoticonsListWidget = new QListWidget(TocEmoticonsDialogClass); + emoticonsListWidget->setObjectName(QString::fromUtf8("emoticonsListWidget")); + emoticonsListWidget->setProperty("showDropIndicator", QVariant(false)); + emoticonsListWidget->setSpacing(10); + emoticonsListWidget->setViewMode(QListView::ListMode); + + gridLayout->addWidget(emoticonsListWidget, 0, 0, 1, 3); + + horizontalSpacer = new QSpacerItem(142, 77, QSizePolicy::Expanding, QSizePolicy::Minimum); + + gridLayout->addItem(horizontalSpacer, 1, 0, 1, 1); + + backButton = new QPushButton(TocEmoticonsDialogClass); + backButton->setObjectName(QString::fromUtf8("backButton")); + backButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 40px;\n" +" min-width: 80px;\n" +" max-height: 40px;\n" +" max-width: 80px;\n" +"}")); + + gridLayout->addWidget(backButton, 1, 1, 1, 1); + + horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + gridLayout->addItem(horizontalSpacer_2, 1, 2, 1, 1); + + + retranslateUi(TocEmoticonsDialogClass); + + emoticonsListWidget->setCurrentRow(-1); + + + QMetaObject::connectSlotsByName(TocEmoticonsDialogClass); + } // setupUi + + void retranslateUi(QDialog *TocEmoticonsDialogClass) + { + TocEmoticonsDialogClass->setWindowTitle(QApplication::translate("TocEmoticonsDialogClass", "Emoticons", 0, QApplication::UnicodeUTF8)); + backButton->setText(QApplication::translate("TocEmoticonsDialogClass", "Back", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TocEmoticonsDialogClass: public Ui_TocEmoticonsDialogClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TOCEMOTICONSDIALOG_H diff --git a/build/release/ui_TocGeneralSettingsWidget.h b/build/release/ui_TocGeneralSettingsWidget.h new file mode 100644 index 0000000..87d714a --- /dev/null +++ b/build/release/ui_TocGeneralSettingsWidget.h @@ -0,0 +1,322 @@ +/******************************************************************************** +** Form generated from reading UI file 'TocGeneralSettingsWidget.ui' +** +** Created: Thu Jul 8 08:48:05 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TOCGENERALSETTINGSWIDGET_H +#define UI_TOCGENERALSETTINGSWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocGeneralSettingsWidgetClass +{ +public: + QVBoxLayout *verticalLayout; + QFrame *generalSettingsFrame; + QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout_2; + QSpacerItem *verticalSpacer; + QPushButton *backButton; + QGroupBox *sortingGroupBox; + QGridLayout *gridLayout_4; + QSpacerItem *verticalSpacer_3; + QSpacerItem *verticalSpacer_2; + QSpacerItem *verticalSpacer_4; + QSpacerItem *verticalSpacer_5; + QRadioButton *alphaRadioButton; + QRadioButton *dragDropRadioButton; + QRadioButton *presenceRadioButton; + QLabel *alphaLabel; + QLabel *presence; + QLabel *dragDropLabel; + QGroupBox *authorizationGroupBox; + QGridLayout *gridLayout_5; + QRadioButton *askRadioButton; + QRadioButton *denyRadioButton; + QRadioButton *acceptRadioButton; + QSpacerItem *verticalSpacer_7; + QSpacerItem *verticalSpacer_8; + QSpacerItem *verticalSpacer_6; + QSpacerItem *verticalSpacer_9; + QVBoxLayout *verticalLayout_3; + QSpacerItem *verticalSpacer_1; + QPushButton *okButton; + + void setupUi(QWidget *TocGeneralSettingsWidgetClass) + { + if (TocGeneralSettingsWidgetClass->objectName().isEmpty()) + TocGeneralSettingsWidgetClass->setObjectName(QString::fromUtf8("TocGeneralSettingsWidgetClass")); + TocGeneralSettingsWidgetClass->resize(773, 441); + TocGeneralSettingsWidgetClass->setProperty("sizeHint", QVariant(QSize(705, 568))); + verticalLayout = new QVBoxLayout(TocGeneralSettingsWidgetClass); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + generalSettingsFrame = new QFrame(TocGeneralSettingsWidgetClass); + generalSettingsFrame->setObjectName(QString::fromUtf8("generalSettingsFrame")); + generalSettingsFrame->setFrameShape(QFrame::StyledPanel); + generalSettingsFrame->setFrameShadow(QFrame::Raised); + horizontalLayout = new QHBoxLayout(generalSettingsFrame); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer); + + backButton = new QPushButton(generalSettingsFrame); + backButton->setObjectName(QString::fromUtf8("backButton")); + backButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(backButton); + + + horizontalLayout->addLayout(verticalLayout_2); + + sortingGroupBox = new QGroupBox(generalSettingsFrame); + sortingGroupBox->setObjectName(QString::fromUtf8("sortingGroupBox")); + sortingGroupBox->setEnabled(false); + QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(sortingGroupBox->sizePolicy().hasHeightForWidth()); + sortingGroupBox->setSizePolicy(sizePolicy); + sortingGroupBox->setStyleSheet(QString::fromUtf8("QGroupBox {\n" +" font: bold 12px;\n" +"}")); + gridLayout_4 = new QGridLayout(sortingGroupBox); + gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4")); + verticalSpacer_3 = new QSpacerItem(20, 75, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_3, 4, 0, 1, 1); + + verticalSpacer_2 = new QSpacerItem(20, 85, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_2, 1, 0, 1, 1); + + verticalSpacer_4 = new QSpacerItem(20, 75, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_4, 7, 0, 1, 1); + + verticalSpacer_5 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_4->addItem(verticalSpacer_5, 11, 0, 1, 1); + + alphaRadioButton = new QRadioButton(sortingGroupBox); + alphaRadioButton->setObjectName(QString::fromUtf8("alphaRadioButton")); + QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Fixed); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(alphaRadioButton->sizePolicy().hasHeightForWidth()); + alphaRadioButton->setSizePolicy(sizePolicy1); + alphaRadioButton->setMinimumSize(QSize(0, 25)); + alphaRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" background-color: none;\n" +" min-height: 25px;\n" +"}")); + alphaRadioButton->setChecked(true); + + gridLayout_4->addWidget(alphaRadioButton, 2, 0, 1, 1); + + dragDropRadioButton = new QRadioButton(sortingGroupBox); + dragDropRadioButton->setObjectName(QString::fromUtf8("dragDropRadioButton")); + dragDropRadioButton->setMinimumSize(QSize(0, 25)); + dragDropRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" background-color: none;\n" +" min-height: 25px;\n" +"}")); + + gridLayout_4->addWidget(dragDropRadioButton, 9, 0, 1, 1); + + presenceRadioButton = new QRadioButton(sortingGroupBox); + presenceRadioButton->setObjectName(QString::fromUtf8("presenceRadioButton")); + presenceRadioButton->setEnabled(false); + presenceRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" background-color: none;\n" +" min-height: 25px;\n" +"}")); + + gridLayout_4->addWidget(presenceRadioButton, 5, 0, 1, 1); + + alphaLabel = new QLabel(sortingGroupBox); + alphaLabel->setObjectName(QString::fromUtf8("alphaLabel")); + QFont font; + font.setBold(false); + font.setItalic(false); + font.setWeight(50); + alphaLabel->setFont(font); + alphaLabel->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" font: 14px;\n" +"}")); + + gridLayout_4->addWidget(alphaLabel, 3, 0, 1, 1); + + presence = new QLabel(sortingGroupBox); + presence->setObjectName(QString::fromUtf8("presence")); + presence->setFont(font); + presence->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" font: 14px;\n" +"}")); + + gridLayout_4->addWidget(presence, 6, 0, 1, 1); + + dragDropLabel = new QLabel(sortingGroupBox); + dragDropLabel->setObjectName(QString::fromUtf8("dragDropLabel")); + dragDropLabel->setStyleSheet(QString::fromUtf8("QLabel {\n" +" background: none;\n" +" font: 14px;\n" +"}")); + + gridLayout_4->addWidget(dragDropLabel, 10, 0, 1, 1); + + + horizontalLayout->addWidget(sortingGroupBox); + + authorizationGroupBox = new QGroupBox(generalSettingsFrame); + authorizationGroupBox->setObjectName(QString::fromUtf8("authorizationGroupBox")); + authorizationGroupBox->setEnabled(false); + sizePolicy.setHeightForWidth(authorizationGroupBox->sizePolicy().hasHeightForWidth()); + authorizationGroupBox->setSizePolicy(sizePolicy); + authorizationGroupBox->setStyleSheet(QString::fromUtf8("QGroupBox {\n" +" font: bold 12px;\n" +"}")); + authorizationGroupBox->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + gridLayout_5 = new QGridLayout(authorizationGroupBox); + gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5")); + askRadioButton = new QRadioButton(authorizationGroupBox); + askRadioButton->setObjectName(QString::fromUtf8("askRadioButton")); + askRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +"\n" +" min-height: 48px;\n" +"}")); + askRadioButton->setChecked(true); + + gridLayout_5->addWidget(askRadioButton, 2, 0, 1, 1); + + denyRadioButton = new QRadioButton(authorizationGroupBox); + denyRadioButton->setObjectName(QString::fromUtf8("denyRadioButton")); + denyRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" min-height: 48px;\n" +"}")); + + gridLayout_5->addWidget(denyRadioButton, 6, 0, 1, 1); + + acceptRadioButton = new QRadioButton(authorizationGroupBox); + acceptRadioButton->setObjectName(QString::fromUtf8("acceptRadioButton")); + acceptRadioButton->setStyleSheet(QString::fromUtf8("QRadioButton {\n" +" font: bold 16px;\n" +" min-height: 48px;\n" +"}")); + + gridLayout_5->addWidget(acceptRadioButton, 4, 0, 1, 1); + + verticalSpacer_7 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_7, 3, 0, 1, 1); + + verticalSpacer_8 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_8, 5, 0, 1, 1); + + verticalSpacer_6 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_6, 1, 0, 1, 1); + + verticalSpacer_9 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout_5->addItem(verticalSpacer_9, 7, 0, 1, 1); + + + horizontalLayout->addWidget(authorizationGroupBox); + + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + verticalSpacer_1 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_3->addItem(verticalSpacer_1); + + okButton = new QPushButton(generalSettingsFrame); + okButton->setObjectName(QString::fromUtf8("okButton")); + okButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_3->addWidget(okButton); + + + horizontalLayout->addLayout(verticalLayout_3); + + + verticalLayout->addWidget(generalSettingsFrame); + + + retranslateUi(TocGeneralSettingsWidgetClass); + + QMetaObject::connectSlotsByName(TocGeneralSettingsWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TocGeneralSettingsWidgetClass) + { + TocGeneralSettingsWidgetClass->setWindowTitle(QApplication::translate("TocGeneralSettingsWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + backButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Back", 0, QApplication::UnicodeUTF8)); + sortingGroupBox->setTitle(QApplication::translate("TocGeneralSettingsWidgetClass", "Contact list sorting", 0, QApplication::UnicodeUTF8)); + alphaRadioButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Sort alphabeticaly", 0, QApplication::UnicodeUTF8)); + dragDropRadioButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Disable sorting", 0, QApplication::UnicodeUTF8)); + presenceRadioButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Sort by status", 0, QApplication::UnicodeUTF8)); + alphaLabel->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Sorts contact list items alphabetically", 0, QApplication::UnicodeUTF8)); + presence->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Sorts contact list items by status", 0, QApplication::UnicodeUTF8)); + dragDropLabel->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Disables sorting and enables drag\n" +"and dropping", 0, QApplication::UnicodeUTF8)); + authorizationGroupBox->setTitle(QApplication::translate("TocGeneralSettingsWidgetClass", "Contact authorization rule", 0, QApplication::UnicodeUTF8)); + askRadioButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Ask", 0, QApplication::UnicodeUTF8)); + denyRadioButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Always deny", 0, QApplication::UnicodeUTF8)); + acceptRadioButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Always accept", 0, QApplication::UnicodeUTF8)); + okButton->setText(QApplication::translate("TocGeneralSettingsWidgetClass", "Ok", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TocGeneralSettingsWidgetClass: public Ui_TocGeneralSettingsWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TOCGENERALSETTINGSWIDGET_H diff --git a/build/release/ui_TocThemesSettingsWidget.h b/build/release/ui_TocThemesSettingsWidget.h new file mode 100644 index 0000000..4fcb4e4 --- /dev/null +++ b/build/release/ui_TocThemesSettingsWidget.h @@ -0,0 +1,192 @@ +/******************************************************************************** +** Form generated from reading UI file 'TocThemesSettingsWidget.ui' +** +** Created: Thu Jul 8 08:48:05 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TOCTHEMESSETTINGSWIDGET_H +#define UI_TOCTHEMESSETTINGSWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocThemesSettingsWidgetClass +{ +public: + QGridLayout *gridLayout_2; + QFrame *frame; + QGridLayout *gridLayout; + QVBoxLayout *verticalLayout_3; + QSpacerItem *verticalSpacer_2; + QPushButton *backThemeButton; + QVBoxLayout *verticalLayout; + QListWidget *themesListWidget; + QVBoxLayout *verticalLayout_2; + QPushButton *addThemeButton; + QSpacerItem *verticalSpacer; + QPushButton *applyThemeButton; + + void setupUi(QWidget *TocThemesSettingsWidgetClass) + { + if (TocThemesSettingsWidgetClass->objectName().isEmpty()) + TocThemesSettingsWidgetClass->setObjectName(QString::fromUtf8("TocThemesSettingsWidgetClass")); + TocThemesSettingsWidgetClass->resize(593, 405); + TocThemesSettingsWidgetClass->setStyleSheet(QString::fromUtf8("")); + gridLayout_2 = new QGridLayout(TocThemesSettingsWidgetClass); + gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); + frame = new QFrame(TocThemesSettingsWidgetClass); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setEnabled(true); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(frame->sizePolicy().hasHeightForWidth()); + frame->setSizePolicy(sizePolicy); + frame->setStyleSheet(QString::fromUtf8("")); + frame->setFrameShape(QFrame::Box); + frame->setFrameShadow(QFrame::Sunken); + frame->setLineWidth(1); + gridLayout = new QGridLayout(frame); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_3->addItem(verticalSpacer_2); + + backThemeButton = new QPushButton(frame); + backThemeButton->setObjectName(QString::fromUtf8("backThemeButton")); + backThemeButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_3->addWidget(backThemeButton); + + + gridLayout->addLayout(verticalLayout_3, 0, 0, 1, 1); + + verticalLayout = new QVBoxLayout(); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + themesListWidget = new QListWidget(frame); + themesListWidget->setObjectName(QString::fromUtf8("themesListWidget")); + QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(themesListWidget->sizePolicy().hasHeightForWidth()); + themesListWidget->setSizePolicy(sizePolicy1); + themesListWidget->setAutoFillBackground(true); + themesListWidget->setStyleSheet(QString::fromUtf8("QListView {\n" +" font: bold 30px;\n" +"}\n" +"\n" +"")); + themesListWidget->setLineWidth(1); + themesListWidget->setMidLineWidth(1); + themesListWidget->setProperty("showDropIndicator", QVariant(false)); + themesListWidget->setAlternatingRowColors(false); + themesListWidget->setSelectionMode(QAbstractItemView::SingleSelection); + themesListWidget->setSelectionBehavior(QAbstractItemView::SelectItems); + themesListWidget->setIconSize(QSize(0, 0)); + themesListWidget->setTextElideMode(Qt::ElideMiddle); + themesListWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); + themesListWidget->setMovement(QListView::Static); + themesListWidget->setFlow(QListView::TopToBottom); + themesListWidget->setProperty("isWrapping", QVariant(false)); + themesListWidget->setResizeMode(QListView::Adjust); + themesListWidget->setSpacing(5); + themesListWidget->setViewMode(QListView::ListMode); + themesListWidget->setModelColumn(0); + themesListWidget->setWordWrap(true); + themesListWidget->setSelectionRectVisible(true); + themesListWidget->setSortingEnabled(false); + + verticalLayout->addWidget(themesListWidget); + + + gridLayout->addLayout(verticalLayout, 0, 1, 1, 1); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + addThemeButton = new QPushButton(frame); + addThemeButton->setObjectName(QString::fromUtf8("addThemeButton")); + addThemeButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(addThemeButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer); + + applyThemeButton = new QPushButton(frame); + applyThemeButton->setObjectName(QString::fromUtf8("applyThemeButton")); + applyThemeButton->setAutoFillBackground(false); + applyThemeButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(applyThemeButton); + + + gridLayout->addLayout(verticalLayout_2, 0, 2, 1, 1); + + + gridLayout_2->addWidget(frame, 0, 0, 1, 1); + + + retranslateUi(TocThemesSettingsWidgetClass); + + themesListWidget->setCurrentRow(-1); + + + QMetaObject::connectSlotsByName(TocThemesSettingsWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TocThemesSettingsWidgetClass) + { + TocThemesSettingsWidgetClass->setWindowTitle(QApplication::translate("TocThemesSettingsWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + backThemeButton->setText(QApplication::translate("TocThemesSettingsWidgetClass", "Back", 0, QApplication::UnicodeUTF8)); + addThemeButton->setText(QApplication::translate("TocThemesSettingsWidgetClass", "Add theme", 0, QApplication::UnicodeUTF8)); + applyThemeButton->setText(QApplication::translate("TocThemesSettingsWidgetClass", "Apply", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TocThemesSettingsWidgetClass: public Ui_TocThemesSettingsWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TOCTHEMESSETTINGSWIDGET_H diff --git a/build/release/ui_TocUserInfoWidget.h b/build/release/ui_TocUserInfoWidget.h new file mode 100644 index 0000000..7890788 --- /dev/null +++ b/build/release/ui_TocUserInfoWidget.h @@ -0,0 +1,329 @@ +/******************************************************************************** +** Form generated from reading UI file 'TocUserInfoWidget.ui' +** +** Created: Thu Jul 8 08:48:05 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TOCUSERINFOWIDGET_H +#define UI_TOCUSERINFOWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocUserInfoWidgetClass +{ +public: + QVBoxLayout *verticalLayout_5; + QFrame *userInfoFrame; + QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout; + QPushButton *pictureButton; + QSpacerItem *verticalSpacer; + QPushButton *cancelButton; + QVBoxLayout *verticalLayout_3; + QHBoxLayout *horizontalLayout_2; + QLabel *uidLabel; + QLineEdit *uidLineEdit; + QSpacerItem *horizontalSpacer_4; + QHBoxLayout *horizontalLayout_4; + QLabel *nameLabel; + QLineEdit *nameLineEdit; + QSpacerItem *horizontalSpacer_3; + QPushButton *resolveButton; + QHBoxLayout *horizontalLayout_5; + QLabel *genderLabel; + QComboBox *genderComboBox; + QSpacerItem *horizontalSpacer_6; + QSpacerItem *verticalSpacer_3; + QVBoxLayout *verticalLayout_2; + QSpacerItem *verticalSpacer_2; + QPushButton *okButton; + + void setupUi(QWidget *TocUserInfoWidgetClass) + { + if (TocUserInfoWidgetClass->objectName().isEmpty()) + TocUserInfoWidgetClass->setObjectName(QString::fromUtf8("TocUserInfoWidgetClass")); + TocUserInfoWidgetClass->setWindowModality(Qt::NonModal); + TocUserInfoWidgetClass->resize(544, 256); + TocUserInfoWidgetClass->setFocusPolicy(Qt::ClickFocus); + TocUserInfoWidgetClass->setStyleSheet(QString::fromUtf8("")); + verticalLayout_5 = new QVBoxLayout(TocUserInfoWidgetClass); + verticalLayout_5->setObjectName(QString::fromUtf8("verticalLayout_5")); + userInfoFrame = new QFrame(TocUserInfoWidgetClass); + userInfoFrame->setObjectName(QString::fromUtf8("userInfoFrame")); + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(userInfoFrame->sizePolicy().hasHeightForWidth()); + userInfoFrame->setSizePolicy(sizePolicy); + userInfoFrame->setStyleSheet(QString::fromUtf8("QFrame{\n" +"border:none;\n" +"}")); + userInfoFrame->setFrameShape(QFrame::StyledPanel); + horizontalLayout = new QHBoxLayout(userInfoFrame); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + verticalLayout = new QVBoxLayout(); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + pictureButton = new QPushButton(userInfoFrame); + pictureButton->setObjectName(QString::fromUtf8("pictureButton")); + QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Fixed); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(pictureButton->sizePolicy().hasHeightForWidth()); + pictureButton->setSizePolicy(sizePolicy1); + pictureButton->setMinimumSize(QSize(80, 80)); + pictureButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + pictureButton->setIconSize(QSize(68, 68)); + pictureButton->setFlat(false); + + verticalLayout->addWidget(pictureButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout->addItem(verticalSpacer); + + cancelButton = new QPushButton(userInfoFrame); + cancelButton->setObjectName(QString::fromUtf8("cancelButton")); + cancelButton->setMinimumSize(QSize(80, 80)); + cancelButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout->addWidget(cancelButton); + + + horizontalLayout->addLayout(verticalLayout); + + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + uidLabel = new QLabel(userInfoFrame); + uidLabel->setObjectName(QString::fromUtf8("uidLabel")); + uidLabel->setMinimumSize(QSize(30, 0)); + uidLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" border-radius: none;\n" +" background: none;\n" +" font: bold 12px;\n" +"}")); + uidLabel->setFrameShape(QFrame::StyledPanel); + uidLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + horizontalLayout_2->addWidget(uidLabel); + + uidLineEdit = new QLineEdit(userInfoFrame); + uidLineEdit->setObjectName(QString::fromUtf8("uidLineEdit")); + QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Maximum); + sizePolicy2.setHorizontalStretch(48); + sizePolicy2.setVerticalStretch(48); + sizePolicy2.setHeightForWidth(uidLineEdit->sizePolicy().hasHeightForWidth()); + uidLineEdit->setSizePolicy(sizePolicy2); + uidLineEdit->setMinimumSize(QSize(0, 48)); + QFont font; + font.setBold(true); + font.setItalic(false); + font.setWeight(75); + uidLineEdit->setFont(font); + uidLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + + horizontalLayout_2->addWidget(uidLineEdit); + + horizontalSpacer_4 = new QSpacerItem(20, 20, QSizePolicy::Maximum, QSizePolicy::Minimum); + + horizontalLayout_2->addItem(horizontalSpacer_4); + + + verticalLayout_3->addLayout(horizontalLayout_2); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4")); + nameLabel = new QLabel(userInfoFrame); + nameLabel->setObjectName(QString::fromUtf8("nameLabel")); + nameLabel->setMinimumSize(QSize(30, 0)); + nameLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" border-radius: none;\n" +" background: none;\n" +" font: bold 12px;\n" +"}")); + nameLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + horizontalLayout_4->addWidget(nameLabel); + + nameLineEdit = new QLineEdit(userInfoFrame); + nameLineEdit->setObjectName(QString::fromUtf8("nameLineEdit")); + QSizePolicy sizePolicy3(QSizePolicy::Expanding, QSizePolicy::Fixed); + sizePolicy3.setHorizontalStretch(0); + sizePolicy3.setVerticalStretch(48); + sizePolicy3.setHeightForWidth(nameLineEdit->sizePolicy().hasHeightForWidth()); + nameLineEdit->setSizePolicy(sizePolicy3); + nameLineEdit->setMinimumSize(QSize(0, 48)); + nameLineEdit->setFont(font); + nameLineEdit->setLayoutDirection(Qt::LeftToRight); + nameLineEdit->setStyleSheet(QString::fromUtf8("QLineEdit{\n" +" border-radius: 5px;\n" +" min-height: 48px;\n" +" font: bold 14px;\n" +"}")); + nameLineEdit->setReadOnly(false); + + horizontalLayout_4->addWidget(nameLineEdit); + + horizontalSpacer_3 = new QSpacerItem(20, 20, QSizePolicy::Maximum, QSizePolicy::Minimum); + + horizontalLayout_4->addItem(horizontalSpacer_3); + + resolveButton = new QPushButton(userInfoFrame); + resolveButton->setObjectName(QString::fromUtf8("resolveButton")); + resolveButton->setMinimumSize(QSize(80, 40)); + resolveButton->setMaximumSize(QSize(80, 40)); + resolveButton->setFont(font); + resolveButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 40px;\n" +" min-width: 80px;\n" +" max-height: 40px;\n" +" max-width: 80px;\n" +"}")); + + horizontalLayout_4->addWidget(resolveButton); + + + verticalLayout_3->addLayout(horizontalLayout_4); + + horizontalLayout_5 = new QHBoxLayout(); + horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5")); + genderLabel = new QLabel(userInfoFrame); + genderLabel->setObjectName(QString::fromUtf8("genderLabel")); + genderLabel->setMinimumSize(QSize(30, 0)); + genderLabel->setStyleSheet(QString::fromUtf8("QLabel{\n" +" border-radius: none;\n" +" background: none;\n" +" font: bold 12px;\n" +"}")); + genderLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + horizontalLayout_5->addWidget(genderLabel); + + genderComboBox = new QComboBox(userInfoFrame); + genderComboBox->setObjectName(QString::fromUtf8("genderComboBox")); + QSizePolicy sizePolicy4(QSizePolicy::Preferred, QSizePolicy::Fixed); + sizePolicy4.setHorizontalStretch(0); + sizePolicy4.setVerticalStretch(48); + sizePolicy4.setHeightForWidth(genderComboBox->sizePolicy().hasHeightForWidth()); + genderComboBox->setSizePolicy(sizePolicy4); + genderComboBox->setMinimumSize(QSize(110, 52)); + genderComboBox->setFont(font); + genderComboBox->setAutoFillBackground(false); + genderComboBox->setStyleSheet(QString::fromUtf8("QComboBox {\n" +" min-height: 48px;\n" +" font: bold 16px;\n" +"}\n" +"")); + + horizontalLayout_5->addWidget(genderComboBox); + + horizontalSpacer_6 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + horizontalLayout_5->addItem(horizontalSpacer_6); + + + verticalLayout_3->addLayout(horizontalLayout_5); + + verticalSpacer_3 = new QSpacerItem(327, 35, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_3->addItem(verticalSpacer_3); + + + horizontalLayout->addLayout(verticalLayout_3); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + verticalLayout_2->addItem(verticalSpacer_2); + + okButton = new QPushButton(userInfoFrame); + okButton->setObjectName(QString::fromUtf8("okButton")); + okButton->setMinimumSize(QSize(80, 80)); + okButton->setStyleSheet(QString::fromUtf8("QPushButton{\n" +" font: bold 16px;\n" +" border-radius: 5px;\n" +" min-height: 80px;\n" +" min-width: 80px;\n" +" max-height: 80px;\n" +" max-width: 80px;\n" +"}")); + + verticalLayout_2->addWidget(okButton); + + + horizontalLayout->addLayout(verticalLayout_2); + + + verticalLayout_5->addWidget(userInfoFrame); + + + retranslateUi(TocUserInfoWidgetClass); + + genderComboBox->setCurrentIndex(-1); + + + QMetaObject::connectSlotsByName(TocUserInfoWidgetClass); + } // setupUi + + void retranslateUi(QWidget *TocUserInfoWidgetClass) + { + TocUserInfoWidgetClass->setWindowTitle(QApplication::translate("TocUserInfoWidgetClass", "Form", 0, QApplication::UnicodeUTF8)); + pictureButton->setText(QString()); + cancelButton->setText(QApplication::translate("TocUserInfoWidgetClass", "Cancel", 0, QApplication::UnicodeUTF8)); + uidLabel->setText(QApplication::translate("TocUserInfoWidgetClass", "User id:", 0, QApplication::UnicodeUTF8)); + uidLineEdit->setText(QString()); + nameLabel->setText(QApplication::translate("TocUserInfoWidgetClass", "Name:", 0, QApplication::UnicodeUTF8)); + nameLineEdit->setText(QString()); + resolveButton->setText(QApplication::translate("TocUserInfoWidgetClass", "Resolve", 0, QApplication::UnicodeUTF8)); + genderLabel->setText(QApplication::translate("TocUserInfoWidgetClass", "Gender:", 0, QApplication::UnicodeUTF8)); + okButton->setText(QApplication::translate("TocUserInfoWidgetClass", "OK", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class TocUserInfoWidgetClass: public Ui_TocUserInfoWidgetClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TOCUSERINFOWIDGET_H diff --git a/config b/config new file mode 100644 index 0000000..07d359d --- /dev/null +++ b/config @@ -0,0 +1,4 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true diff --git a/configure b/configure new file mode 100644 index 0000000..1bb6e85 --- /dev/null +++ b/configure @@ -0,0 +1,18 @@ +#!/bin/bash + +revision=`LC_ALL=C svn info | awk '/^Revision: / {printf "%d\n", $2}'` + +target=tietoopcom + +sed -e "s/@REVISION@/${revision}/g" \ + < "include/version.in" > "include/version.h" + +sed -e "s/@TARGET@/${target}/g" \ + < "include/version.in" > "include/version.h" + +qmake +cd src +qmake +cd .. + +echo Completed at revision ${revision} diff --git a/configure-stamp b/configure-stamp new file mode 100644 index 0000000..e69de29 diff --git a/data/com.tieto.tietoopcom.service b/data/com.tieto.tietoopcom.service new file mode 100644 index 0000000..fa159b5 --- /dev/null +++ b/data/com.tieto.tietoopcom.service @@ -0,0 +1,4 @@ +# Service description file +[D-BUS Service] +Name=com.tieto.tietoopcom +Exec=/usr/bin/tietoopcom diff --git a/data/copyright b/data/copyright new file mode 100644 index 0000000..9f70f45 --- /dev/null +++ b/data/copyright @@ -0,0 +1,30 @@ +This package was debianized by Konrad Ciekot on +Wed, 22 Oct 2008 10:57:00 +0100. + + +Tieto Open Communicator +Copyright (c) 2010, Tieto Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of the Tieto Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/data/emoticons/face-angel24x24.png b/data/emoticons/face-angel24x24.png new file mode 100644 index 0000000..1163195 Binary files /dev/null and b/data/emoticons/face-angel24x24.png differ diff --git a/data/emoticons/face-angel32x32.png b/data/emoticons/face-angel32x32.png new file mode 100644 index 0000000..8604e09 Binary files /dev/null and b/data/emoticons/face-angel32x32.png differ diff --git a/data/emoticons/face-crying24x24.png b/data/emoticons/face-crying24x24.png new file mode 100644 index 0000000..609020f Binary files /dev/null and b/data/emoticons/face-crying24x24.png differ diff --git a/data/emoticons/face-crying32x32.png b/data/emoticons/face-crying32x32.png new file mode 100644 index 0000000..6599fe7 Binary files /dev/null and b/data/emoticons/face-crying32x32.png differ diff --git a/data/emoticons/face-devilish24x24.png b/data/emoticons/face-devilish24x24.png new file mode 100644 index 0000000..9abf970 Binary files /dev/null and b/data/emoticons/face-devilish24x24.png differ diff --git a/data/emoticons/face-devilish32x32.png b/data/emoticons/face-devilish32x32.png new file mode 100644 index 0000000..eaeacc2 Binary files /dev/null and b/data/emoticons/face-devilish32x32.png differ diff --git a/data/emoticons/face-glasses24x24.png b/data/emoticons/face-glasses24x24.png new file mode 100644 index 0000000..a3e736d Binary files /dev/null and b/data/emoticons/face-glasses24x24.png differ diff --git a/data/emoticons/face-glasses32x32.png b/data/emoticons/face-glasses32x32.png new file mode 100644 index 0000000..316405c Binary files /dev/null and b/data/emoticons/face-glasses32x32.png differ diff --git a/data/emoticons/face-grin24x24.png b/data/emoticons/face-grin24x24.png new file mode 100644 index 0000000..39e53dd Binary files /dev/null and b/data/emoticons/face-grin24x24.png differ diff --git a/data/emoticons/face-grin32x32.png b/data/emoticons/face-grin32x32.png new file mode 100644 index 0000000..6494af3 Binary files /dev/null and b/data/emoticons/face-grin32x32.png differ diff --git a/data/emoticons/face-kiss24x24.png b/data/emoticons/face-kiss24x24.png new file mode 100644 index 0000000..3d43359 Binary files /dev/null and b/data/emoticons/face-kiss24x24.png differ diff --git a/data/emoticons/face-kiss32x32.png b/data/emoticons/face-kiss32x32.png new file mode 100644 index 0000000..c746a81 Binary files /dev/null and b/data/emoticons/face-kiss32x32.png differ diff --git a/data/emoticons/face-monkey24x24.png b/data/emoticons/face-monkey24x24.png new file mode 100644 index 0000000..86e7b00 Binary files /dev/null and b/data/emoticons/face-monkey24x24.png differ diff --git a/data/emoticons/face-monkey32x32.png b/data/emoticons/face-monkey32x32.png new file mode 100644 index 0000000..d95f91d Binary files /dev/null and b/data/emoticons/face-monkey32x32.png differ diff --git a/data/emoticons/face-plain24x24.png b/data/emoticons/face-plain24x24.png new file mode 100644 index 0000000..64c8b10 Binary files /dev/null and b/data/emoticons/face-plain24x24.png differ diff --git a/data/emoticons/face-plain32x32.png b/data/emoticons/face-plain32x32.png new file mode 100644 index 0000000..9e884b1 Binary files /dev/null and b/data/emoticons/face-plain32x32.png differ diff --git a/data/emoticons/face-sad24x24.png b/data/emoticons/face-sad24x24.png new file mode 100644 index 0000000..bd9b495 Binary files /dev/null and b/data/emoticons/face-sad24x24.png differ diff --git a/data/emoticons/face-sad32x32.png b/data/emoticons/face-sad32x32.png new file mode 100644 index 0000000..d953d88 Binary files /dev/null and b/data/emoticons/face-sad32x32.png differ diff --git a/data/emoticons/face-smile-big24x24.png b/data/emoticons/face-smile-big24x24.png new file mode 100644 index 0000000..2026d20 Binary files /dev/null and b/data/emoticons/face-smile-big24x24.png differ diff --git a/data/emoticons/face-smile-big32x32.png b/data/emoticons/face-smile-big32x32.png new file mode 100644 index 0000000..5d3cfc2 Binary files /dev/null and b/data/emoticons/face-smile-big32x32.png differ diff --git a/data/emoticons/face-smile24x24.png b/data/emoticons/face-smile24x24.png new file mode 100644 index 0000000..7cce2a0 Binary files /dev/null and b/data/emoticons/face-smile24x24.png differ diff --git a/data/emoticons/face-smile32x32.png b/data/emoticons/face-smile32x32.png new file mode 100644 index 0000000..b2fb1d1 Binary files /dev/null and b/data/emoticons/face-smile32x32.png differ diff --git a/data/emoticons/face-surprise24x24.png b/data/emoticons/face-surprise24x24.png new file mode 100644 index 0000000..eb887f4 Binary files /dev/null and b/data/emoticons/face-surprise24x24.png differ diff --git a/data/emoticons/face-surprise32x32.png b/data/emoticons/face-surprise32x32.png new file mode 100644 index 0000000..c30cefe Binary files /dev/null and b/data/emoticons/face-surprise32x32.png differ diff --git a/data/emoticons/face-wink24x24.png b/data/emoticons/face-wink24x24.png new file mode 100644 index 0000000..00a44a4 Binary files /dev/null and b/data/emoticons/face-wink24x24.png differ diff --git a/data/emoticons/face-wink32x32.png b/data/emoticons/face-wink32x32.png new file mode 100644 index 0000000..4923c12 Binary files /dev/null and b/data/emoticons/face-wink32x32.png differ diff --git a/data/stylesheets/default.qss b/data/stylesheets/default.qss new file mode 100644 index 0000000..05ad448 --- /dev/null +++ b/data/stylesheets/default.qss @@ -0,0 +1,97 @@ +QFrame { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QComboBox { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QLineEdit { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QPushButton { + border: 5px solid darkgrey; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QPushButton#contactsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QPushButton#settingsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QPushButton#statusAreaButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QLabel#statusAreaLabel:enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QLabel#statusAreaLabel:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QPushButton#scrollUpButton:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); + color: white; +} + +QPushButton#scrollDownButton:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); + color: white; +} + +QMenu::item { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QMenu::separator { + background: grey; +} + +QMessageBox { + background: white; +} + +QMessageBox > QLabel { + background: none; +} + +QListView::item:selected:active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); +} + +QListView::item:selected:!active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); +} + +TocContactListWidget { + qproperty-logoColor: "red"; +} diff --git a/data/stylesheets/my.qss b/data/stylesheets/my.qss new file mode 100644 index 0000000..8265e69 --- /dev/null +++ b/data/stylesheets/my.qss @@ -0,0 +1,69 @@ +QFrame { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QComboBox { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QLineEdit { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QPushButton { + border: 5px solid darkgrey; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QPushButton#contactsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QPushButton#settingsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QPushButton#statusAreaButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QLabel#statusAreaLabel[checked="true"] { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +TecMainToolbar > QLabel { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QMenu::item { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QListView::item:selected:active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0b0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); +} +QListView::item:selected:!active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); +} +QMessageBox { + background: white; +} + +QMessageBox > QLabel { + background: none; +} + +TocContactListWidget { + qproperty-logoColor: "green"; +} \ No newline at end of file diff --git a/data/tietoopcom.desktop b/data/tietoopcom.desktop new file mode 100644 index 0000000..c0bfd08 --- /dev/null +++ b/data/tietoopcom.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.5.5 +Type=Application +Name=Tieto Open Communicator +Comment=Realtime communicator for Maemo/Telepathy +Exec=/usr/bin/tietoopcom +Icon=jabber +X-Icon-path=/usr/share/pixmaps/ +X-Maemo-Category=Main +X-Window-Icon=jabber +X-Window-Icon-Dimmed=jabber +X-Osso-Service=com.tieto.tietoopcom diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..7cc7b32 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,14 @@ +tietoopcom (0.5.5-1) stable; urgency=low + + * Added DBus integration + + -- Darknock Fri, 25 Jun 2010 15:48:00 +0100 + +tietoopcom (0.5.4-1) stable; urgency=low + + * Changed framework to Freemantle + * Changed name to Tieto Open Communicator (tietoopcom) + * Added Tieto logo + - color can be changed from style sheet + + -- Darknock Fri, 25 Jun 2010 12:43:00 +0100 diff --git a/debian/changelog_old b/debian/changelog_old new file mode 100644 index 0000000..8736e92 --- /dev/null +++ b/debian/changelog_old @@ -0,0 +1,244 @@ +tietoopcom (0.5.3-1) stable; urgency=low + + * Changed framework to Freemantle + * Changed name to Tieto Open Communicator (tietoopcom) + + -- Darknock Fri, 11 Jun 2010 17:26:00 +0100 + +tec (0.5.256-1) stable; urgency=low + + * Added scroll widget to active sessions menu + + -- Darknock Tue, 17 Mar 2008 17:31:00 +0100 + +tec (0.5.247-2) stable; urgency=low + + * Code cleanup + + -- Darknock Fri, 13 Mar 2008 13:05:00 +0100 + +tec (0.5.244-1) stable; urgency=low + + * Added Account creation + + -- Darknock Thu, 12 Mar 2008 19:35:00 +0100 + +tec (0.5.242-1) stable; urgency=low + + * Added ability to change between themes + * Fixed a LOT of bugs + * Added About box + + -- Darknock Thu, 12 Mar 2008 16:32:00 +0100 + +tec (0.5.231-1) stable; urgency=low + + * Fixed layouts to be more consistent with each other + * Expanded the spaces between items on contact list + * Added style sheet to the Context Menu + + -- Darknock Tue, 10 Mar 2008 15:29:00 +0100 + +tec (0.5.228-1) stable; urgency=low + + * code review and bug fixing release + + -- Darknock Mon, 9 Mar 2008 15:22:00 +0100 + +tec (0.5.212-1) stable; urgency=low + + * bug fixing release + + -- Darknock Tue, 4 Mar 2008 12:43:00 +0100 + +tec (0.5.210-1) unstable; urgency=low + + * Ok changed to Apply in Themes view + * Added saving of pending lists to the settings file + - fixed a problem with disappearing + - and respawning contacts + * a lot of bug fixes + + -- Darknock Tue, 4 Mar 2008 10:13:00 +0100 + +tec (0.5.207-1) unstable; urgency=low + + * Fixed error messages texts + * Added Literal sorting of contact list + * Authorization is now always accepted + * Rebuilt themes view + + -- Darknock Tue, 3 Mar 2008 18:15:00 +0100 + +tec (0.5.205-1) unstable; urgency=low + + * Added confirmation dialog when removing contact + * Added Style sheet for QMessageBox + * Descriptive labels added to General Settings view. + - Alphabetical sorting always enabled + - Authorization always accepted + * Added Message Delivery error handling + * Changed formatting of messages and notifications + * Message sending on enter + * Connecting and disconnecting should be more stable + * Added error messages handling on connection faults + + -- Darknock Tue, 3 Mar 2008 15:39:00 +0100 + +tec (0.5.197-1) unstable; urgency=low + + * Settings layout adjustments + * TecChatWidget improvements + * TecUserInfoWidget layout redesign + * IconProvider + TecContactList and TecUserInfoWidget refactoring + + -- Darknock Mon, 2 Mar 2008 15:00:00 +0100 + +tec (0.5.185-1) unstable; urgency=low + + * Rebuilt TecSettingsWidget + * Rebuilt TecGeneralSettingsWidget + * Fixed general settings edition and saving + + -- Darknock Thu, 26 Feb 2008 18:00:00 +0100 + +tec (0.5.184-1) unstable; urgency=low + + * Rebuilt TecAccountSettingsWidget + * Fixed account edition and saving + * Fixed highlighting of "tabs" + * Added support for Google Talk (buggy) + + -- Darknock Thu, 26 Feb 2008 11:55:00 +0100 + +tec (0.5.182-1) unstable; urgency=low + + * Highlighting of selected "tabs" added + + -- Darknock Wed, 25 Feb 2008 9:53:00 +0100 + +tec (0.5.181-1) unstable; urgency=low + + * Added status support + * `TecContact` referenced code re-factoring + * Few bug fixes + * Clearing of statuses in Offline status + + -- Darknock Tue, 24 Feb 2008 14:44:00 +0100 + +tec (0.5.177-1) unstable; urgency=low + + * Added sending of messages + * Offline status now really disconnects + + -- Darknock Tue, 24 Feb 2008 11:26:00 +0100 + +tec (0.5.176-1) unstable; urgency=low + + * Finished Contact List synchronization + * Settings are now properly saved + + -- Darknock Mon, 23 Feb 2008 17:54:00 +0100 + +tec (0.5.169-1) unstable; urgency=low + + * Added Contact List synchronization + * You can now add, edit and remove contact from contact list + * Sending of messages + + -- Darknock Fri, 20 Feb 2008 9:27:00 +0100 + +tec (0.5.162-1) unstable; urgency=low + + * Added channel handling support + + -- Darknock Fri, 19 Dec 2008 12:45:00 +0100 + +tec (0.5.158-1) unstable; urgency=low + + * Minor fixes in TecAccountSettingsWidget + * Saving settings to QSettings + - without contact list support + + -- Darknock Fri, 19 Dec 2008 9:32:00 +0100 + +tec (0.5.154-1) unstable; urgency=low + + * Fixes in TecMainToolbar + - Divided labelButton into statusAreaButton and Label + + -- Darknock Wed, 17 Dec 2008 16:32:00 +0100 + +tec (0.5.153-1) unstable; urgency=low + + * Added FirstTimeUse view + * Implemented status handling + * Fixes in TecMainToolbar + - Changed icons + - Added additional statuses + - Fixed disappearing Active Sessions Menu + + -- Darknock Wed, 17 Dec 2008 14:52:00 +0100 + +tec (0.5.139-1) unstable; urgency=low + + * Changed account settings view + * Added partial implementation of TecSettings + * Started implementing TecEngine methods + + -- Darknock Tue, 16 Dec 2008 16:43:00 +0100 + +tec (0.5.130-1) unstable; urgency=low + + * Fixed font metrics setting + + -- Darknock Fri, 12 Dec 2008 13:18:00 +0100 + +tec (0.5.126-1) unstable; urgency=low + + * Extracted base abstract class from TecMainWindow + - now one can inherit from the base class to implement his own UI + + -- Darknock Fri, 12 Dec 2008 12:43:00 +0100 + +tec (0.5.124-1) unstable; urgency=low + + * Fixed some bugs + * Added abstract class for TecEngine + + -- Darknock Fri, 12 Dec 2008 12:00:00 +0100 + +tec (0.5.122-1) unstable; urgency=low + + * Refactored source code to be more "Qt" + + -- Darknock Thu, 11 Dec 2008 13:18:00 +0100 + +tec (0.5.115-1) unstable; urgency=low + + * Changed icons in resources + * Changed default theme + * Finished style sheets + * Some fixes to the Ui + + -- Darknock Tue, 02 Dec 2008 09:15:00 +0100 + +tec (0.5.109-1) unstable; urgency=low + + * Finished implementation of GUI mechanics + * Finished some of the style sheets + + -- Darknock Fri, 26 Nov 2008 18:10:00 +0100 + +tec (0.5.079-1) unstable; urgency=low + + * Implemented most of the classes + + -- Darknock Wed, 26 Nov 2008 18:10:00 +0100 + +tec (0.5.036-1) unstable; urgency=low + + * Initial release (Closes: #nnnn) + + -- Darknock Tue, 18 Nov 2008 9:32:00 +0100 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..c223bde --- /dev/null +++ b/debian/control @@ -0,0 +1,12 @@ +Source: tietoopcom +Section: user/network +Priority: extra +Maintainer: Konrad Ciekot +Build-Depends: libqt4-dev, cdbs, debhelper (>= 5), libqttapioca-dev (>= 0.1.0) +Standards-Version: 3.7.2 + +Package: tietoopcom +Architecture: any +XB-Maemo-Display-Name: Tieto Open Communicator +Depends: libqt4-gui (>= 4.6.2~git20100401-0maemo1+0m5), libqt4-core (>= 4.6.2~git20100401-0maemo1+0m5), libqt4-dbus (>= 4.6.2~git20100401-0maemo1+0m5), libqttapioca0 (>= 0.1.0) +Description: Client for the Telepathy communication framework. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..73b8295 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,28 @@ +This package was debianized by Konrad Ciekot on +Wed, 22 Oct 2008 10:57:00 +0100. + +Copyright (c) 2010, Tieto Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of the Tieto Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..8a15a75 --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +tietoopcom_0.5.5-1_i386.deb user/network extra diff --git a/debian/rules b/debian/rules new file mode 100644 index 0000000..cb109d2 --- /dev/null +++ b/debian/rules @@ -0,0 +1,105 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +# shared library versions, option 1 +version=2.0.5 +major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +#version=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +#major=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + ./configure + touch configure-stamp + + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) release + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) distclean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/tmp + $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot +# dh_installchangelogs +# dh_installdocs +# dh_installexamples + dh_install --sourcedir=debian/tmp +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo +# dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/debian/tietoopcom.install b/debian/tietoopcom.install new file mode 100644 index 0000000..87deca1 --- /dev/null +++ b/debian/tietoopcom.install @@ -0,0 +1,2 @@ +usr/bin/* +usr/share/* diff --git a/debian/tietoopcom.substvars b/debian/tietoopcom.substvars new file mode 100644 index 0000000..b0c1d5f --- /dev/null +++ b/debian/tietoopcom.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-core (>= 4.6.2~git20100401), libqt4-dbus (>= 4.6.2~git20100401), libqt4-gui (>= 4.6.2~git20100401), libqt4-xml (>= 4.6.2~git20100401), libstdc++6 (>= 4.2.1) diff --git a/debian/tietoopcom/DEBIAN/control b/debian/tietoopcom/DEBIAN/control new file mode 100644 index 0000000..33fdb09 --- /dev/null +++ b/debian/tietoopcom/DEBIAN/control @@ -0,0 +1,10 @@ +Package: tietoopcom +Version: 0.5.5-1 +Section: user/network +Priority: extra +Architecture: i386 +Depends: libqt4-gui (>= 4.6.2~git20100401-0maemo1+0m5), libqt4-core (>= 4.6.2~git20100401-0maemo1+0m5), libqt4-dbus (>= 4.6.2~git20100401-0maemo1+0m5), libqttapioca0 (>= 0.1.0) +Installed-Size: 608 +Maintainer: Konrad Ciekot +Description: Client for the Telepathy communication framework. +Maemo-Display-Name: Tieto Open Communicator diff --git a/debian/tietoopcom/DEBIAN/md5sums b/debian/tietoopcom/DEBIAN/md5sums new file mode 100644 index 0000000..a6eb9b4 --- /dev/null +++ b/debian/tietoopcom/DEBIAN/md5sums @@ -0,0 +1,32 @@ +2201a24c4cca9145980248592e9fae1e usr/bin/tietoopcom +774e5143da1b3d3c233d873f56b0c36a usr/share/applications/hildon/tietoopcom.desktop +9778117aea9792898bad6a18311236fb usr/share/tietoopcom/licence/copyright +bef9900a21b15d087f9308ed71871081 usr/share/tietoopcom/stylesheets/default.qss +204db55de012bbc14aeb053c2b80c9bf usr/share/tietoopcom/stylesheets/my.qss +610883ccf2039334b16df37e2c370944 usr/share/tietoopcom/emoticons/face-kiss32x32.png +e313d30b3faa415224b6f5bde47aca97 usr/share/tietoopcom/emoticons/face-glasses24x24.png +d0c28e0763e913e7a2ca72134e29bb97 usr/share/tietoopcom/emoticons/face-glasses32x32.png +a28b8e63383ff3fa8cae34a51afc8b6b usr/share/tietoopcom/emoticons/face-surprise32x32.png +126a3f2379a264508de3433dbe40bf38 usr/share/tietoopcom/emoticons/face-surprise24x24.png +476ad893421bb70a91b41a9d949636d4 usr/share/tietoopcom/emoticons/face-monkey32x32.png +2f7ccdab0208b00fdcce723dc9ea45bb usr/share/tietoopcom/emoticons/face-wink32x32.png +cfdf854bb5f406446a62b890428728bb usr/share/tietoopcom/emoticons/face-angel24x24.png +56bb43564b5fa19b19439a45ff14140b usr/share/tietoopcom/emoticons/face-smile32x32.png +e81630eabeb1021e4da1fa3aee532393 usr/share/tietoopcom/emoticons/face-sad32x32.png +f623839d7576846950ebbc411cf60901 usr/share/tietoopcom/emoticons/face-crying32x32.png +f57fe3c810fc6ab0a356b92b2a20a994 usr/share/tietoopcom/emoticons/face-smile-big24x24.png +846c8b9a0094fe5e2285585f019616c2 usr/share/tietoopcom/emoticons/face-plain32x32.png +899b4c17a59fa2293d46c100f00c5afd usr/share/tietoopcom/emoticons/face-smile-big32x32.png +0882a65810ac487058d7ae6a129d6ae7 usr/share/tietoopcom/emoticons/face-grin24x24.png +e1b8256e837f593c9f9f8a39a16cf841 usr/share/tietoopcom/emoticons/face-plain24x24.png +387eb9b031e76bb238da7b583edd12bd usr/share/tietoopcom/emoticons/face-angel32x32.png +1ed3bb43e8dfc6aedb5ee25e615db5cf usr/share/tietoopcom/emoticons/face-wink24x24.png +665c60c4c90ba626d47de8b163a8cfd3 usr/share/tietoopcom/emoticons/face-devilish24x24.png +1187404feabd05c78e5a796527c62521 usr/share/tietoopcom/emoticons/face-monkey24x24.png +b683df0b94b5cb353774654056b22366 usr/share/tietoopcom/emoticons/face-grin32x32.png +a30955a7d0319dd4f0c5468a3876e930 usr/share/tietoopcom/emoticons/face-smile24x24.png +161c423b048b3859408da864e69ed637 usr/share/tietoopcom/emoticons/face-sad24x24.png +0bf570cb454ffde04c434a5889cb80b7 usr/share/tietoopcom/emoticons/face-kiss24x24.png +7b043e8ad9055fb809304d1b3be693d1 usr/share/tietoopcom/emoticons/face-devilish32x32.png +a0ac6652e80f503357354f4b52dc0cb6 usr/share/tietoopcom/emoticons/face-crying24x24.png +984b677d70a11ab34d14641e3459f853 usr/share/dbus-1/services/com.tieto.tietoopcom.service diff --git a/debian/tietoopcom/usr/bin/tietoopcom b/debian/tietoopcom/usr/bin/tietoopcom new file mode 100644 index 0000000..c3d1f89 Binary files /dev/null and b/debian/tietoopcom/usr/bin/tietoopcom differ diff --git a/debian/tietoopcom/usr/share/applications/hildon/tietoopcom.desktop b/debian/tietoopcom/usr/share/applications/hildon/tietoopcom.desktop new file mode 100644 index 0000000..c0bfd08 --- /dev/null +++ b/debian/tietoopcom/usr/share/applications/hildon/tietoopcom.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.5.5 +Type=Application +Name=Tieto Open Communicator +Comment=Realtime communicator for Maemo/Telepathy +Exec=/usr/bin/tietoopcom +Icon=jabber +X-Icon-path=/usr/share/pixmaps/ +X-Maemo-Category=Main +X-Window-Icon=jabber +X-Window-Icon-Dimmed=jabber +X-Osso-Service=com.tieto.tietoopcom diff --git a/debian/tietoopcom/usr/share/dbus-1/services/com.tieto.tietoopcom.service b/debian/tietoopcom/usr/share/dbus-1/services/com.tieto.tietoopcom.service new file mode 100644 index 0000000..fa159b5 --- /dev/null +++ b/debian/tietoopcom/usr/share/dbus-1/services/com.tieto.tietoopcom.service @@ -0,0 +1,4 @@ +# Service description file +[D-BUS Service] +Name=com.tieto.tietoopcom +Exec=/usr/bin/tietoopcom diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-angel24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-angel24x24.png new file mode 100644 index 0000000..1163195 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-angel24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-angel32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-angel32x32.png new file mode 100644 index 0000000..8604e09 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-angel32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-crying24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-crying24x24.png new file mode 100644 index 0000000..609020f Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-crying24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-crying32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-crying32x32.png new file mode 100644 index 0000000..6599fe7 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-crying32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-devilish24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-devilish24x24.png new file mode 100644 index 0000000..9abf970 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-devilish24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-devilish32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-devilish32x32.png new file mode 100644 index 0000000..eaeacc2 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-devilish32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-glasses24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-glasses24x24.png new file mode 100644 index 0000000..a3e736d Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-glasses24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-glasses32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-glasses32x32.png new file mode 100644 index 0000000..316405c Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-glasses32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-grin24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-grin24x24.png new file mode 100644 index 0000000..39e53dd Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-grin24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-grin32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-grin32x32.png new file mode 100644 index 0000000..6494af3 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-grin32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-kiss24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-kiss24x24.png new file mode 100644 index 0000000..3d43359 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-kiss24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-kiss32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-kiss32x32.png new file mode 100644 index 0000000..c746a81 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-kiss32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-monkey24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-monkey24x24.png new file mode 100644 index 0000000..86e7b00 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-monkey24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-monkey32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-monkey32x32.png new file mode 100644 index 0000000..d95f91d Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-monkey32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-plain24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-plain24x24.png new file mode 100644 index 0000000..64c8b10 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-plain24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-plain32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-plain32x32.png new file mode 100644 index 0000000..9e884b1 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-plain32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-sad24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-sad24x24.png new file mode 100644 index 0000000..bd9b495 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-sad24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-sad32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-sad32x32.png new file mode 100644 index 0000000..d953d88 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-sad32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile-big24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile-big24x24.png new file mode 100644 index 0000000..2026d20 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile-big24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile-big32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile-big32x32.png new file mode 100644 index 0000000..5d3cfc2 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile-big32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile24x24.png new file mode 100644 index 0000000..7cce2a0 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile32x32.png new file mode 100644 index 0000000..b2fb1d1 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-smile32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-surprise24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-surprise24x24.png new file mode 100644 index 0000000..eb887f4 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-surprise24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-surprise32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-surprise32x32.png new file mode 100644 index 0000000..c30cefe Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-surprise32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-wink24x24.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-wink24x24.png new file mode 100644 index 0000000..00a44a4 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-wink24x24.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-wink32x32.png b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-wink32x32.png new file mode 100644 index 0000000..4923c12 Binary files /dev/null and b/debian/tietoopcom/usr/share/tietoopcom/emoticons/face-wink32x32.png differ diff --git a/debian/tietoopcom/usr/share/tietoopcom/licence/copyright b/debian/tietoopcom/usr/share/tietoopcom/licence/copyright new file mode 100644 index 0000000..9f70f45 --- /dev/null +++ b/debian/tietoopcom/usr/share/tietoopcom/licence/copyright @@ -0,0 +1,30 @@ +This package was debianized by Konrad Ciekot on +Wed, 22 Oct 2008 10:57:00 +0100. + + +Tieto Open Communicator +Copyright (c) 2010, Tieto Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of the Tieto Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/debian/tietoopcom/usr/share/tietoopcom/stylesheets/default.qss b/debian/tietoopcom/usr/share/tietoopcom/stylesheets/default.qss new file mode 100644 index 0000000..05ad448 --- /dev/null +++ b/debian/tietoopcom/usr/share/tietoopcom/stylesheets/default.qss @@ -0,0 +1,97 @@ +QFrame { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QComboBox { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QLineEdit { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QPushButton { + border: 5px solid darkgrey; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QPushButton#contactsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QPushButton#settingsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QPushButton#statusAreaButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QLabel#statusAreaLabel:enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QLabel#statusAreaLabel:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QPushButton#scrollUpButton:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); + color: white; +} + +QPushButton#scrollDownButton:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); + color: white; +} + +QMenu::item { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QMenu::separator { + background: grey; +} + +QMessageBox { + background: white; +} + +QMessageBox > QLabel { + background: none; +} + +QListView::item:selected:active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); +} + +QListView::item:selected:!active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); +} + +TocContactListWidget { + qproperty-logoColor: "red"; +} diff --git a/debian/tietoopcom/usr/share/tietoopcom/stylesheets/my.qss b/debian/tietoopcom/usr/share/tietoopcom/stylesheets/my.qss new file mode 100644 index 0000000..8265e69 --- /dev/null +++ b/debian/tietoopcom/usr/share/tietoopcom/stylesheets/my.qss @@ -0,0 +1,69 @@ +QFrame { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QComboBox { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QLineEdit { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QPushButton { + border: 5px solid darkgrey; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QPushButton#contactsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QPushButton#settingsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QPushButton#statusAreaButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QLabel#statusAreaLabel[checked="true"] { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +TecMainToolbar > QLabel { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QMenu::item { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QListView::item:selected:active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0b0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); +} +QListView::item:selected:!active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); +} +QMessageBox { + background: white; +} + +QMessageBox > QLabel { + background: none; +} + +TocContactListWidget { + qproperty-logoColor: "green"; +} \ No newline at end of file diff --git a/debian/tmp/usr/bin/tietoopcom b/debian/tmp/usr/bin/tietoopcom new file mode 100644 index 0000000..d1a5301 Binary files /dev/null and b/debian/tmp/usr/bin/tietoopcom differ diff --git a/debian/tmp/usr/share/applications/hildon/tietoopcom.desktop b/debian/tmp/usr/share/applications/hildon/tietoopcom.desktop new file mode 100644 index 0000000..c0bfd08 --- /dev/null +++ b/debian/tmp/usr/share/applications/hildon/tietoopcom.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.5.5 +Type=Application +Name=Tieto Open Communicator +Comment=Realtime communicator for Maemo/Telepathy +Exec=/usr/bin/tietoopcom +Icon=jabber +X-Icon-path=/usr/share/pixmaps/ +X-Maemo-Category=Main +X-Window-Icon=jabber +X-Window-Icon-Dimmed=jabber +X-Osso-Service=com.tieto.tietoopcom diff --git a/debian/tmp/usr/share/dbus-1/services/com.tieto.tietoopcom.service b/debian/tmp/usr/share/dbus-1/services/com.tieto.tietoopcom.service new file mode 100644 index 0000000..fa159b5 --- /dev/null +++ b/debian/tmp/usr/share/dbus-1/services/com.tieto.tietoopcom.service @@ -0,0 +1,4 @@ +# Service description file +[D-BUS Service] +Name=com.tieto.tietoopcom +Exec=/usr/bin/tietoopcom diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-angel24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-angel24x24.png new file mode 100644 index 0000000..1163195 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-angel24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-angel32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-angel32x32.png new file mode 100644 index 0000000..8604e09 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-angel32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-crying24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-crying24x24.png new file mode 100644 index 0000000..609020f Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-crying24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-crying32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-crying32x32.png new file mode 100644 index 0000000..6599fe7 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-crying32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-devilish24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-devilish24x24.png new file mode 100644 index 0000000..9abf970 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-devilish24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-devilish32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-devilish32x32.png new file mode 100644 index 0000000..eaeacc2 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-devilish32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-glasses24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-glasses24x24.png new file mode 100644 index 0000000..a3e736d Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-glasses24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-glasses32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-glasses32x32.png new file mode 100644 index 0000000..316405c Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-glasses32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-grin24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-grin24x24.png new file mode 100644 index 0000000..39e53dd Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-grin24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-grin32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-grin32x32.png new file mode 100644 index 0000000..6494af3 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-grin32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-kiss24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-kiss24x24.png new file mode 100644 index 0000000..3d43359 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-kiss24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-kiss32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-kiss32x32.png new file mode 100644 index 0000000..c746a81 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-kiss32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-monkey24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-monkey24x24.png new file mode 100644 index 0000000..86e7b00 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-monkey24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-monkey32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-monkey32x32.png new file mode 100644 index 0000000..d95f91d Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-monkey32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-plain24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-plain24x24.png new file mode 100644 index 0000000..64c8b10 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-plain24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-plain32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-plain32x32.png new file mode 100644 index 0000000..9e884b1 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-plain32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-sad24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-sad24x24.png new file mode 100644 index 0000000..bd9b495 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-sad24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-sad32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-sad32x32.png new file mode 100644 index 0000000..d953d88 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-sad32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-smile-big24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile-big24x24.png new file mode 100644 index 0000000..2026d20 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile-big24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-smile-big32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile-big32x32.png new file mode 100644 index 0000000..5d3cfc2 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile-big32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-smile24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile24x24.png new file mode 100644 index 0000000..7cce2a0 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-smile32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile32x32.png new file mode 100644 index 0000000..b2fb1d1 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-smile32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-surprise24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-surprise24x24.png new file mode 100644 index 0000000..eb887f4 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-surprise24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-surprise32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-surprise32x32.png new file mode 100644 index 0000000..c30cefe Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-surprise32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-wink24x24.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-wink24x24.png new file mode 100644 index 0000000..00a44a4 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-wink24x24.png differ diff --git a/debian/tmp/usr/share/tietoopcom/emoticons/face-wink32x32.png b/debian/tmp/usr/share/tietoopcom/emoticons/face-wink32x32.png new file mode 100644 index 0000000..4923c12 Binary files /dev/null and b/debian/tmp/usr/share/tietoopcom/emoticons/face-wink32x32.png differ diff --git a/debian/tmp/usr/share/tietoopcom/licence/copyright b/debian/tmp/usr/share/tietoopcom/licence/copyright new file mode 100644 index 0000000..9f70f45 --- /dev/null +++ b/debian/tmp/usr/share/tietoopcom/licence/copyright @@ -0,0 +1,30 @@ +This package was debianized by Konrad Ciekot on +Wed, 22 Oct 2008 10:57:00 +0100. + + +Tieto Open Communicator +Copyright (c) 2010, Tieto Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of the Tieto Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/debian/tmp/usr/share/tietoopcom/stylesheets/default.qss b/debian/tmp/usr/share/tietoopcom/stylesheets/default.qss new file mode 100644 index 0000000..05ad448 --- /dev/null +++ b/debian/tmp/usr/share/tietoopcom/stylesheets/default.qss @@ -0,0 +1,97 @@ +QFrame { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QComboBox { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QLineEdit { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} + +QPushButton { + border: 5px solid darkgrey; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QPushButton#contactsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QPushButton#settingsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QPushButton#statusAreaButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QLabel#statusAreaLabel:enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} + +QLabel#statusAreaLabel:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QPushButton#scrollUpButton:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); + color: white; +} + +QPushButton#scrollDownButton:!enabled { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); + color: white; +} + +QMenu::item { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); + color: white; +} + +QMenu::separator { + background: grey; +} + +QMessageBox { + background: white; +} + +QMessageBox > QLabel { + background: none; +} + +QListView::item:selected:active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); +} + +QListView::item:selected:!active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #a00, stop: 0.55 #b00, stop: 0.56 #b00, stop: 1 #f00); +} + +TocContactListWidget { + qproperty-logoColor: "red"; +} diff --git a/debian/tmp/usr/share/tietoopcom/stylesheets/my.qss b/debian/tmp/usr/share/tietoopcom/stylesheets/my.qss new file mode 100644 index 0000000..8265e69 --- /dev/null +++ b/debian/tmp/usr/share/tietoopcom/stylesheets/my.qss @@ -0,0 +1,69 @@ +QFrame { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QComboBox { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QLineEdit { + color: black; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); +} +QPushButton { + border: 5px solid darkgrey; + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QPushButton#contactsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QPushButton#settingsButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QPushButton#statusAreaButton:checked { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +QLabel#statusAreaLabel[checked="true"] { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #fff, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #aaa); + color: white; +} +TecMainToolbar > QLabel { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QMenu::item { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); + color: white; +} +QListView::item:selected:active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0b0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); +} +QListView::item:selected:!active { + background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #0a0, stop: 0.55 #0b0, stop: 0.56 #0b0, stop: 1 #0f0); +} +QMessageBox { + background: white; +} + +QMessageBox > QLabel { + background: none; +} + +TocContactListWidget { + qproperty-logoColor: "green"; +} \ No newline at end of file diff --git a/description b/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/hooks/applypatch-msg.sample b/hooks/applypatch-msg.sample new file mode 100755 index 0000000..8b2a2fe --- /dev/null +++ b/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +test -x "$GIT_DIR/hooks/commit-msg" && + exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} +: diff --git a/hooks/commit-msg.sample b/hooks/commit-msg.sample new file mode 100755 index 0000000..6ef1d29 --- /dev/null +++ b/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by git-commit with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/hooks/post-commit.sample b/hooks/post-commit.sample new file mode 100755 index 0000000..2266821 --- /dev/null +++ b/hooks/post-commit.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script that is called after a successful +# commit is made. +# +# To enable this hook, rename this file to "post-commit". + +: Nothing diff --git a/hooks/post-receive.sample b/hooks/post-receive.sample new file mode 100755 index 0000000..7a83e17 --- /dev/null +++ b/hooks/post-receive.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script for the "post-receive" event. +# +# The "post-receive" script is run after receive-pack has accepted a pack +# and the repository has been updated. It is passed arguments in through +# stdin in the form +# +# For example: +# aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master +# +# see contrib/hooks/ for a sample, or uncomment the next line and +# rename the file to "post-receive". + +#. /usr/share/doc/git-core/contrib/hooks/post-receive-email diff --git a/hooks/post-update.sample b/hooks/post-update.sample new file mode 100755 index 0000000..5323b56 --- /dev/null +++ b/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git-update-server-info diff --git a/hooks/pre-applypatch.sample b/hooks/pre-applypatch.sample new file mode 100755 index 0000000..b1f187c --- /dev/null +++ b/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} +: diff --git a/hooks/pre-commit.sample b/hooks/pre-commit.sample new file mode 100755 index 0000000..439eefd --- /dev/null +++ b/hooks/pre-commit.sample @@ -0,0 +1,46 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by git-commit with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git-rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 +fi + +# If you want to allow non-ascii filenames set this variable to true. +allownonascii=$(git config hooks.allownonascii) + +# Cross platform projects tend to avoid non-ascii filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test "$(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0')" +then + echo "Error: Attempt to add a non-ascii file name." + echo + echo "This can cause problems if you want to work" + echo "with people on other platforms." + echo + echo "To be portable it is advisable to rename the file ..." + echo + echo "If you know what you are doing you can disable this" + echo "check using:" + echo + echo " git config hooks.allownonascii true" + echo + exit 1 +fi + +exec git diff-index --check --cached $against -- diff --git a/hooks/pre-rebase.sample b/hooks/pre-rebase.sample new file mode 100755 index 0000000..be1b06e --- /dev/null +++ b/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git-rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git-rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git-rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git-rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git-rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up-to-date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git-rev-list --pretty=oneline ^${publish} "$topic"` + perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +exit 0 + +################################################################ + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git-rev-list ^master ^topic next + git-rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git-rev-list master..topic + + if this is empty, it is fully merged to "master". diff --git a/hooks/prepare-commit-msg.sample b/hooks/prepare-commit-msg.sample new file mode 100755 index 0000000..3652424 --- /dev/null +++ b/hooks/prepare-commit-msg.sample @@ -0,0 +1,36 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by git-commit with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first comments out the +# "Conflicts:" part of a merge commit. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +case "$2,$3" in + merge,) + perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; + +# ,|template,) +# perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$1" ;; + + *) ;; +esac + +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" diff --git a/hooks/update.sample b/hooks/update.sample new file mode 100755 index 0000000..fd63b2d --- /dev/null +++ b/hooks/update.sample @@ -0,0 +1,128 @@ +#!/bin/sh +# +# An example hook script to blocks unannotated tags from entering. +# Called by git-receive-pack with arguments: refname sha1-old sha1-new +# +# To enable this hook, rename this file to "update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# hooks.allowdeletetag +# This boolean sets whether deleting tags will be allowed in the +# repository. By default they won't be. +# hooks.allowmodifytag +# This boolean sets whether a tag may be modified after creation. By default +# it won't be. +# hooks.allowdeletebranch +# This boolean sets whether deleting branches will be allowed in the +# repository. By default they won't be. +# hooks.denycreatebranch +# This boolean sets whether remotely creating branches will be denied +# in the repository. By default this is allowed. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --bool hooks.allowunannotated) +allowdeletebranch=$(git config --bool hooks.allowdeletebranch) +denycreatebranch=$(git config --bool hooks.denycreatebranch) +allowdeletetag=$(git config --bool hooks.allowdeletetag) +allowmodifytag=$(git config --bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero="0000000000000000000000000000000000000000" +if [ "$newrev" = "$zero" ]; then + newrev_type=delete +else + newrev_type=$(git-cat-file -t $newrev) +fi + +case "$refname","$newrev_type" in + refs/tags/*,commit) + # un-annotated tag + short_refname=${refname##refs/tags/} + if [ "$allowunannotated" != "true" ]; then + echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/include/TocEngine/TocBaseEngine b/include/TocEngine/TocBaseEngine new file mode 100644 index 0000000..11d6dbc --- /dev/null +++ b/include/TocEngine/TocBaseEngine @@ -0,0 +1 @@ +#include "tocbaseengine.h" diff --git a/include/TocEngine/TocEngine b/include/TocEngine/TocEngine new file mode 100644 index 0000000..27eafbb --- /dev/null +++ b/include/TocEngine/TocEngine @@ -0,0 +1 @@ +#include "tocengine.h" diff --git a/include/TocEngine/TocEngine.pri b/include/TocEngine/TocEngine.pri new file mode 100644 index 0000000..b778ed3 --- /dev/null +++ b/include/TocEngine/TocEngine.pri @@ -0,0 +1,11 @@ +DEPENDPATH += \ + $$PWD + +INCLUDEPATH += \ + $$PWD + +HEADERS += \ + TocBaseEngine \ + tocbaseengine.h \ + TocEngine \ + tocengine.h diff --git a/include/TocEngine/tocbaseengine.h b/include/TocEngine/tocbaseengine.h new file mode 100644 index 0000000..8a990bb --- /dev/null +++ b/include/TocEngine/tocbaseengine.h @@ -0,0 +1,191 @@ +/** \file TocBaseEngine.h + * \brief Declaration of TocBaseEngine class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCBASEENGINE_H +#define TOCBASEENGINE_H + +#include "defs.h" + +QT_BEGIN_NAMESPACE + +/** \brief TocBaseEngine class + * + * Abstract class representing the engine's public interface + * this interface is used by TocBaseUi + */ +class TocBaseEngine : public QObject +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocBaseEngine( QObject * parent = 0 ); + + /** + * Destructor + */ + ~TocBaseEngine(); + +signals: + + /** \brief Notifies about connection status change + * + * Useful when the server disconnects us + * without our request to show the information to the user. + * + * @param status Connection status + * @param reason Status change reason + */ + void statusChanged(Status status, Reason reason); + + /** \brief Notifies about user presence change + * + * Used to confirm presence change request. + * + * @param presence User presence + * @param description Presence description + */ + void presenceUpdated(Presence presence, QString description); + + /** \brief Notifies about user presence change + * + * @param uid Contact's user ID + * @param presence Contact's presence + * @param description Presence description + */ + void contactPresenceUpdated(QString uid, Presence presence, QString description); + + /** \brief Notifies about incoming messages + * + * Emited when there is a new pending message to be handled. + * + * @param uid Contact's user ID + * @param message Message to be handled + */ + void incomingMessage(QString uid, Message message); + + /** \brief Notifies if there is a new ContactList ready + * + * Full contact list is sent only on TocEngine's startup, + * then it sends only the elements that have changed. ( TODO: to be discussed ) + * + * @param contactList New contact list to be displayed + */ + void contactListReceived(const TocContactList& contactList); + + /** \brief Notifies about accepted subscription + * + * This signal tells us if the contact we wanted to add + * to our contact list, authorized our request. + * + * @param uid ID of the contact that accepted our subscription request + */ + void subscriptionAccepted(QString uid); + + /** \brief Notifies about authorization request from contact + * + * This signal tells us that there is a contact that requested + * our authorization to let him add our ID to his contact list. + * + * @param uid ID of a contact that requested our authorization + */ + void authorizationRequest(QString uid); + +public slots: + + /** \brief Used to initialize engine's parameters on startup + * + * This slot also needs to be called when account or connection settings have changed. + */ + virtual void initializeFromSettings() = 0; + + /** \brief Used to handle status change request from the UI + * + * @param presence Requested presence + * @param description Requested description + */ + virtual void onPresenceChange(Presence presence, QString description) = 0; + + /** \brief Closes the channel(s) created for the given contact + * + * When user wants to quit the conversation this slot should be called. + * + * @param uid User ID of the contact + */ + virtual void onSessionClosed(QString uid) = 0; + + /** \brief Called when User wants to send a message to the contact + * + * @param uid Contact's ID + * @param message Message to be sent + */ + virtual void onNewMessageReady(QString uid, Message message) = 0; + + /** \brief Used to add contact to the contact list + * + * @param pContact Pointer to a contact to be added. + */ + virtual void onAddContactRequest(TocContact *pContact) = 0; + + /** \brief Used to edit existing contact data + * + * We also allow user to change the ID of the contact. + * + * @param pContact Pointer to a contact to be altered. + * @param uid Contact's old ID + */ + virtual void onEditContactRequest(TocContact *pContact, QString oldUid) = 0; + + /** \brief This slot removes a contact from contact list + * + * @param uid Contact's ID + */ + virtual void onRemoveContactRequest(QString uid) = 0; + + /** \brief Used when we want to change contacts subscription to our account + * + * If we want to grant our authorization to the contact's subscritpion request, + * set the `authorized` flag to true, + * if we do not want the contact to have subscription to our account + * set the `authorized` flag to false. + * + * @param uid ID of a contact which sibscription we want to change + * @param bAuthorized Authorization status + */ + virtual void onSubscriptionAccepted(QString uid, bool bAuthorized) = 0; +}; + +QT_END_NAMESPACE + +#endif // TOCBASEENGINE_H diff --git a/include/TocEngine/tocengine.h b/include/TocEngine/tocengine.h new file mode 100644 index 0000000..0510037 --- /dev/null +++ b/include/TocEngine/tocengine.h @@ -0,0 +1,239 @@ +/** \file TocBaseEngine.h + * \brief Declaration of TocBaseEngine class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCENGINE_H +#define TOCENGINE_H + +#include "TocBaseEngine" +#include +#include + +namespace QtTapioca { + class ContactBase; +}; + +using namespace QtTapioca; + +QT_BEGIN_NAMESPACE + +/** \brief TocEngine class + * + * Wrapper around the QtTapioca/QtTelepathy communication framework, + * responsible for managing opened channels and connection(s), + * and for synchronizaion beetween our contact list and the one we get from the telepathy. + */ +class TocEngine : public TocBaseEngine +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocEngine( QObject * parent = 0 ); + + /** + * Destructor + */ + ~TocEngine(); + +signals: + +public slots: + + /** \brief Reimplemented from TocBaseEngine + * + */ + void onPresenceChange(Presence presence, QString description); + + /** \brief Reimplemented from TocBaseEngine + * + */ + void onAddContactRequest(TocContact* pContact); + + /** \brief Reimplemented from TocBaseEngine + * + */ + void onEditContactRequest(TocContact* pContact, QString oldUid); + + /** \brief Reimplemented from TocBaseEngine + * + */ + void onRemoveContactRequest(QString uid); + + /** \brief Reimplemented from TocBaseEngine + * + */ + void onSubscriptionAccepted(QString /*uid*/, bool /*bAuthorized*/) {} + + /** \brief Reimplemented from TocBaseEngine + * + */ + void initializeFromSettings(); + + /** \brief Called when User wants to send a message to the contact + * + * @param uid Contact's ID + * @param message Message to be sent + */ + virtual void onNewMessageReady(QString uid, Message message); + + /** \brief Closes the channel(s) created for the given contact + * + * When user wants to quit the conversation this slot should be called. + * + * @param uid User ID of the contact + */ + virtual void onSessionClosed(QString uid); + +private slots: + + /** \brief Used when connection status was changed + * + * @param pConnection Handler to QtTapioca connection + * @param status Status of connection + * @param reason Reason of status change + */ + void onStatusChange(QtTapioca::Connection *pConnection, QtTapioca::Connection::Status status, QtTapioca::Connection::Reason reason); + + /** \brief Used when contact presence was changed + * + * @param pContact Contact item which changed its presence + * @param presence Actual contact's presence + * @param presenceMessage Actual contact's presence message + */ + void onPresenceUpdated(QtTapioca::ContactBase *pContact, QtTapioca::ContactBase::Presence presence, const QString &presenceMessage); + + /** \brief Used when user presence was changed + * + * @param pContact Contact item which changed its presence + * @param presence Actual users's presence + * @param presenceMessage Actual users's presence message + */ + void onSelfPresenceUpdated(QtTapioca::ContactBase *pContact, QtTapioca::ContactBase::Presence presence, const QString &presenceMessage); + + /** \brief Used when user receives message + * + * @param pTextChannel Channel from whom we recieved message + * @param message received message + */ + void onMessageReceived(const QtTapioca::TextChannel* pTextChannel, const QtTapioca::TextChannel::Message &message); + + /** \brief Used when message has not been sent + * + * When an error occured this slot prepares a Message with a proper 'error' field value + * + * @param message Message for which an error occured + * @param error Error type + */ + void onMessageDeliveryError(const QtTapioca::TextChannel::Message &message, QtTapioca::TextChannel::Message::DeliveryError error); + + /** \brief Called when someone wants to initiate chat with user + * + * To receive message that initiated this channel one should call pendingMessages method + * + * @param pConnection Connection on which new channel is created + * @param pChannel Newly created channel + * @param bSuppresHandler Used to notify other channel handlers that they should not use this channel object + */ + void onChannelCreated(QtTapioca::Connection* pConnection, QtTapioca::Channel* pChannel, bool bSuppresHandler); + + + /** \brief Authorizes a contact and add it to users list + * + * TODO: this should be implemented in a way that authorization + * depends on user settings + * + * @param pContact Contact to be authorized + */ + void onAuthorizationRequested(QtTapioca::Contact *pContact); + +private: //Methods + + /** \brief Synchronizes server and local contact lists + * + * Lists should be synchronized according to + * the synchronization priority set by user. (NO LONGER TRUE AS THE SYNC PRORITY WILL BE REMOVED) + */ + void synchronizeContactLists(); + + /** \brief Adds pending contacts to the list on the server + * + */ + void addPendingContacts(); + + /** \brief Removes pending contacts from the list on the server + * + */ + void removePendingContacts(); + + /** \brief Syncronizes contacts from server to the local list + * + * When contacts from server are edited in a different client + * + * Note that this function SHOULD NOT be run alone, + * but ONLY AFTER addition and removal of pending contacts from server + */ + void syncContactsFromServer(); + + /** \brief Returns true if a user with the given Uid is already on the list + * + * @param uid Uid of the searched contact + * @return index of the contact or -1 if not found + */ + int indexForUid( QString uid ); + + /** \brief Removes contact from local contact list + * + * @param uid Uid of the contact to be removed + */ + void removeContact( QString uid ); + + /** \brief Adds contact to the local list + * + * @param contact Pointer to the QtTapioca::Contact instance + */ + void addContact( const Contact* contact ); + +private: //Members + + bool _bNewUserContact; /// Indicates that this is the first status change after initializeFromSettings + bool _bContactListSynchronized; /// Indicates if contact list has been already sent to the UI + QtTapioca::Connection* _pConnection; /// Active connection + TocContactList* _pTocContactList; /// Current contact list + QStringList* _pAddedContacts; /// Contacts to be added + QStringList* _pRemovedContacts; /// Contacts to be removed +}; + +QT_END_NAMESPACE + +#endif // TOCENGINE_H diff --git a/include/TocSettings b/include/TocSettings new file mode 100644 index 0000000..ba373fc --- /dev/null +++ b/include/TocSettings @@ -0,0 +1 @@ +#include "tocsettings.h" diff --git a/include/TocUi/IconProvider b/include/TocUi/IconProvider new file mode 100644 index 0000000..9be71d7 --- /dev/null +++ b/include/TocUi/IconProvider @@ -0,0 +1 @@ +#include "iconprovider.h" diff --git a/include/TocUi/TocAccountIntermediateWidget b/include/TocUi/TocAccountIntermediateWidget new file mode 100644 index 0000000..7cecde7 --- /dev/null +++ b/include/TocUi/TocAccountIntermediateWidget @@ -0,0 +1 @@ +#include "tocaccountintermediatewidget.h" diff --git a/include/TocUi/TocAccountSettingsWidget b/include/TocUi/TocAccountSettingsWidget new file mode 100644 index 0000000..0fd9f79 --- /dev/null +++ b/include/TocUi/TocAccountSettingsWidget @@ -0,0 +1 @@ +#include "tocaccountsettingswidget.h" diff --git a/include/TocUi/TocBaseMainWindow b/include/TocUi/TocBaseMainWindow new file mode 100644 index 0000000..75c1ce7 --- /dev/null +++ b/include/TocUi/TocBaseMainWindow @@ -0,0 +1 @@ +#include "tocbasemainwindow.h" diff --git a/include/TocUi/TocChatWidget b/include/TocUi/TocChatWidget new file mode 100644 index 0000000..14db31f --- /dev/null +++ b/include/TocUi/TocChatWidget @@ -0,0 +1 @@ +#include "tocchatwidget.h" diff --git a/include/TocUi/TocContactListWidget b/include/TocUi/TocContactListWidget new file mode 100644 index 0000000..3506b90 --- /dev/null +++ b/include/TocUi/TocContactListWidget @@ -0,0 +1 @@ +#include "toccontactlistwidget.h" diff --git a/include/TocUi/TocEmoticonsDialog b/include/TocUi/TocEmoticonsDialog new file mode 100644 index 0000000..21fbfaa --- /dev/null +++ b/include/TocUi/TocEmoticonsDialog @@ -0,0 +1 @@ +#include "tocemoticonsdialog.h" diff --git a/include/TocUi/TocGeneralSettingsWidget b/include/TocUi/TocGeneralSettingsWidget new file mode 100644 index 0000000..95d5785 --- /dev/null +++ b/include/TocUi/TocGeneralSettingsWidget @@ -0,0 +1 @@ +#include "tocgeneralsettingswidget.h" diff --git a/include/TocUi/TocMainToolbar b/include/TocUi/TocMainToolbar new file mode 100644 index 0000000..dd25b90 --- /dev/null +++ b/include/TocUi/TocMainToolbar @@ -0,0 +1 @@ +#include "tocmaintoolbar.h" diff --git a/include/TocUi/TocMainWindow b/include/TocUi/TocMainWindow new file mode 100644 index 0000000..69fd066 --- /dev/null +++ b/include/TocUi/TocMainWindow @@ -0,0 +1 @@ +#include "tocmainwindow.h" diff --git a/include/TocUi/TocSettingsWidget b/include/TocUi/TocSettingsWidget new file mode 100644 index 0000000..a16687f --- /dev/null +++ b/include/TocUi/TocSettingsWidget @@ -0,0 +1 @@ +#include "tocsettingswidget.h" diff --git a/include/TocUi/TocThemesSettingsWidget b/include/TocUi/TocThemesSettingsWidget new file mode 100644 index 0000000..c57cb56 --- /dev/null +++ b/include/TocUi/TocThemesSettingsWidget @@ -0,0 +1 @@ +#include "tocthemessettingswidget.h" diff --git a/include/TocUi/TocUi.pri b/include/TocUi/TocUi.pri new file mode 100644 index 0000000..a0e1889 --- /dev/null +++ b/include/TocUi/TocUi.pri @@ -0,0 +1,28 @@ +DEPENDPATH += $$PWD +INCLUDEPATH += $$PWD +HEADERS += TocBaseMainWindow \ + tocbasemainwindow.h \ + TocMainWindow \ + tocmainwindow.h \ + TocContactListWidget \ + toccontactlistwidget.h \ + TocChatWidget \ + tocchatwidget.h \ + TocUserInfoWidget \ + tocuserinfowidget.h \ + TocSettingsWidget \ + tocsettingswidget.h \ + TocGeneralSettingsWidget \ + tocgeneralsettingswidget.h \ + TocAccountSettingsWidget \ + tocaccountsettingswidget.h \ + TocAccountIntermediateWidget \ + tocaccountintermediatewidget.h \ + TocThemesSettingsWidget \ + tocthemessettingswidget.h \ + TocMainToolbar \ + tocmaintoolbar.h \ + IconProvider \ + iconprovider.h \ + TocEmoticonsDialog \ + tocemoticonsdialog.h diff --git a/include/TocUi/TocUserInfoWidget b/include/TocUi/TocUserInfoWidget new file mode 100644 index 0000000..946a544 --- /dev/null +++ b/include/TocUi/TocUserInfoWidget @@ -0,0 +1 @@ +#include "tocuserinfowidget.h" diff --git a/include/TocUi/iconprovider.h b/include/TocUi/iconprovider.h new file mode 100644 index 0000000..ee883ce --- /dev/null +++ b/include/TocUi/iconprovider.h @@ -0,0 +1,126 @@ +/** \file IconProvider.h + * \brief Declaration of IconProvider class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef ICONPROVIDER_H +#define ICONPROVIDER_H + +#include + +#include "defs.h" + +QT_BEGIN_NAMESPACE + +/** \brief IconProvider class + * + * Purpose of this class is to create centralize way to access icons for contacts. + * It contains repository of all contact icons both default and custom marged with status frames. + */ +class IconProvider +{ + +public: + + /** \brief Static public constructor + * + * @return Pointer to the static instance + */ + static IconProvider* getInstance(); + + /** + * Destructor + */ + ~IconProvider(); + + /** \brief This method finds suitable icon for a given contact and its presence. + * + * Function looks for an icon inside one of maps _defaultIcons when no custom icon + * was set (customIconPath field is empty) and _customIcons when setCustomIcon + * function was called for a given contact. + * + * @param pContact Contact for which image is requested. + * @return Pointer to an image of user's Avatar composed with presence information (green, red or yellow frame) + */ + QImage* matchIcon(const TocContact* pContact) const; + + /** \brief This method finds suitable default icon for a given gender. + * + * It's convenience function for cases when there's no possibility to set Qt::DecorationRole. + * + * @param gender Gender for which icon needs to be matched. + * @return Default icon for a given gender. + */ + QIcon matchIcon(Gender gender) const; + + /** \brief Extends repository of custom icons for a given contact. + * + * This method adds new set of images to _customIcons map for a contact. It also assigns _customIconId. + * Icon id is used later by matchIcon method to access right image. New image is created out of file + * from customIconPath. + * + * @param pContact Contact for which new custom icons are going to be added. + */ + void setCustomIcon(TocContact* pContact); + + +private: // Methods + + /** \brief Private constructor + * + */ + IconProvider(); + + /** \brief Used to compose presence picture in case presence was changed + * + * This method is used to compose picture showed in contact list. + * It use contactImage and Presence to create resultImage which is used in contact list. + * + * @param contactImage Image of user's Avatar + * @param presence Presence which will be displayed on resultImage + * @return resultImage Image of user's Avatar composed with presence information + */ + QImage* addStatusFrame(const QImage* baseImage, Presence presence) const; + +private: // Members + + static IconProvider* mp_self; + + QMap _customIcons; ///Map of custom images. Created at the begining out of contacts from settings or updated by setCustomIcon. + QMap _defaultIcons; ///Map of default images. Created inside the constructor. Used for contacts with no custom icon assign. + int _customIconId; ///This id 'generated' by incrementation when adding new custom icon inside setCustomIcon and enables fast access to images in _customIcons map. + + QString _defaultMaleImagePath; + QString _defaultFemaleImagePath; + QString _defaultUnknownImagePath; +}; + +QT_END_NAMESPACE + +#endif // ICONPROVIDER_H diff --git a/include/TocUi/tocaccountintermediatewidget.h b/include/TocUi/tocaccountintermediatewidget.h new file mode 100644 index 0000000..cac22f1 --- /dev/null +++ b/include/TocUi/tocaccountintermediatewidget.h @@ -0,0 +1,108 @@ +/** \file TocAccountIntermediateWidget.h + * \brief Declaration of TocAccountIntermediateWidget class + * + * TOQ - Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCACCOUNTINTERMEDIATEWIDGET_H +#define TOCACCOUNTINTERMEDIATEWIDGET_H + +#include + +class QPushButton; +class QFrame; + +QT_BEGIN_NAMESPACE + +/** \brief TocAccountIntermediateWidget class + * + * Window to select account settings mode. + */ +class TocAccountIntermediateWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + * + * @param create Indicates if widget shoulb be in `Create mode` + */ + TocAccountIntermediateWidget( QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocAccountIntermediateWidget(); + + /** \brief Allows enabling/disabling FTU mode during runtime + * + * Method for switching `FTU mode` on and off + * + * @param bool ftu Indicates if widget should enter FTU mode + */ + void enableFTUMode( bool ftu ); + +signals: + + /** \brief Emited when user clicks createButton + * + */ + void createClicked(); + + /** \brief Emited when user clicks createButton + * + */ + void editClicked(); + + /** \brief Emited when user clicks backButton + * + */ + void backClicked(); + +private: // Methods + + /** \brief Sets style sheets for each widget + * + * Used to overload style sheet properties that could come from main style sheet, + * to forbid corruption of the application layout from the external style sheets. + */ + void setupStyles(); + +private: // Members + + QPushButton* _pBackButton; /// Create Account Settings button + QPushButton* _pCreateButton; /// Create Account Settings button + QPushButton* _pEditButton; /// Edit Account Settings button + QFrame* _pIntermediateFrame; /// Background frame of window +}; + +QT_END_NAMESPACE + +#endif // TOCACCOUNTINTERMEDIATEWIDGET_H diff --git a/include/TocUi/tocaccountsettingswidget.h b/include/TocUi/tocaccountsettingswidget.h new file mode 100644 index 0000000..1328243 --- /dev/null +++ b/include/TocUi/tocaccountsettingswidget.h @@ -0,0 +1,204 @@ +/** \file TocAccountSettingsWidget.h + * \brief Declaration of TocAccountSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCACCOUNTSETTINGSWIDGET_H +#define TOCACCOUNTSETTINGSWIDGET_H + +#include +#include "defs.h" + +class Ui_TocAccountSettingsWidgetClass; + +QT_BEGIN_NAMESPACE + +/** \brief TocAccountSettingsWidget class + * + * Configuration window for account settings. + */ +class TocAccountSettingsWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocAccountSettingsWidget( QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocAccountSettingsWidget(); + + /** \brief Virtual method called when widget is about to be shown + * + * Overloaded method used to reload account list, when widget is shown + * + * @param type of show event + */ + void showEvent(QShowEvent *event); + + /** \brief Checks wheter or not widget is in Ftu mode + * + * Returns true if `Create mode` is enabled, otherwise false + * + */ + inline bool createMode() const; + + /** \brief Allows enabling/disabling Create mode during runtime + * + * Method for switching `Create mode` on and off + * + * @param bool create Indicates if widget should enter Create mode + */ + void setCreateMode( bool create ); + + /** \brief Connects server and protocol hints + * + * Used to enable server and protocol hints + */ + void connectHints(); + + +signals: + + /** \brief Emited when user clicks 'Ok' button + * + * This signal is emited when user changes settings by pressing 'Ok' button + * and new settings differs from previous. + * Settings of account are already changed, when signal is emitted. + * + */ + void accountSettingsChanged(); + + /** \brief Emited when user clicks 'Create' button during `Create mode` + * + * This signal is emited when user creates settings by pressing 'Create' button. + * Settings of account are already saved, when signal is emitted. + * + */ + void newAccountSettingsCreated(); + + /** \brief Emited when user clicks 'Ok' or 'Create' button + * + * This signal is emited when user chooses to close widget by pressing 'Ok' or 'Create' button + * regardless if current account was changed. + * + */ + void finished(); + + /** \brief Emited when user wants to go to the previous screen + * + */ + void backClicked(); + +public slots: + + /** \brief Reloads accounts list + * + * This method is used to reload account data when it has changed. + * + */ + void reload(); + +private slots: + + /** \brief Commits new data + * + * Verifies data and either triggers creation of new account or stores altered data. + */ + void onOkButton(); + + /** \brief Allows to change password + * + * Shows layout for password change. + */ + void onChangePasswordButton(); + + /** \brief Connected to textEdited signal from loginLineEdit + * + * Sets text for serverLineEdit and portLineEdit according to new login + * + * @param newLogin new login received from signal + */ + void loginEdited(const QString& newLogin); + + /** \brief Connected to currentIndexChanged signal from protocolComboBox + * + * Sets text for serverLineEdit and portLineEdit according to new protocol + * + * @param newProtocol new protocol name received from signal + */ + void protocolEdited(const QString& newProtocol); + + /** \brief Disconnects server and protocol hints + * + * Used to disable server and protocol hints when user already changed the server + * (It would be annoying if hints reset his personaly chosen server and port) + */ + void disconnectHints(); + +private: // Methods + + /** \brief Displays error message + * + * @param errorText text of error to be displayed + */ + void handleError(QString errorText); + + /** \brief Validates corectness of entered data + * + * @return True if data is corect + */ + bool dataVerified(); + + /** \brief Saves edited data + * + * If no property was changed it does nothing + */ + void saveAccountData(); + + /** \brief Creates new account from the data + * + */ + void createNewAccount(); + +private: // Members + + Ui_TocAccountSettingsWidgetClass* ui; /// Ui definition header + bool _bCreateMode; /// Tells if widget is in `Create mode` + +}; + +QT_END_NAMESPACE + +#endif // TOCACCOUNTSETTINGSWIDGET_H diff --git a/include/TocUi/tocbasemainwindow.h b/include/TocUi/tocbasemainwindow.h new file mode 100644 index 0000000..bf0ca9f --- /dev/null +++ b/include/TocUi/tocbasemainwindow.h @@ -0,0 +1,192 @@ +/** \file TocBaseMainWindow.h + * \brief Declaration of TocBaseMainWindow class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCBASEMAINWINDOW_H +#define TOCBASEMAINWINDOW_H + +#include +#include "defs.h" + +class TocBaseEngine; + +/** \brief TocBaseMainWindow class + * + * A base class for any Ui class that + * wants to comunicate with TocEngine. + * + */ +class TocBaseMainWindow : public QMainWindow +{ + Q_OBJECT + +public: + TocBaseMainWindow( TocBaseEngine* engine, QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + ~TocBaseMainWindow(); + +signals: + + /** \brief Emited when a user wants to change presence + * + * This signal is emited when user changes presence in TocMainToolbar. + * Note: this is only a request, You should wait for the PresenceUpdated signal from TocEngine + * to actualy show to the user his new presence. + * + * @param presence Requested presence + * @param desc Requested description + */ + void presenceChanged(Presence presence, QString desc); + + /** \brief Emited when a session is finished + * + * This signal is emited when a TocChatWidget is closed. + * + * @param uid Contact's ID + */ + void sessionClosed(QString uid); + + /** \brief Emited when a new message is ready to send + * + * This signal is emited when user sends a message in one of chatwindows. + * + * @param uid Contact's ID + * @param message Message to be sent + */ + void newMessageReady(QString uid, Message message); + + /** \brief Emited when user adds a new contact + * + * This should be emited when user prepares new contact data + * using TocUserInfoWidget in "Add mode". + * + * @param pContact Pointer to a contact to be added. + */ + void addContact(TocContact* pContact); + + /** \brief Emited when user edits an existing contact + * + * This signal is emited when user changes contact data + * using TocUserInfoWidget in "Edit mode". + * + * @param pContact Pointer to a contact to be altered. + * @param oldUid Previous Contact's ID + */ + void editContact(TocContact* pContact, QString oldUid); + + /** \brief Emited when user deletes an existing contact + * + * This should be emited when user removes a contact from contact list. + * + * @param uid Contact's ID + */ + void removeContact(QString uid); + + /** \brief Emited when user creates a new account + * + * This signal is emited when user decides to accept or deny request for subscription from someone. + * + * @param uid User ID of the new account + * @param authorized Flag that indicates the answer + */ + void subscriptionAccepted(QString uid, bool authorized); + + /** \brief Emited when user changes the account settings + * + */ + void accountSettingsChanged(); + +protected slots: + + /** \brief Slot invoked when someone wants to add us to his contact list + * + * We just received request for subsciption and need to decide whether accept it + * or discard. This should be connected to the TocEngine's `AuthorizationRequest` signal. + * + * @param uid An identificator of a peer that wants to subscribe our account to his contact list + */ + virtual void onAuthorizationRequest(QString uid) = 0; + + /** \brief Slot invoked when our request for subscription has been accepted + * + * This should be connected to the TocEngine's `SubscriptionAccepted` signal. + * + * @param uid An identificator of a contact that was requested for subscription + */ + virtual void onSubscriptionAccepted(QString uid) = 0; + + /** \brief Slot handling own status change + * + * Thanks this UI can be informed about change in account status. + * This should be connected to the TocEngine's `StatusChanged` signal. + * + * @param status New status of the account + * @param reason The reason of the change + */ + virtual void onStatusChange(Status status, Reason reason) = 0; + + /** \brief Slot handling own presence change + * + * This should be connected to the TocEngine's `PresenceUpdated` signal. + * + * @param presence New presence of the account + * @param desc New presence description of the account + */ + virtual void onPresenceUpdate(Presence presence, QString desc) = 0; + + /** \brief Slot handling contact's presence change + * + * This should be connected to the TocEngine's `ContactPresenceUpdated` signal. + * + * @param uid Contact's ID + * @param presence New presence of the contact + * @param desc New presence description of the contact + */ + virtual void onContactPresenceUpdate(QString uid, Presence presence, QString desc) = 0; + + /** \brief Slot handling incoming message + * + * This should be connected to the TocEngine's `MessageReceived` signal. + * + * @param uid Contact's ID + * @param message New message to be handled + */ + virtual void onIncomingMessage(QString uid, Message message) = 0; + + /** \brief Invoked when new contact list is available + * + * This should be connected to the TocEngine's `NewContactList` signal. + * + * @param cList New contact list to be used + */ + virtual void onContactListReceived(const TocContactList& cList) = 0; + +}; + +#endif // TOCBASEMAINWINDOW_H diff --git a/include/TocUi/tocchatwidget.h b/include/TocUi/tocchatwidget.h new file mode 100644 index 0000000..9ee3480 --- /dev/null +++ b/include/TocUi/tocchatwidget.h @@ -0,0 +1,194 @@ +/** \file TocChatWidget.h + * \brief Declaration of TocChatWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCCHATWIDGET_H +#define TOCCHATWIDGET_H + +#include + +#include "defs.h" + +class Ui_TocChatWidgetClass; + +QT_BEGIN_NAMESPACE + +/** \brief TocChatWidget class + * + * Widget used as a conversation window. Enables sending of messages + * and notifies about presence changes of the contact by textual information + * and conversion window border color. + */ +class TocChatWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocChatWidget( const QString& uid, const QString& name, Presence presence, QWidget * parent = 0, const Message& message = Message() ); + + /** + * Destructor + */ + ~TocChatWidget(); + + /** \brief Used to read uid property + * + * @return ID of the Contact for which the chat was created + */ + QString uid() const { return _uid; } + + /** \brief Used to read name property + * + * @return Name of the Contact for which the chat was created + */ + QString name() const { return _name; } + + /** \brief Used to set name property + * + * @param New name of the Contact + */ + void onDisplayedNameChange(const QString& newName) { _name = newName; } + + /** \brief Used to handle contact's presence change + * + * This method is used when status of the Contact has changed. + * It gives textual and graphical notification to the user. + * + * @param presence New contact's presence + * @param description New contact's presence description + */ + void onContactPresenceUpdate(Presence presence, const QString& description); + + /** \brief Used to update contact's presence + * + * This is used when the chat window was closed and did not + * recieved Contact Presence Updates, so it can show the current status properly. + */ + void updateContactPresence(Presence presence); + + /** \brief Used to handle incoming message + * + * @param message Message to be displayed in chat + */ + void appendMessage(const Message& message); + +protected: + + /** \brief Used to filter incoming events + * + * This method is used to filter keyboards event. + * If Enter key is pressed, typed message is send (as pressing Send button). + * If Enter key is pressed with Shift key modifier new line in entered. + * + * @param *object Pointer to the object on which an event appears. + * @param *event Pointer to the event. + * + * @return If the event is a key event Enter without Shift modifier + * method returns true, otherwise false. + * + */ + bool eventFilter(QObject *object, QEvent *event); + + /** \brief Reimplemented from QWidget + * + */ + virtual void showEvent(QShowEvent* event); + +signals: + + /** \brief Emited when new message is ready to be sent + * + * This signal is emited when user want's to send a prepared message. + * + * @param uid Contact's ID + * @param message Message to be sent + */ + void newMessageReady(const QString& uid, Message message); + + /** \brief Emited Smile button clicked. + * + * This signal is emited when user clicks on Smile button in Chat view, + * to choose emoticon. + * + */ + void smileButtonClicked(); + +private slots: + + /** \brief Send message slot + * + * Invoked when message from chatWidget needs to be sent. + * It composes a message, emits a signal and wipes out a text from messageTextEdit. + * + */ + void pressedSendButton(); + /** \brief Shows emoticons dialog window. + * + */ + void showEmoticonsDialog(); + + +private: // Methods + + /** \brief Returns a human readable string for the given error type + * + * @param error Error id + * @return Human readable error description + */ + QString errorString(MessageDeliveryError error); + + /** \brief Appends new message to the chat dialog edit with parsed emoticons + * + */ + /** \brief Inserts emoticons. + * + * Checks user message text for emoticons aliases and replace them with + * corresponding inage. + * + * @param message Message from user message text edit box. + * + */ + void insertEmoticons(const QString& message); + +private: // Members + + QString _uid; /// User ID. + QString _name; /// User name. + + Ui_TocChatWidgetClass* ui; /// Pointer to the TocChatWidgetClass form. +}; + +QT_END_NAMESPACE + +#endif // TOCCHATWIDGET_H diff --git a/include/TocUi/toccontactlistwidget.h b/include/TocUi/toccontactlistwidget.h new file mode 100644 index 0000000..d3f9b19 --- /dev/null +++ b/include/TocUi/toccontactlistwidget.h @@ -0,0 +1,284 @@ +/** \file TocContactListWidget.h + * \brief Declaration of TocContactListWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCCONTACTLISTWIDGET_H +#define TOCCONTACTLISTWIDGET_H + +#include +#include +#include + +#include "defs.h" +#include "TocSettings" + +QT_BEGIN_NAMESPACE + +/** \brief TocContactListWidget class + * + * Widget representing the list of current account contact's. + * QListWidget is used in `IconMode`, and allows user to show a unique + * avatar for each contact. It allows user to delete add and change contact's data, + * and to start conversation with the contact. + */ +class TocContactListWidget : public QListWidget +{ + Q_OBJECT + // Property holding color of the logo. + // It's a Q_PROPERTY to enable easy setting of the color with style sheet's. + Q_PROPERTY(QColor logoColor READ logoColor WRITE setLogoColor NOTIFY logoColorChanged) + +public: + + /** + * Public Constructor + */ + TocContactListWidget( QWidget * parent = 0 ); + + /** + * Destructor + */ + ~TocContactListWidget(); + + /** \brief Method used when contact's presence has changed + * + * This method handles presence change of a contact. + * + * @param uid Contact's ID + * @param presence Contact's new presence + * @param description Contact's new presence description + */ + void onContactPresenceUpdate(const QString& uid, Presence presence, const QString& description); + + /** \brief This method translates Contact's ID to its Name + * + * This method is used when TocMainWindow needs the Name for + * the given Uid, in order to create a new TocChatWidget. + * + * @param uid Contact's ID + * @return Displayed Name of the contact + */ + QString getDisplayedName(const QString& uid); + + /** \brief This method is used to find specific contact on the list by contact's uid + * + * It searches for the user in contact list and returns it's item, + * if there is no such contact it returns 0. It's possible to exlude particular + * item from search. It's used when editing an exisiting contact because contact data + * are associated with the same QListWidgetItem pointer. + * + * @param item Item to be excluded from searching + * @param uid Contact's ID + * @param pExcludedItem Item from the list + * @return Pointer to found item + */ + QListWidgetItem* findItem(const QString& uid, const QListWidgetItem* pExcludedItem = 0); + + /** \brief Clears statuses of contacts + * + * Typicaly used to clear statuses after setting the self-status to Offline + */ + void clearStatuses(); + + /** \brief Getter for logoColor property + * + */ + QColor logoColor() const; + + /** \brief Setter for logoColor property + * + */ + void setLogoColor(QColor rgb); + +protected: + + /** \brief Implementation of the interface that allows to handle mouse double click event + */ + void mouseDoubleClickEvent(QMouseEvent *event); + + /** \brief Implementation of the interface that allows to handle context menu event + * + * It creates context menu for managing contact items on the list. + */ + void contextMenuEvent(QContextMenuEvent *event); + + /** \brief Implementation of the interface that allows to handle custom paint events + * + * It allows to paint Tieto logo in contact list view. + */ + void paintEvent(QPaintEvent * event); + + +signals: + + /** \brief Emited when user chooses a contact to chat with + * + * This signal is emited when user selects and then clicks an item on the list. + * + * @param uid Contact's ID + * @param name Contact's name + * @param presence Contact's presence + * + */ + void triggered(const QString& uid, const QString& name, Presence presence); + + /** \brief Emited when user requests to see a contact info + * + * This signal is emited when user selects to edit contact's data + * or if the user wants to add new contact to the list ( then *item == QListWidgetItem() ). + * + * @param pItem Contact item to be edited or added + */ + void contactInfoRequest(QListWidgetItem* pItem); + + /** \brief Emited when contact is removed + * + * This signal is emited when user wants to delete the contact with given Uid. + * Note that the contact should be already deleted from the TocListWidget + * before it's emision. + * + * @param uid Contact's ID + */ + void removedContact(const QString& uid); + + /** \brief Emited when user commits the changes + * + * This signal is emited when user finished adding contact. + * + * @param pContact Pointer to a contact to be added. + */ + void addContact(TocContact* pContact); + + /** \brief Emited when user commits the changes + * + * This signal is emited when user finished editing contact data. + * + * @param pContact Pointer to a contact to be altered. + * @param oldUid Previous ID of a contact (omited if widget is in "Add Mode") + */ + void editContact(TocContact* pContact, QString oldUid); + + /** \brief Emited when name of the contact has been changed + * + * This signal is emited to notify that user chas changed the displayed name + * of the contact so it can be used to change the name at runtime + * in TocChatWindow and in active sessions menu of TocMainToolbar. + * + * @param uid Contact's ID + * @param name New displayed name of the contact + */ + void displayedNameChanged( const QString& uid, const QString& name); + + /** \brief Emited when name of the logoCount property has been changed + * + * When logoCount property is changed, this signal is emited, with new value as a parameter. + * + * @param rgb new value of logoColor property + */ + void logoColorChanged(QColor rgb); + +public slots: + + /** \brief Used to set a contact list to the widget + * + * This slot is used when a new TocContactList has arived from TocEngine. + * Data from the list should be copied to QListWidgetItem's. + * + * @param contactList New contact list to be handled + */ + void onNewContactList(const TocContactList& contactList); + + /** \brief Used when user finishes editing new contact data + * + * This slot is used when user actualy commits new contact's addition + * from the TocUserInfoWidget. It adds created item to the contact list. + * + * @param pNewItem Item to be added + */ + void commitAdd(QListWidgetItem* pNewItem); + + /** \brief Used when user finishes edition of contact data + * + * This slot is used when user actualy commits changes to the contact + * from the TocUserInfoWidget. + * + * @param pEditedItem Item with changed data + */ + void commitEdit(QListWidgetItem* pEditedItem); + +private slots: + + /** \brief Slot that reacts on Edit action from context menu + * + * It extracts QListWidgetItem from sender and posts it to UserInfoWidget + * for edition. + */ + void onEditRequested(); + + /** \brief Slot that reacts on Remove action from context menu + * + * It extracts QListWidgetItem from sender, removes it from the contacts list + * and notifies engine about it. + */ + void onRemoveRequested(); + + /** \brief Slot that sets the color of the logo + * + * This method paints the logo with the color provided. + * + * @param rgb Color to be set for the logo + */ + void changeLogoColor(QColor rgb); + +private: // Methods + + /** \brief Sorts all the items in the list widget + * + * This method sorts all the items in the list widget according to + * the specified order. + * TODO: only Literal sorting is now implemented, implement other methods as well + * + * @param order Order to sort by + */ + void sortItems(SortOrder order = Alphabetical); + +private: // Members + + TocContact _currentEditedContact; /// Temporary TocContact used in the process of editing an item + QListWidgetItem* _pCurrentEditedItem; /// Temporary item used in the process of editing an item + QAction _editAction; /// An action from context menu that triggers edition of selected item. It's connected to onEditRequested() slot + QAction _removeAction; /// An action from context menu that triggers deletion of selected item. It's connected to onRemoveRequested() slot + QImage* _logo; /// Logo image mask. Created inside constructor. + QColor _logoColor; /// Color in RGB of the logo. (Q_PROPERTY logoColor) +}; + +QT_END_NAMESPACE + +#endif // TOCCONTACTLISTWIDGET_H diff --git a/include/TocUi/tocemoticonsdialog.h b/include/TocUi/tocemoticonsdialog.h new file mode 100644 index 0000000..f24a5b4 --- /dev/null +++ b/include/TocUi/tocemoticonsdialog.h @@ -0,0 +1,97 @@ +/** \file TocEmoticonsDialog.h + * \brief Declaration of TocEmoticonsDialog class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCEMOTICONSDIALOG_H +#define TOCEMOTICONSDIALOG_H + +#include + +QT_BEGIN_NAMESPACE + +class Ui_TocEmoticonsDialogClass; +class QListWidgetItem; + +class TocEmoticonsDialog : public QDialog +{ + Q_OBJECT + +public: + + /** \brief Static public constructor + * + * @param parent Emoticons dialog parent widget for application style inheretance. + * + * @return Pointer to the static instance + */ + + static TocEmoticonsDialog* getInstance(QWidget* parent); + + /** \brief Emoticon alias method. + * + * @return String alias for the selected emoticon. + */ + QString getSelectedEmoticonAlias(); + +private: + + /** + * Private Constructor + */ + TocEmoticonsDialog(QWidget *parent = 0); + + /** + * Destructor + */ + ~TocEmoticonsDialog(); + +private slots: + + /** \brief Emoticon selected slot + * + * Invoked when user selects an emoticon from the emoticons dialog window. + * + * @param pItem Selected emoticon from the list. + * + */ + void onEmoticonSelected(QListWidgetItem* pItem); + +private: + + static TocEmoticonsDialog* _pSelf; /// Static pointer to TocEmoticonDialog class. + + QString _selectedEmoticonAlias; /// Selected emoticon string alias. + + Ui_TocEmoticonsDialogClass* ui; /// Pointer to the TocEmoticonsDialogClass form. +}; + +QT_END_NAMESPACE + +#endif // TOCEMOTICONSDIALOG_H diff --git a/include/TocUi/tocgeneralsettingswidget.h b/include/TocUi/tocgeneralsettingswidget.h new file mode 100644 index 0000000..7f524ed --- /dev/null +++ b/include/TocUi/tocgeneralsettingswidget.h @@ -0,0 +1,90 @@ +/** \file TocGeneralSettingsWidget.h + * \brief Declaration of TocGeneralSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCGENERALSETTINGSWIDGET_H +#define TOCGENERALSETTINGSWIDGET_H + +#include +#include "defs.h" + +class Ui_TocGeneralSettingsWidgetClass; + +QT_BEGIN_NAMESPACE + +/** \brief TocGeneralSettingsWidget class + * + * Configuration window for general application settings. + */ +class TocGeneralSettingsWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocGeneralSettingsWidget( QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocGeneralSettingsWidget(); + +signals: + + /** \brief Signal connected to returnToContacts() slot in TocMainWindow + * + */ + void finished(); + + /** \brief Signal connected to returnToSettings() slot in TocMainWindow + * + */ + void backClicked(); + +private slots: + + /** \brief Used to save general settings + * + * This slot is used when user clicks on the Ok button. + * Information in UI are saved into TocSettings + */ + void saveGeneralSettings(); + +private: // Members + + Ui_TocGeneralSettingsWidgetClass* ui; /// Ui definition header +}; + +QT_END_NAMESPACE + +#endif // TOCGENERALSETTINGSWIDGET_H diff --git a/include/TocUi/tocmaintoolbar.h b/include/TocUi/tocmaintoolbar.h new file mode 100644 index 0000000..dcd054c --- /dev/null +++ b/include/TocUi/tocmaintoolbar.h @@ -0,0 +1,456 @@ +/** \file TocMainToolbar.h + * \brief Declaration of TocMainToolbar class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCMAINTOOLBAR_H +#define TOCMAINTOOLBAR_H + +#include +#include +#include + +#include "defs.h" +#include "uidefs.h" + +class QPushButton; +class QMenu; +class QAction; +class QLabel; +class ActiveSessions; +class ScrollWidget; + +QT_BEGIN_NAMESPACE + +/** \brief TocMainToolbar class + * + * Applications main toolbar used to control window switching, presence changes + * and management of active chat windows. + * It also shows current activity name, notifies about incoming messages + * and allows to quickly switch between converstion and contact list and back. + * The main toolbar is allways visible in applications window. + */ +class TocMainToolbar : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocMainToolbar( QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocMainToolbar(); + + /** \brief This method is used when new message arives + * + * When the message arives, `Active Sessions` button should notify this + * by changing color of the button and the corresponding menu action. + * If action doesn't exist, it must create it. + * + * @param uid Contact's uid + * @param name Contact's name + * @param presence Contact's current presence + */ + void onNewMessage(const QString& uid, const QString& name = "", Presence presence = Unspecified); + + /** \brief This method is used when current window changes + * + * It is used only if window changes without the knowledge of TocMainToolbar + * (i.e. when not triggered by toolbar but by settings window or contact list). + * + * @param viewType Type of the window + * @param text Text to be displayed in notification area + */ + void onCurrentView(ViewType viewType, const QString& text = QString() ); + + /** \brief This method is used to handle contacts dislayed name changes + * + * It changes the name of the corresponding action. + * + * @param uid Contact's uid + * @param name New contact's name + */ + void onDisplayedNameChange(const QString& uid, const QString& name); + + /** \brief This method is used to handle contacts presence changes + * + * It changes the presence icon of the corresponding action. + * + * @param uid Contact's uid + * @param name New contact's name + */ + void onContactPresenceUpdate(const QString& uid, Presence presence); + + /** \brief This method is used to handle account presence changes + * + * It should follow the `presenceUpdated` signal if presence change + * was succesfull. + * + * @param presence Own presence + * @param desc Own presence description + */ + void onPresenceUpdate(Presence presence, const QString& desc); + + + /** \brief Used to close all sessions at once + * + * Closes all sessions at once on request from outside of the toolbar. + * Typicaly useful when user changes account data + * and the previous sessions needs to be cleared. + */ + void clearAllSessions(); + +signals: + + /** \brief Emited when user chooses a conversation window from active sessions menu + * + * This signal is emited when user triggers an action in `Active Sessions` menu. + * + * @param uid Contact's ID + * @param name Contact's name + */ + void activeSessionTriggered(const QString& uid, const QString& name); + + /** \brief Emited when user closes the chat window + * + * This signal is emited when user chooses to close current chat window. + * + * @param uid Contact's ID for which the window was created + */ + void finishedSession(const QString& uid); + + /** \brief Emited when user closes all chat windows + * + * This signal is emited when user chooses to close all chat windows + * using `Close All Sessions` button in `Active Sessions` menu. + */ + void finishedAllSessions(); + + /** \brief Emited when user chooses contact list + * + * This signal is emited when user clicks contacts button. + */ + void contactsClicked(); + + /** \brief Emited when user chooses settings window + * + * This signal is emited when user clicks settings button. + */ + void settingsClicked(); + + /** \brief Emited when user changes presence + * + * This signal is emited when user requests presence change using + * presence button's menu. + * + * @param presence Requested presence + * @param desc Requested presence description + */ + void presenceUpdate(Presence presence, const QString& desc); + +public slots: + + /** \brief This slot is used when user requests a new session + * + * When new session is started at user request, main toolbar should react for this + * by displaying the name of a contact and disabling the corresponding menu action. + * If action doesn't exist, main toolbar must create it. + * + * @param uid Contact's uid + * @param name Contact's name + * @param presence Contact's current presence + */ + void onNewSession(const QString& uid, const QString& name, Presence presence); + +private slots: + + /** \brief Used to close current session + * + * Connected to the notification area button when in "Close role". + */ + void closeCurrentSession(); + + /** \brief Used to close all sessions at once + * + * Connected to the close all sessions action, and closes all sessions in one run. + */ + void closeAllSessions(); + + /** \brief Used to return to the last chat window + * + * Connected to the notification area button when in "Return role". + */ + void restoreCurrentSession(); + + /** \brief Used when user clicks on a name in active sessions menu + * + * Handles user clicks in action's from active sessions menu, + * it does nothing when action is Close All Sessions action. + * + * @param action The action triggered + */ + void onActiveSessionTriggered(QAction* pAction); + + /** \brief Used when user clicks on a presence in presence button's menu + * + * Handles user clicks in action's from presence button's menu. + * + * @param action The action triggered + */ + void onTriggeredPresence(QAction* action); + + /** \brief Used to handle `Contacts Button` click action + * + * If user clicks `Contacts Button` the toolbar should change + * the `Label Button` text to "" and disable it, but if there is chat window active + * the `Label Button` should display Name of the Contact the chat is active for, + * and change it's mode to "Restore Chat". + */ + void onContactsClicked(); + + /** \brief Used to handle `Settings Button` click action + * + * If user clicks `Contacts Button` the toolbar should change + * the `Label Button` text to "Settings" and disable it. + * It should also disconnect all the connections made for `Label Button`. + */ + void onSettingsClicked(); + + +private: // Methods + + /** \brief Sets style sheets for each widget + * + * Used to overload style sheet properties that could come from main style sheet, + * to forbid corruption of the application layout from the external style sheets. + */ + void setupStyles(); + + /** \brief Returns an action with the given Uid + * + * If the action is not on the list it retruns 0. + * + * @param uid Contact's ID + */ + QAction* action( const QString& uid ); + + /** \bried Highlights the selected button + * + * @param button Button to be highlighted + */ + void highlightButton(const QPushButton* button); + +private: // Members + + QPushButton* statusButton; /// Button for the presence menu + QPushButton* statusAreaButton; /// Notification area button ("Eduardo button") + QLabel* statusAreaLabel; /// Notification area label ("Eduardo label") + QPushButton* activeSessionsButton; /// Button for the active sessions menu + QPushButton* settingsButton; /// Settings button + QPushButton* contactsButton; /// Contact list button + QMenu* statusMenu; /// Status selection menu + QAction* onlineAction; /// Action for online presence + QAction* awayAction; /// Action for away presence + QAction* busyAction; /// Action for busy presence + QAction* hiddenAction; /// Action for hidden presence + QAction* offlineAction; /// Action for offline presence + + ActiveSessions* _pActiveSessions; /// Pointer to an object that manages active sesssions + +}; + + +/** \brief ActiveSessions class + * + * Class that encapsulates active sessions menu. The main role of this class it to ensure that + * there aren't to many actions displayed on the screen at the same time and allows to scroll + * them. + */ + +class ActiveSessions: public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + ActiveSessions(QWidget * parent = 0); + + /** \brief It adds an action to _pActiveSessionsMenu + * + * When adding new action this function takes into account how many actions can be shown + * at the same time (_visibleActionsAllowed) and also when to show additional itmes like + * _pCloseAllSessionsAction or _pScrollAction. + * + * @param pAction action to be added + */ + void addAction(QAction *pAction); + + /** \brief It removes an action from _pActiveSessionsMenu + * + * When removing an action this function takes into account how many actions can be shown + * at the same time (_visibleActionsAllowed) and also when to show additional itmes like + * _pCloseAllSessionsAction or _pScrollAction. + * + * @param pAction action to be added + */ + void removeAction(QAction *pAction); + + /** \brief Removes currently selected action from the menu selects a new one and returns a pointer to it + * + */ + QAction* closeCurrentSession(); + + /** \brief Returns a disabled action + * + * If there is no disabled action it retruns 0. + */ + QAction* disabledAction() const; + + /** \brief Returns an action with the given Uid + * + * If the action is not on the list it retruns 0. + * + * @param uid Contact's ID + */ + QAction* action(const QString& uid) const; + + /** \brief Returns a list of an actions from _pActiveSessionsMenu + * + */ + QList actions() const; + + /** \brief Clears all actions from _pActiveSessionsMenu + * + */ + void clear(); + + /** \brief Returns a pointer to _pActiveSessionsMenu + * + */ + QMenu* menu() const {return _pActiveSessionsMenu;} + + /** \brief Handles change of a presence + * + * It resets an icon according to new presence + * + * @param uid Contact's uid + * @param presence New presence + */ + void onContactPresenceUpdate(const QString& uid, Presence presence); + + /** \brief Handles new message event + * + * It checks for an action for given uid and eventually creats a new one + * + * @param uid Uid of a contact for which new message come + * @param name Contact's name + * @param presence Contact's presence + */ + void onNewMessage(const QString& uid, const QString& name, Presence presence); + + /** \brief This slot is used when user requests a new session + * + * This function selects an action with given uid or if it doesn't exist adds it to menu. + * + * @param uid Contact's uid + * @param name Contact's name + * @param presence Contact's current presence + */ + void onNewSession(const QString& uid, const QString& name, Presence presence); + +private: + + /** \brief Enables or disables scroll up and down buttons according to currently visible actions + * + */ + void checkScrollButtonsState(); + +private slots: + + /** \brief Scrolls up actions from _actionsList that are visible in _pActiveSessionsMenu + * + */ + void scrollUp(); + + /** \brief Scrolls down actions from _actionsList that are visible in _pActiveSessionsMenu + * + */ + void scrollDown(); + +private: + + QMenu* _pActiveSessionsMenu; /// Menu for chat window selection + QAction* _pCloseAllSessionsAction; /// Action to close all active sessions + QAction* _pSeparatorAction; /// Action for separator + QWidgetAction* _pScrollAction; /// Action from _pActiveSessionsMenu that is associated with _pScrollWidget + ScrollWidget* _pScrollWidget; /// Widget with two buttons that enables scrolling + QList _actionsList; /// List of actions that not includes 'Close all', separator and scroll + const int _visibleActionsAllowed; /// Variable that limits amount of active session actions present on _pActiveSessionsMenu + QList::iterator _firstVisibleAction; /// Iterator that is fixed on first active session action from _pActiveSessionsMenu + QList::iterator _lastVisibleAction; /// Iterator that is fixed on last active session action from _pActiveSessionsMenu + +}; + + +/** \brief ScrollWidget class + * + * This small widget was meant as a part of active sessions menu to provide a way to scroll it. + */ + +class ScrollWidget: public QWidget +{ + Q_OBJECT + +public: + /** + * Public Constructor + */ + ScrollWidget(QWidget *parent = 0); + + QPushButton* scrollUpButton() const { return _pScrollUpButton; } + QPushButton* scrollDownButton() const { return _pScrollDownButton; } + +private: + QPushButton* _pScrollUpButton; + QPushButton* _pScrollDownButton; + QHBoxLayout* _pLayout; +}; + + +QT_END_NAMESPACE + +#endif // TOCMAINTOOLBAR_H diff --git a/include/TocUi/tocmainwindow.h b/include/TocUi/tocmainwindow.h new file mode 100644 index 0000000..9637f7d --- /dev/null +++ b/include/TocUi/tocmainwindow.h @@ -0,0 +1,322 @@ +/** \file TocMainWindow.h + * \brief Declaration of TocMainWindow class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCMAINWINDOW_H +#define TOCMAINWINDOW_H + +#include +#include +#include "TocBaseMainWindow" +#include "defs.h" + +class TocBaseEngine; +class QStackedLayout; +class TocChatWidget; +class TocMainToolbar; +class TocContactListWidget; +class TocUserInfoWidget; +class TocSettingsWidget; +class TocGeneralSettingsWidget; +class TocAccountSettingsWidget; +class TocAccountIntermediateWidget; +class TocNetworkSettingsWidget; +class TocThemesSettingsWidget; +class QCloseEvent; + +QT_BEGIN_NAMESPACE + +/** \brief TocMainWindow class + * + * Class responsible for user GUI management + * and for communication with TocEngine. + */ +class TocMainWindow : public TocBaseMainWindow +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.indt.tietoopcom") + +public: + + /** + * Public Constructor + */ + TocMainWindow( TocBaseEngine* engine, QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocMainWindow(); + +protected: + + /** \brief Reimplemented from QWidget + * + */ + virtual void closeEvent(QCloseEvent* event); + +public slots: + Q_SCRIPTABLE int top_application(); + +protected slots: + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onAuthorizationRequest(QString uid); + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onSubscriptionAccepted(QString uid); + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onStatusChange(Status status, Reason reason); + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onPresenceUpdate(Presence presence, QString desc); + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onContactPresenceUpdate(QString uid, Presence presence, QString desc); + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onIncomingMessage(QString uid, Message message); + + /** \brief Reimplemented from TocBaseMainWindow + * + */ + void onContactListReceived(const TocContactList& cList); + +private slots: + + /** \brief Shows chat window for the given Uid + * + * If the chat with Uid is already created, just show it, + * if not, create a chat with the given Uid and Name + * and emit newSessionStarted(Uid) signal. + * Note that this is overloaded SLOT, take caution with that. + * + * @param uid Contact's ID + * @param name Contact's name + * @param presence Contact's current presence + */ + void showChat(const QString& uid, const QString& name, Presence presence = Offline); + + + /** \brief Closes a chat for the given Uid + * + * This slot closes a chat for the given Uid + * and emits sessionClosed(Uid) signal to the engine. + * + * @param uid Contact's ID + */ + void closeChat(const QString& uid); + + /** \brief Closes all active chat windows + * + * This slot closes all open chat windows + * and emits sessionClosed(Uid) signal for each chat. + */ + void closeAllOpenChats(); + + /** \brief Closes all active chat windows + * + * This slot closes and deletes all created chat windows + * and emits sessionClosed(Uid) signal for each chat. + * This is typicaly useful when user changes account data. + */ + void clearAllChats(); + + /** \brief Shows window of a given type + * + * Shows a TocWidget of the type == ViewType (except for TocChatWidget) + * `ViewType` is static-casted to `int` in a signal emission in the TocSettingsWidget + * si it could use a QSignalMapper class. + * + * @param type Type of the view to be shown + */ + void showView(/*ViewType*/int type); + + /** \brief Shows TocUserInfoWidget + * + * Creates and displays TocUserInfoWidget with the data provided by the signal. + * + * @param item Item with contact's data (*item==QListWidgetItem() if You want TocUserInfoWidget to be run in "Add mode") + */ + void showUserInfo(QListWidgetItem* item); + + /** \brief Shows TocContactListWidget + * + * Displays TocContactListWidget. + */ + void showContacts(); + + /** \brief Shows TocContactListWidget + * + * Displays TocContactListWidget. + * Also informs TocMainToolbar about the change. + */ + void returnToContacts(); + + /** \brief Shows TocSettingsWidget + * + * Creates if necessary and displays TocSettingsWidget. + */ + void showSettings(); + + /** \brief Shows TocSettingsWidget + * + * Displays TocSettingsWidget . + * Also informs TocMainToolbar about the change. + */ + void returnToSettings(); + + /** \brief Shows TocAccountSettingsWidget + * + * Creates if necessary and displays TocAccountSettingsWidget. + */ + void showAccount(); + + /** \brief Shows TocAccountIntermediateWidget + * + * Creates if necessary and displays TocAccountIntermediateWidget . + */ + void returnToIntermediate(); + + /** \brief Shows TocAccountSettingsWidget in `Create mode` + * + * Creates if necessary and displays TocAccountSettingsWidget. + * When user clicks `Create` button the account settings are + * saved in TocSettings and the `_register` flag of TocSettings is set to "true". + */ + void showAccountCreate(); + + /** \brief Changes the displayed name in the application on user request + * + * If a user changes the displayed name using TocUserInfoView in editing mode + * the slot changes the name in the TocContactListWidget and, if needed, + * in TocMainToolbar and TocChatWidget. + * + * @param uid Contact's ID + * @param name Contact's new name + */ + void onDisplayedNameChange(const QString& uid, const QString& name); + + /** \brief Reloads the displayed application theme + * + * Reads file URL from settings and sets the stylesheet as the current one. + */ + void reloadTheme(); + + /** \brief This slot prepares Toc for the account details change + * + * It disconnects, clears the contact list and active sessions list. + */ + void onAccountSettingsChanged(); + + /** \brief This slot prepares Toc for the new account creation + * + * It disconnects, clears the contact list and active sessions list. + * Then it connects with the `_register` parameter set to true, + * when the connection is successfull the account has been created. + */ + void onAccountSettingsCreated(); + + /** \brief Shows About info widget + * + */ + void showAbout(); + +private: // Methods + + /** \brief Returns cached TocChatWidget for the given Uid + * + * If there is a chached chat with the given uid then + * it returns pointer to this chat, if not it returns 0. + * + * @param uid Contact's ID + * @return Pointer to the chached TocChatWidget or 0 if there is no active chat. + */ + TocChatWidget* chatForUid(const QString& uid); + + /** \brief Returns active/open TocChatWidget for the given Uid + * + * If there is a active/open chat with the given uid then + * it returns pointer to this chat, if not it returns 0. + * + * @param uid Contact's ID + * @return Pointer to the active/open TocChatWidget or 0 if there is no active chat. + */ + TocChatWidget* openChatForUid(const QString& uid); + + /** \brief Checks if this is FTU + * + * returns true if settings on which FirstTimeUse case is based, are empty + * + * @return bool value indicating FTU use case + */ + bool isFtu(); + + /** \brief Returns an error string for the given error + * + * @param reason Reason of the error + * @return Human readable error string + */ + QString errorString(Reason reason); + +private: // Members + QString _defaultStyle; /// Default application style sheet + + QList* _pChatList; /// List of cached chat widgets + QList* _pOpenChatList; /// List of active/open chat widgets + TocMainToolbar* _pMainToolbar; /// Pointer to a toolbar that allows user to control the UI + QStackedLayout* _pMainLayout; /// Layout displaying all the "following" widgets + QWidget* _pCentralWidget; /// Main Window's Central Widget + TocContactListWidget* _pContactList; /// Widget displaying list of contacts + TocUserInfoWidget* _pUserInfoWidget; /// Widget displaying contact info + TocSettingsWidget* _pSettingsWidget; /// Widget displaying settings window + TocGeneralSettingsWidget* _pGeneralWidget; /// Widget displaying general settings + TocAccountSettingsWidget* _pAccountWidget; /// Widget displaying account settings + TocAccountIntermediateWidget* _pIntermediateWidget; /// Widget that lets user to choose account settings mode + TocThemesSettingsWidget* _pThemesWidget; /// Widget displaying themes setting + bool _register; /// Flag indicating if TietoOpCom is in "Create Account Mode" +}; + +QT_END_NAMESPACE + +#endif // TOCMAINWINDOW_H diff --git a/include/TocUi/tocsettingswidget.h b/include/TocUi/tocsettingswidget.h new file mode 100644 index 0000000..34c790f --- /dev/null +++ b/include/TocUi/tocsettingswidget.h @@ -0,0 +1,97 @@ +/** \file TocSettingsWidget.h + * \brief Declaration of TocSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCSETTINGSWIDGET_H +#define TOCSETTINGSWIDGET_H + +#include +#include "defs.h" + +class QSignalMapper; +class QPushButton; +class QFrame; + +QT_BEGIN_NAMESPACE + +/** \brief TocSettingsWidget class + * + * Widged used to display available configuration windows and + * to choose between them. + */ +class TocSettingsWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocSettingsWidget( QWidget * parent = 0, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocSettingsWidget(); + +signals: + + /** \brief Emited when user selects settings subsection + * + * ViewType is casted to int because TocSettingsWidget + * uses a QSignalMapper for convenience. + * + * @param viewType ViewType casted to int of the selected settings + */ + void triggered(/*ViewType*/int viewType); + +private: // Methods + + /** \brief Sets style sheets for each widget + * + * Used to overload style sheet properties that could come from main style sheet, + * to forbid corruption of the application layout from the external style sheets. + */ + void setupStyles(); + +private: // Members + + QSignalMapper* signalMapper; /// QSignalMapper used for convenience + QPushButton* generalButton; /// General Settings button + QPushButton* accountButton; /// Account Settings button + QPushButton* backButton; /// Back button + QPushButton* themesButton; /// Themes Settings button + QFrame* settingsFrame; /// Background frame of window +}; + +QT_END_NAMESPACE + +#endif // TOCSETTINGSWIDGET_H diff --git a/include/TocUi/tocthemessettingswidget.h b/include/TocUi/tocthemessettingswidget.h new file mode 100644 index 0000000..928f044 --- /dev/null +++ b/include/TocUi/tocthemessettingswidget.h @@ -0,0 +1,105 @@ +/** \file TocThemesSettingsWidget.h + * \brief Declaration of TocThemesSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCTHEMESSETTINGSWIDGET_H +#define TOCTHEMESSETTINGSWIDGET_H + +#include "defs.h" + +#include + +class Ui_TocThemesSettingsWidgetClass; + +class QShowEvent; + +QT_BEGIN_NAMESPACE + +/** \brief TocThemesSettingsWidget class + * + * Configuration window for application themes settings. + */ +class TocThemesSettingsWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocThemesSettingsWidget(QWidget* parent = 0, Qt::WindowFlags flags = 0); + + /** + * Destructor + */ + ~TocThemesSettingsWidget(); + +signals: + + /** \brief Emited when user wants to close Theme view and without saving changes. + * + */ + void backClicked(); + + /** \brief Emited when user wants to change application theme. + * + */ + void currentThemeChanged(); + +protected: + + /** \brief Reimplemented from QWidget + * + */ + virtual void showEvent( QShowEvent* event ); + +private slots: + + /** \brief Used to save the themes settings + * + * This slot is used when apply button is pressed. + * Data from the Theme list (active theme and all the themes) + * are stored in TocSettings. + * + * If Theme has been changed it emits currenThemeChanged() signal. + */ + void saveThemesSettings(); + +private: // Methods + +private: // Members + + Ui_TocThemesSettingsWidgetClass* ui; /// Ui definition header +}; + +QT_END_NAMESPACE + +#endif // TOCTHEMESSETTINGSWIDGET_H diff --git a/include/TocUi/tocuserinfowidget.h b/include/TocUi/tocuserinfowidget.h new file mode 100644 index 0000000..07b4091 --- /dev/null +++ b/include/TocUi/tocuserinfowidget.h @@ -0,0 +1,122 @@ +/** \file TocUserInfoWidget.h + * \brief Declaration of TocUserInfoWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCUSERINFOWIDGET_H +#define TOCUSERINFOWIDGET_H + +#include "defs.h" + +#include + + +class Ui_TocUserInfoWidgetClass; +class IconProvider; +class TocContactListWidget; +class QListWidgetItem; + +QT_BEGIN_NAMESPACE + +/** \brief TocUserInfoWidget class + * + */ +class TocUserInfoWidget : public QWidget +{ + Q_OBJECT + +public: + + /** + * Public Constructor + */ + TocUserInfoWidget( QListWidgetItem * contactItem, TocContactListWidget * parent, Qt::WindowFlags flags = 0 ); + + /** + * Destructor + */ + ~TocUserInfoWidget(); + +signals: + + /** \brief Emited when user commits the changes + * + * This signal is emited when user finished editing or creating contacts data. + * + * @param contactItem Newly created item or edited item representing the contact + */ + void contactChanged(QListWidgetItem* contactItem); + + /** \brief Emited when user confirms or discards the changes + * + * This signal is emited when user clicked OK or Cancel button. + */ + void finished(); + +protected: + + /** \brief Reimplemented from QWidget + * + */ + virtual void showEvent(QShowEvent* event); + +private slots: + + /** \brief Used when user finishes editing contacts data + * + * When user adds new contact this slot should create a new QListWidgetItem AND + * TocContact with the data provided, and emit it with contactChanged( QListWidgetItem* ) signal. + * If user edits contact's data it should save the data in an item AND it's + * TocContact provided and emit them with contactChanged( QListWidgetItem* ) signal. + */ + void okClicked(); + + /** \brief Used to react on changes to the Gender ComboBox + * + * When user changes the combo box selection, this slot should change + * an icon (if no custom icon is set by the user). + * + * @param index Current changed index + */ + void onCurrentIndexChanged( int index ); + +private: // Members + + Ui_TocUserInfoWidgetClass* ui; /// Ui definition header + QListWidgetItem* _pContactItem; /// Item given to the constructor + QString _customPicturePath; /// Contact's PictureUrl + QString _newCustomPicturePath; /// Contact's PictureUrl + int _currentIndex; /// Previous index + IconProvider* _pIconProvider; /// Class that provides contact icons + TocContactListWidget* _pContactList; /// Contact list for which the widget is displayed +}; + +QT_END_NAMESPACE + +#endif // TOCUSERINFOWIDGET_H diff --git a/include/defs.h b/include/defs.h new file mode 100644 index 0000000..fddadb6 --- /dev/null +++ b/include/defs.h @@ -0,0 +1,123 @@ +/** \file defs.h + * \brief Declarations of global typedefs and enumerators. + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DEFS_H +#define DEFS_H + +#include + + +enum Status { + Connected = 0, + Connecting, + Disconnected +}; + +Q_DECLARE_METATYPE(Status); + +enum Presence { + Unspecified = 0, + Offline = 1, //must be 1 to be inline with Tapioca + Available, + Away, + XA, + Hidden, + Busy +}; + +Q_DECLARE_METATYPE(Presence); + +enum Reason { + NoneSpecified = 0, + Requested, + NetworkError, + AuthenticationFailed, + EncryptionError, + NameInUse, + CertificateNotProvided, + CertificateUntrusted, + CertificateExpired, + CertificateNotActivated, + CertificateHostnameMismatch, + CertificateFingerPrintMismatch, + CertificateSigned, + CertificateOtherError +}; + +Q_DECLARE_METATYPE(Reason); + +enum Gender { + NotSpecified, + Male, + Female +}; + +Q_DECLARE_METATYPE(Gender); + +struct TocContact +{ + QString uid; + QString name; + QString customIconPath; + int customIconId; + Gender gender; + Presence presence; + QString description; +}; + +typedef QList TocContactList; + +Q_DECLARE_METATYPE(TocContactList); + +enum MessageDeliveryError { + Unknown = 0, + ContactOffline, + InvalidContact, + PermissionDenied, + MessageTooLong, + UserOffline, + NotOnContactList, + CannotCreateChannel, + NoError +}; + +Q_DECLARE_METATYPE(MessageDeliveryError); + +struct Message +{ + QString contents; + uint timestamp; + MessageDeliveryError error; +}; + +Q_DECLARE_METATYPE(Message); + +#endif // DEFS_H diff --git a/include/include.pri b/include/include.pri new file mode 100644 index 0000000..588533d --- /dev/null +++ b/include/include.pri @@ -0,0 +1,12 @@ +DEPENDPATH += $$PWD +INCLUDEPATH += $$PWD + +# Input +HEADERS += version.h \ + defs.h \ + macros.h \ + TocSettings \ + tocsettings.h + +include(TocUi/TocUi.pri) +include(TocEngine/TocEngine.pri) diff --git a/include/macros.h b/include/macros.h new file mode 100644 index 0000000..c0bdc02 --- /dev/null +++ b/include/macros.h @@ -0,0 +1,46 @@ +/** \file macros.h + * \brief Definitions of macros used in project + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MACROS_H +#define MACROS_H + +#ifdef QT_NO_DEBUG + + #define CONNECT(a, b, c, d) QObject::connect(a, b, c, d); + +#else + + #define CONNECT(a, b, c, d) Q_ASSERT( QObject::connect(a, b, c, d) ); + +#endif + +#endif // MACROS_H + diff --git a/include/tocsettings.h b/include/tocsettings.h new file mode 100644 index 0000000..89cb20c --- /dev/null +++ b/include/tocsettings.h @@ -0,0 +1,334 @@ +/** \file TocSettings.h + * \brief Declaration of TocSettings class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOCSETTINGS_H +#define TOCSETTINGS_H + +#include "defs.h" + +#include +#include + +enum SortOrder { + Alphabetical, + ByStatus, + None +}; + +Q_DECLARE_METATYPE(SortOrder); + +enum AuthorizationRule { + Ask, + AlwaysAccept, + AlwaysDeny +}; + +Q_DECLARE_METATYPE(AuthorizationRule); + +class TocSettings { + +public: + + /** \brief Static public constructor + * + * @return Pointer to the static instance + */ + static TocSettings* getInstance(); + + /** \brief Public destructor + * + */ + ~TocSettings(); + + /** \brief Getter for current account name + * + * @return Account name + */ + const QString& accountName(); + + /** \brief Setter for current account name + * + * @param accountName New account name + */ + void setAccountName(const QString& accountName); + + /** \brief Getter for current account uid + * + * @return Account uid + */ + const QString& accountUid(); + + /** \brief Setter for current account uid + * + * @param uid New account uid + */ + void setAccountUid(const QString& uid); + + /** \brief Getter for current account password + * + * @return Account password + */ + const QString& accountPasswd(); + + /** \brief Setter for current account password + * + * @param password New account password + */ + void setAccountPasswd(const QString& password); + + /** \brief Getter for current protocol + * + * @return Protocol used + */ + const QString& protocol(); + + /** \brief Setter for current protocol + * + * @param protocol Protocol name + */ + void setProtocol(const QString& protocol); + + /** \brief Getter for protocol common name + * + * @return Protocol common used name + */ + const QString protocolCommonName(); + + /** \brief Setter for current protocol by service name + * + * @param service Service name + */ + void setProtocolByName(const QString& service); + + /** \brief Getter for available protocols + * + * @return Available protocols + */ + const QStringList& protocols(); + + /** \brief Setter for availabe protocols + * + * @param protocols List of protocols names + */ + void setProtocols(const QStringList& protocols); + + /** \brief Getter for current server + * + * @return Server name + */ + const QString& server(); + + /** \brief Setter for current server + * + * @param server Server name + */ + void setServer(const QString& server); + + /** \brief Getter for currently used port + * + * @return Port number + */ + int port(); + + /** \brief Setter for currently used port + * + * @param port Port number + */ + void setPort(int port); + + /** \brief Getter for `old-ssl` connection property + * + * @return True if connection needs `old-ssl` enabled + */ + bool isOldSslEnabled(); + + /** \brief Setter for `old-ssl` connection property + * + * @param bEnabled True if connection needs `old-ssl` enabled + */ + void setOldSslEnabled(bool bEnabled); + + /** \brief Getter for `ignore-ssl-errors` connection property + * + * @return True if connection needs `ignore-ssl-errors` enabled + */ + bool isIgnoreSslErrorsEnabled(); + + /** \brief Setter for `ignore-ssl-errors` connection property + * + * @param bEnabled True if connection needs `ignore-ssl-errors` enabled + */ + void setIgnoreSslErrorsEnabled(bool bEnabled); + + /** \brief Getter for saved contact list + * + * @return List of TocContact's + */ + TocContactList* contactList(); + + /** \brief Getter for list of contacts to be added to server + * + * @return List of Uids to be added + */ + QStringList* contactsToAdd(); + + /** \brief Getter for list of contacts to be removed from server + * + * @return List of Uids to be removed + */ + QStringList* contactsToRemove(); + + /** \brief Getter for sort order policy + * + * @return Sorting order policy + */ + SortOrder sortOrder(); + + /** \brief Setter for sort order policy + * + * @param sortOrder Sorting order policy + */ + void setSortOrder(SortOrder sortOrder); + + /** \brief Getter for authorization rule + * + * @return Authorization rule + */ + AuthorizationRule authorizationRule(); + + /** \brief Setter for authorization rule + * + * @param rule Authorization rule + */ + void setAuthorizationRule(AuthorizationRule rule); + + /** \brief Getter for current ui theme + * + * @return File name of the style sheet file + */ + const QString& currentTheme(); + + /** \brief Setter for current ui theme + * + * @param theme File name of the style sheet file + */ + void setCurrentTheme(const QString& theme); + + /** \brief Returns a server hint for given data + * + * @param uid Account login + * @param serviceName Common name of the service/protocol (eg. Jabber, Google Talk, SIP) + * @return Default server for the data + */ + const QString& serverHint( const QString& uid, const QString& serviceName); + + /** \brief Returns a port hint for given data + * + * @param uid Account login + * @param serviceName Common name of the service/protocol (eg. Jabber, Google Talk, SIP) + * @return Default server for the data + */ + int portHint( const QString& uid, const QString& serviceName); + + /** \brief Returns true if such protocol is already supported + * + * @param protocol Protocol to check + * @return True if protocol already exist + */ + bool isProtocolInstalled(const QString& protocol); + + /** \brief Add a new protocol to the list of supported protocols + * + * @param commonName Protocol's common name + * @param protocol Protocol's identifier (according to the Telepathy spec) + */ + void installProtocol(const QString& commonName, const QString& protocol); + + /** \brief One shot getter for the `register` parameter of the connection + * + * When it returns the "true" value it sets it immediately to "false". + * + * @return true if user wants to register an account instead of logging in + */ + bool isRegister(); + + /** \brief Setter for the `register` parameter of the connection + * + * When it is invoked it sets the `register` parameter to "true" + * + */ + void setRegister(); + +private: + + /** \brief Private constructor + * + */ + TocSettings(); + + /** \brief Used to read settings with QSettings + * + * It's meant to be used only in destructor. That's why it's private. + */ + void read(); + + + /** \brief Used to save settings with QSettings + * + * It's meant to be used only when creating an instance. That's why it's private. + */ + void save(); + + static TocSettings* _pSelf; + + QString _accountName; + QString _accountUid; + QString _accountPasswd; + QString _protocol; + QStringList _protocols; + QString _protocolCommonName; + QString _server; + QString _serverHint; + int _port; + int _portHint; + bool _bOldSsl; + bool _bIgnoreSslErrors; + QList* _pContactList; + QStringList _addedContacts; + QStringList _removedContacts; + AuthorizationRule _authorizationRule; + SortOrder _sortOrder; + QString _currentTheme; + QMap* _pProtocolMap; + bool _register; +}; + +#endif // TOCSETTINGS_H diff --git a/include/uidefs.h b/include/uidefs.h new file mode 100644 index 0000000..1612a7a --- /dev/null +++ b/include/uidefs.h @@ -0,0 +1,113 @@ +/** \file uidefs.h + * \brief Declarations of global typedefs and enumerators for UI. + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef UIDEFS_H +#define UIDEFS_H + +#define STYLESHEET_ONLINE "QFrame { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,"\ +"stop: 0 #00aa00, stop: 0.55 #00aa00,"\ +"stop: 0.56 #00bb00, stop: 1 #00ff00);}" + +#define STYLESHEET_AWAY "QFrame { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,"\ +"stop: 0 #999900, stop: 0.55 #aaaa00,"\ +"stop: 0.56 #bbbb00, stop: 1 #ffff00);}" + +#define STYLESHEET_BUSY "QFrame { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,"\ +"stop: 0 #990000, stop: 0.55 #aa0000,"\ +"stop: 0.56 #bb0000, stop: 1 #ff0000);}" + +#define STYLESHEET_OFFLINE "QFrame { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,"\ +"stop: 0 #999, stop: 0.55 #aaa,"\ +"stop: 0.56 #bbb, stop: 1 #fff);}" + +#define LOGO_BLUE qRgb( 0, 128, 197) +#define LOGO_LIGHT_BLUE qRgb(118, 206, 234) +#define LOGO_GREEN qRgb(153, 204, 51) +#define LOGO_ORANGE qRgb(255, 153, 51) +#define LOGO_RED qRgb(230, 40, 88) + +enum ViewType { + Login, + Contacts, + Chat, + UserInfo, + Settings, + General, + Account, + AccountCreate, + AccountIntermediate, + FTU, + Themes +}; + +Q_DECLARE_METATYPE(ViewType); + +enum TecUserRole { + DisplayRole, + DecorationRole, ///An icon merged with status frame + ContactRole = Qt::UserRole +}; + +#ifdef QT_NO_DEBUG + #define emotsPath QString("/usr/share/tietoopcom/emoticons/") +#else + #define emotsPath QString("./data/emoticons/") +#endif //QT_NO_DEBUG + +#define emotSmile_32x32 emotsPath + "face-smile32x32.png" +#define emotSad_32x32 emotsPath + "face-sad32x32.png" +#define emotWink_32x32 emotsPath + "face-wink32x32.png" +#define emotGrin_32x32 emotsPath + "face-grin32x32.png" +#define emotSurprise_32x32 emotsPath + "face-surprise32x32.png" +#define emotPlain_32x32 emotsPath + "face-plain32x32.png" +#define emotKiss_32x32 emotsPath + "face-kiss32x32.png" +#define emotAngel_32x32 emotsPath + "face-angel32x32.png" +#define emotDevil_32x32 emotsPath + "face-devilish32x32.png" +#define emotMonkey_32x32 emotsPath + "face-monkey32x32.png" +#define emotCrying_32x32 emotsPath + "face-crying32x32.png" +#define emotGlasses_32x32 emotsPath + "face-glasses32x32.png" +#define emotSmileBig_32x32 emotsPath + "face-smile-big32x32.png" + +#define emotSmile_24x24 emotsPath + "face-smile24x24.png" +#define emotSad_24x24 emotsPath + "face-sad24x24.png" +#define emotWink_24x24 emotsPath + "face-wink24x24.png" +#define emotGrin_24x24 emotsPath + "face-grin24x24.png" +#define emotSurprise_24x24 emotsPath + "face-surprise24x24.png" +#define emotPlain_24x24 emotsPath + "face-plain24x24.png" +#define emotKiss_24x24 emotsPath + "face-kiss24x24.png" +#define emotAngel_24x24 emotsPath + "face-angel24x24.png" +#define emotDevil_24x24 emotsPath + "face-devilish24x24.png" +#define emotMonkey_24x24 emotsPath + "face-monkey24x24.png" +#define emotCrying_24x24 emotsPath + "face-crying24x24.png" +#define emotGlasses_24x24 emotsPath + "face-glasses24x24.png" +#define emotSmileBig_24x24 emotsPath + "face-smile-big24x24.png" + +#endif // UIDEFS_H diff --git a/include/version.h b/include/version.h new file mode 100644 index 0000000..8e91446 --- /dev/null +++ b/include/version.h @@ -0,0 +1,8 @@ +#ifndef __version_h__ +#define __version_h__ + +#define APP_NAME "Tieto Open Communicator" +#define VERSION "0.5.@REVISION@" +#define TARGET "tietoopcom" + +#endif diff --git a/include/version.in b/include/version.in new file mode 100644 index 0000000..d50c13e --- /dev/null +++ b/include/version.in @@ -0,0 +1,8 @@ +#ifndef __version_h__ +#define __version_h__ + +#define APP_NAME "Tieto Open Communicator" +#define VERSION "0.5.@REVISION@" +#define TARGET "@TARGET@" + +#endif diff --git a/info/exclude b/info/exclude new file mode 100644 index 0000000..2c87b72 --- /dev/null +++ b/info/exclude @@ -0,0 +1,6 @@ +# git-ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/resources/account.png b/resources/account.png new file mode 100644 index 0000000..cfa19d2 Binary files /dev/null and b/resources/account.png differ diff --git a/resources/activesessions.png b/resources/activesessions.png new file mode 100644 index 0000000..1fb7609 Binary files /dev/null and b/resources/activesessions.png differ diff --git a/resources/addcontact.png b/resources/addcontact.png new file mode 100644 index 0000000..33b4f35 Binary files /dev/null and b/resources/addcontact.png differ diff --git a/resources/away.png b/resources/away.png new file mode 100644 index 0000000..75baace Binary files /dev/null and b/resources/away.png differ diff --git a/resources/busy.png b/resources/busy.png new file mode 100644 index 0000000..d677155 Binary files /dev/null and b/resources/busy.png differ diff --git a/resources/close.png b/resources/close.png new file mode 100644 index 0000000..5b8622e Binary files /dev/null and b/resources/close.png differ diff --git a/resources/contactfemale.png b/resources/contactfemale.png new file mode 100644 index 0000000..747bbde Binary files /dev/null and b/resources/contactfemale.png differ diff --git a/resources/contactmale.png b/resources/contactmale.png new file mode 100644 index 0000000..18d02de Binary files /dev/null and b/resources/contactmale.png differ diff --git a/resources/contacts.png b/resources/contacts.png new file mode 100644 index 0000000..9b04437 Binary files /dev/null and b/resources/contacts.png differ diff --git a/resources/enter.png b/resources/enter.png new file mode 100644 index 0000000..3f7ff88 Binary files /dev/null and b/resources/enter.png differ diff --git a/resources/general.png b/resources/general.png new file mode 100644 index 0000000..6ce5e27 Binary files /dev/null and b/resources/general.png differ diff --git a/resources/greenframe.png b/resources/greenframe.png new file mode 100644 index 0000000..0d7414e Binary files /dev/null and b/resources/greenframe.png differ diff --git a/resources/hidden.png b/resources/hidden.png new file mode 100644 index 0000000..0d25f3b Binary files /dev/null and b/resources/hidden.png differ diff --git a/resources/jabber.png b/resources/jabber.png new file mode 100644 index 0000000..10681a9 Binary files /dev/null and b/resources/jabber.png differ diff --git a/resources/network.png b/resources/network.png new file mode 100644 index 0000000..921ae4b Binary files /dev/null and b/resources/network.png differ diff --git a/resources/offline.png b/resources/offline.png new file mode 100644 index 0000000..db2870d Binary files /dev/null and b/resources/offline.png differ diff --git a/resources/online.png b/resources/online.png new file mode 100644 index 0000000..7f2cc8d Binary files /dev/null and b/resources/online.png differ diff --git a/resources/redframe.png b/resources/redframe.png new file mode 100644 index 0000000..e723b78 Binary files /dev/null and b/resources/redframe.png differ diff --git a/resources/restore.png b/resources/restore.png new file mode 100644 index 0000000..0a93131 Binary files /dev/null and b/resources/restore.png differ diff --git a/resources/settings.png b/resources/settings.png new file mode 100644 index 0000000..c646c36 Binary files /dev/null and b/resources/settings.png differ diff --git a/resources/themes.png b/resources/themes.png new file mode 100644 index 0000000..65c07ec Binary files /dev/null and b/resources/themes.png differ diff --git a/resources/tieto-logo.png b/resources/tieto-logo.png new file mode 100644 index 0000000..6012713 Binary files /dev/null and b/resources/tieto-logo.png differ diff --git a/resources/unknown.png b/resources/unknown.png new file mode 100644 index 0000000..8344961 Binary files /dev/null and b/resources/unknown.png differ diff --git a/resources/yellowframe.png b/resources/yellowframe.png new file mode 100644 index 0000000..4010f71 Binary files /dev/null and b/resources/yellowframe.png differ diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..44e127f --- /dev/null +++ b/src/Makefile @@ -0,0 +1,155 @@ +############################################################################# +# Makefile for building: ../bin/tietoopcom +# Generated by qmake (2.01a) (Qt 4.6.2) on: Thu Jul 8 08:48:05 2010 +# Project: src.pro +# Template: app +# Command: /usr/bin/qmake -unix -o Makefile src.pro +############################################################################# + +first: release +install: release-install +uninstall: release-uninstall +MAKEFILE = Makefile +QMAKE = /usr/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +SUBTARGETS = \ + release \ + debug + +release: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_default: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_first: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release first +release-all: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release all +release-clean: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release clean +release-distclean: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release distclean +release-install: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release install +release-uninstall: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release uninstall +debug: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_default: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_first: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug first +debug-all: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug all +debug-clean: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug clean +debug-distclean: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug distclean +debug-install: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug install +debug-uninstall: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug uninstall + +Makefile: src.pro /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/linux-g++/qmake.conf /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf \ + TocUi/TocUi.pri \ + TocEngine/TocEngine.pri \ + ../include/TocUi/TocUi.pri \ + ../include/TocEngine/TocEngine.pri \ + ../include/include.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug_and_release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qdbus.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusinterfaces.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusadaptors.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf \ + /usr/lib/libQtDBus.prl \ + /usr/lib/libQtXml.prl \ + /usr/lib/libQtCore.prl \ + /usr/lib/libQtGui.prl + $(QMAKE) -unix -o Makefile src.pro +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf: +TocUi/TocUi.pri: +TocEngine/TocEngine.pri: +../include/TocUi/TocUi.pri: +../include/TocEngine/TocEngine.pri: +../include/include.pri: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug_and_release.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qdbus.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusinterfaces.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusadaptors.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf: +/usr/lib/libQtDBus.prl: +/usr/lib/libQtXml.prl: +/usr/lib/libQtCore.prl: +/usr/lib/libQtGui.prl: +qmake: qmake_all FORCE + @$(QMAKE) -unix -o Makefile src.pro + +qmake_all: FORCE + +make_default: release-make_default debug-make_default FORCE +make_first: release-make_first debug-make_first FORCE +all: release-all debug-all FORCE +clean: release-clean debug-clean FORCE +distclean: release-distclean debug-distclean FORCE + -$(DEL_FILE) Makefile + +release-mocclean: $(MAKEFILE).Release + $(MAKE) -f $(MAKEFILE).Release mocclean +debug-mocclean: $(MAKEFILE).Debug + $(MAKE) -f $(MAKEFILE).Debug mocclean +mocclean: release-mocclean debug-mocclean + +release-mocables: $(MAKEFILE).Release + $(MAKE) -f $(MAKEFILE).Release mocables +debug-mocables: $(MAKEFILE).Debug + $(MAKE) -f $(MAKEFILE).Debug mocables +mocables: release-mocables debug-mocables +FORCE: + +$(MAKEFILE).Release: Makefile +$(MAKEFILE).Debug: Makefile diff --git a/src/Makefile.Debug b/src/Makefile.Debug new file mode 100644 index 0000000..9002273 --- /dev/null +++ b/src/Makefile.Debug @@ -0,0 +1,555 @@ +############################################################################# +# Makefile for building: ../bin/tietoopcom_debug +# Generated by qmake (2.01a) (Qt 4.6.2) on: Thu Jul 8 08:48:05 2010 +# Project: src.pro +# Template: app +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES) +CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES) +INCPATH = -I/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/linux-g++ -I. -I/targets/FREMANTLE_X86/usr/include/QtCore -I/targets/FREMANTLE_X86/usr/include/QtGui -I/targets/FREMANTLE_X86/usr/include -I/targets/FREMANTLE_X86/usr/include/QtDBus -I. -ITocUi -ITocEngine -I../include -I../include/TocUi -I../include/TocEngine -I../build/debug -I../build/debug +LINK = g++ +LFLAGS = -Wl,-rpath,/usr/lib +LIBS = $(SUBLIBS) -L/usr/lib -lQtTapioca -lQtDBus -L/usr/lib -lQtXml -lQtGui -L/usr/X11R6/lib -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ../build/debug/ + +####### Files + +SOURCES = main.cpp \ + TocSettings.cpp \ + TocUi/TocBaseMainWindow.cpp \ + TocUi/TocMainWindow.cpp \ + TocUi/TocContactListWidget.cpp \ + TocUi/TocChatWidget.cpp \ + TocUi/TocUserInfoWidget.cpp \ + TocUi/TocSettingsWidget.cpp \ + TocUi/TocGeneralSettingsWidget.cpp \ + TocUi/TocAccountSettingsWidget.cpp \ + TocUi/TocAccountIntermediateWidget.cpp \ + TocUi/TocThemesSettingsWidget.cpp \ + TocUi/TocMainToolbar.cpp \ + TocUi/IconProvider.cpp \ + TocUi/TocEmoticonsDialog.cpp \ + TocEngine/TocBaseEngine.cpp \ + TocEngine/TocEngine.cpp ../build/debug/moc_tocbasemainwindow.cpp \ + ../build/debug/moc_tocmainwindow.cpp \ + ../build/debug/moc_toccontactlistwidget.cpp \ + ../build/debug/moc_tocchatwidget.cpp \ + ../build/debug/moc_tocuserinfowidget.cpp \ + ../build/debug/moc_tocsettingswidget.cpp \ + ../build/debug/moc_tocgeneralsettingswidget.cpp \ + ../build/debug/moc_tocaccountsettingswidget.cpp \ + ../build/debug/moc_tocaccountintermediatewidget.cpp \ + ../build/debug/moc_tocthemessettingswidget.cpp \ + ../build/debug/moc_tocmaintoolbar.cpp \ + ../build/debug/moc_tocemoticonsdialog.cpp \ + ../build/debug/moc_tocbaseengine.cpp \ + ../build/debug/moc_tocengine.cpp \ + ../build/debug/qrc_application.cpp +OBJECTS = ../build/debug/main.o \ + ../build/debug/TocSettings.o \ + ../build/debug/TocBaseMainWindow.o \ + ../build/debug/TocMainWindow.o \ + ../build/debug/TocContactListWidget.o \ + ../build/debug/TocChatWidget.o \ + ../build/debug/TocUserInfoWidget.o \ + ../build/debug/TocSettingsWidget.o \ + ../build/debug/TocGeneralSettingsWidget.o \ + ../build/debug/TocAccountSettingsWidget.o \ + ../build/debug/TocAccountIntermediateWidget.o \ + ../build/debug/TocThemesSettingsWidget.o \ + ../build/debug/TocMainToolbar.o \ + ../build/debug/IconProvider.o \ + ../build/debug/TocEmoticonsDialog.o \ + ../build/debug/TocBaseEngine.o \ + ../build/debug/TocEngine.o \ + ../build/debug/moc_tocbasemainwindow.o \ + ../build/debug/moc_tocmainwindow.o \ + ../build/debug/moc_toccontactlistwidget.o \ + ../build/debug/moc_tocchatwidget.o \ + ../build/debug/moc_tocuserinfowidget.o \ + ../build/debug/moc_tocsettingswidget.o \ + ../build/debug/moc_tocgeneralsettingswidget.o \ + ../build/debug/moc_tocaccountsettingswidget.o \ + ../build/debug/moc_tocaccountintermediatewidget.o \ + ../build/debug/moc_tocthemessettingswidget.o \ + ../build/debug/moc_tocmaintoolbar.o \ + ../build/debug/moc_tocemoticonsdialog.o \ + ../build/debug/moc_tocbaseengine.o \ + ../build/debug/moc_tocengine.o \ + ../build/debug/qrc_application.o +DIST = /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf \ + TocUi/TocUi.pri \ + TocEngine/TocEngine.pri \ + ../include/TocUi/TocUi.pri \ + ../include/TocEngine/TocEngine.pri \ + ../include/include.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug_and_release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/build_pass.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qdbus.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusinterfaces.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusadaptors.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf \ + src.pro +QMAKE_TARGET = tietoopcom_debug +DESTDIR = ../bin/ +TARGET = ../bin/tietoopcom_debug + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile.Debug $(TARGET) + +$(TARGET): ../build/debug/ui_TocChatWidget.h ../build/debug/ui_TocUserInfoWidget.h ../build/debug/ui_TocGeneralSettingsWidget.h ../build/debug/ui_TocAccountSettingsWidget.h ../build/debug/ui_TocThemesSettingsWidget.h ../build/debug/ui_TocEmoticonsDialog.h $(OBJECTS) + @$(CHK_DIR_EXISTS) ../bin/ || $(MKDIR) ../bin/ + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +qmake: FORCE + @$(QMAKE) -unix -o Makefile.Debug src.pro + +dist: + @$(CHK_DIR_EXISTS) ../build/debug/tietoopcom_debug1.0.0 || $(MKDIR) ../build/debug/tietoopcom_debug1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) ../build/debug/tietoopcom_debug1.0.0/ && $(COPY_FILE) --parents ../include/version.h ../include/defs.h ../include/macros.h ../include/TocSettings ../include/tocsettings.h ../include/TocUi/TocBaseMainWindow ../include/TocUi/tocbasemainwindow.h ../include/TocUi/TocMainWindow ../include/TocUi/tocmainwindow.h ../include/TocUi/TocContactListWidget ../include/TocUi/toccontactlistwidget.h ../include/TocUi/TocChatWidget ../include/TocUi/tocchatwidget.h ../include/TocUi/TocUserInfoWidget ../include/TocUi/tocuserinfowidget.h ../include/TocUi/TocSettingsWidget ../include/TocUi/tocsettingswidget.h ../include/TocUi/TocGeneralSettingsWidget ../include/TocUi/tocgeneralsettingswidget.h ../include/TocUi/TocAccountSettingsWidget ../include/TocUi/tocaccountsettingswidget.h ../include/TocUi/TocAccountIntermediateWidget ../include/TocUi/tocaccountintermediatewidget.h ../include/TocUi/TocThemesSettingsWidget ../include/TocUi/tocthemessettingswidget.h ../include/TocUi/TocMainToolbar ../include/TocUi/tocmaintoolbar.h ../include/TocUi/IconProvider ../include/TocUi/iconprovider.h ../include/TocUi/TocEmoticonsDialog ../include/TocUi/tocemoticonsdialog.h ../include/TocEngine/TocBaseEngine ../include/TocEngine/tocbaseengine.h TocEngine ../include/TocEngine/tocengine.h ../build/debug/tietoopcom_debug1.0.0/ && $(COPY_FILE) --parents application.qrc ../build/debug/tietoopcom_debug1.0.0/ && $(COPY_FILE) --parents main.cpp TocSettings.cpp TocUi/TocBaseMainWindow.cpp TocUi/TocMainWindow.cpp TocUi/TocContactListWidget.cpp TocUi/TocChatWidget.cpp TocUi/TocUserInfoWidget.cpp TocUi/TocSettingsWidget.cpp TocUi/TocGeneralSettingsWidget.cpp TocUi/TocAccountSettingsWidget.cpp TocUi/TocAccountIntermediateWidget.cpp TocUi/TocThemesSettingsWidget.cpp TocUi/TocMainToolbar.cpp TocUi/IconProvider.cpp TocUi/TocEmoticonsDialog.cpp TocEngine/TocBaseEngine.cpp TocEngine/TocEngine.cpp ../build/debug/tietoopcom_debug1.0.0/ && $(COPY_FILE) --parents TocUi/TocChatWidget.ui TocUi/TocUserInfoWidget.ui TocUi/TocGeneralSettingsWidget.ui TocUi/TocAccountSettingsWidget.ui TocUi/TocThemesSettingsWidget.ui TocUi/TocEmoticonsDialog.ui ../build/debug/tietoopcom_debug1.0.0/ && (cd `dirname ../build/debug/tietoopcom_debug1.0.0` && $(TAR) tietoopcom_debug1.0.0.tar tietoopcom_debug1.0.0 && $(COMPRESS) tietoopcom_debug1.0.0.tar) && $(MOVE) `dirname ../build/debug/tietoopcom_debug1.0.0`/tietoopcom_debug1.0.0.tar.gz . && $(DEL_FILE) -r ../build/debug/tietoopcom_debug1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile.Debug + + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: ../build/debug/moc_tocbasemainwindow.cpp ../build/debug/moc_tocmainwindow.cpp ../build/debug/moc_toccontactlistwidget.cpp ../build/debug/moc_tocchatwidget.cpp ../build/debug/moc_tocuserinfowidget.cpp ../build/debug/moc_tocsettingswidget.cpp ../build/debug/moc_tocgeneralsettingswidget.cpp ../build/debug/moc_tocaccountsettingswidget.cpp ../build/debug/moc_tocaccountintermediatewidget.cpp ../build/debug/moc_tocthemessettingswidget.cpp ../build/debug/moc_tocmaintoolbar.cpp ../build/debug/moc_tocemoticonsdialog.cpp ../build/debug/moc_tocbaseengine.cpp ../build/debug/moc_tocengine.cpp +compiler_moc_header_clean: + -$(DEL_FILE) ../build/debug/moc_tocbasemainwindow.cpp ../build/debug/moc_tocmainwindow.cpp ../build/debug/moc_toccontactlistwidget.cpp ../build/debug/moc_tocchatwidget.cpp ../build/debug/moc_tocuserinfowidget.cpp ../build/debug/moc_tocsettingswidget.cpp ../build/debug/moc_tocgeneralsettingswidget.cpp ../build/debug/moc_tocaccountsettingswidget.cpp ../build/debug/moc_tocaccountintermediatewidget.cpp ../build/debug/moc_tocthemessettingswidget.cpp ../build/debug/moc_tocmaintoolbar.cpp ../build/debug/moc_tocemoticonsdialog.cpp ../build/debug/moc_tocbaseengine.cpp ../build/debug/moc_tocengine.cpp +../build/debug/moc_tocbasemainwindow.cpp: ../include/defs.h \ + ../include/TocUi/tocbasemainwindow.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocbasemainwindow.h -o ../build/debug/moc_tocbasemainwindow.cpp + +../build/debug/moc_tocmainwindow.cpp: ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + ../include/TocUi/tocmainwindow.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocmainwindow.h -o ../build/debug/moc_tocmainwindow.cpp + +../build/debug/moc_toccontactlistwidget.cpp: ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/toccontactlistwidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/toccontactlistwidget.h -o ../build/debug/moc_toccontactlistwidget.cpp + +../build/debug/moc_tocchatwidget.cpp: ../include/defs.h \ + ../include/TocUi/tocchatwidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocchatwidget.h -o ../build/debug/moc_tocchatwidget.cpp + +../build/debug/moc_tocuserinfowidget.cpp: ../include/defs.h \ + ../include/TocUi/tocuserinfowidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocuserinfowidget.h -o ../build/debug/moc_tocuserinfowidget.cpp + +../build/debug/moc_tocsettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocsettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocsettingswidget.h -o ../build/debug/moc_tocsettingswidget.cpp + +../build/debug/moc_tocgeneralsettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocgeneralsettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocgeneralsettingswidget.h -o ../build/debug/moc_tocgeneralsettingswidget.cpp + +../build/debug/moc_tocaccountsettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocaccountsettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocaccountsettingswidget.h -o ../build/debug/moc_tocaccountsettingswidget.cpp + +../build/debug/moc_tocaccountintermediatewidget.cpp: ../include/TocUi/tocaccountintermediatewidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocaccountintermediatewidget.h -o ../build/debug/moc_tocaccountintermediatewidget.cpp + +../build/debug/moc_tocthemessettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocthemessettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocthemessettingswidget.h -o ../build/debug/moc_tocthemessettingswidget.cpp + +../build/debug/moc_tocmaintoolbar.cpp: ../include/defs.h \ + ../include/uidefs.h \ + ../include/TocUi/tocmaintoolbar.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocmaintoolbar.h -o ../build/debug/moc_tocmaintoolbar.cpp + +../build/debug/moc_tocemoticonsdialog.cpp: ../include/TocUi/tocemoticonsdialog.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocemoticonsdialog.h -o ../build/debug/moc_tocemoticonsdialog.cpp + +../build/debug/moc_tocbaseengine.cpp: ../include/defs.h \ + ../include/TocEngine/tocbaseengine.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocEngine/tocbaseengine.h -o ../build/debug/moc_tocbaseengine.cpp + +../build/debug/moc_tocengine.cpp: ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/defs.h \ + ../include/TocEngine/tocengine.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocEngine/tocengine.h -o ../build/debug/moc_tocengine.cpp + +compiler_dbus_interface_source_make_all: +compiler_dbus_interface_source_clean: +compiler_dbus_adaptor_source_make_all: +compiler_dbus_adaptor_source_clean: +compiler_rcc_make_all: ../build/debug/qrc_application.cpp +compiler_rcc_clean: + -$(DEL_FILE) ../build/debug/qrc_application.cpp +../build/debug/qrc_application.cpp: application.qrc \ + ../resources/offline.png \ + ../resources/close.png \ + ../resources/addcontact.png \ + ../resources/contactfemale.png \ + ../resources/away.png \ + ../resources/themes.png \ + ../resources/yellowframe.png \ + ../resources/online.png \ + ../resources/restore.png \ + ../resources/redframe.png \ + ../resources/general.png \ + ../resources/settings.png \ + ../resources/hidden.png \ + ../resources/busy.png \ + ../resources/greenframe.png \ + ../resources/contactmale.png \ + ../resources/network.png \ + ../resources/tieto-logo.png \ + ../resources/activesessions.png \ + ../resources/contacts.png \ + ../resources/unknown.png \ + ../resources/account.png + /usr/bin/rcc -name application application.qrc -o ../build/debug/qrc_application.cpp + +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_dbus_interface_header_make_all: +compiler_dbus_interface_header_clean: +compiler_dbus_interface_moc_make_all: +compiler_dbus_interface_moc_clean: +compiler_dbus_adaptor_header_make_all: +compiler_dbus_adaptor_header_clean: +compiler_dbus_adaptor_moc_make_all: +compiler_dbus_adaptor_moc_clean: +compiler_uic_make_all: ../build/debug/ui_TocChatWidget.h ../build/debug/ui_TocUserInfoWidget.h ../build/debug/ui_TocGeneralSettingsWidget.h ../build/debug/ui_TocAccountSettingsWidget.h ../build/debug/ui_TocThemesSettingsWidget.h ../build/debug/ui_TocEmoticonsDialog.h +compiler_uic_clean: + -$(DEL_FILE) ../build/debug/ui_TocChatWidget.h ../build/debug/ui_TocUserInfoWidget.h ../build/debug/ui_TocGeneralSettingsWidget.h ../build/debug/ui_TocAccountSettingsWidget.h ../build/debug/ui_TocThemesSettingsWidget.h ../build/debug/ui_TocEmoticonsDialog.h +../build/debug/ui_TocChatWidget.h: TocUi/TocChatWidget.ui + /usr/bin/uic TocUi/TocChatWidget.ui -o ../build/debug/ui_TocChatWidget.h + +../build/debug/ui_TocUserInfoWidget.h: TocUi/TocUserInfoWidget.ui + /usr/bin/uic TocUi/TocUserInfoWidget.ui -o ../build/debug/ui_TocUserInfoWidget.h + +../build/debug/ui_TocGeneralSettingsWidget.h: TocUi/TocGeneralSettingsWidget.ui + /usr/bin/uic TocUi/TocGeneralSettingsWidget.ui -o ../build/debug/ui_TocGeneralSettingsWidget.h + +../build/debug/ui_TocAccountSettingsWidget.h: TocUi/TocAccountSettingsWidget.ui + /usr/bin/uic TocUi/TocAccountSettingsWidget.ui -o ../build/debug/ui_TocAccountSettingsWidget.h + +../build/debug/ui_TocThemesSettingsWidget.h: TocUi/TocThemesSettingsWidget.ui + /usr/bin/uic TocUi/TocThemesSettingsWidget.ui -o ../build/debug/ui_TocThemesSettingsWidget.h + +../build/debug/ui_TocEmoticonsDialog.h: TocUi/TocEmoticonsDialog.ui + /usr/bin/uic TocUi/TocEmoticonsDialog.ui -o ../build/debug/ui_TocEmoticonsDialog.h + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean compiler_rcc_clean compiler_uic_clean + +####### Compile + +../build/debug/main.o: main.cpp ../include/TocUi/TocMainWindow \ + ../include/TocUi/tocmainwindow.h \ + ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + TocEngine + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/main.o main.cpp + +../build/debug/TocSettings.o: TocSettings.cpp ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/defs.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocSettings.o TocSettings.cpp + +../build/debug/TocBaseMainWindow.o: TocUi/TocBaseMainWindow.cpp ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocBaseMainWindow.o TocUi/TocBaseMainWindow.cpp + +../build/debug/TocMainWindow.o: TocUi/TocMainWindow.cpp ../include/TocUi/TocMainWindow \ + ../include/TocUi/tocmainwindow.h \ + ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + ../include/TocUi/TocMainToolbar \ + ../include/TocUi/tocmaintoolbar.h \ + ../include/uidefs.h \ + ../include/TocUi/TocContactListWidget \ + ../include/TocUi/toccontactlistwidget.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/TocChatWidget \ + ../include/TocUi/tocchatwidget.h \ + ../include/TocUi/TocUserInfoWidget \ + ../include/TocUi/tocuserinfowidget.h \ + ../include/TocUi/TocSettingsWidget \ + ../include/TocUi/tocsettingswidget.h \ + ../include/TocUi/TocGeneralSettingsWidget \ + ../include/TocUi/tocgeneralsettingswidget.h \ + ../include/TocUi/TocAccountSettingsWidget \ + ../include/TocUi/tocaccountsettingswidget.h \ + ../include/TocUi/TocAccountIntermediateWidget \ + ../include/TocUi/tocaccountintermediatewidget.h \ + ../include/TocUi/TocThemesSettingsWidget \ + ../include/TocUi/tocthemessettingswidget.h \ + ../include/macros.h \ + ../include/version.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocMainWindow.o TocUi/TocMainWindow.cpp + +../build/debug/TocContactListWidget.o: TocUi/TocContactListWidget.cpp ../include/TocUi/TocContactListWidget \ + ../include/TocUi/toccontactlistwidget.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/IconProvider \ + ../include/TocUi/iconprovider.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocContactListWidget.o TocUi/TocContactListWidget.cpp + +../build/debug/TocChatWidget.o: TocUi/TocChatWidget.cpp ../build/debug/ui_TocChatWidget.h \ + ../include/TocUi/TocEmoticonsDialog \ + ../include/TocUi/tocemoticonsdialog.h \ + ../include/TocUi/TocChatWidget \ + ../include/TocUi/tocchatwidget.h \ + ../include/defs.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocChatWidget.o TocUi/TocChatWidget.cpp + +../build/debug/TocUserInfoWidget.o: TocUi/TocUserInfoWidget.cpp ../include/TocUi/TocContactListWidget \ + ../include/TocUi/toccontactlistwidget.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/TocUserInfoWidget \ + ../include/TocUi/tocuserinfowidget.h \ + ../include/TocUi/IconProvider \ + ../include/TocUi/iconprovider.h \ + ../build/debug/ui_TocUserInfoWidget.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocUserInfoWidget.o TocUi/TocUserInfoWidget.cpp + +../build/debug/TocSettingsWidget.o: TocUi/TocSettingsWidget.cpp ../include/TocUi/TocSettingsWidget \ + ../include/TocUi/tocsettingswidget.h \ + ../include/defs.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocSettingsWidget.o TocUi/TocSettingsWidget.cpp + +../build/debug/TocGeneralSettingsWidget.o: TocUi/TocGeneralSettingsWidget.cpp ../include/TocUi/TocGeneralSettingsWidget \ + ../include/TocUi/tocgeneralsettingswidget.h \ + ../include/defs.h \ + ../build/debug/ui_TocGeneralSettingsWidget.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocGeneralSettingsWidget.o TocUi/TocGeneralSettingsWidget.cpp + +../build/debug/TocAccountSettingsWidget.o: TocUi/TocAccountSettingsWidget.cpp ../include/TocUi/TocAccountSettingsWidget \ + ../include/TocUi/tocaccountsettingswidget.h \ + ../include/defs.h \ + ../build/debug/ui_TocAccountSettingsWidget.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocAccountSettingsWidget.o TocUi/TocAccountSettingsWidget.cpp + +../build/debug/TocAccountIntermediateWidget.o: TocUi/TocAccountIntermediateWidget.cpp ../include/TocUi/TocAccountIntermediateWidget \ + ../include/TocUi/tocaccountintermediatewidget.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocAccountIntermediateWidget.o TocUi/TocAccountIntermediateWidget.cpp + +../build/debug/TocThemesSettingsWidget.o: TocUi/TocThemesSettingsWidget.cpp ../include/TocUi/TocThemesSettingsWidget \ + ../include/TocUi/tocthemessettingswidget.h \ + ../include/defs.h \ + ../build/debug/ui_TocThemesSettingsWidget.h \ + ../include/macros.h \ + ../include/TocSettings \ + ../include/tocsettings.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocThemesSettingsWidget.o TocUi/TocThemesSettingsWidget.cpp + +../build/debug/TocMainToolbar.o: TocUi/TocMainToolbar.cpp ../include/TocUi/TocMainToolbar \ + ../include/TocUi/tocmaintoolbar.h \ + ../include/defs.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocMainToolbar.o TocUi/TocMainToolbar.cpp + +../build/debug/IconProvider.o: TocUi/IconProvider.cpp ../include/TocUi/IconProvider \ + ../include/TocUi/iconprovider.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/IconProvider.o TocUi/IconProvider.cpp + +../build/debug/TocEmoticonsDialog.o: TocUi/TocEmoticonsDialog.cpp ../build/debug/ui_TocEmoticonsDialog.h \ + ../include/TocUi/TocEmoticonsDialog \ + ../include/TocUi/tocemoticonsdialog.h \ + ../include/macros.h \ + ../include/uidefs.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocEmoticonsDialog.o TocUi/TocEmoticonsDialog.cpp + +../build/debug/TocBaseEngine.o: TocEngine/TocBaseEngine.cpp ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/defs.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocBaseEngine.o TocEngine/TocBaseEngine.cpp + +../build/debug/TocEngine.o: TocEngine/TocEngine.cpp ../include/TocEngine/TocEngine \ + ../include/TocEngine/tocengine.h \ + ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/TocEngine.o TocEngine/TocEngine.cpp + +../build/debug/moc_tocbasemainwindow.o: ../build/debug/moc_tocbasemainwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocbasemainwindow.o ../build/debug/moc_tocbasemainwindow.cpp + +../build/debug/moc_tocmainwindow.o: ../build/debug/moc_tocmainwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocmainwindow.o ../build/debug/moc_tocmainwindow.cpp + +../build/debug/moc_toccontactlistwidget.o: ../build/debug/moc_toccontactlistwidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_toccontactlistwidget.o ../build/debug/moc_toccontactlistwidget.cpp + +../build/debug/moc_tocchatwidget.o: ../build/debug/moc_tocchatwidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocchatwidget.o ../build/debug/moc_tocchatwidget.cpp + +../build/debug/moc_tocuserinfowidget.o: ../build/debug/moc_tocuserinfowidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocuserinfowidget.o ../build/debug/moc_tocuserinfowidget.cpp + +../build/debug/moc_tocsettingswidget.o: ../build/debug/moc_tocsettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocsettingswidget.o ../build/debug/moc_tocsettingswidget.cpp + +../build/debug/moc_tocgeneralsettingswidget.o: ../build/debug/moc_tocgeneralsettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocgeneralsettingswidget.o ../build/debug/moc_tocgeneralsettingswidget.cpp + +../build/debug/moc_tocaccountsettingswidget.o: ../build/debug/moc_tocaccountsettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocaccountsettingswidget.o ../build/debug/moc_tocaccountsettingswidget.cpp + +../build/debug/moc_tocaccountintermediatewidget.o: ../build/debug/moc_tocaccountintermediatewidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocaccountintermediatewidget.o ../build/debug/moc_tocaccountintermediatewidget.cpp + +../build/debug/moc_tocthemessettingswidget.o: ../build/debug/moc_tocthemessettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocthemessettingswidget.o ../build/debug/moc_tocthemessettingswidget.cpp + +../build/debug/moc_tocmaintoolbar.o: ../build/debug/moc_tocmaintoolbar.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocmaintoolbar.o ../build/debug/moc_tocmaintoolbar.cpp + +../build/debug/moc_tocemoticonsdialog.o: ../build/debug/moc_tocemoticonsdialog.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocemoticonsdialog.o ../build/debug/moc_tocemoticonsdialog.cpp + +../build/debug/moc_tocbaseengine.o: ../build/debug/moc_tocbaseengine.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocbaseengine.o ../build/debug/moc_tocbaseengine.cpp + +../build/debug/moc_tocengine.o: ../build/debug/moc_tocengine.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/moc_tocengine.o ../build/debug/moc_tocengine.cpp + +../build/debug/qrc_application.o: ../build/debug/qrc_application.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/debug/qrc_application.o ../build/debug/qrc_application.cpp + +####### Install + +install_target: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/bin/ || $(MKDIR) $(INSTALL_ROOT)/usr/bin/ + -$(INSTALL_PROGRAM) "../bin/$(QMAKE_TARGET)" "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)" + +uninstall_target: FORCE + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)" + -$(DEL_DIR) $(INSTALL_ROOT)/usr/bin/ + + +install: install_target FORCE + +uninstall: uninstall_target FORCE + +FORCE: + diff --git a/src/Makefile.Release b/src/Makefile.Release new file mode 100644 index 0000000..92ebdb1 --- /dev/null +++ b/src/Makefile.Release @@ -0,0 +1,556 @@ +############################################################################# +# Makefile for building: ../bin/tietoopcom +# Generated by qmake (2.01a) (Qt 4.6.2) on: Thu Jul 8 08:48:04 2010 +# Project: src.pro +# Template: app +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) +CXXFLAGS = -pipe -O2 -DQT_NO_DEBUG_OUTPUT -Wall -W -D_REENTRANT $(DEFINES) +INCPATH = -I/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/linux-g++ -I. -I/targets/FREMANTLE_X86/usr/include/QtCore -I/targets/FREMANTLE_X86/usr/include/QtGui -I/targets/FREMANTLE_X86/usr/include -I/targets/FREMANTLE_X86/usr/include/QtDBus -I. -ITocUi -ITocEngine -I../include -I../include/TocUi -I../include/TocEngine -I../build/release -I../build/release +LINK = g++ +LFLAGS = -Wl,-O1 -Wl,-rpath,/usr/lib +LIBS = $(SUBLIBS) -L/usr/lib -lQtTapioca -lQtDBus -L/usr/lib -lQtXml -lQtGui -L/usr/X11R6/lib -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ../build/release/ + +####### Files + +SOURCES = main.cpp \ + TocSettings.cpp \ + TocUi/TocBaseMainWindow.cpp \ + TocUi/TocMainWindow.cpp \ + TocUi/TocContactListWidget.cpp \ + TocUi/TocChatWidget.cpp \ + TocUi/TocUserInfoWidget.cpp \ + TocUi/TocSettingsWidget.cpp \ + TocUi/TocGeneralSettingsWidget.cpp \ + TocUi/TocAccountSettingsWidget.cpp \ + TocUi/TocAccountIntermediateWidget.cpp \ + TocUi/TocThemesSettingsWidget.cpp \ + TocUi/TocMainToolbar.cpp \ + TocUi/IconProvider.cpp \ + TocUi/TocEmoticonsDialog.cpp \ + TocEngine/TocBaseEngine.cpp \ + TocEngine/TocEngine.cpp ../build/release/moc_tocbasemainwindow.cpp \ + ../build/release/moc_tocmainwindow.cpp \ + ../build/release/moc_toccontactlistwidget.cpp \ + ../build/release/moc_tocchatwidget.cpp \ + ../build/release/moc_tocuserinfowidget.cpp \ + ../build/release/moc_tocsettingswidget.cpp \ + ../build/release/moc_tocgeneralsettingswidget.cpp \ + ../build/release/moc_tocaccountsettingswidget.cpp \ + ../build/release/moc_tocaccountintermediatewidget.cpp \ + ../build/release/moc_tocthemessettingswidget.cpp \ + ../build/release/moc_tocmaintoolbar.cpp \ + ../build/release/moc_tocemoticonsdialog.cpp \ + ../build/release/moc_tocbaseengine.cpp \ + ../build/release/moc_tocengine.cpp \ + ../build/release/qrc_application.cpp +OBJECTS = ../build/release/main.o \ + ../build/release/TocSettings.o \ + ../build/release/TocBaseMainWindow.o \ + ../build/release/TocMainWindow.o \ + ../build/release/TocContactListWidget.o \ + ../build/release/TocChatWidget.o \ + ../build/release/TocUserInfoWidget.o \ + ../build/release/TocSettingsWidget.o \ + ../build/release/TocGeneralSettingsWidget.o \ + ../build/release/TocAccountSettingsWidget.o \ + ../build/release/TocAccountIntermediateWidget.o \ + ../build/release/TocThemesSettingsWidget.o \ + ../build/release/TocMainToolbar.o \ + ../build/release/IconProvider.o \ + ../build/release/TocEmoticonsDialog.o \ + ../build/release/TocBaseEngine.o \ + ../build/release/TocEngine.o \ + ../build/release/moc_tocbasemainwindow.o \ + ../build/release/moc_tocmainwindow.o \ + ../build/release/moc_toccontactlistwidget.o \ + ../build/release/moc_tocchatwidget.o \ + ../build/release/moc_tocuserinfowidget.o \ + ../build/release/moc_tocsettingswidget.o \ + ../build/release/moc_tocgeneralsettingswidget.o \ + ../build/release/moc_tocaccountsettingswidget.o \ + ../build/release/moc_tocaccountintermediatewidget.o \ + ../build/release/moc_tocthemessettingswidget.o \ + ../build/release/moc_tocmaintoolbar.o \ + ../build/release/moc_tocemoticonsdialog.o \ + ../build/release/moc_tocbaseengine.o \ + ../build/release/moc_tocengine.o \ + ../build/release/qrc_application.o +DIST = /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf \ + TocUi/TocUi.pri \ + TocEngine/TocEngine.pri \ + ../include/TocUi/TocUi.pri \ + ../include/TocEngine/TocEngine.pri \ + ../include/include.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/debug_and_release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/build_pass.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qdbus.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusinterfaces.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/dbusadaptors.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf \ + src.pro +QMAKE_TARGET = tietoopcom +DESTDIR = ../bin/ +TARGET = ../bin/tietoopcom + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile.Release $(TARGET) + +$(TARGET): ../build/release/ui_TocChatWidget.h ../build/release/ui_TocUserInfoWidget.h ../build/release/ui_TocGeneralSettingsWidget.h ../build/release/ui_TocAccountSettingsWidget.h ../build/release/ui_TocThemesSettingsWidget.h ../build/release/ui_TocEmoticonsDialog.h $(OBJECTS) + @$(CHK_DIR_EXISTS) ../bin/ || $(MKDIR) ../bin/ + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +qmake: FORCE + @$(QMAKE) -unix -o Makefile.Release src.pro + +dist: + @$(CHK_DIR_EXISTS) ../build/release/tietoopcom1.0.0 || $(MKDIR) ../build/release/tietoopcom1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) ../build/release/tietoopcom1.0.0/ && $(COPY_FILE) --parents ../include/version.h ../include/defs.h ../include/macros.h ../include/TocSettings ../include/tocsettings.h ../include/TocUi/TocBaseMainWindow ../include/TocUi/tocbasemainwindow.h ../include/TocUi/TocMainWindow ../include/TocUi/tocmainwindow.h ../include/TocUi/TocContactListWidget ../include/TocUi/toccontactlistwidget.h ../include/TocUi/TocChatWidget ../include/TocUi/tocchatwidget.h ../include/TocUi/TocUserInfoWidget ../include/TocUi/tocuserinfowidget.h ../include/TocUi/TocSettingsWidget ../include/TocUi/tocsettingswidget.h ../include/TocUi/TocGeneralSettingsWidget ../include/TocUi/tocgeneralsettingswidget.h ../include/TocUi/TocAccountSettingsWidget ../include/TocUi/tocaccountsettingswidget.h ../include/TocUi/TocAccountIntermediateWidget ../include/TocUi/tocaccountintermediatewidget.h ../include/TocUi/TocThemesSettingsWidget ../include/TocUi/tocthemessettingswidget.h ../include/TocUi/TocMainToolbar ../include/TocUi/tocmaintoolbar.h ../include/TocUi/IconProvider ../include/TocUi/iconprovider.h ../include/TocUi/TocEmoticonsDialog ../include/TocUi/tocemoticonsdialog.h ../include/TocEngine/TocBaseEngine ../include/TocEngine/tocbaseengine.h TocEngine ../include/TocEngine/tocengine.h ../build/release/tietoopcom1.0.0/ && $(COPY_FILE) --parents application.qrc ../build/release/tietoopcom1.0.0/ && $(COPY_FILE) --parents main.cpp TocSettings.cpp TocUi/TocBaseMainWindow.cpp TocUi/TocMainWindow.cpp TocUi/TocContactListWidget.cpp TocUi/TocChatWidget.cpp TocUi/TocUserInfoWidget.cpp TocUi/TocSettingsWidget.cpp TocUi/TocGeneralSettingsWidget.cpp TocUi/TocAccountSettingsWidget.cpp TocUi/TocAccountIntermediateWidget.cpp TocUi/TocThemesSettingsWidget.cpp TocUi/TocMainToolbar.cpp TocUi/IconProvider.cpp TocUi/TocEmoticonsDialog.cpp TocEngine/TocBaseEngine.cpp TocEngine/TocEngine.cpp ../build/release/tietoopcom1.0.0/ && $(COPY_FILE) --parents TocUi/TocChatWidget.ui TocUi/TocUserInfoWidget.ui TocUi/TocGeneralSettingsWidget.ui TocUi/TocAccountSettingsWidget.ui TocUi/TocThemesSettingsWidget.ui TocUi/TocEmoticonsDialog.ui ../build/release/tietoopcom1.0.0/ && (cd `dirname ../build/release/tietoopcom1.0.0` && $(TAR) tietoopcom1.0.0.tar tietoopcom1.0.0 && $(COMPRESS) tietoopcom1.0.0.tar) && $(MOVE) `dirname ../build/release/tietoopcom1.0.0`/tietoopcom1.0.0.tar.gz . && $(DEL_FILE) -r ../build/release/tietoopcom1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile.Release + + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: ../build/release/moc_tocbasemainwindow.cpp ../build/release/moc_tocmainwindow.cpp ../build/release/moc_toccontactlistwidget.cpp ../build/release/moc_tocchatwidget.cpp ../build/release/moc_tocuserinfowidget.cpp ../build/release/moc_tocsettingswidget.cpp ../build/release/moc_tocgeneralsettingswidget.cpp ../build/release/moc_tocaccountsettingswidget.cpp ../build/release/moc_tocaccountintermediatewidget.cpp ../build/release/moc_tocthemessettingswidget.cpp ../build/release/moc_tocmaintoolbar.cpp ../build/release/moc_tocemoticonsdialog.cpp ../build/release/moc_tocbaseengine.cpp ../build/release/moc_tocengine.cpp +compiler_moc_header_clean: + -$(DEL_FILE) ../build/release/moc_tocbasemainwindow.cpp ../build/release/moc_tocmainwindow.cpp ../build/release/moc_toccontactlistwidget.cpp ../build/release/moc_tocchatwidget.cpp ../build/release/moc_tocuserinfowidget.cpp ../build/release/moc_tocsettingswidget.cpp ../build/release/moc_tocgeneralsettingswidget.cpp ../build/release/moc_tocaccountsettingswidget.cpp ../build/release/moc_tocaccountintermediatewidget.cpp ../build/release/moc_tocthemessettingswidget.cpp ../build/release/moc_tocmaintoolbar.cpp ../build/release/moc_tocemoticonsdialog.cpp ../build/release/moc_tocbaseengine.cpp ../build/release/moc_tocengine.cpp +../build/release/moc_tocbasemainwindow.cpp: ../include/defs.h \ + ../include/TocUi/tocbasemainwindow.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocbasemainwindow.h -o ../build/release/moc_tocbasemainwindow.cpp + +../build/release/moc_tocmainwindow.cpp: ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + ../include/TocUi/tocmainwindow.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocmainwindow.h -o ../build/release/moc_tocmainwindow.cpp + +../build/release/moc_toccontactlistwidget.cpp: ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/toccontactlistwidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/toccontactlistwidget.h -o ../build/release/moc_toccontactlistwidget.cpp + +../build/release/moc_tocchatwidget.cpp: ../include/defs.h \ + ../include/TocUi/tocchatwidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocchatwidget.h -o ../build/release/moc_tocchatwidget.cpp + +../build/release/moc_tocuserinfowidget.cpp: ../include/defs.h \ + ../include/TocUi/tocuserinfowidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocuserinfowidget.h -o ../build/release/moc_tocuserinfowidget.cpp + +../build/release/moc_tocsettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocsettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocsettingswidget.h -o ../build/release/moc_tocsettingswidget.cpp + +../build/release/moc_tocgeneralsettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocgeneralsettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocgeneralsettingswidget.h -o ../build/release/moc_tocgeneralsettingswidget.cpp + +../build/release/moc_tocaccountsettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocaccountsettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocaccountsettingswidget.h -o ../build/release/moc_tocaccountsettingswidget.cpp + +../build/release/moc_tocaccountintermediatewidget.cpp: ../include/TocUi/tocaccountintermediatewidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocaccountintermediatewidget.h -o ../build/release/moc_tocaccountintermediatewidget.cpp + +../build/release/moc_tocthemessettingswidget.cpp: ../include/defs.h \ + ../include/TocUi/tocthemessettingswidget.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocthemessettingswidget.h -o ../build/release/moc_tocthemessettingswidget.cpp + +../build/release/moc_tocmaintoolbar.cpp: ../include/defs.h \ + ../include/uidefs.h \ + ../include/TocUi/tocmaintoolbar.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocmaintoolbar.h -o ../build/release/moc_tocmaintoolbar.cpp + +../build/release/moc_tocemoticonsdialog.cpp: ../include/TocUi/tocemoticonsdialog.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocUi/tocemoticonsdialog.h -o ../build/release/moc_tocemoticonsdialog.cpp + +../build/release/moc_tocbaseengine.cpp: ../include/defs.h \ + ../include/TocEngine/tocbaseengine.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocEngine/tocbaseengine.h -o ../build/release/moc_tocbaseengine.cpp + +../build/release/moc_tocengine.cpp: ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/defs.h \ + ../include/TocEngine/tocengine.h + /usr/bin/moc $(DEFINES) $(INCPATH) ../include/TocEngine/tocengine.h -o ../build/release/moc_tocengine.cpp + +compiler_dbus_interface_source_make_all: +compiler_dbus_interface_source_clean: +compiler_dbus_adaptor_source_make_all: +compiler_dbus_adaptor_source_clean: +compiler_rcc_make_all: ../build/release/qrc_application.cpp +compiler_rcc_clean: + -$(DEL_FILE) ../build/release/qrc_application.cpp +../build/release/qrc_application.cpp: application.qrc \ + ../resources/offline.png \ + ../resources/close.png \ + ../resources/addcontact.png \ + ../resources/contactfemale.png \ + ../resources/away.png \ + ../resources/themes.png \ + ../resources/yellowframe.png \ + ../resources/online.png \ + ../resources/restore.png \ + ../resources/redframe.png \ + ../resources/general.png \ + ../resources/settings.png \ + ../resources/hidden.png \ + ../resources/busy.png \ + ../resources/greenframe.png \ + ../resources/contactmale.png \ + ../resources/network.png \ + ../resources/tieto-logo.png \ + ../resources/activesessions.png \ + ../resources/contacts.png \ + ../resources/unknown.png \ + ../resources/account.png + /usr/bin/rcc -name application application.qrc -o ../build/release/qrc_application.cpp + +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_dbus_interface_header_make_all: +compiler_dbus_interface_header_clean: +compiler_dbus_interface_moc_make_all: +compiler_dbus_interface_moc_clean: +compiler_dbus_adaptor_header_make_all: +compiler_dbus_adaptor_header_clean: +compiler_dbus_adaptor_moc_make_all: +compiler_dbus_adaptor_moc_clean: +compiler_uic_make_all: ../build/release/ui_TocChatWidget.h ../build/release/ui_TocUserInfoWidget.h ../build/release/ui_TocGeneralSettingsWidget.h ../build/release/ui_TocAccountSettingsWidget.h ../build/release/ui_TocThemesSettingsWidget.h ../build/release/ui_TocEmoticonsDialog.h +compiler_uic_clean: + -$(DEL_FILE) ../build/release/ui_TocChatWidget.h ../build/release/ui_TocUserInfoWidget.h ../build/release/ui_TocGeneralSettingsWidget.h ../build/release/ui_TocAccountSettingsWidget.h ../build/release/ui_TocThemesSettingsWidget.h ../build/release/ui_TocEmoticonsDialog.h +../build/release/ui_TocChatWidget.h: TocUi/TocChatWidget.ui + /usr/bin/uic TocUi/TocChatWidget.ui -o ../build/release/ui_TocChatWidget.h + +../build/release/ui_TocUserInfoWidget.h: TocUi/TocUserInfoWidget.ui + /usr/bin/uic TocUi/TocUserInfoWidget.ui -o ../build/release/ui_TocUserInfoWidget.h + +../build/release/ui_TocGeneralSettingsWidget.h: TocUi/TocGeneralSettingsWidget.ui + /usr/bin/uic TocUi/TocGeneralSettingsWidget.ui -o ../build/release/ui_TocGeneralSettingsWidget.h + +../build/release/ui_TocAccountSettingsWidget.h: TocUi/TocAccountSettingsWidget.ui + /usr/bin/uic TocUi/TocAccountSettingsWidget.ui -o ../build/release/ui_TocAccountSettingsWidget.h + +../build/release/ui_TocThemesSettingsWidget.h: TocUi/TocThemesSettingsWidget.ui + /usr/bin/uic TocUi/TocThemesSettingsWidget.ui -o ../build/release/ui_TocThemesSettingsWidget.h + +../build/release/ui_TocEmoticonsDialog.h: TocUi/TocEmoticonsDialog.ui + /usr/bin/uic TocUi/TocEmoticonsDialog.ui -o ../build/release/ui_TocEmoticonsDialog.h + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean compiler_rcc_clean compiler_uic_clean + +####### Compile + +../build/release/main.o: main.cpp ../include/TocUi/TocMainWindow \ + ../include/TocUi/tocmainwindow.h \ + ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + TocEngine + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/main.o main.cpp + +../build/release/TocSettings.o: TocSettings.cpp ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/defs.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocSettings.o TocSettings.cpp + +../build/release/TocBaseMainWindow.o: TocUi/TocBaseMainWindow.cpp ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocBaseMainWindow.o TocUi/TocBaseMainWindow.cpp + +../build/release/TocMainWindow.o: TocUi/TocMainWindow.cpp ../include/TocUi/TocMainWindow \ + ../include/TocUi/tocmainwindow.h \ + ../include/TocUi/TocBaseMainWindow \ + ../include/TocUi/tocbasemainwindow.h \ + ../include/defs.h \ + ../include/TocUi/TocMainToolbar \ + ../include/TocUi/tocmaintoolbar.h \ + ../include/uidefs.h \ + ../include/TocUi/TocContactListWidget \ + ../include/TocUi/toccontactlistwidget.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/TocChatWidget \ + ../include/TocUi/tocchatwidget.h \ + ../include/TocUi/TocUserInfoWidget \ + ../include/TocUi/tocuserinfowidget.h \ + ../include/TocUi/TocSettingsWidget \ + ../include/TocUi/tocsettingswidget.h \ + ../include/TocUi/TocGeneralSettingsWidget \ + ../include/TocUi/tocgeneralsettingswidget.h \ + ../include/TocUi/TocAccountSettingsWidget \ + ../include/TocUi/tocaccountsettingswidget.h \ + ../include/TocUi/TocAccountIntermediateWidget \ + ../include/TocUi/tocaccountintermediatewidget.h \ + ../include/TocUi/TocThemesSettingsWidget \ + ../include/TocUi/tocthemessettingswidget.h \ + ../include/macros.h \ + ../include/version.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocMainWindow.o TocUi/TocMainWindow.cpp + +../build/release/TocContactListWidget.o: TocUi/TocContactListWidget.cpp ../include/TocUi/TocContactListWidget \ + ../include/TocUi/toccontactlistwidget.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/IconProvider \ + ../include/TocUi/iconprovider.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocContactListWidget.o TocUi/TocContactListWidget.cpp + +../build/release/TocChatWidget.o: TocUi/TocChatWidget.cpp ../build/release/ui_TocChatWidget.h \ + ../include/TocUi/TocEmoticonsDialog \ + ../include/TocUi/tocemoticonsdialog.h \ + ../include/TocUi/TocChatWidget \ + ../include/TocUi/tocchatwidget.h \ + ../include/defs.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocChatWidget.o TocUi/TocChatWidget.cpp + +../build/release/TocUserInfoWidget.o: TocUi/TocUserInfoWidget.cpp ../include/TocUi/TocContactListWidget \ + ../include/TocUi/toccontactlistwidget.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/TocUi/TocUserInfoWidget \ + ../include/TocUi/tocuserinfowidget.h \ + ../include/TocUi/IconProvider \ + ../include/TocUi/iconprovider.h \ + ../build/release/ui_TocUserInfoWidget.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocUserInfoWidget.o TocUi/TocUserInfoWidget.cpp + +../build/release/TocSettingsWidget.o: TocUi/TocSettingsWidget.cpp ../include/TocUi/TocSettingsWidget \ + ../include/TocUi/tocsettingswidget.h \ + ../include/defs.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocSettingsWidget.o TocUi/TocSettingsWidget.cpp + +../build/release/TocGeneralSettingsWidget.o: TocUi/TocGeneralSettingsWidget.cpp ../include/TocUi/TocGeneralSettingsWidget \ + ../include/TocUi/tocgeneralsettingswidget.h \ + ../include/defs.h \ + ../build/release/ui_TocGeneralSettingsWidget.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocGeneralSettingsWidget.o TocUi/TocGeneralSettingsWidget.cpp + +../build/release/TocAccountSettingsWidget.o: TocUi/TocAccountSettingsWidget.cpp ../include/TocUi/TocAccountSettingsWidget \ + ../include/TocUi/tocaccountsettingswidget.h \ + ../include/defs.h \ + ../build/release/ui_TocAccountSettingsWidget.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocAccountSettingsWidget.o TocUi/TocAccountSettingsWidget.cpp + +../build/release/TocAccountIntermediateWidget.o: TocUi/TocAccountIntermediateWidget.cpp ../include/TocUi/TocAccountIntermediateWidget \ + ../include/TocUi/tocaccountintermediatewidget.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocAccountIntermediateWidget.o TocUi/TocAccountIntermediateWidget.cpp + +../build/release/TocThemesSettingsWidget.o: TocUi/TocThemesSettingsWidget.cpp ../include/TocUi/TocThemesSettingsWidget \ + ../include/TocUi/tocthemessettingswidget.h \ + ../include/defs.h \ + ../build/release/ui_TocThemesSettingsWidget.h \ + ../include/macros.h \ + ../include/TocSettings \ + ../include/tocsettings.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocThemesSettingsWidget.o TocUi/TocThemesSettingsWidget.cpp + +../build/release/TocMainToolbar.o: TocUi/TocMainToolbar.cpp ../include/TocUi/TocMainToolbar \ + ../include/TocUi/tocmaintoolbar.h \ + ../include/defs.h \ + ../include/uidefs.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocMainToolbar.o TocUi/TocMainToolbar.cpp + +../build/release/IconProvider.o: TocUi/IconProvider.cpp ../include/TocUi/IconProvider \ + ../include/TocUi/iconprovider.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/IconProvider.o TocUi/IconProvider.cpp + +../build/release/TocEmoticonsDialog.o: TocUi/TocEmoticonsDialog.cpp ../build/release/ui_TocEmoticonsDialog.h \ + ../include/TocUi/TocEmoticonsDialog \ + ../include/TocUi/tocemoticonsdialog.h \ + ../include/macros.h \ + ../include/uidefs.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocEmoticonsDialog.o TocUi/TocEmoticonsDialog.cpp + +../build/release/TocBaseEngine.o: TocEngine/TocBaseEngine.cpp ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/defs.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocBaseEngine.o TocEngine/TocBaseEngine.cpp + +../build/release/TocEngine.o: TocEngine/TocEngine.cpp ../include/TocEngine/TocEngine \ + ../include/TocEngine/tocengine.h \ + ../include/TocEngine/TocBaseEngine \ + ../include/TocEngine/tocbaseengine.h \ + ../include/defs.h \ + ../include/TocSettings \ + ../include/tocsettings.h \ + ../include/macros.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/TocEngine.o TocEngine/TocEngine.cpp + +../build/release/moc_tocbasemainwindow.o: ../build/release/moc_tocbasemainwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocbasemainwindow.o ../build/release/moc_tocbasemainwindow.cpp + +../build/release/moc_tocmainwindow.o: ../build/release/moc_tocmainwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocmainwindow.o ../build/release/moc_tocmainwindow.cpp + +../build/release/moc_toccontactlistwidget.o: ../build/release/moc_toccontactlistwidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_toccontactlistwidget.o ../build/release/moc_toccontactlistwidget.cpp + +../build/release/moc_tocchatwidget.o: ../build/release/moc_tocchatwidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocchatwidget.o ../build/release/moc_tocchatwidget.cpp + +../build/release/moc_tocuserinfowidget.o: ../build/release/moc_tocuserinfowidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocuserinfowidget.o ../build/release/moc_tocuserinfowidget.cpp + +../build/release/moc_tocsettingswidget.o: ../build/release/moc_tocsettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocsettingswidget.o ../build/release/moc_tocsettingswidget.cpp + +../build/release/moc_tocgeneralsettingswidget.o: ../build/release/moc_tocgeneralsettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocgeneralsettingswidget.o ../build/release/moc_tocgeneralsettingswidget.cpp + +../build/release/moc_tocaccountsettingswidget.o: ../build/release/moc_tocaccountsettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocaccountsettingswidget.o ../build/release/moc_tocaccountsettingswidget.cpp + +../build/release/moc_tocaccountintermediatewidget.o: ../build/release/moc_tocaccountintermediatewidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocaccountintermediatewidget.o ../build/release/moc_tocaccountintermediatewidget.cpp + +../build/release/moc_tocthemessettingswidget.o: ../build/release/moc_tocthemessettingswidget.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocthemessettingswidget.o ../build/release/moc_tocthemessettingswidget.cpp + +../build/release/moc_tocmaintoolbar.o: ../build/release/moc_tocmaintoolbar.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocmaintoolbar.o ../build/release/moc_tocmaintoolbar.cpp + +../build/release/moc_tocemoticonsdialog.o: ../build/release/moc_tocemoticonsdialog.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocemoticonsdialog.o ../build/release/moc_tocemoticonsdialog.cpp + +../build/release/moc_tocbaseengine.o: ../build/release/moc_tocbaseengine.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocbaseengine.o ../build/release/moc_tocbaseengine.cpp + +../build/release/moc_tocengine.o: ../build/release/moc_tocengine.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/moc_tocengine.o ../build/release/moc_tocengine.cpp + +../build/release/qrc_application.o: ../build/release/qrc_application.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../build/release/qrc_application.o ../build/release/qrc_application.cpp + +####### Install + +install_target: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/bin/ || $(MKDIR) $(INSTALL_ROOT)/usr/bin/ + -$(INSTALL_PROGRAM) "../bin/$(QMAKE_TARGET)" "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)" + -$(STRIP) "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)" + +uninstall_target: FORCE + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)" + -$(DEL_DIR) $(INSTALL_ROOT)/usr/bin/ + + +install: install_target FORCE + +uninstall: uninstall_target FORCE + +FORCE: + diff --git a/src/TocEngine/TocBaseEngine.cpp b/src/TocEngine/TocBaseEngine.cpp new file mode 100644 index 0000000..af91351 --- /dev/null +++ b/src/TocEngine/TocBaseEngine.cpp @@ -0,0 +1,39 @@ +/** \file TocBaseEngine.cpp + * \brief Implementation of TocBaseEngine class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocBaseEngine" + +TocBaseEngine::TocBaseEngine( QObject * parent ) + : QObject( parent ) { +} + +TocBaseEngine::~TocBaseEngine() { +} diff --git a/src/TocEngine/TocEngine.cpp b/src/TocEngine/TocEngine.cpp new file mode 100644 index 0000000..4dfbf45 --- /dev/null +++ b/src/TocEngine/TocEngine.cpp @@ -0,0 +1,535 @@ +/** \file TocEngine.cpp + * \brief Implementation of TocEngine class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocEngine" +#include "TocSettings" +#include "macros.h" + +#include +#include + +#include +#include +#include +#include +#include + +using namespace QtTapioca; + +Q_DECLARE_METATYPE(QtTapioca::Connection*); +Q_DECLARE_METATYPE(QtTapioca::ContactBase*); +Q_DECLARE_METATYPE(QtTapioca::Connection::Status); +Q_DECLARE_METATYPE(QtTapioca::Connection::Reason); +Q_DECLARE_METATYPE(QtTapioca::ContactBase::Presence); + +TocEngine::TocEngine( QObject * parent ): + TocBaseEngine( parent ), + _bNewUserContact(true), + _bContactListSynchronized(false), + _pConnection(0) +{ + + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + + TocSettings* pSettings = TocSettings::getInstance(); + _pTocContactList = pSettings->contactList(); + _pAddedContacts = pSettings->contactsToAdd(); + _pRemovedContacts = pSettings->contactsToRemove(); + +} + +TocEngine::~TocEngine() { + if(_pConnection) + _pConnection->disconnect(); + + delete _pConnection; + + TocSettings *pSettings = TocSettings::getInstance(); + delete pSettings; +} + +void TocEngine::initializeFromSettings() { + + _bNewUserContact = true; + + TocSettings* pSettings = TocSettings::getInstance(); + + // Disconnect first + if(_pConnection) { + _pConnection->disconnect(); + delete _pConnection; + _pConnection = 0; + } + // Reset the UserContact flag + _bNewUserContact = true; + + ConnectionManagerFactory *pFactory = ConnectionManagerFactory::self(); + + // Find new available protocols + QList connectionManagers = pFactory->getAllConnectionManagers(); + ConnectionManager *pConnectionManager; + foreach ( pConnectionManager, connectionManagers ) { + QString protocol; + QStringList protocols = pConnectionManager->supportedProtocols(); + foreach (protocol, protocols) { + if( !pSettings->isProtocolInstalled( protocol ) ) + pSettings->installProtocol( pConnectionManager->name() + "/" + protocol, protocol ); + } + } + + // Get Connection Manager + pConnectionManager = pFactory->getConnectionManager( pSettings->protocol() ); + if (!pConnectionManager) { + _pConnection = 0; + return; + } + + // Search for "lost" connection + QList connectionsList = pConnectionManager->connections(); + if( !connectionsList.empty() ) { + Connection *pConnection; + QString account = static_cast(pSettings->protocol() ) + "." + + static_cast(pSettings->accountUid()).replace("@", "_40").replace(".", "_2e"); + foreach(pConnection, connectionsList) { + if( pConnection->serviceName().contains(account) ) { + + // This doesn't always work... why? + pConnection->disconnect(); + + _pConnection = pConnection; + CONNECT(_pConnection, SIGNAL(statusChanged(QtTapioca::Connection*,QtTapioca::Connection::Status,QtTapioca::Connection::Reason)), this, SLOT(onStatusChange(QtTapioca::Connection*,QtTapioca::Connection::Status,QtTapioca::Connection::Reason))); + CONNECT(_pConnection, SIGNAL(channelCreated(QtTapioca::Connection*,QtTapioca::Channel*,bool)), + this, SLOT(onChannelCreated(QtTapioca::Connection*,QtTapioca::Channel*,bool))); + + return; + } + } + } + + // Setup connection parameters + QList parameters; + parameters.append(ConnectionManager::Parameter("account", pSettings->accountUid())); + parameters.append(ConnectionManager::Parameter("password", pSettings->accountPasswd())); + if( !pSettings->server().isEmpty() ) + parameters.append(ConnectionManager::Parameter("server", pSettings->server())); + if( pSettings->port() > 0 ) + parameters.append(ConnectionManager::Parameter("port", QVariant( (uint)pSettings->port() ))); + if( pSettings->isOldSslEnabled() ) + parameters.append(ConnectionManager::Parameter("old-ssl", QVariant(true))); + if( pSettings->isIgnoreSslErrorsEnabled() ) + parameters.append(ConnectionManager::Parameter("ignore-ssl-errors", QVariant(true))); + if( pSettings->isRegister() ) + parameters.append(ConnectionManager::Parameter("register", QVariant(true))); + + _pConnection = pConnectionManager->requestConnection( pSettings->protocol(), parameters ); + + if( !_pConnection ) { + return; + } + + CONNECT(_pConnection, SIGNAL(statusChanged(QtTapioca::Connection*,QtTapioca::Connection::Status,QtTapioca::Connection::Reason)), + this, SLOT(onStatusChange(QtTapioca::Connection*,QtTapioca::Connection::Status,QtTapioca::Connection::Reason))); + CONNECT(_pConnection, SIGNAL(channelCreated(QtTapioca::Connection*,QtTapioca::Channel*,bool)), + this, SLOT(onChannelCreated(QtTapioca::Connection*,QtTapioca::Channel*,bool))); +} + +void TocEngine::onPresenceChange(Presence presence, QString description) { + + if( !_pConnection ) + initializeFromSettings(); + + if( !_pConnection ) + return; + + if( _pConnection->status() == QtTapioca::Connection::Connected && _pConnection->userContact()) + _pConnection->userContact()->setPresenceWithMessage(static_cast (presence), static_cast (description)); + + else if( _pConnection->status() == QtTapioca::Connection::Disconnected ) + if(presence == Offline) + _bContactListSynchronized = false; // Just to be sure + else + _pConnection->connect(static_cast (presence), static_cast (description)); +} + +void TocEngine::onStatusChange(QtTapioca::Connection* pConnection, QtTapioca::Connection::Status status, QtTapioca::Connection::Reason reason) { + + Q_UNUSED(pConnection); + + emit statusChanged(static_cast (status), static_cast (reason)); + + if( _bNewUserContact && _pConnection->userContact() && _pConnection->contactList() && _pConnection->status() == QtTapioca::Connection::Connected) { + + CONNECT(_pConnection->userContact(), SIGNAL(presenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Presence,QString)), this, SLOT(onSelfPresenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Presence,QString))); + + // disconnect for safety of double connections because we don't really know if it's the same object or not.. + disconnect(_pConnection->contactList(), SIGNAL(authorizationRequested(QtTapioca::Contact*)), this, SLOT(onAuthorizationRequested(QtTapioca::Contact*))); + + CONNECT(_pConnection->contactList(), SIGNAL(authorizationRequested(QtTapioca::Contact*)), this, SLOT(onAuthorizationRequested(QtTapioca::Contact*))); + _bNewUserContact = false; + + } else if(_pConnection->status() == QtTapioca::Connection::Disconnected) { + + _bContactListSynchronized = false; +// delete _pConnection; // TODO: Why does it crash?? + _pConnection = 0; + } +} + +void TocEngine::onPresenceUpdated(QtTapioca::ContactBase* pContact, QtTapioca::ContactBase::Presence presence, const QString &presenceMessage) { + + emit contactPresenceUpdated(pContact->uri(), static_cast (presence), presenceMessage); +} + +void TocEngine::onSelfPresenceUpdated(QtTapioca::ContactBase* pContact, QtTapioca::ContactBase::Presence presence, const QString &presenceMessage) { + + Q_UNUSED(pContact); + + emit presenceUpdated(static_cast (presence), presenceMessage); + + if(!_bContactListSynchronized) { + synchronizeContactLists(); + _bContactListSynchronized = true; + + } else if(presence == QtTapioca::ContactBase::Offline) { + _bContactListSynchronized = false; + _pConnection->disconnect(); + } +} + +void TocEngine::onAddContactRequest(TocContact* pContact){ + + _pTocContactList->append(pContact); + _pAddedContacts->append( pContact->uid ); + _pRemovedContacts->removeOne( pContact->uid ); + + addPendingContacts(); +} + +void TocEngine::addPendingContacts() { + + if( _pConnection && _pConnection->status() == Connection::Connected ) { + + while( !_pAddedContacts->isEmpty() ) { + QString uid = _pAddedContacts->takeFirst(); + Contact* pContact = _pConnection->contactList()->addContact( uid ); + if( pContact ) { // If it suceeded + pContact->authorize(true); //TODO: This should be removed when we have the facility to grant authorization at a later time + pContact->subscribe(true); // Ask for subscription + + CONNECT(pContact, SIGNAL(presenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Presence,const QString&)), + this, SLOT(onPresenceUpdated(QtTapioca::ContactBase*, QtTapioca::ContactBase::Presence, const QString&))); + } else {} + // TODO: Notify UI about the error (usually UID not valid for the protocol) + } + } +} + + +void TocEngine::onEditContactRequest(TocContact* pContact, QString oldUid){ + + if( pContact->uid != oldUid ) { + + if(!_pAddedContacts->removeOne( oldUid )) + _pRemovedContacts->append( oldUid ); + + _pAddedContacts->append( pContact->uid ); + _pRemovedContacts->removeOne( pContact->uid ); + removePendingContacts(); + addPendingContacts(); + } +} + +void TocEngine::onRemoveContactRequest(QString uid) { + + if(!_pTocContactList) return; + + for(int i = 0; i < _pTocContactList->count(); ++i) + if( _pTocContactList->at(i)->uid == uid ) { + _pTocContactList->removeAt(i); + //TODO: remove cached picture if needed + } + + if(!_pAddedContacts->removeOne( uid )) + _pRemovedContacts->append( uid ); + + removePendingContacts(); +} + +void TocEngine::removePendingContacts() { + + if( _pConnection && _pConnection->status() == Connection::Connected ) { + + while( !_pRemovedContacts->isEmpty() ) { + QString uid = _pRemovedContacts->takeFirst(); + Contact* pContact = _pConnection->contactList()->contact( uid ); + if( pContact ) + _pConnection->contactList()->removeContact( pContact ); + } + } +} + +int TocEngine::indexForUid( QString uid ) { + + for(int i = 0; i < _pTocContactList->count(); ++i) + if( _pTocContactList->at(i)->uid == uid ) { + return i; + } + + return -1; +} + +void TocEngine::removeContact( QString uid ) { + + int i = indexForUid(uid); + if( i != -1 ) { + _pTocContactList->removeAt(i); + //TODO: remove cached picture if needed + } +} + +void TocEngine::addContact( const Contact* pContact ) { + + TocContact* pTocContact = new TocContact; + pTocContact->uid = pContact->uri(); + pTocContact->name = pContact->alias(); // That's TOO BAD! I cann't set it to MY OWN selected name.. because of lack of support by telepathy + pTocContact->customIconId = 0; + pTocContact->customIconPath = ""; + pTocContact->gender = NotSpecified; + pTocContact->presence = Offline; + + _pTocContactList->append(pTocContact); +} + +void TocEngine::syncContactsFromServer() { + + QStringList localContactsList; + + QList serverContactsList = _pConnection->contactList()->knownContacts(); + + for(int i = 0; i < _pTocContactList->count(); ++i) + localContactsList.append( _pTocContactList->at(i)->uid ); + + // Find differences + int idx = 0; + while( idx < serverContactsList.count() ) { + + int idy = localContactsList.indexOf( serverContactsList.at(idx)->uri() ); + + if( idy != -1 ) { + serverContactsList.removeAt(idx); + localContactsList.removeAt(idy); + --idx; + } + + ++idx; + } + + // Now we're left with two lists, + // one with contacts to be removed + // and one to be added to our local list. + + // To add + Contact* pContact; + foreach(pContact, serverContactsList) { + + addContact(pContact); + + CONNECT(pContact, SIGNAL(presenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Presence,const QString&)), + this, SLOT(onPresenceUpdated(QtTapioca::ContactBase*, QtTapioca::ContactBase::Presence, const QString&))); + + } + + // To remove //TODO: Maybe add an option to turn off removal of contacts that are removed on server by other clients + QString uid; + + foreach(uid, localContactsList) { + + removeContact(uid); + } +} + +void TocEngine::synchronizeContactLists() { + + Contact* pContact; + foreach(pContact, _pConnection->contactList()->knownContacts()) + CONNECT(pContact, SIGNAL(presenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Presence,const QString&)), + this, SLOT(onPresenceUpdated(QtTapioca::ContactBase*, QtTapioca::ContactBase::Presence, const QString&))); + + addPendingContacts(); + removePendingContacts(); + syncContactsFromServer(); + + emit contactListReceived(*_pTocContactList); + _bContactListSynchronized = true; + +} + +void TocEngine::onNewMessageReady(QString uid, Message message) { + + if( !_pConnection || _pConnection->status() != QtTapioca::Connection::Connected) { + message.error = UserOffline; + emit incomingMessage(uid, message); + return; // Message that You cann't send messages when offline + } + + Channel* pDestinationChannel = NULL; + bool bNewChannel = false; + + QList pChannels = _pConnection->openChannels(); + int i; + for(i = 0; i < pChannels.count(); ++i) + if(pChannels[i]->target()->uri() == uid) + break; + + if(i == pChannels.count()) { //not found, create new channel + Contact* pContact = _pConnection->contactList()->contact(uid); + if(!pContact) { + message.error = NotOnContactList; + emit incomingMessage(uid, message); + return; // Message that You cann't send messages to the contact not on users contact list + } + pDestinationChannel = _pConnection->createChannel(Channel::Text, pContact); + if(pDestinationChannel) + bNewChannel = true; + else { // Channel could not be created + message.error = CannotCreateChannel; + emit incomingMessage(uid, message); + return; // Message that Channel could not be created + } + } else { + pDestinationChannel = pChannels[i]; + } + + if(pDestinationChannel->type() == Channel::Text) { + + TextChannel* pTextChannel = dynamic_cast(pDestinationChannel); + + if(bNewChannel) { + + CONNECT(pTextChannel, SIGNAL(messageReceived(const QtTapioca::TextChannel*,const QtTapioca::TextChannel::Message&)), + this, SLOT(onMessageReceived(const QtTapioca::TextChannel*,const QtTapioca::TextChannel::Message&))); + CONNECT(pTextChannel, SIGNAL(messageDeliveryError(const QtTapioca::TextChannel::Message&, QtTapioca::TextChannel::Message::DeliveryError)), + this, SLOT(onMessageDeliveryError(const QtTapioca::TextChannel::Message&, QtTapioca::TextChannel::Message::DeliveryError))); + } + + QtTapioca::TextChannel::Message mess(message.contents); + pTextChannel->sendMessage(mess); + } +} + +void TocEngine::onMessageReceived(const QtTapioca::TextChannel* pTextChannel, const QtTapioca::TextChannel::Message& message) { + + struct Message tecMessage; + tecMessage.contents = message.contents(); + tecMessage.timestamp = message.timestamp(); + tecMessage.error = NoError; + + if(pTextChannel) { + emit incomingMessage(pTextChannel->target()->uri(), tecMessage); + const_cast(pTextChannel)->acknowledge(message); + } +} + +void TocEngine::onMessageDeliveryError(const QtTapioca::TextChannel::Message &message, QtTapioca::TextChannel::Message::DeliveryError error) { + + struct Message tecMessage; + tecMessage.contents = message.contents(); + tecMessage.timestamp = message.timestamp(); + tecMessage.error = static_cast(error); + + QObject* pSender = sender(); + if(pSender) { + TextChannel* pTextChannel = dynamic_cast(pSender); + emit incomingMessage(pTextChannel->target()->uri(), tecMessage); + } +} + +void TocEngine::onChannelCreated(QtTapioca::Connection* pConnection, QtTapioca::Channel* pChannel, bool bSuppressHandler) { + + Q_UNUSED(pConnection); + Q_UNUSED(bSuppressHandler); + + if(pChannel->type() == Channel::Text) { + TextChannel* pTextChannel = dynamic_cast(pChannel); + CONNECT(pTextChannel, SIGNAL(messageReceived (const QtTapioca::TextChannel*,const QtTapioca::TextChannel::Message&)), + this, SLOT(onMessageReceived(const QtTapioca::TextChannel*,const QtTapioca::TextChannel::Message&))); + CONNECT(pTextChannel, SIGNAL(messageDeliveryError(const QtTapioca::TextChannel::Message&, QtTapioca::TextChannel::Message::DeliveryError)), + this, SLOT(onMessageDeliveryError(const QtTapioca::TextChannel::Message&, QtTapioca::TextChannel::Message::DeliveryError))); + + QList messages = pTextChannel->pendingMessages(); + if(messages.count()) { + int i; + struct Message message; + message.error = NoError; + for(i = 0; i < messages.count(); ++i) { + message.contents = messages.at(i).contents(); + message.timestamp = messages.at(i).timestamp(); + emit incomingMessage(pChannel->target()->uri(), message); + } + } + } +} + +void TocEngine::onSessionClosed(QString uid) { + + if( !_pConnection ) + return; + + QList pChannels = _pConnection->openChannels(); + int i; + for(i = 0; i < pChannels.count(); ++i) + if(pChannels[i]->target()->uri() == uid) + break; + + if(i < pChannels.count()) { + pChannels.at(i)->close(); + } +} + +void TocEngine::onAuthorizationRequested(QtTapioca::Contact *pContact) { + + // TODO: should be dependent on user pSettings + pContact->authorize( true ); + pContact->subscribe( true ); + + for(int i = 0; i < _pTocContactList->count(); ++i) + if(_pTocContactList->at(i)->uid == pContact->uri()) + return; // Return if the contact is already on our contact list + + addContact(pContact); // Add Contact to notify user + CONNECT(pContact, SIGNAL(presenceUpdated(QtTapioca::ContactBase*,QtTapioca::ContactBase::Presence,const QString&)), + this, SLOT(onPresenceUpdated(QtTapioca::ContactBase*, QtTapioca::ContactBase::Presence, const QString&))); + + emit contactListReceived(*_pTocContactList); +} diff --git a/src/TocEngine/TocEngine.pri b/src/TocEngine/TocEngine.pri new file mode 100644 index 0000000..e050735 --- /dev/null +++ b/src/TocEngine/TocEngine.pri @@ -0,0 +1,9 @@ +DEPENDPATH += \ + $$PWD + +INCLUDEPATH += \ + $$PWD + +SOURCES += \ + TocBaseEngine.cpp \ + TocEngine.cpp diff --git a/src/TocSettings.cpp b/src/TocSettings.cpp new file mode 100644 index 0000000..12a2d36 --- /dev/null +++ b/src/TocSettings.cpp @@ -0,0 +1,380 @@ +/** \file TocSettings.cpp + * \brief Implementation of TocSettings class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocSettings" + +#include +#include + +// Initialize static objects +TocSettings* TocSettings::_pSelf = 0; + +TocSettings* TocSettings::getInstance() { + + if (!_pSelf) + _pSelf = new TocSettings(); + + return _pSelf; +} + +TocSettings::TocSettings() + : _register(false) { + + _pProtocolMap = new QMap(); + _pProtocolMap->insert("Jabber", "jabber"); + _pProtocolMap->insert("SIP", "sip"); + _pProtocolMap->insert("Google Talk", "jabber"); + + _pContactList = new TocContactList(); + + read(); +} + +TocSettings::~TocSettings() { + + save(); + + delete _pProtocolMap; + delete _pContactList; +} + +void TocSettings::read() { + + QSettings settings("Tieto", "tietoopcom"); + settings.beginGroup("Account"); + _accountName = settings.value("account/name").toString(); + _accountUid = settings.value("account/uid").toString(); + _accountPasswd = settings.value("account/pass").toString(); + _protocol = settings.value("server/protocol").toString(); + _protocols = _pProtocolMap->keys(); + _protocolCommonName = settings.value("server/protocol-name").toString(); + _server = settings.value("server/server").toString(); + _serverHint = ""; + _port = settings.value("server/port").toInt(); + _portHint = 0; + _bOldSsl = settings.value("server/old-ssl", false).toBool(); + _bIgnoreSslErrors = settings.value("server/ignore-ssl-errors", false).toBool(); + + settings.endGroup(); + + settings.beginGroup("Contact_List"); + _authorizationRule = static_cast(settings.value("list/authorization-rule", Ask).toInt()); + _sortOrder = static_cast(settings.value("list/sort-order", Alphabetical).toInt()); + + if(!_pContactList) + _pContactList = new TocContactList(); + else + _pContactList->clear(); + + settings.beginGroup("Contacts"); + + QStringList contactsList = settings.childKeys(); + + foreach(QString entry, contactsList) { + + QStringList contactFields = settings.value(entry).toString().split("|"); + + TocContact* pContact = new TocContact(); + pContact->uid = entry; + pContact->name = contactFields[0]; + pContact->customIconPath = contactFields[1]; + pContact->customIconId = 0; + pContact->gender = static_cast(contactFields[2].toInt()); + pContact->presence = Offline; + + _pContactList->append(pContact); + } + + + settings.endGroup(); + settings.endGroup(); + + settings.beginGroup("Pending_Contact_Lists"); + + settings.beginGroup("Added"); + _addedContacts = settings.childKeys(); + + settings.endGroup(); + + settings.beginGroup("Removed"); + _removedContacts = settings.childKeys(); + + settings.endGroup(); + settings.endGroup(); + + settings.beginGroup("Themes"); + +#ifdef QT_NO_DEBUG + #define ssPath QString("/usr/share/tietoopcom/stylesheets/") +#else + #define ssPath QString("./data/stylesheets/") +#endif //QT_NO_DEBUG + + _currentTheme = settings.value("theme", ssPath + "/default.qss").toString(); + settings.endGroup(); +} + +void TocSettings::save() { + + QSettings settings("Tieto", "tietoopcom"); + + settings.beginGroup("Account"); + settings.setValue("account/name", _accountName); + settings.setValue("account/uid", _accountUid); + settings.setValue("account/pass", _accountPasswd); + settings.setValue("server/protocol", _protocol); + settings.setValue("server/protocol-name", _protocolCommonName); + settings.setValue("server/server", _server); + settings.setValue("server/port", _port); + settings.setValue("server/old-ssl", _bOldSsl); + settings.setValue("server/ignore-ssl-errors", _bIgnoreSslErrors); + settings.endGroup(); + + settings.beginGroup("Contact_List"); + settings.setValue("list/authorization-rule", _authorizationRule); + settings.setValue("list/sort-order", _sortOrder); + + + settings.beginGroup("Contacts"); + settings.remove(""); + + QString entry; + TocContact* pContact = 0; + + foreach(pContact, *_pContactList) { + + entry = pContact->name + "|" + pContact->customIconPath + "|" + QString::number(static_cast(pContact->gender)); + settings.setValue(pContact->uid, entry); + } + + settings.endGroup(); + settings.endGroup(); + + settings.beginGroup("Pending_Contact_Lists"); + settings.beginGroup("Added"); + settings.remove(""); + + foreach(QString added, _addedContacts) + settings.setValue(added, 0); + + settings.endGroup (); + + settings.beginGroup("Removed"); + settings.remove(""); + + foreach(QString removed, _removedContacts) + settings.setValue(removed, 0); + + settings.endGroup(); + settings.endGroup(); + + settings.beginGroup("Themes"); + settings.setValue("theme", _currentTheme); + settings.endGroup(); +} + +const QString& TocSettings::accountName() { + return _accountName; +} + +void TocSettings::setAccountName(const QString& accountName) { + _accountName = accountName; +} + +const QString& TocSettings::accountUid() { + return _accountUid; +} + +void TocSettings::setAccountUid(const QString& uid) { + _accountUid = uid; +} + +const QString& TocSettings::accountPasswd() { + return _accountPasswd; +} + +void TocSettings::setAccountPasswd(const QString& password) { + _accountPasswd = password; +} + +const QString& TocSettings::protocol() { + return _protocol; +} + +void TocSettings::setProtocol(const QString& protocol) { + _protocol = protocol; +} + +void TocSettings::setProtocolByName(const QString& service) { + + _protocol = _pProtocolMap->value(service); + _protocolCommonName = service; + + if(service == "Jabber") { + _bOldSsl = false; + _bIgnoreSslErrors = false; + } else if( service == "Google Talk") { + _bOldSsl = true; + _bIgnoreSslErrors = true; + } else if( service == "SIP") { + _bOldSsl = false; + _bIgnoreSslErrors = false; + } else { + _bOldSsl = false; + _bIgnoreSslErrors = false; + } +} + +const QStringList& TocSettings::protocols() { + return _protocols; +} + +void TocSettings::setProtocols(const QStringList& protocols) { + _protocols = protocols; +} + +const QString& TocSettings::server() { + return _server; +} + +void TocSettings::setServer(const QString& server) { + _server = server; +} + +int TocSettings::port() { + return _port; +} + +void TocSettings::setPort(int port) { + _port = port; +} + +bool TocSettings::isOldSslEnabled() { + return _bOldSsl; +} + +void TocSettings::setOldSslEnabled(bool bEnabled) { + _bOldSsl = bEnabled; +} + +bool TocSettings::isIgnoreSslErrorsEnabled() { + return _bIgnoreSslErrors; +} + +void TocSettings::setIgnoreSslErrorsEnabled(bool bEnabled) { + _bIgnoreSslErrors = bEnabled; +} + +QList* TocSettings::contactList() { + return _pContactList; +} + +QStringList* TocSettings::contactsToAdd() { + return &_addedContacts; +} + +QStringList* TocSettings::contactsToRemove() { + return &_removedContacts; +} + +SortOrder TocSettings::sortOrder() { + return _sortOrder; +} + +void TocSettings::setSortOrder(SortOrder sortOrder) { + _sortOrder = sortOrder; +} + +AuthorizationRule TocSettings::authorizationRule() { + return _authorizationRule; +} + +void TocSettings::setAuthorizationRule(AuthorizationRule rule) { + _authorizationRule = rule; +} + +const QString& TocSettings::currentTheme() { + return _currentTheme; +} + +void TocSettings::setCurrentTheme(const QString& theme) { + _currentTheme = theme; +} + +bool TocSettings::isProtocolInstalled(const QString& protocol) { + return !_pProtocolMap->key(protocol).isEmpty(); +} + +void TocSettings::installProtocol(const QString& commonName, const QString& protocol) { + _pProtocolMap->insert(commonName, protocol); + _protocols = _pProtocolMap->keys(); +} + +const QString TocSettings::protocolCommonName() { + return _protocolCommonName; +} + +int TocSettings::portHint(const QString& uid, const QString& serviceName) { + + Q_UNUSED(uid); + + if( serviceName == "Jabber") + return _portHint = 5222; + if( serviceName == "Google Talk") + return _portHint = 5223; + if( serviceName == "SIP") + return _portHint = 5060; + + return _portHint = 0; +} + +const QString& TocSettings::serverHint(const QString& uid, const QString& serviceName) { + + if(serviceName == "Jabber") + if(uid.contains("@")) + return _serverHint = uid.split("@").at(1); + if(serviceName == "Google Talk") + return _serverHint = "talk.google.com"; + if(serviceName == "SIP") + return _serverHint = ""; + + return _serverHint = ""; +} + +bool TocSettings::isRegister() { + bool bRet = _register; + _register = false; + return bRet; +} + +void TocSettings::setRegister() { + _register = true; +} diff --git a/src/TocUi/ChangePasswordDialog.ui b/src/TocUi/ChangePasswordDialog.ui new file mode 100644 index 0000000..d19ece7 --- /dev/null +++ b/src/TocUi/ChangePasswordDialog.ui @@ -0,0 +1,386 @@ + + + + ChangePasswordDialogClass + + + + 0 + 0 + 468 + 341 + + + + Dialog + + + QDialog { + background-color: rgb(212, 255, 185); + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #00aa00, stop: 0.55 #00bb00, + stop: 0.56 #00bb00, stop: 1 #00ff00); +} + + + + + + true + + + + 0 + 0 + + + + QFrame { + background-color: rgb(212, 255, 185); + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #00aa00, stop: 0.55 #00bb00, + stop: 0.56 #00bb00, stop: 1 #00ff00); +} + + + QFrame::Box + + + QFrame::Sunken + + + 1 + + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + QLineEdit { + background-color: rgb(238, 255, 224); +} + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + QLineEdit { + background-color: rgb(238, 255, 224); +} + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + QLineEdit { + background-color: rgb(238, 255, 224); +} + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + + 140 + 16777215 + + + + QLabel { + background-color: none; + color: rgb(255, 255, 255); +} + + + Old password: + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + + 140 + 16777215 + + + + QLabel { + background-color: none; + color: rgb(255, 255, 255); +} + + + New password: + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + + 140 + 16777215 + + + + QLabel { + background-color: none; + color: rgb(255, 255, 255); +} + + + Confirm password: + + + + + + + + + Qt::LeftToRight + + + QPushButton { + color: rgb(255, 255, 255); + border: 0px; + + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #009900, stop: 0.55 #00aa00, + stop: 0.56 #00bb00, stop: 1 #00ff00); + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 100px; + } + +QPushButton:pressed { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #00ff00, stop: 0.55 #00bb00, + stop: 0.56 #00aa00, stop: 1 #009900); + } + + + Change + + + + + + + Qt::LeftToRight + + + QPushButton { + color: rgb(255, 255, 255); + border: 0px; + + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #009900, stop: 0.55 #00aa00, + stop: 0.56 #00bb00, stop: 1 #00ff00); + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 100px; + } + +QPushButton:pressed { + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, + stop: 0 #00ff00, stop: 0.55 #00bb00, + stop: 0.56 #00aa00, stop: 1 #009900); + } + + + Cancel + + + + + + + + + + + + + + + + pushButton + clicked() + ChangePasswordDialogClass + reject() + + + 355 + 288 + + + 419 + 337 + + + + + pushButton_2 + clicked() + ChangePasswordDialogClass + accept() + + + 184 + 278 + + + 194 + 337 + + + + + diff --git a/src/TocUi/IconProvider.cpp b/src/TocUi/IconProvider.cpp new file mode 100644 index 0000000..307b91e --- /dev/null +++ b/src/TocUi/IconProvider.cpp @@ -0,0 +1,263 @@ +/** \file IconProvider.cpp + * \brief Implementation of IconProvider class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "IconProvider" +#include "TocSettings" + + +// Initialize static object +IconProvider* IconProvider::mp_self = 0; + +// --------------------------------------------------------------------------- +// getInstance +// --------------------------------------------------------------------------- +// +IconProvider* IconProvider::getInstance() +{ + if ( !mp_self) + mp_self = new IconProvider(); + + return mp_self; +} + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +IconProvider::IconProvider(): + _customIconId(1), + _defaultMaleImagePath(":/contactmale.png"), + _defaultFemaleImagePath(":/contactfemale.png"), + _defaultUnknownImagePath(":/unknown.png") +{ + //Initialize _defaultIcons map according to gender and status + + //Male + QImage* pNoFrame = new QImage(_defaultMaleImagePath); + QImage* pRed = addStatusFrame(pNoFrame, Busy); + QImage* pYellow = addStatusFrame(pNoFrame, Away); + QImage* pGreen = addStatusFrame(pNoFrame, Available); + + _defaultIcons[Male << 8 | Hidden] = pNoFrame; + _defaultIcons[Male << 8 | Offline] = pNoFrame; + _defaultIcons[Male << 8 | Available]= pGreen; + _defaultIcons[Male << 8 | Busy] = pRed; + _defaultIcons[Male << 8 | XA] = pYellow; + _defaultIcons[Male << 8 | Away] = pYellow; + + //Female + pNoFrame = new QImage(_defaultFemaleImagePath); + pRed = addStatusFrame(pNoFrame, Busy); + pYellow = addStatusFrame(pNoFrame, Away); + pGreen = addStatusFrame(pNoFrame, Available); + + _defaultIcons[Female << 8 | Hidden] = pNoFrame; + _defaultIcons[Female << 8 | Offline] = pNoFrame; + _defaultIcons[Female << 8 | Available] = pGreen; + _defaultIcons[Female << 8 | Busy] = pRed; + _defaultIcons[Female << 8 | XA] = pYellow; + _defaultIcons[Female << 8 | Away] = pYellow; + + //NotSpecified + pNoFrame = new QImage(_defaultUnknownImagePath); + pRed = addStatusFrame(pNoFrame, Busy); + pYellow = addStatusFrame(pNoFrame, Away); + pGreen = addStatusFrame(pNoFrame, Available); + + _defaultIcons[NotSpecified << 8 | Hidden] = pNoFrame; + _defaultIcons[NotSpecified << 8 | Offline] = pNoFrame; + _defaultIcons[NotSpecified << 8 | Available]= pGreen; + _defaultIcons[NotSpecified << 8 | Busy] = pRed; + _defaultIcons[NotSpecified << 8 | XA] = pYellow; + _defaultIcons[NotSpecified << 8 | Away] = pYellow; + + + //Initialize _customIcons map from TocSettings + TocSettings *pSettings = TocSettings::getInstance(); + + TocContactList *pContacts = pSettings->contactList(); + + foreach(TocContact* pContact, *pContacts) + { + if(!pContact->customIconPath.isEmpty()) + setCustomIcon(pContact); + } +} + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +IconProvider::~IconProvider() +{ + QList defaultIconsKeys = _defaultIcons.uniqueKeys(); + + foreach(int key, defaultIconsKeys) + { + QImage* pImage = _defaultIcons.value(key); + if(pImage) + { + delete pImage; + } + } + + + QList customIconsKeys = _defaultIcons.uniqueKeys(); + + foreach(int key, customIconsKeys) + { + QImage* pImage = _customIcons.value(key); + if(pImage) + { + delete pImage; + } + } +} + +// --------------------------------------------------------------------------- +// matchIcon +// --------------------------------------------------------------------------- +// +QImage* IconProvider::matchIcon(const TocContact* pContact) const +{ + if(pContact->customIconId) + return _customIcons.value(pContact->customIconId << 8 | pContact->presence); + else + return _defaultIcons.value(pContact->gender << 8 | pContact->presence); +} + +// --------------------------------------------------------------------------- +// matchIcon +// --------------------------------------------------------------------------- +// +QIcon IconProvider::matchIcon(Gender gender) const +{ + switch( static_cast(gender) ) + { + + case NotSpecified: + return QIcon(_defaultUnknownImagePath); + + case Male: + return QIcon(_defaultMaleImagePath); + + case Female: + return QIcon(_defaultFemaleImagePath); + + default: + return QIcon(_defaultUnknownImagePath); + } +} + +// --------------------------------------------------------------------------- +// setCustomIcon +// --------------------------------------------------------------------------- +// +void IconProvider::setCustomIcon(TocContact* pContact) +{ + //Check if there's something to be set + if(pContact->customIconPath.isEmpty()) + + //Check if this pContact has some custom icon already associated + if(_customIcons[pContact->customIconId]) + { + //if yes, remove it from the list + _customIcons.remove(pContact->customIconId << 8 | Hidden); + _customIcons.remove(pContact->customIconId << 8 | Offline); + _customIcons.remove(pContact->customIconId << 8 | Available); + _customIcons.remove(pContact->customIconId << 8 | Busy); + _customIcons.remove(pContact->customIconId << 8 | XA); + _customIcons.remove(pContact->customIconId << 8 | Away); + } + + QImage* pNoFrame = new QImage(pContact->customIconPath); + QImage* pRed = addStatusFrame(pNoFrame, Busy); + QImage* pYellow = addStatusFrame(pNoFrame, Away); + QImage* pGreen = addStatusFrame(pNoFrame, Available); + + _customIcons[_customIconId << 8 | Hidden] = pNoFrame; + _customIcons[_customIconId << 8 | Offline] = pNoFrame; + _customIcons[_customIconId << 8 | Available] = pGreen; + _customIcons[_customIconId << 8 | Busy] = pRed; + _customIcons[_customIconId << 8 | XA] = pYellow; + _customIcons[_customIconId << 8 | Away] = pYellow; + + pContact->customIconId = _customIconId++; +} + +// --------------------------------------------------------------------------- +// addStatusFrame +// --------------------------------------------------------------------------- +// +QImage* IconProvider::addStatusFrame(const QImage *baseImage, Presence presence) const +{ + QImage contactImage(*baseImage); + QImage *pResultImage = new QImage(QSize::QSize(72,72), QImage::Format_ARGB32_Premultiplied); + + QImage presenceFrame; + + switch(presence) + { + case Hidden: + case Offline: + break; + + case Available: + presenceFrame = QImage(":greenframe.png"); + break; + + case Busy: + presenceFrame = QImage(":redframe.png"); + break; + + case XA: + case Away: + presenceFrame = QImage(":yellowframe.png"); + } + + QPainter painter(pResultImage); + + painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.fillRect(pResultImage->rect(), Qt::transparent); + + painter.setCompositionMode(QPainter::CompositionMode_SourceOver); + painter.drawImage(0, 0, contactImage); + + painter.setCompositionMode(QPainter::CompositionMode_DestinationOver); + painter.drawImage(0, 0, presenceFrame); + painter.end(); + + return pResultImage; +} diff --git a/src/TocUi/TocAccountIntermediateWidget.cpp b/src/TocUi/TocAccountIntermediateWidget.cpp new file mode 100644 index 0000000..672d64c --- /dev/null +++ b/src/TocUi/TocAccountIntermediateWidget.cpp @@ -0,0 +1,154 @@ +/** \file TocAccountIntermediateWidget.cpp + * \brief Implementation of TocAccountIntermediateWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocAccountIntermediateWidget" +#include +#include +#include +#include +#include +#include "macros.h" + +TocAccountIntermediateWidget::TocAccountIntermediateWidget(QWidget * parent, Qt::WindowFlags flags) + : QWidget(parent, flags) { + + setContentsMargins( -10, -10, -10, -10 ); + setObjectName("intermediateWidget"); + + QGridLayout* gridLayout = new QGridLayout(this); + _pIntermediateFrame = new QFrame( this ); + _pIntermediateFrame->setObjectName("intermediateFrame"); + gridLayout->addWidget( _pIntermediateFrame ); + + QHBoxLayout* mainHorizontalLayout = new QHBoxLayout( _pIntermediateFrame ); + + //1st layout - vertical - back button + strech + QVBoxLayout* vLayout1 = new QVBoxLayout(); + + vLayout1->addStretch(1); + + _pBackButton = new QPushButton(tr("Back"), this); + _pBackButton->setObjectName("backButton"); + vLayout1->addWidget(_pBackButton); + + mainHorizontalLayout->addLayout(vLayout1); + + //2nd layout - vertical - for Create and Edit buttons + QVBoxLayout* vLayout2 = new QVBoxLayout(); + + vLayout2->addStretch(1); + + QHBoxLayout* hLayout1 = new QHBoxLayout(); + + hLayout1->addStretch(1); + + _pCreateButton = new QPushButton(tr("Create\nnew"), this); + _pCreateButton->setObjectName("createButton"); + hLayout1->addWidget(_pCreateButton); + + hLayout1->addStretch(1); + + _pEditButton = new QPushButton(tr("Edit"), this); + _pEditButton->setObjectName("editButton"); + hLayout1->addWidget(_pEditButton); + + hLayout1->addStretch(1); + + vLayout2->addLayout( hLayout1 ); + vLayout2->addStretch(2); + + mainHorizontalLayout->addLayout(vLayout2); + + + //3rd layout - horizontal - just to add stretch + QHBoxLayout* hLayout3 = new QHBoxLayout(); + QSpacerItem* spacer = new QSpacerItem(_pBackButton->width(), 0); + hLayout3->addItem(spacer); + + mainHorizontalLayout->addLayout(hLayout3); + + + setupStyles(); + + CONNECT(_pBackButton, SIGNAL(clicked()), this, SIGNAL(backClicked())); + CONNECT(_pEditButton, SIGNAL(clicked()), this, SIGNAL(editClicked())); + CONNECT(_pCreateButton, SIGNAL(clicked()), this, SIGNAL(createClicked())); +} + +TocAccountIntermediateWidget::~TocAccountIntermediateWidget() { + +} + +void TocAccountIntermediateWidget::setupStyles() { + setStyleSheet("QPushButton { }"); + _pCreateButton->setStyleSheet( + "QPushButton {" + "font: bold 16px;" + "border-radius: 5px;" + "min-height: 120px;" + "min-width: 140px;" + "max-height: 120px;" + "max-width: 140px;" + "}" + ); + + _pEditButton->setStyleSheet( + "QPushButton {" + "font: bold 16px;" + "border-radius: 5px;" + "min-height: 120px;" + "min-width: 140px;" + "max-height: 120px;" + "max-width: 140px;" + "}" + ); + + _pBackButton->setStyleSheet( + "QPushButton {" + "font: bold 16px;" + "border-radius: 5px;" + "min-height: 80px;" + "min-width: 80px;" + "max-height: 80px;" + "max-width: 80px;" + "}" + ); +} + +void TocAccountIntermediateWidget::enableFTUMode( bool ftu ) { + _pBackButton->setHidden(ftu); + + if(ftu) { + _pEditButton->setText(tr("Use\nexisting")); + } else { + _pEditButton->setText(tr("Edit")); + } +} diff --git a/src/TocUi/TocAccountSettingsWidget.cpp b/src/TocUi/TocAccountSettingsWidget.cpp new file mode 100644 index 0000000..2d581fa --- /dev/null +++ b/src/TocUi/TocAccountSettingsWidget.cpp @@ -0,0 +1,234 @@ +/** \file TocAccountSettingsWidget.cpp + * \brief Implementation of TocAccountSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "TocAccountSettingsWidget" +#include "ui_TocAccountSettingsWidget.h" +#include "TocSettings" +#include "macros.h" + + + +TocAccountSettingsWidget::TocAccountSettingsWidget(QWidget * parent, Qt::WindowFlags flags) + : QWidget(parent, flags), _bCreateMode(false) { + + ui = new Ui_TocAccountSettingsWidgetClass(); + ui->setupUi( this ); + setContentsMargins( -10, -10, -10, -10 ); + setObjectName("accountSettings"); + + ui->editVCardButton->hide(); + ui->changePasswordButton->hide(); + + TocSettings* pSettings = TocSettings::getInstance(); + QStringList prot = pSettings->protocols(); + for(int i = 0; i < prot.count(); ++i) + ui->protocolComboBox->addItem(prot[i]); + + CONNECT(ui->backButton, SIGNAL(clicked()), this, SIGNAL(backClicked())); +} + +TocAccountSettingsWidget::~TocAccountSettingsWidget() { + delete ui; +} + +void TocAccountSettingsWidget::loginEdited(const QString& newLogin) { + TocSettings* pSettings = TocSettings::getInstance(); + ui->serverLineEdit->setText(pSettings->serverHint(newLogin, ui->protocolComboBox->currentText())); + ui->portLineEdit->setText(QString("%1").arg(pSettings->portHint(newLogin, ui->protocolComboBox->currentText()))); +} + +void TocAccountSettingsWidget::protocolEdited(const QString& newProtocol) { + TocSettings* pSettings = TocSettings::getInstance(); + ui->serverLineEdit->setText(pSettings->serverHint(ui->loginLineEdit->text(), newProtocol)); + ui->portLineEdit->setText(QString("%1").arg(pSettings->portHint(ui->loginLineEdit->text(), newProtocol))); +} + +void TocAccountSettingsWidget::disconnectHints() { + disconnect(ui->loginLineEdit, SIGNAL(textEdited(QString)), this, SLOT(loginEdited(QString))); + disconnect(ui->protocolComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(protocolEdited(QString))); + disconnect(ui->serverLineEdit, SIGNAL(textEdited(QString)), this, SLOT(disconnectHints())); + disconnect(ui->portLineEdit, SIGNAL(textEdited(QString)), this, SLOT(disconnectHints())); +} + +void TocAccountSettingsWidget::connectHints() { + // disconnect first to ensure double connections are not made.. + disconnectHints(); + CONNECT(ui->loginLineEdit, SIGNAL(textEdited(QString)), this, SLOT(loginEdited(QString))); + CONNECT(ui->protocolComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(protocolEdited(QString))); + CONNECT(ui->serverLineEdit, SIGNAL(textEdited(QString)), this, SLOT(disconnectHints())); + CONNECT(ui->portLineEdit, SIGNAL(textEdited(QString)), this, SLOT(disconnectHints())); + +} + +void TocAccountSettingsWidget::reload() { + connectHints(); + + if(createMode()) { + ui->loginLineEdit->setText( "" ); + ui->passwordLineEdit->setText( "" ); + ui->passwordConfirmLineEdit->setText( "" ); + ui->serverLineEdit->setText( "" ); + ui->protocolComboBox->setCurrentIndex( -1 ); + ui->portLineEdit->setText( "" ); + } else { + TocSettings* pSettings = TocSettings::getInstance(); + ui->loginLineEdit->setText( pSettings->accountUid() ); + ui->passwordLineEdit->setText( pSettings->accountPasswd() ); + ui->serverLineEdit->setText( pSettings->server() ); + ui->portLineEdit->setText(QString("%1").arg( pSettings->port() )); + QString s = pSettings->protocolCommonName(); + ui->protocolComboBox->setCurrentIndex( + ui->protocolComboBox->findText( s, Qt::MatchExactly )); + } +} + +void TocAccountSettingsWidget::showEvent(QShowEvent *event){ + reload(); + QWidget::showEvent(event); +} + +void TocAccountSettingsWidget::handleError(QString errorText) { + QMessageBox::information( this, "Invalid value", errorText); +} + +bool TocAccountSettingsWidget::createMode() const { + return _bCreateMode; +} + +void TocAccountSettingsWidget::setCreateMode(bool enable) { + + _bCreateMode = enable; + + ui->passwordConfirmLabel->setVisible(enable); + ui->passwordConfirmLineEdit->setVisible(enable); + ui->changePasswordButton->setVisible(!enable); + + if(enable) { + ui->okButton->setText(tr("Create")); + ui->backButton->setText(tr("Back")); + } else { + ui->okButton->setText(tr("Ok")); + ui->backButton->setText(tr("Back")); + } +} + +bool TocAccountSettingsWidget::dataVerified() { + if(!ui->loginLineEdit->text().length()) { + handleError(tr("Please provide login")); + return false; + } + if(!ui->passwordLineEdit->text().length()) { + handleError(tr("Please provide password")); + return false; + } + if(createMode() && ui->passwordLineEdit->text() != ui->passwordConfirmLineEdit->text()) { + handleError(tr("Passwords do not match")); + return false; + } + if(!ui->serverLineEdit->text().length()) { + handleError(tr("Please provide server name")); + return false; + } + if(!ui->portLineEdit->text().toInt()) { + handleError(tr("Please provide port number")); + return false; + } + + return true; +} + +void TocAccountSettingsWidget::onChangePasswordButton(){ + // TODO: finish implementation +} + +void TocAccountSettingsWidget::onOkButton(){ + if(!dataVerified()) + return; + + if(createMode()) + createNewAccount(); + else { + saveAccountData(); + emit finished(); // Close the view when not in `Create mode` + } +} + +void TocAccountSettingsWidget::saveAccountData() { + + bool settingsChanged = false; + + TocSettings* pSettings = TocSettings::getInstance(); + + if(ui->loginLineEdit->text() != pSettings->accountUid()) { + pSettings->setAccountUid(ui->loginLineEdit->text()); + settingsChanged = true; + } + + if(ui->passwordLineEdit->text() != pSettings->accountPasswd()) { + pSettings->setAccountPasswd(ui->passwordLineEdit->text()); +// settingsChanged = true; // This is not needed for only the password + } + + if(ui->protocolComboBox->currentText() != pSettings->protocolCommonName()) { + pSettings->setProtocolByName(ui->protocolComboBox->currentText()); + settingsChanged = true; + } + + if(ui->serverLineEdit->text() != pSettings->server()) { + pSettings->setServer(ui->serverLineEdit->text()); + settingsChanged = true; + } + + if(ui->portLineEdit->text().toInt() != pSettings->port()) { + pSettings->setPort(ui->portLineEdit->text().toInt()); + settingsChanged = true; + } + + if(settingsChanged) { + emit accountSettingsChanged(); + } +} + +void TocAccountSettingsWidget::createNewAccount() { + + TocSettings* pSettings = TocSettings::getInstance(); + pSettings->setAccountUid(ui->loginLineEdit->text()); + pSettings->setAccountPasswd(ui->passwordLineEdit->text()); + pSettings->setServer(ui->serverLineEdit->text()); + pSettings->setPort(ui->portLineEdit->text().toInt()); + pSettings->setProtocolByName(ui->protocolComboBox->currentText()); + pSettings->setRegister(); + + emit newAccountSettingsCreated(); +} diff --git a/src/TocUi/TocAccountSettingsWidget.ui b/src/TocUi/TocAccountSettingsWidget.ui new file mode 100644 index 0000000..38e64be --- /dev/null +++ b/src/TocUi/TocAccountSettingsWidget.ui @@ -0,0 +1,609 @@ + + + + TocAccountSettingsWidgetClass + + + + 0 + 0 + 609 + 388 + + + + Form + + + + + + + + + true + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + + + QFrame::Box + + + QFrame::Sunken + + + 1 + + + + + + -1 + + + QLayout::SetMinimumSize + + + + + false + + + + 80 + 80 + + + + + 80 + 80 + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Edit +VCard + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 80 + 80 + + + + + 80 + 80 + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Back + + + + + + + + + + + + + QLabel { + background: none; + min-height: 48px; + font: bold 14px; +} + + + Login + + + + + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + font: bold 14px; +} + + + + + + + QLabel{ + background: none; + min-height: 48px; + font: bold 14px; +} + + + Password + + + + + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + font: bold 14px; +} + + + QLineEdit::Password + + + + + + + QLabel{ + background: none; + min-height: 48px; + font: bold 14px; +} + + + Confirm Password + + + true + + + -1 + + + + + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + font: bold 14px; +} + + + QLineEdit::Password + + + + + + + Qt::Vertical + + + QSizePolicy::Maximum + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Maximum + + + + 20 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Maximum + + + + 20 + 20 + + + + + + + + + + QLabel{ + background: none; + min-height: 48px; + font: bold 14px; +} + + + Protocol + + + + + + + + 79 + 52 + + + + QComboBox { + min-height: 48px; + font: bold 16px; +} + + + + + + + + QLabel{ + background: none; + min-height: 48px; + font: bold 14px; +} + + + Server + + + + + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + font: bold 14px; +} + + + + + + + QLabel{ + background: none; + min-height: 48px; + font: bold 14px; +} + + + Port + + + + + + + + 80 + 16777215 + + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + min-width: 48px; + font: bold 14px; +} + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + -1 + + + QLayout::SetMinimumSize + + + + + false + + + + 80 + 80 + + + + + 80 + 80 + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Change +password + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 80 + 80 + + + + + 80 + 80 + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Ok + + + + + + + + + + + + + + loginLineEdit + textEdited(QString) + TocAccountSettingsWidgetClass + loginEdited(QString) + + + 348 + 60 + + + 535 + 254 + + + + + protocolComboBox + currentIndexChanged(QString) + TocAccountSettingsWidgetClass + protocolEdited(QString) + + + 259 + 329 + + + 535 + 260 + + + + + okButton + clicked() + TocAccountSettingsWidgetClass + onOkButton() + + + 587 + 366 + + + 535 + 331 + + + + + changePasswordButton + clicked() + TocAccountSettingsWidgetClass + onChangePasswordButton() + + + 510 + 64 + + + 535 + 70 + + + + + serverLineEdit + textEdited(QString) + TocAccountSettingsWidgetClass + disconnectHints() + + + 352 + 307 + + + 535 + 133 + + + + + portLineEdit + textEdited(QString) + TocAccountSettingsWidgetClass + disconnectHints() + + + 498 + 327 + + + 535 + 173 + + + + + + loginEdited(QString) + protocolEdited(QString) + disconnectHints() + onOkButton() + onChangePasswordButton() + finished() + + diff --git a/src/TocUi/TocBaseMainWindow.cpp b/src/TocUi/TocBaseMainWindow.cpp new file mode 100644 index 0000000..c6e486d --- /dev/null +++ b/src/TocUi/TocBaseMainWindow.cpp @@ -0,0 +1,71 @@ +/** \file TocBaseMainWindow.cpp + * \brief Implementation of TocBaseMainWindow class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocBaseMainWindow" +#include "TocBaseEngine" +#include "macros.h" + +TocBaseMainWindow::TocBaseMainWindow(TocBaseEngine* engine, QWidget *parent, Qt::WindowFlags flags) + : QMainWindow(parent, flags) +{ + if(!engine) + return; + + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + + //Connections from Engine + CONNECT(engine, SIGNAL(statusChanged(Status,Reason)), this, SLOT(onStatusChange(Status,Reason))); + CONNECT(engine, SIGNAL(presenceUpdated(Presence,QString)), this, SLOT(onPresenceUpdate(Presence,QString))); + CONNECT(engine, SIGNAL(contactPresenceUpdated(QString,Presence,QString)), this, SLOT(onContactPresenceUpdate(QString,Presence,QString))); + CONNECT(engine, SIGNAL(incomingMessage(QString,Message)), this, SLOT(onIncomingMessage(QString,Message))); + CONNECT(engine, SIGNAL(contactListReceived(TocContactList)), this, SLOT(onContactListReceived(TocContactList))); + CONNECT(engine, SIGNAL(subscriptionAccepted(QString)), this, SLOT(onSubscriptionAccepted(QString))); + CONNECT(engine, SIGNAL(authorizationRequest(QString)), this, SLOT(onAuthorizationRequest(QString))); + + //Connections to engine + CONNECT(this, SIGNAL(presenceChanged(Presence,QString)), engine, SLOT(onPresenceChange(Presence,QString))); + CONNECT(this, SIGNAL(sessionClosed(QString)), engine, SLOT(onSessionClosed(QString))); + CONNECT(this, SIGNAL(newMessageReady(QString,Message)), engine, SLOT(onNewMessageReady(QString,Message))); + CONNECT(this, SIGNAL(addContact(TocContact*)), engine, SLOT(onAddContactRequest(TocContact*))); + CONNECT(this, SIGNAL(editContact(TocContact*,QString)), engine, SLOT(onEditContactRequest(TocContact*,QString))); + CONNECT(this, SIGNAL(removeContact(QString)), engine, SLOT(onRemoveContactRequest(QString))); + CONNECT(this, SIGNAL(subscriptionAccepted(QString,bool)), engine, SLOT(onSubscriptionAccepted(QString,bool))); +} + +TocBaseMainWindow::~TocBaseMainWindow() +{ + +} diff --git a/src/TocUi/TocChatWidget.cpp b/src/TocUi/TocChatWidget.cpp new file mode 100644 index 0000000..f6f13d5 --- /dev/null +++ b/src/TocUi/TocChatWidget.cpp @@ -0,0 +1,362 @@ +/** \file TocChatWidget.cpp + * \brief Implementation of TocChatWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "ui_TocChatWidget.h" +#include "TocEmoticonsDialog" +#include "TocChatWidget" +#include "uidefs.h" +#include "macros.h" + +TocChatWidget::TocChatWidget( const QString& uid, const QString& name, Presence presence, QWidget * parent, const Message& message ) + : QWidget(parent) +{ + ui = new Ui_TocChatWidgetClass(); + ui->setupUi( this ); + setContentsMargins( -10, -10, -10, -10 ); + + CONNECT(ui->smileButton,SIGNAL(clicked()),this,SLOT(showEmoticonsDialog())); + + _uid = uid; + _name = name; + + switch(presence) + { + case Available: + ui->frame->setStyleSheet(STYLESHEET_ONLINE); + break; + case XA: + case Away: + ui->frame->setStyleSheet(STYLESHEET_AWAY); + break; + case Busy: + ui->frame->setStyleSheet(STYLESHEET_BUSY); + break; + case Hidden: + case Offline: + ui->frame->setStyleSheet(STYLESHEET_OFFLINE); + break; + default: + ui->frame->setStyleSheet(STYLESHEET_OFFLINE); + } + + appendMessage(message); + + //Event filter for sending on Enter support + ui->messageTextEdit->installEventFilter(this); + ui->messageTextEdit->setFocus(); +} + +TocChatWidget::~TocChatWidget() { + delete ui; +} + +void TocChatWidget::onContactPresenceUpdate(Presence presence, const QString& description) { + QFont font = ui->chatTextEdit->currentFont(); + QFont smallFont; + smallFont.setPointSize(static_cast( font.pointSize() * 0.85) ); + smallFont.setItalic(true); + ui->chatTextEdit->setCurrentFont(smallFont); + ui->chatTextEdit->setTextColor( Qt::darkGreen ); + + QString status; + switch(presence) + { + case Available: + status = tr("Online"); + ui->frame->setStyleSheet(STYLESHEET_ONLINE); + break; + case XA: + case Away: + status = tr("Away"); + ui->frame->setStyleSheet(STYLESHEET_AWAY); + break; + case Busy: + status = tr("Do not Disturb"); + ui->frame->setStyleSheet(STYLESHEET_BUSY); + break; + case Hidden: + case Offline: + status = tr("Offline"); + ui->frame->setStyleSheet(STYLESHEET_OFFLINE); + break; + default: + status = tr("Unknown"); + ui->frame->setStyleSheet(STYLESHEET_OFFLINE); + } + + if(description.size()) + ui->chatTextEdit->append(tr("%1 changed status to %2 (%3)").arg(_name).arg(status).arg(description)); + else + ui->chatTextEdit->append(tr("%1 changed status to %2").arg(_name).arg(status)); + + ui->chatTextEdit->moveCursor(QTextCursor::End); + ui->chatTextEdit->setCurrentFont(font); +} + +void TocChatWidget::updateContactPresence(Presence presence) { + switch(presence) + { + case Available: + ui->frame->setStyleSheet(STYLESHEET_ONLINE); + break; + case XA: + case Away: + ui->frame->setStyleSheet(STYLESHEET_AWAY); + break; + case Busy: + ui->frame->setStyleSheet(STYLESHEET_BUSY); + break; + case Hidden: + case Offline: + ui->frame->setStyleSheet(STYLESHEET_OFFLINE); + break; + default: + ui->frame->setStyleSheet(STYLESHEET_OFFLINE); + } +} + +void TocChatWidget::appendMessage(const Message& message) { + if(message.contents.isEmpty()) + return; + + QDateTime messageTime( QDateTime::fromTime_t( message.timestamp ) ); + QDateTime currentTime( QDateTime::currentDateTime() ); + + QString format; + if( messageTime.date() < currentTime.date() ) + format = "ddd: yyyy-MM-dd hh:mm:ss"; + else + format = "hh:mm:ss"; + + if(message.error == NoError) { + + ui->chatTextEdit->setTextColor(Qt::blue); + ui->chatTextEdit->setFontItalic(true); + ui->chatTextEdit->append( _name + " " + currentTime.toString("hh:mm:ss") + + " (" + messageTime.toString(format) + "): "); + ui->chatTextEdit->setFontItalic(false); + insertEmoticons(message.contents); + + } else { + + // If error occured + ui->chatTextEdit->setTextColor(Qt::red); + ui->chatTextEdit->setFontItalic(true); + ui->chatTextEdit->append( tr("Message \"%1\" sent on %2 was not delivered %3" + ).arg(message.contents).arg(messageTime.toString(format)).arg(errorString(message.error))); + } + + ui->chatTextEdit->moveCursor(QTextCursor::End); +} + +QString TocChatWidget::errorString(MessageDeliveryError error) { + + switch(error) { + case Unknown: + return tr("because of unknown error."); + + case ContactOffline: + return tr("because contact was offline."); + + case InvalidContact: + return tr("because contact is invalid."); + + case PermissionDenied: + return tr("because permission was denied."); + + case MessageTooLong: + return tr("because message was too long."); + + case UserOffline: + return tr("because You are offline, connect to be able to send messages."); + + case NotOnContactList: + return tr("because the contact is not on Your contact list."); + + case CannotCreateChannel: + return tr("because the channel with the contact could not be created."); + + case NoError: + return tr("because there was no error :)."); + + default: + return tr("because of unknown error."); + } +} + +void TocChatWidget::pressedSendButton() { + + if(ui->messageTextEdit->toPlainText().size()) { + QDateTime time(QDateTime::currentDateTime()); + + ui->chatTextEdit->setTextColor(Qt::black); + ui->chatTextEdit->setFontItalic(true); + ui->chatTextEdit->append( tr("me") + " (" + time.toString("hh:mm:ss") + "): " ); + ui->chatTextEdit->setFontItalic(false); + + insertEmoticons(ui->messageTextEdit->toPlainText()); + + Message message; + message.contents = ui->messageTextEdit->toPlainText(); + message.timestamp = time.toTime_t(); + emit newMessageReady(_uid, message); + ui->messageTextEdit->clear(); + + ui->chatTextEdit->moveCursor(QTextCursor::End); + } +} + +bool TocChatWidget::eventFilter(QObject *object, QEvent *event) { + + if (object == ui->messageTextEdit) { + + if (event->type() == QEvent::KeyPress) { + + QKeyEvent *k = static_cast(event); + if (k->key() == Qt::Key_Enter || k->key() == Qt::Key_Return) { + + if ((!(k->modifiers() == (Qt::KeypadModifier | Qt::ShiftModifier))) && + (!(k->modifiers() == Qt::ShiftModifier))) { + + pressedSendButton(); + return true; + } + } + } + } + return false; +} + +void TocChatWidget::insertEmoticons(const QString& message) { + + int pos = 0, last = 0, delta = 1; + QString emot; + + while (pos+1 < message.length()) { + + // checking for ":)" or ":-)" type smilies... + if(message.at(pos) == ':') { + + if(message.at(pos+1) == '-' && pos+2 < message.length()) { // checking for :-) type... + delta = 2; + } + if(message.at(pos+delta) == ')') { + delta++; emot = emotSmile_24x24; + } + else if(message.at(pos+delta) == '(') { + delta++; emot = emotSad_24x24; + } + else if(message.at(pos+delta) == '|') { + delta++; emot = emotPlain_24x24; + } + else if(message.at(pos+delta) == 'D') { + delta++; emot = emotGrin_24x24; + } + else if(message.at(pos+delta) == 'O') { + delta++; emot = emotSurprise_24x24; + } + else if(message.at(pos+delta) == '*') { + delta++; emot = emotKiss_24x24; + } + else + delta = 1; + } + + // checking for ";)" or ";-)" type smilies... + else if(message.at(pos) == ';') { + + if(message.at(pos+1) == '-' && pos+2 < message.length()) { // checking for ;-) type... + delta = 2; + } + if(message.at(pos+delta) == ')') { + delta++; emot = emotWink_24x24; + } + else + delta = 1; + } + + // checking for "" type smilies... + else if(message.at(pos) == '<') { + + if(message.right(message.length()-pos).startsWith("")) { + delta = 7; emot = emotAngel_24x24; + } + else if(message.right(message.length()-pos).startsWith("")) { + delta = 7; emot = emotDevil_24x24; + } + else if(message.right(message.length()-pos).startsWith("")) { + delta = 8; emot = emotMonkey_24x24; + } + else if(message.right(message.length()-pos).startsWith("")) { + delta = 8; emot = emotCrying_24x24; + } + else if(message.right(message.length()-pos).startsWith("")) { + delta = 9; emot = emotGlasses_24x24; + } + else if(message.right(message.length()-pos).startsWith("")) { + delta = 10; emot = emotSmileBig_24x24; + } + else + delta = 1; + } + + //OK, emoticon found ... inserting into chatView + if(delta>1) { + ui->chatTextEdit->insertPlainText(message.mid(last, pos-last)); + ui->chatTextEdit->insertHtml(""); + pos += delta; last = pos; delta = 1; + } + else { + pos += delta; + } + } + ui->chatTextEdit->insertPlainText(message.mid(last)); +} + +void TocChatWidget::showEmoticonsDialog() { + + TocEmoticonsDialog* emoticonsDialog = TocEmoticonsDialog::getInstance(this); + + if ((*emoticonsDialog).exec() == QDialog::Accepted) { + + QString alias = emoticonsDialog->getSelectedEmoticonAlias(); + ui->messageTextEdit->insertPlainText(alias); + } + ui->messageTextEdit->setFocus(); +} + +void TocChatWidget::showEvent( QShowEvent* event ) { + ui->messageTextEdit->setFocus(); + event->accept(); +} diff --git a/src/TocUi/TocChatWidget.ui b/src/TocUi/TocChatWidget.ui new file mode 100644 index 0000000..e1ff2c6 --- /dev/null +++ b/src/TocUi/TocChatWidget.ui @@ -0,0 +1,257 @@ + + + + TocChatWidgetClass + + + + 0 + 0 + 718 + 431 + + + + Form + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + + + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + 3 + + + -1 + + + + + + 0 + 0 + + + + QTextEdit { + background-color: none; +} + + + QFrame::Box + + + QFrame::Sunken + + + 1 + + + Qt::ScrollBarAlwaysOff + + + true + + + + + + + + + + 4 + + + 0 + + + 0 + + + + + + 14 + 75 + true + + + + QPushButton{ + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Smile + + + + + + + + 0 + 0 + + + + + 16777215 + 80 + + + + QTextEdit { + background-color: none; +} + + + QFrame::Box + + + Qt::ScrollBarAsNeeded + + + Qt::ScrollBarAlwaysOff + + + + + + + + 0 + 0 + + + + + 80 + 80 + + + + + 14 + 75 + true + + + + QPushButton{ + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + + Send + + + + + + + + + + + + + + sendButton + clicked() + TocChatWidgetClass + pressedSendButton() + + + 672 + 318 + + + 715 + 285 + + + + + sendButton + clicked() + messageTextEdit + setFocus() + + + 620 + 328 + + + 516 + 337 + + + + + + pressedSendButton() + + diff --git a/src/TocUi/TocContactListWidget.cpp b/src/TocUi/TocContactListWidget.cpp new file mode 100644 index 0000000..db1a117 --- /dev/null +++ b/src/TocUi/TocContactListWidget.cpp @@ -0,0 +1,417 @@ +/** \file TocContactListWidget.cpp + * \brief Implementation of TocContactListWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include "TocContactListWidget" +#include "IconProvider" +#include "uidefs.h" +#include "macros.h" + +Q_DECLARE_METATYPE(TocContact*); + +TocContactListWidget::TocContactListWidget(QWidget * parent) + : QListWidget(parent), + _editAction(tr("Edit"), 0), + _removeAction(tr("Remove"), 0) +{ + setStyle(new QCommonStyle()); + setFlow( QListView::LeftToRight ); + setViewMode( QListView::IconMode ); + setGridSize( QSize(109, 113) ); + setIconSize(QSize(68,68)); + setDragEnabled( false ); + setVerticalScrollMode( QAbstractItemView::ScrollPerItem ); + setWrapping( true ); + setWordWrap( true ); + setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); + setResizeMode( QListView::Adjust ); + QFont currentFont(font()); + currentFont.setPixelSize(14); + setFont(currentFont); + + // 'Add contact' item + (new QListWidgetItem(QIcon(":/addcontact.png"), tr("Add Contact"), this))->setFlags( Qt::ItemIsEnabled ); + + TocSettings *pSettings = TocSettings::getInstance(); + + QList *pContactsList = pSettings->contactList(); + + IconProvider *pIconProvider = IconProvider::getInstance(); + + foreach(TocContact* pContact, *pContactsList) + { + if(!pContact->customIconPath.isEmpty()) + pIconProvider->setCustomIcon(pContact); + + QString displayedText; + if(pContact->name.isEmpty()) + displayedText = pContact->uid; + else + displayedText = pContact->name; + + QListWidgetItem* pItem = new QListWidgetItem(displayedText, this); + + pItem->setData( Qt::DecorationRole, *(pIconProvider->matchIcon(pContact)) ); + pItem->setData( ContactRole, QVariant::fromValue(pContact)); + + pItem->setFlags( Qt::ItemIsEnabled ); + + addItem(pItem); + } + + // Load logo image + _logo = new QImage(":/tieto-logo.png"); + + sortItems(Alphabetical); // Sort items alphabetically + + //CONNECT SIGNALS + CONNECT(&_editAction, SIGNAL(triggered(bool)), this, SLOT(onEditRequested())); + CONNECT(&_removeAction, SIGNAL(triggered(bool)), this, SLOT(onRemoveRequested())); + CONNECT(this, SIGNAL(logoColorChanged(QColor)), this, SLOT(changeLogoColor(QColor))); +} + +TocContactListWidget::~TocContactListWidget() { + delete _logo; +} + +void TocContactListWidget::onNewContactList(const TocContactList& contactList) { + + QListWidgetItem* pAddContactItem = takeItem( 0 ); + clear(); + + IconProvider *pIconProvider = IconProvider::getInstance(); + + foreach(TocContact* pContact, contactList) + { + QString displayedText; + if(pContact->name.isEmpty()) + displayedText = pContact->uid; + else + displayedText = pContact->name; + + QListWidgetItem* pNewItem = new QListWidgetItem(displayedText, this); + + pNewItem->setData(DecorationRole, *(pIconProvider->matchIcon(pContact))); + pNewItem->setData(ContactRole, QVariant::fromValue(pContact)); + + //make it not selectable + pNewItem->setFlags( Qt::ItemIsEnabled ); + } + + insertItem(0, pAddContactItem); + + sortItems(Alphabetical); +} + +void TocContactListWidget::onContactPresenceUpdate(const QString& uid, Presence presence, const QString& description) { + + IconProvider *pIconProvider = IconProvider::getInstance(); + + QListWidgetItem* pItem = findItem(uid); + + if( !pItem ) + return; + + TocContact *pContact = pItem->data(ContactRole).value(); + + pContact->presence = presence; + pContact->description = description; + + pItem->setData(Qt::DecorationRole, *(pIconProvider->matchIcon(pContact))); +} + +QString TocContactListWidget::getDisplayedName(const QString& uid) { + + QListWidgetItem* pItem = findItem(uid); + + if(pItem) + return pItem->data(DisplayRole).toString(); + + return QString(); +} + +void TocContactListWidget::clearStatuses() { + + IconProvider *pIconProvider = IconProvider::getInstance(); + + for(int i = 1; i < count(); ++i) { + + QListWidgetItem* pItem = this->item(i); + + TocContact *pContact = pItem->data(ContactRole).value(); + pContact->presence = Offline; +// pContact->description = ""; // TODO: Clear description also? Some clients remember last descr + + pItem->setData(Qt::DecorationRole, *(pIconProvider->matchIcon(pContact))); + } +} + +Q_DECLARE_METATYPE(QListWidgetItem*); + + +void TocContactListWidget::mouseDoubleClickEvent(QMouseEvent *event) +{ + QPoint itemPos = event->pos(); + + QListWidgetItem* pClickedItem = itemAt(itemPos); + if(!pClickedItem) + return; + + QListWidgetItem* pAddContactItem = item(0); + + if(pAddContactItem == pClickedItem) + emit contactInfoRequest(0); + else + { + TocContact *pContact = pClickedItem->data(ContactRole).value(); + QString uid = pContact->uid; + QString name = pClickedItem->text(); // Using Text instead of pContact->name because the latter can be empty + + emit triggered(uid, name, pContact->presence); + } +} + +void TocContactListWidget::contextMenuEvent(QContextMenuEvent *event) +{ + QPoint itemPos = event->pos(); + + QListWidgetItem* pClickedItem = itemAt(itemPos); + + //if it applies to Add Contact then skip it + QListWidgetItem* pAddContactItem = item(0); + if(pClickedItem == pAddContactItem || pClickedItem == 0) return; + + //create menu + QMenu contextMenu(this); + + contextMenu.setStyleSheet( + "QMenu {" + "margin-left: 0px;" + "margin-top: 0px;" + "margin-right: 0px;" + "margin-bottom: 0px;" + "font: bold 16px;" + "}" + "QMenu::item {" + "margin-left: 0px;" + "margin-top: 0px;" + "margin-right: 0px;" + "margin-bottom: 0px;" + "padding: 0px 10px 0px 30px;" + "min-height: 60px;" + "min-width: 80px;" + "max-height: 60px;" + "border-radius: 5px;" + "}"); + + _editAction.setData(QVariant::fromValue(pClickedItem)); + _removeAction.setData(QVariant::fromValue(pClickedItem)); + + contextMenu.addAction(&_editAction); + contextMenu.addAction(&_removeAction); + + contextMenu.exec(mapToGlobal(itemPos)); +} + + +void TocContactListWidget::onEditRequested() { + + //extract data from sender + QObject* pObject = QObject::sender(); + _pCurrentEditedItem = (static_cast(pObject))->data().value(); + + _currentEditedContact = *(_pCurrentEditedItem->data(ContactRole).value()); + + if(_pCurrentEditedItem) + emit contactInfoRequest(_pCurrentEditedItem); +} + +void TocContactListWidget::onRemoveRequested() { + + //extract data from sender + QObject* pObject = QObject::sender(); + QListWidgetItem* pItem = (static_cast(pObject))->data().value(); + + if(!pItem) return; + + TocContact* pContact = pItem->data(ContactRole).value(); + QMessageBox::StandardButton clickedButton = QMessageBox::question(this, "TEC", tr("Are you sure you want to remove\ncontact: %1").arg(pContact->name), QMessageBox::Yes | QMessageBox::No); + if(clickedButton == QMessageBox::No) return; + + //Remove from list + if(takeItem(row(pItem))) + { + //Removing went successfuly + //Lets notify the engine + QString uid = pItem->data(ContactRole).value()->uid; + + emit removedContact(uid); + } + +} + +void TocContactListWidget::commitAdd(QListWidgetItem* pNewItem) { + + TocContact *pNewContact = pNewItem->data(ContactRole).value(); + QString uid = pNewContact->uid; + + //ensure that item is not already present + if(findItem(uid)) + return; + + //add to list + addItem(pNewItem); + + // sortItems now + sortItems(Alphabetical); + + //notify engine + emit addContact(pNewContact); +} + +void TocContactListWidget::commitEdit(QListWidgetItem* pEditedItem) { + + TocContact* pEditedContact = pEditedItem->data(ContactRole).value(); + + QString newUid = pEditedContact->uid; + QString newName = pEditedContact->name; + + QString oldUid = _currentEditedContact.uid; + QString oldName = _currentEditedContact.name; + + if( newUid != oldUid )//If Uid has changed ensure that item with such uid is not already present + if( findItem(newUid, pEditedItem) ) { + pEditedContact->uid = oldUid; + return; + } + + if( newName != oldName ) + if(newName.isEmpty()) + emit displayedNameChanged( newUid, newUid ); + else + emit displayedNameChanged( newUid, newName ); + + // sort items now + sortItems(Alphabetical); + + IconProvider *pIconProvider = IconProvider::getInstance(); + pEditedItem->setData(Qt::DecorationRole, *(pIconProvider->matchIcon(pEditedContact))); + + emit editContact(pEditedContact, oldUid); +} + +QListWidgetItem* TocContactListWidget::findItem(const QString& requestedUid, const QListWidgetItem* pExcludedItem) { + + QString uid; + + for(int i=1; i < count(); i++) + { + QListWidgetItem* pRequestedItem = item(i); + if( pExcludedItem == pRequestedItem ) + continue; + + uid = pRequestedItem->data(ContactRole).value()->uid; + + if(uid == requestedUid) + return pRequestedItem; + } + + return 0; +} + +void TocContactListWidget::sortItems(SortOrder order) { + + QListWidgetItem* pAddContactItem = 0; + + switch(order) { + + case Alphabetical: + pAddContactItem = takeItem( 0 ); + QListWidget::sortItems(Qt::AscendingOrder); + insertItem(0, pAddContactItem); + break; + + case ByStatus: + // TODO: sort by status + break; + + case None: + // TODO: disable sorting and enable drag & drop events + break; + } +} + +void TocContactListWidget::paintEvent(QPaintEvent * event) { + Q_UNUSED(event); + + QPainter painter(this->viewport()); + painter.drawImage(this->width() - _logo->width(), this->height() - _logo->height(), *_logo); + + QListWidget::paintEvent(event); +} + +QColor TocContactListWidget::logoColor() const { + return _logoColor; +} + +void TocContactListWidget::setLogoColor(QColor color) { + _logoColor = color; + emit logoColorChanged( _logoColor ); +} + +void TocContactListWidget::changeLogoColor(QColor color) { + QColor lColor; + QString colorName = color.name(); + + if( colorName == "#0000ff" ) + lColor = LOGO_BLUE; + else if( colorName == "#add8e6" ) + lColor = LOGO_LIGHT_BLUE; + else if( colorName == "#008000" ) + lColor = LOGO_GREEN; + else if( colorName == "#ffa500" ) + lColor = LOGO_ORANGE; + else if( colorName == "#ff0000" ) + lColor = LOGO_RED; + else + lColor = LOGO_RED; + + for(int i = 0; i < _logo->width(); ++i) + for(int j = 0; j < _logo->height(); ++j) + if(_logo->pixel(i, j) >> 24) + _logo->setPixel(i,j, lColor.rgb()); +} diff --git a/src/TocUi/TocEmoticonsDialog.cpp b/src/TocUi/TocEmoticonsDialog.cpp new file mode 100644 index 0000000..0e30a62 --- /dev/null +++ b/src/TocUi/TocEmoticonsDialog.cpp @@ -0,0 +1,114 @@ +/** \file TocEmoticonsDialog.cpp + * \brief Implementation of TocEmoticonsDialog class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "ui_TocEmoticonsDialog.h" +#include "TocEmoticonsDialog" +#include "macros.h" +#include "uidefs.h" + +// Initialize static objects +TocEmoticonsDialog* TocEmoticonsDialog::_pSelf = 0; + +TocEmoticonsDialog* TocEmoticonsDialog::getInstance(QWidget* parent) { + + if (!_pSelf) + _pSelf = new TocEmoticonsDialog(parent); + + return _pSelf; +} + +TocEmoticonsDialog::TocEmoticonsDialog(QWidget *parent) + : QDialog(parent) +{ + ui = new Ui_TocEmoticonsDialogClass(); + ui->setupUi(this); + setContentsMargins(-10, -10, -10, -10); + + CONNECT(ui->backButton,SIGNAL(clicked()),this,SLOT(reject())); + CONNECT(ui->emoticonsListWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(onEmoticonSelected(QListWidgetItem*))); + + ui->emoticonsListWidget->setFlow(QListView::LeftToRight); + ui->emoticonsListWidget->setViewMode(QListView::IconMode); + ui->emoticonsListWidget->setGridSize(QSize(80, 80)); + ui->emoticonsListWidget->setIconSize(QSize(32, 32)); + ui->emoticonsListWidget->setDragEnabled(false); + ui->emoticonsListWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); + ui->emoticonsListWidget->setWrapping(true); + ui->emoticonsListWidget->setWordWrap(true); + ui->emoticonsListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + ui->emoticonsListWidget->setResizeMode(QListView::Adjust); + + QFont currentFont(ui->emoticonsListWidget->font()); + currentFont.setPixelSize(14); + ui->emoticonsListWidget->setFont(currentFont); + + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotSmile_32x32), + tr(":)"), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotSad_32x32), + tr(":("), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotPlain_32x32), + tr(":|"), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotSurprise_32x32), + tr(":O"), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotGrin_32x32), + tr(":D"), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotWink_32x32), + tr(";)"), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotKiss_32x32), + tr(":*"), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotAngel_32x32), + tr(""), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotDevil_32x32), + tr(""), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotMonkey_32x32), + tr(""), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotCrying_32x32), + tr(""), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotGlasses_32x32), + tr(""), ui->emoticonsListWidget)); + ui->emoticonsListWidget->addItem(new QListWidgetItem(QIcon(emotSmileBig_32x32), + tr(""), ui->emoticonsListWidget)); +} + +TocEmoticonsDialog::~TocEmoticonsDialog() +{ + delete ui; +} + +void TocEmoticonsDialog::onEmoticonSelected(QListWidgetItem* pItem) { + + _selectedEmoticonAlias = pItem->text(); + accept(); +} + +QString TocEmoticonsDialog::getSelectedEmoticonAlias() { + return _selectedEmoticonAlias; +} diff --git a/src/TocUi/TocEmoticonsDialog.ui b/src/TocUi/TocEmoticonsDialog.ui new file mode 100644 index 0000000..6f080aa --- /dev/null +++ b/src/TocUi/TocEmoticonsDialog.ui @@ -0,0 +1,125 @@ + + + + TocEmoticonsDialogClass + + + + 0 + 0 + 418 + 310 + + + + Emoticons + + + + 0 + + + 9 + + + 9 + + + 0 + + + 0 + + + + + false + + + 10 + + + QListView::ListMode + + + -1 + + + + + + + Qt::Horizontal + + + + 142 + 77 + + + + + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 40px; + min-width: 80px; + max-height: 40px; + max-width: 80px; +} + + + Back + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + diff --git a/src/TocUi/TocGeneralSettingsWidget.cpp b/src/TocUi/TocGeneralSettingsWidget.cpp new file mode 100644 index 0000000..8b5771b --- /dev/null +++ b/src/TocUi/TocGeneralSettingsWidget.cpp @@ -0,0 +1,119 @@ +/** \file TocGeneralSettingsWidget.cpp + * \brief Implementation of TocGeneralSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocGeneralSettingsWidget" +#include "ui_TocGeneralSettingsWidget.h" + +#include "TocSettings" +#include "macros.h" + +#include +#include + +TocGeneralSettingsWidget::TocGeneralSettingsWidget(QWidget * parent, Qt::WindowFlags flags) + : QWidget(parent, flags) { + + + setStyle(new QCommonStyle()); + ui = new Ui_TocGeneralSettingsWidgetClass(); + ui->setupUi( this ); + setContentsMargins( -10, -10, -10, -10 ); + + TocSettings* pSettings = TocSettings::getInstance(); + + /*ui->alphaRadioButton->setAttribute(Qt::WA_TranslucentBackground, true); + ui->presenceRadioButton->setAttribute(Qt::WA_TranslucentBackground, false); + ui->dragDropRadioButton->setAttribute(Qt::WA_TranslucentBackground, false); + ui->acceptRadioButton->setAttribute(Qt::WA_TranslucentBackground, false); + ui->askRadioButton->setAttribute(Qt::WA_TranslucentBackground, false); + ui->denyRadioButton->setAttribute(Qt::WA_TranslucentBackground, false);*/ + + switch( pSettings->sortOrder() ) { + case Alphabetical: + ui->alphaRadioButton->setChecked( true ); + break; + //TODO: To be implemented. + /*case ByStatus: + ui->presenceRadioButton->setChecked( true ); + break; + case None: + ui->dragDropRadioButton->setChecked( true ); + break;*/ + default: + ui->alphaRadioButton->setChecked( true ); + } + + switch( pSettings->authorizationRule() ) { + case AlwaysAccept: + ui->acceptRadioButton->setChecked( true ); + break; + //TODO: To be implemented. + /*case Ask: + ui->askRadioButton->setChecked( true ); + break; + case AlwaysDeny: + ui->denyRadioButton->setChecked( true ); + break;*/ + default: + //TODO: Change to the commented one when implementation will be done. + //ui->askRadioButton->setChecked( true ); + ui->acceptRadioButton->setChecked( true ); + } + + CONNECT(ui->okButton, SIGNAL(clicked()), this, SLOT(saveGeneralSettings())); + CONNECT(ui->backButton, SIGNAL(clicked()), this, SIGNAL(backClicked())); + +} + +TocGeneralSettingsWidget::~TocGeneralSettingsWidget() { + delete ui; +} + +void TocGeneralSettingsWidget::saveGeneralSettings() { + + TocSettings* pSettings = TocSettings::getInstance(); + + if( ui->alphaRadioButton->isChecked() ) + pSettings->setSortOrder( Alphabetical ); + else if( ui->presenceRadioButton->isChecked() ) + pSettings->setSortOrder( ByStatus ); + else if( ui->dragDropRadioButton->isChecked() ) + pSettings->setSortOrder( None ); + + if( ui->askRadioButton->isChecked() ) + pSettings->setAuthorizationRule( Ask ); + else if( ui->acceptRadioButton->isChecked() ) + pSettings->setAuthorizationRule( AlwaysAccept ); + else if( ui->denyRadioButton->isChecked() ) + pSettings->setAuthorizationRule( AlwaysDeny ); + + emit finished(); +} diff --git a/src/TocUi/TocGeneralSettingsWidget.ui b/src/TocUi/TocGeneralSettingsWidget.ui new file mode 100644 index 0000000..cb1da34 --- /dev/null +++ b/src/TocUi/TocGeneralSettingsWidget.ui @@ -0,0 +1,454 @@ + + + + TocGeneralSettingsWidgetClass + + + + 0 + 0 + 773 + 441 + + + + + 705 + 568 + + + + Form + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QPushButton { + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Back + + + + + + + + + false + + + + 0 + 0 + + + + QGroupBox { + font: bold 12px; +} + + + Contact list sorting + + + + + + Qt::Vertical + + + + 20 + 75 + + + + + + + + Qt::Vertical + + + + 20 + 85 + + + + + + + + Qt::Vertical + + + + 20 + 75 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + QRadioButton { + font: bold 16px; + background-color: none; + min-height: 25px; +} + + + Sort alphabeticaly + + + true + + + + + + + + 0 + 25 + + + + QRadioButton { + font: bold 16px; + background-color: none; + min-height: 25px; +} + + + Disable sorting + + + + + + + false + + + QRadioButton { + font: bold 16px; + background-color: none; + min-height: 25px; +} + + + Sort by status + + + + + + + + -1 + 50 + false + false + + + + QLabel { + background: none; + font: 14px; +} + + + Sorts contact list items alphabetically + + + + + + + + -1 + 50 + false + false + + + + QLabel { + background: none; + font: 14px; +} + + + Sorts contact list items by status + + + + + + + QLabel { + background: none; + font: 14px; +} + + + Disables sorting and enables drag +and dropping + + + + + + + + + + false + + + + 0 + 0 + + + + QGroupBox { + font: bold 12px; +} + + + Contact authorization rule + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + QRadioButton { + font: bold 16px; + + min-height: 48px; +} + + + Ask + + + true + + + + + + + QRadioButton { + font: bold 16px; + min-height: 48px; +} + + + Always deny + + + + + + + QRadioButton { + font: bold 16px; + min-height: 48px; +} + + + Always accept + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QPushButton { + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Ok + + + + + + + + + + + + + diff --git a/src/TocUi/TocMainToolbar.cpp b/src/TocUi/TocMainToolbar.cpp new file mode 100644 index 0000000..e8c87ca --- /dev/null +++ b/src/TocUi/TocMainToolbar.cpp @@ -0,0 +1,980 @@ +/** \file TocMainToolbar.cpp + * \brief Implementation of TocMainToolbar class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocMainToolbar" +#include "macros.h" +#include +#include +#include +#include +#include +#include +#include + + +TocMainToolbar::TocMainToolbar(QWidget * parent, Qt::WindowFlags flags) + : QWidget(parent, flags) { + + setObjectName("mainToolbar"); + QHBoxLayout* horizontalLayout = new QHBoxLayout( this ); + horizontalLayout->setSpacing( 0 ); + setContentsMargins( -10, -10, -10, -10 ); + + statusButton = new QPushButton( QIcon(":/offline.png"), "", this ); + statusButton->setObjectName("statusButton"); + statusButton->setIconSize( QSize( 72, 72 ) ); + horizontalLayout->addWidget( statusButton ); + statusMenu = new QMenu( this ); + statusMenu->setObjectName("statusMenu"); + onlineAction = statusMenu->addAction( QIcon(":/online.png"), tr("Online") ); + onlineAction->setData( QVariant::fromValue( Available ) ); + awayAction = statusMenu->addAction( QIcon(":/away.png"), tr("Away") ); + awayAction->setData( QVariant::fromValue( Away ) ); + busyAction = statusMenu->addAction( QIcon(":/busy.png"), tr("Do not Disturb") ); + busyAction->setData( QVariant::fromValue( Busy ) ); + hiddenAction = statusMenu->addAction( QIcon(":/hidden.png"), tr("Hidden") ); + hiddenAction->setData( QVariant::fromValue( Hidden ) ); + offlineAction = statusMenu->addAction( QIcon(":/offline.png"), tr("Offline") ); + offlineAction->setData( QVariant::fromValue( Offline ) ); + statusButton->setMenu( statusMenu ); + CONNECT( statusMenu, SIGNAL(triggered(QAction*)), this, SLOT(onTriggeredPresence(QAction*)) ); + + statusAreaLabel = new QLabel( this ); + statusAreaLabel->setObjectName("statusAreaLabel"); + statusAreaLabel->setWordWrap( true ); + statusAreaLabel->setProperty("checked", false); + statusAreaLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + horizontalLayout->addWidget( statusAreaLabel ); + + statusAreaButton = new QPushButton( this ); + statusAreaButton->setObjectName("statusAreaButton"); + statusAreaButton->setEnabled( false ); + statusAreaButton->setCheckable( true ); + horizontalLayout->addWidget( statusAreaButton ); + + activeSessionsButton = new QPushButton( QIcon(":/activesessions.png"), "", this ); + activeSessionsButton->setObjectName("activeSessionsButton"); + activeSessionsButton->setIconSize( QSize( 72, 72 ) ); + activeSessionsButton->setEnabled(false); + horizontalLayout->addWidget( activeSessionsButton ); + + + _pActiveSessions = new ActiveSessions(this); + + activeSessionsButton->setMenu( _pActiveSessions->menu() ); + activeSessionsButton->setObjectName("activeSessionsButton"); + + settingsButton = new QPushButton( QIcon(":/settings.png"), "", this ); + settingsButton->setObjectName("settingsButton"); + settingsButton->setIconSize( QSize( 72, 72 ) ); + settingsButton->setCheckable( true ); + horizontalLayout->addWidget( settingsButton ); + CONNECT( settingsButton, SIGNAL(clicked()), this, SLOT(onSettingsClicked()) ); + + contactsButton = new QPushButton( QIcon(":/contacts.png"), "", this ); + contactsButton->setObjectName("contactsButton"); + contactsButton->setIconSize( QSize( 72, 72 ) ); + contactsButton->setCheckable( true ); + + horizontalLayout->addWidget( contactsButton ); + CONNECT( contactsButton, SIGNAL(clicked()), this, SLOT(onContactsClicked()) ); + highlightButton(contactsButton); + + setupStyles(); +} + +TocMainToolbar::~TocMainToolbar() { +} + +void TocMainToolbar::highlightButton(const QPushButton* button) { + + contactsButton->setChecked(button == contactsButton); + settingsButton->setChecked(button == settingsButton); + statusAreaButton->setChecked(button == statusAreaButton); + statusAreaLabel->setEnabled(button == statusAreaButton); +} + +void TocMainToolbar::restoreCurrentSession() { + + if( QAction* action = _pActiveSessions->disabledAction() ) { + + highlightButton(statusAreaButton); + + emit activeSessionTriggered( action->data().toString(), action->text() ); + + statusAreaButton->setIcon( QIcon(":/close.png")); + + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + } +} + +void TocMainToolbar::closeCurrentSession() { + qDebug() << __PRETTY_FUNCTION__; + + QAction* pAction = _pActiveSessions->disabledAction(); + + if( pAction ) { + + QAction *pNewCurrentAction = _pActiveSessions->closeCurrentSession(); + + if( pNewCurrentAction ) { + + statusAreaButton->setChecked(true); + statusAreaLabel->setText( pNewCurrentAction->text() ); + + emit activeSessionTriggered( pNewCurrentAction->data().toString(), pNewCurrentAction->text() ); + + } else { + + activeSessionsButton->setEnabled(false); + statusAreaLabel->setText(""); + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + highlightButton(contactsButton); + emit contactsClicked(); + } + + emit finishedSession( pAction->data().toString() ); + } + +} + +void TocMainToolbar::closeAllSessions() { + + activeSessionsButton->setEnabled(false); + + _pActiveSessions->clear(); + + statusAreaLabel->setText(""); + + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + + emit finishedAllSessions(); + + highlightButton(contactsButton); + + emit contactsClicked(); +} + +void TocMainToolbar::clearAllSessions() { + + activeSessionsButton->setEnabled(false); + _pActiveSessions->clear(); + + statusAreaLabel->setText(""); + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); +} + + +void TocMainToolbar::onTriggeredPresence(QAction* action) { + + emit presenceUpdate( action->data().value(), "opisik" ); +} + +void TocMainToolbar::onPresenceUpdate(Presence presence, const QString& description) { + + Q_UNUSED(description); + + if( presence == onlineAction->data().value() ) + statusButton->setIcon( onlineAction->icon() ); + + else if( presence == awayAction->data().value() ) + statusButton->setIcon( awayAction->icon() ); + + else if( presence == busyAction->data().value() ) + statusButton->setIcon( busyAction->icon() ); + + else if( presence == hiddenAction->data().value() ) + statusButton->setIcon( hiddenAction->icon() ); + + else if( presence == offlineAction->data().value() ) + statusButton->setIcon( offlineAction->icon() ); +} + +void TocMainToolbar::onContactPresenceUpdate(const QString& uid, Presence presence) { + + _pActiveSessions->onContactPresenceUpdate(uid, presence); + +} + +void TocMainToolbar::onNewMessage(const QString& uid, const QString& name, Presence presence) { + + qDebug()<<__PRETTY_FUNCTION__; + + if( QAction* pAction = _pActiveSessions->action( uid ) ) { + + if( pAction != _pActiveSessions->disabledAction() ) { + + activeSessionsButton->setChecked( true ); + //TODO: activeSessionsButton->startBlinking() + + } else { + + if( statusAreaButton->icon().cacheKey() == QIcon( ":/restore.png" ).cacheKey() )// + statusAreaButton->setChecked( true ); + } + + } else { + + activeSessionsButton->setEnabled(true); + //TODO: activeSessionsButton->startBlinking() + } + + _pActiveSessions->onNewMessage( uid, name, presence ); +} + +void TocMainToolbar::onNewSession(const QString& uid, const QString& name, Presence presence) { + + qDebug()<<__PRETTY_FUNCTION__; + + highlightButton(statusAreaButton); + + QAction* pDisabledAction = _pActiveSessions->disabledAction(); + + if( QAction* pAction = _pActiveSessions->action( uid ) ) { + if( pAction != pDisabledAction ) { + + statusAreaLabel->setText( pAction->text() ); + statusAreaButton->setIcon( QIcon(":/close.png")); + statusAreaButton->setEnabled( true ); + + disconnect( statusAreaButton, SIGNAL(clicked()), + this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), + this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), + this, SLOT(closeCurrentSession()) ); + + } else { + + statusAreaButton->setIcon( QIcon(":/close.png")); + + disconnect( statusAreaButton, SIGNAL(clicked()), + this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), + this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), + this, SLOT(closeCurrentSession()) ); + } + + } else { + + statusAreaLabel->setText( name ); + + statusAreaButton->setIcon( QIcon(":/close.png")); + statusAreaButton->setEnabled( true ); + activeSessionsButton->setEnabled(true); + + disconnect( statusAreaButton, SIGNAL(clicked()), + this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), + this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), + this, SLOT(closeCurrentSession()) ); + } + + _pActiveSessions->onNewSession( uid, name, presence ); + +} + +void TocMainToolbar::onCurrentView(ViewType viewType, const QString& text) { + + if( QAction* pAction = _pActiveSessions->disabledAction() ) { // If there is an active window + + if( viewType == Contacts ) { + + statusAreaButton->setIcon( QIcon(":/restore.png") ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + highlightButton(contactsButton); + + } else { + pAction->setEnabled( true ); + statusAreaLabel->setText( text ); + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + // Deselect highlight from all buttons but leave settingsButton as is (highlighted or not) + contactsButton->setChecked(false); + contactsButton->setChecked(false); + statusAreaButton->setChecked(false); + statusAreaLabel->setEnabled(false); + } + } else if( viewType == Contacts ) { + highlightButton(contactsButton); + statusAreaLabel->setText( text ); + } + else { // If there is no conversation at that time and the viewType != contacts + statusAreaLabel->setText( text ); + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + // Deselect highlight from all buttons but leave settingsButton as is (highlighted or not) + contactsButton->setChecked(false); + contactsButton->setChecked(false); + statusAreaButton->setChecked(false); + statusAreaLabel->setEnabled(false); + } +} + +void TocMainToolbar::onDisplayedNameChange(const QString& uid, const QString& name) { + + if( QAction* pAction = _pActiveSessions->action( uid ) ) + pAction->setText( name ); +} + +void TocMainToolbar::onContactsClicked() { + + highlightButton(contactsButton); + + if( _pActiveSessions->disabledAction() ) { + + statusAreaButton->setIcon( QIcon(":/restore.png") ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + + } else { + + statusAreaLabel->setText(""); + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + } + + emit contactsClicked(); +} + +void TocMainToolbar::onSettingsClicked() { + + highlightButton(settingsButton); + + if( QAction* pAction = _pActiveSessions->disabledAction() ) { + + pAction->setEnabled( true ); + + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + } + + statusAreaLabel->setText( tr("Settings") ); + statusAreaButton->setIcon( QIcon() ); + statusAreaButton->setEnabled( false ); + + emit settingsClicked(); +} + +void TocMainToolbar::onActiveSessionTriggered(QAction* pAction) +{ + if(pAction->text() == "") + return; + + if( QAction* pDisabledAction = _pActiveSessions->disabledAction() ) + pDisabledAction->setEnabled( true ); + + pAction->setChecked( false ); + pAction->setEnabled( false ); + + statusAreaLabel->setText( pAction->text() ); + statusAreaButton->setIcon( QIcon(":/close.png")); + statusAreaButton->setEnabled( true ); + + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(restoreCurrentSession()) ); + disconnect( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + CONNECT( statusAreaButton, SIGNAL(clicked()), this, SLOT(closeCurrentSession()) ); + + highlightButton(statusAreaButton); + + emit activeSessionTriggered( pAction->data().toString(), pAction->text() ); +} + + +void TocMainToolbar::setupStyles() { + + statusButton->setStyleSheet( + "QPushButton {\ + border: none;\ + min-height: 80px;\ + min-width: 100px;\ + max-height: 80px;\ + max-width: 100px;\ + }" + ); + + statusAreaLabel->setStyleSheet(" QLabel {\ + font: bold 20px; \ + border: none;\ + border-radius: 0px;\ + min-height: 80px;\ + min-width: 100px;\ + max-height: 80px;\ + }"); + + statusAreaButton->setStyleSheet(" QPushButton {\ + border: none;\ + border-radius: 0px;\ + min-height: 80px;\ + min-width: 80px;\ + max-height: 80px;\ + max-width: 80px;\ + }"); + + activeSessionsButton->setStyleSheet(" QPushButton {\ + border: none;\ + min-height: 80px;\ + min-width: 100px;\ + max-height: 80px;\ + max-width: 100px;" +"}" + " QPushButton:checked {\ + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,\ + stop: 0 #999900, stop: 0.55 #aaaa00,\ + stop: 0.56 #bbbb00, stop: 1 #ffff00);}" + ); + + settingsButton->setStyleSheet(" QPushButton {\ + border: none;\ + min-height: 80px;\ + min-width: 100px;\ + max-height: 80px;\ + max-width: 100px;\ + }" + ); + + contactsButton->setStyleSheet(" QPushButton {\ + border: none;\ + min-height: 80px;\ + min-width: 100px;\ + max-height: 80px;\ + max-width: 100px;\ + }" + ); + + statusMenu->setStyleSheet("QMenu {\ + margin-left: 0px;\ + margin-top: 0px;\ + margin-right: 0px;\ + margin-bottom: 0px;\ + font: bold 16px; \ + }\ + QMenu::item {\ + margin-left: 0px;\ + margin-top: 0px;\ + margin-right: 0px;\ + margin-bottom: 0px;\ + padding: 0px 10px 0px 40px;\ + min-height: 68px;\ + min-width: 80px;\ + max-height: 68px;\ + border-radius: 5px;\ + }" + ); + + setStyleSheet( + "QMenu {\ + margin-left: 0px;\ + margin-top: 0px;\ + margin-right: 0px;\ + margin-bottom: 0px;" + " color: none; " + " font: bold 16px; " + " min-width: 180px; " + "}\ +\ + QMenu::item {\ + margin-left: 0px;\ + margin-top: 0px;\ + margin-right: 0px;\ + margin-bottom: 0px;\ + padding: 0px 10px 0px 20px;\ + min-height: 68px;\ + min-width: 180px;\ + max-height: 68px;\ + border-radius: 5px;\ + }\ +\ +QMenu::item:checked {\ + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,\ + stop: 0 #999900, stop: 0.55 #aaaa00,\ + stop: 0.56 #bbbb00, stop: 1 #ffff00);}\ + QMenu::item:disabled {\ + background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,\ + stop: 0 #999, stop: 0.55 #aaa,\ + stop: 0.56 #bbb, stop: 1 #fff);}\ + QMenu::separator {\ + height: 10px;\ + margin-left: 5px;\ + margin-right: 5px;\ + }" + ); + + _pActiveSessions->setStyleSheet( + "QPushButton {" + "font: bold 16px;" + "border: none;" + "border-radius: 5px;" + "min-height: 60px;" + "min-width: 100px;" + "max-height: 60px;" + "max-width: 100px;" + "}" + ); + + +} + + +//-------------------------------------------------------- +//ActiveStatusesMenu +//-------------------------------------------------------- + +ActiveSessions::ActiveSessions(QWidget * parent): + QWidget(parent), + _visibleActionsAllowed(3), + _firstVisibleAction(0), + _lastVisibleAction(0) +{ + _pActiveSessionsMenu = new QMenu( this ); + _pActiveSessionsMenu->setObjectName("activeSessionsMenu"); + + _pSeparatorAction = new QAction(this); + _pSeparatorAction->setSeparator(true); + + _pCloseAllSessionsAction = new QAction( QIcon(":/close.png"), tr("Close all"), this ); + + CONNECT( _pCloseAllSessionsAction, SIGNAL(triggered()), parent, SLOT(closeAllSessions()) ); + CONNECT( _pActiveSessionsMenu, SIGNAL(triggered(QAction*)), parent, SLOT(onActiveSessionTriggered(QAction*)) ); + + _pScrollAction = new QWidgetAction(this); + _pScrollWidget = new ScrollWidget(this); + _pScrollAction->setDefaultWidget( _pScrollWidget ); + + CONNECT( _pScrollWidget->scrollUpButton(), SIGNAL(clicked()), this, SLOT(scrollUp()) ); + CONNECT( _pScrollWidget->scrollDownButton(), SIGNAL(clicked()), this, SLOT(scrollDown()) ); +} + + +QAction* ActiveSessions::closeCurrentSession() { + + qDebug()<<__PRETTY_FUNCTION__; + + QAction* pAction = disabledAction(); + + if( pAction ) + { + removeAction( pAction ); + + QAction* pNewCurrentAction = 0; + + + if( _actionsList.count() > 0 ) + { + pNewCurrentAction = _actionsList.last(); + pNewCurrentAction->setEnabled( false ); + } + + if( _actionsList.size() == 1 ) + { + _pActiveSessionsMenu->removeAction( _pCloseAllSessionsAction ); + _pActiveSessionsMenu->removeAction( _pSeparatorAction ); + } + + return pNewCurrentAction; + } + else + return 0; +} + + +void ActiveSessions::clear() { + + _pActiveSessionsMenu->clear(); + _actionsList.clear(); +} + +QList ActiveSessions::actions() const { + + return _pActiveSessionsMenu->actions(); +} + +QAction* ActiveSessions::disabledAction() const { + + foreach( QAction* pAction, _actionsList ) { + + if( !pAction->isEnabled() ) + return pAction; + } + return 0; +} + +QAction* ActiveSessions::action( const QString& uid ) const { + + if(uid.isEmpty()) return 0; + + QList actionsList = _pActiveSessionsMenu->actions(); + + foreach( QAction* pAction, actionsList ) { + + if( pAction->data().toString() == uid ) + return pAction; + } + return 0; +} + +void ActiveSessions::onContactPresenceUpdate(const QString& uid, Presence presence) { + + if( QAction* pAction = action( uid ) ) { + + switch( presence ) { + + case Available: + pAction->setIcon( QIcon(":/online.png") ); + break; + case XA: + case Away: + pAction->setIcon( QIcon(":/away.png") ); + break; + case Busy: + pAction->setIcon( QIcon(":/busy.png") ); + break; + case Hidden: + pAction->setIcon( QIcon(":/hidden.png") ); + break; + case Offline: + pAction->setIcon( QIcon(":/offline.png") ); + break; + default: + pAction->setIcon( QIcon() ); + } + } +} + +void ActiveSessions::onNewMessage(const QString& uid, const QString& name, Presence presence) { + + //If such action already exists - set it checked + if( QAction* pAction = action( uid ) ) { + + if( pAction != disabledAction() ) + pAction->setChecked( true ); + + } else { //create a new one + + QIcon icon; + + switch( presence ) { + + case Available: + icon = QIcon(":/online.png"); + break; + case XA: + case Away: + icon = QIcon(":/away.png"); + break; + case Busy: + icon = QIcon(":/busy.png"); + break; + case Hidden: + icon = QIcon(":/hidden.png"); + break; + case Offline: + icon = QIcon(":/offline.png"); + break; + } + + pAction = new QAction( icon, name, this ); + pAction->setData( QVariant::fromValue( uid ) ); + pAction->setCheckable( true ); + pAction->setChecked( true ); + + addAction( pAction ); + + + if( _pActiveSessionsMenu->actions().count() == 2) { + + _pActiveSessionsMenu->addAction( _pSeparatorAction ); + _pActiveSessionsMenu->addAction( _pCloseAllSessionsAction ); + } + } + +} + +void ActiveSessions::onNewSession(const QString& uid, const QString& name, Presence presence) { + + QAction* pDisabledAction = disabledAction(); + + if( QAction* pAction = action( uid ) ) { + + if( pAction != pDisabledAction ) { + + if(pDisabledAction) + pDisabledAction->setEnabled( true ); + + pAction->setChecked( false ); + pAction->setEnabled( false ); + } + + } else { + + QIcon icon; + switch( presence ) { + + case Available: + icon = QIcon(":/online.png"); + break; + case XA: + case Away: + icon = QIcon(":/away.png"); + break; + case Busy: + icon = QIcon(":/busy.png"); + break; + case Hidden: + icon = QIcon(":/hidden.png"); + break; + case Offline: + icon = QIcon(":/offline.png"); + break; + default: + icon = QIcon(":/offline.png"); + } + + if( pDisabledAction ) + pDisabledAction->setEnabled( true ); + + pAction = new QAction( icon, name, this ); + pAction->setData( QVariant::fromValue( uid ) ); + pAction->setCheckable( true ); + pAction->setEnabled( false ); + + addAction( pAction ); + + _pActiveSessionsMenu->setEnabled(true); + + + if( _pActiveSessionsMenu->actions().count() == 2) { + + _pActiveSessionsMenu->addAction( _pSeparatorAction ); + _pActiveSessionsMenu->addAction( _pCloseAllSessionsAction ); + } + + } +} + +void ActiveSessions::addAction(QAction *pAction) { + + QList currentlyVisibleActions = _pActiveSessionsMenu->actions(); + + if( currentlyVisibleActions.count( _pScrollAction ) ) + _pActiveSessionsMenu->insertAction( _pScrollAction, pAction ); + + else if( currentlyVisibleActions.count( _pSeparatorAction ) ) + _pActiveSessionsMenu->insertAction( _pSeparatorAction, pAction ); + else + _pActiveSessionsMenu->addAction( pAction ); + + _actionsList.append(pAction); + + //set iterators + _lastVisibleAction = _actionsList.end() - 1; + + if( _actionsList.size() > _visibleActionsAllowed ) + _firstVisibleAction = _actionsList.end() - _visibleActionsAllowed; + else + _firstVisibleAction = _actionsList.begin(); + + + if( _actionsList.size() > _visibleActionsAllowed ) + { + //add scroll action + _pActiveSessionsMenu->insertAction( _pSeparatorAction, _pScrollAction ); + + //remove one action from top to keep constant menu size + if( _actionsList.size() > _visibleActionsAllowed ) + { + QAction *pRemoveMe = *( _firstVisibleAction - 1 ); + if(pRemoveMe) + _pActiveSessionsMenu->removeAction( pRemoveMe ); + } + + checkScrollButtonsState(); + } + +} + +void ActiveSessions::removeAction(QAction *pAction) { + + _actionsList.removeOne(pAction); + + _lastVisibleAction = _actionsList.end() - 1; + + //Reset iterators + if( _actionsList.size() > _visibleActionsAllowed ) + _firstVisibleAction = _actionsList.end() - _visibleActionsAllowed; + else + _firstVisibleAction = _actionsList.begin(); + + //Remove all stuff above _pScrollAction or _pSeparatorAction + QList visibleItems = _pActiveSessionsMenu->actions(); + QList::iterator it = visibleItems.begin(); + + while( it != visibleItems.end() ) + { + if( *it == _pScrollAction || *it == _pSeparatorAction) break; + + _pActiveSessionsMenu->removeAction((*it)); + + ++it; + } + + //...and add it back again + it = _firstVisibleAction; + + while( it != (_lastVisibleAction + 1) ) + { + if( visibleItems.count( _pScrollAction ) ) + _pActiveSessionsMenu->insertAction( _pScrollAction, *it ); + + else if( visibleItems.count( _pSeparatorAction ) ) + _pActiveSessionsMenu->insertAction( _pSeparatorAction, *it ); + else + _pActiveSessionsMenu->addAction( *it ); + + ++it; + } + + if( _actionsList.count() <= _visibleActionsAllowed && _pScrollAction->isVisible()) + _pActiveSessionsMenu->removeAction( _pScrollAction ); + + + if( _actionsList.isEmpty() ) return; + + //Reset visible actions + QList visibleActions = _pActiveSessionsMenu->actions(); + QAction *pFirstVisible = visibleActions[0]; + + + _firstVisibleAction = _actionsList.begin() + _actionsList.indexOf(pFirstVisible); + + if(_actionsList.count() >= _visibleActionsAllowed ) + _lastVisibleAction = _firstVisibleAction + _visibleActionsAllowed - 1; + else + _lastVisibleAction = _firstVisibleAction + _actionsList.size() - 1; + + checkScrollButtonsState(); +} + + +void ActiveSessions::scrollDown() { + + //Is there something below? + if( _lastVisibleAction == (_actionsList.end() - 1) ) return; + + _pActiveSessionsMenu->removeAction( *_firstVisibleAction ); + + //Add an item from the bottom + if( _pScrollAction->isVisible() ) + _pActiveSessionsMenu->insertAction( _pScrollAction, *(_lastVisibleAction + 1) ); + else + _pActiveSessionsMenu->addAction( *(_lastVisibleAction + 1) ); + + //adjust iterators + ++_firstVisibleAction; + ++_lastVisibleAction; + + checkScrollButtonsState(); +} + +void ActiveSessions::scrollUp() { + + //Is there something above? + if( _firstVisibleAction == _actionsList.begin() ) return; + + //Add an item from the top + _pActiveSessionsMenu->insertAction(*_firstVisibleAction, *(_firstVisibleAction - 1) ); + + //Hide an item from the bottom + _pActiveSessionsMenu->removeAction( *_lastVisibleAction ); + + //adjust iterators + --_firstVisibleAction; + --_lastVisibleAction; + + checkScrollButtonsState(); +} + +void ActiveSessions::checkScrollButtonsState() { + + if( _firstVisibleAction != _actionsList.begin() ) + _pScrollWidget->scrollUpButton()->setEnabled( true ); + else + _pScrollWidget->scrollUpButton()->setEnabled( false ); + + + if( _lastVisibleAction != _actionsList.end() - 1) + _pScrollWidget->scrollDownButton()->setEnabled( true ); + else + _pScrollWidget->scrollDownButton()->setEnabled( false ); +} + +//-------------------------------------------------------- +// ScrollWidget +//-------------------------------------------------------- +ScrollWidget::ScrollWidget(QWidget* parent): + QWidget(parent) +{ + setObjectName("scrollWidget"); + setContentsMargins( -10, -10, -10, -10 ); + + _pLayout = new QHBoxLayout(this); + _pLayout->setSpacing(0); + _pScrollUpButton = new QPushButton(tr("up"), this); + _pScrollUpButton->setObjectName("scrollUpButton"); + _pScrollDownButton = new QPushButton(tr("down"), this); + _pScrollDownButton->setObjectName("scrollDownButton"); + + _pLayout->addWidget(_pScrollUpButton); + _pLayout->addWidget(_pScrollDownButton); + + show(); +} diff --git a/src/TocUi/TocMainWindow.cpp b/src/TocUi/TocMainWindow.cpp new file mode 100644 index 0000000..b2935e0 --- /dev/null +++ b/src/TocUi/TocMainWindow.cpp @@ -0,0 +1,613 @@ +/** \file TocMainWindow.cpp + * \brief Implementation of TocMainWindow class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocMainWindow" + +#include "TocMainToolbar" +#include "TocContactListWidget" +#include "TocChatWidget" +#include "TocUserInfoWidget" +#include "TocSettingsWidget" +#include "TocGeneralSettingsWidget" +#include "TocAccountSettingsWidget" +#include "TocAccountIntermediateWidget" +#include "TocThemesSettingsWidget" +#include "TocSettings" +#include "macros.h" +#include "version.h" + +#include +#include +#include +#include +#include +#include +#include + + +Q_DECLARE_METATYPE(TocContact*); + +TocMainWindow::TocMainWindow(TocBaseEngine* engine, QWidget * parent, Qt::WindowFlags flags) : + TocBaseMainWindow(engine, parent, flags), _register(false) { + + setWindowTitle("Tieto Open Communicator"); + setContentsMargins( -20, 0, -20, -5 ); + _pCentralWidget = new QWidget( this ); + _pCentralWidget->setObjectName("_pCentralWidget"); + + QAction* pAboutAct = new QAction(tr("About"), this); + pAboutAct->setStatusTip(tr("Show About info")); + CONNECT(pAboutAct, SIGNAL(triggered()), this, SLOT(showAbout())); + + QAction* pExitAct = new QAction(tr("Exit"), this); + pExitAct->setStatusTip(tr("Close application")); + CONNECT(pExitAct, SIGNAL(triggered()), this, SLOT(close())); + + menuBar()->addAction(pAboutAct); + menuBar()->addAction(pExitAct); + + setCentralWidget( _pCentralWidget ); + QVBoxLayout* verticalLayout = new QVBoxLayout( _pCentralWidget ); + verticalLayout->setSpacing( 0 ); + + _pMainToolbar = new TocMainToolbar( _pCentralWidget ); + CONNECT( _pMainToolbar, SIGNAL(contactsClicked()), this, SLOT(showContacts()) ); + CONNECT( _pMainToolbar, SIGNAL(settingsClicked()), this, SLOT(showSettings()) ); + CONNECT( _pMainToolbar, SIGNAL(finishedSession(const QString&)), this, SLOT(closeChat(const QString&)) ); + CONNECT( _pMainToolbar, SIGNAL(finishedAllSessions()), this, SLOT(closeAllOpenChats()) ); + CONNECT( _pMainToolbar, SIGNAL(activeSessionTriggered(QString,QString)), this, SLOT(showChat(QString,QString)) ); + CONNECT( _pMainToolbar, SIGNAL(presenceUpdate(Presence,QString)), this, SIGNAL(presenceChanged(Presence,QString)) ); + + verticalLayout->addWidget( _pMainToolbar ); + _pMainLayout = new QStackedLayout( verticalLayout ); + _pMainLayout->setSpacing( 0 ); + + _pChatList = new QList(); + _pOpenChatList = new QList(); + + _pSettingsWidget = new TocSettingsWidget( _pCentralWidget ); + _pMainLayout->addWidget( _pSettingsWidget ); + CONNECT(_pSettingsWidget, SIGNAL(triggered(int)), this, SLOT(showView(int))); + + _pContactList = new TocContactListWidget( _pCentralWidget ); + _pMainLayout->addWidget( _pContactList ); + + CONNECT( _pContactList, SIGNAL(triggered(QString,QString,Presence)), _pMainToolbar, SLOT(onNewSession(QString,QString,Presence)) ); + CONNECT( _pContactList, SIGNAL(contactInfoRequest(QListWidgetItem*)), this, SLOT(showUserInfo(QListWidgetItem*)) ); + CONNECT( _pContactList, SIGNAL(triggered(QString,QString,Presence)), this, SLOT(showChat(QString,QString,Presence)) ); + CONNECT( _pContactList, SIGNAL(addContact(TocContact*)), + this, SIGNAL(addContact(TocContact*))); + CONNECT( _pContactList, SIGNAL(removedContact(QString)), + this, SIGNAL(removeContact(QString))); + CONNECT( _pContactList, SIGNAL(editContact(TocContact*,QString)), + this, SIGNAL(editContact(TocContact*,QString))); + CONNECT( _pContactList, SIGNAL(displayedNameChanged(QString,QString)), + this, SLOT(onDisplayedNameChange(QString,QString)) ); + + _pUserInfoWidget = 0; + _pGeneralWidget = 0; + _pAccountWidget = 0; + _pIntermediateWidget = 0; + _pThemesWidget = 0; + + if(isFtu()) + showView( static_cast( FTU ) ); + else + _pMainLayout->setCurrentWidget( _pContactList ); + + setStyleSheet( +// "TocMainToolbar > QPushButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #aa0, stop: 0.55 #bb0, stop: 0.56 #bb0, stop: 1 #ff0); }" +// "QPushButton#okButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "QPushButton#cancelButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "QPushButton#generalButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "QPushButton#themesButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "QPushButton#accountButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "QPushButton#networkButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "QPushButton#statusButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #aaa, stop: 0.55 #bbb, stop: 0.56 #bbb, stop: 1 #fff); }" +// "QPushButton#settingsButton { background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #0aa, stop: 0.55 #0bb, stop: 0.56 #0bb, stop: 1 #0ff); }" +// "*[mandatoryField=\"true\"] {background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0," +// "stop: 0 #aa0, stop: 0.55 #bb0, stop: 0.56 #bb0, stop: 1 #ff0); }" + + "QMessageBox QPushButton {" + "border: none;" + "min-width: 80px;" + "min-height: 40px;" + "}" + "QMenuBar {" + "max-height: 0px;" + "}" + ); + + _defaultStyle = styleSheet(); + reloadTheme(); +} + +TocMainWindow::~TocMainWindow() { + + delete _pChatList; + delete _pOpenChatList; +} + +TocChatWidget* TocMainWindow::chatForUid(const QString& uid) { + foreach( TocChatWidget* chat, *_pChatList ) + if ( chat->uid() == uid ) + return chat; + return 0; +} + +TocChatWidget* TocMainWindow::openChatForUid(const QString& uid) { + foreach( TocChatWidget* chat, *_pOpenChatList ) + if ( chat->uid() == uid ) + return chat; + return 0; +} + +void TocMainWindow::onPresenceUpdate(Presence presence, QString desc) { + _pMainToolbar->onPresenceUpdate( presence, desc ); + if( presence == Offline ) + _pContactList->clearStatuses(); +} + +void TocMainWindow::onContactPresenceUpdate(QString uid, Presence presence, QString desc) { + if ( TocChatWidget* chat = openChatForUid( uid ) ) { + chat->onContactPresenceUpdate( presence, desc ); + _pMainToolbar->onContactPresenceUpdate( uid, presence ); + } + + _pContactList->onContactPresenceUpdate( uid, presence, desc ); +} + +void TocMainWindow::onIncomingMessage(QString uid, Message message) { + + TocChatWidget* chat; + if ( chat = chatForUid( uid ) ) { + _pOpenChatList->append( chat ); + chat->appendMessage( message ); + QListWidgetItem* pItem = _pContactList->findItem( uid ); + if( pItem ) { + QString name = pItem->data( DisplayRole ).toString(); + TocContact *pContact = pItem->data(ContactRole).value(); + _pMainToolbar->onNewMessage( uid, name, pContact->presence ); + } else { + _pMainToolbar->onNewMessage( uid, uid, static_cast(0) ); + } + } else { + QListWidgetItem* pItem = _pContactList->findItem( uid ); + if( !pItem ) { + chat = new TocChatWidget( uid, uid, static_cast(0), _pCentralWidget, message ); + _pChatList->append( chat ); + _pOpenChatList->append( chat ); + _pMainLayout->addWidget( chat ); + _pMainToolbar->onNewMessage( uid, uid, static_cast(0) ); + } else { + QString name = pItem->data( DisplayRole ).toString(); + TocContact *pContact = pItem->data(ContactRole).value(); + chat = new TocChatWidget( uid, name, pContact->presence, _pCentralWidget, message ); + _pChatList->append( chat ); + _pOpenChatList->append( chat ); + _pMainLayout->addWidget( chat ); + _pMainToolbar->onNewMessage( uid, name, pContact->presence ); + } + CONNECT(chat, SIGNAL(newMessageReady(QString,Message)), this, SIGNAL(newMessageReady(QString,Message))); + } +} + +void TocMainWindow::closeChat(const QString& uid) { + + if ( TocChatWidget* chat = openChatForUid( uid ) ) { + _pOpenChatList->removeOne( chat ); + emit sessionClosed( uid ); + } +} + +void TocMainWindow::closeAllOpenChats() { + + foreach( TocChatWidget* chat, *_pOpenChatList ) { + emit sessionClosed( chat->uid() ); + } + _pOpenChatList->clear(); +} + +void TocMainWindow::clearAllChats() { + + // First close open chats + closeAllOpenChats(); + + foreach( TocChatWidget* chat, *_pChatList ) { + _pMainLayout->removeWidget( chat ); + delete chat; + } + + _pChatList->clear(); +} + +void TocMainWindow::showChat(const QString& uid, const QString& name, Presence presence) { + + if ( TocChatWidget* chat = chatForUid( uid ) ) { + if(!openChatForUid(uid)) { + _pOpenChatList->append( chat ); + chat->updateContactPresence( presence ); + } + + _pMainLayout->setCurrentWidget( chat ); + } else { + chat = new TocChatWidget( uid, name, presence, _pCentralWidget ); + _pChatList->append( chat ); + _pOpenChatList->append( chat ); + _pMainLayout->addWidget( chat ); + _pMainLayout->setCurrentWidget( chat ); + CONNECT(chat, SIGNAL(newMessageReady(QString,Message)), this, SIGNAL(newMessageReady(QString,Message))); + } +} + +void TocMainWindow::showContacts() { + _pMainLayout->setCurrentWidget( _pContactList ); +} + +void TocMainWindow::returnToContacts() { + _pMainLayout->setCurrentWidget( _pContactList ); + _pMainToolbar->onCurrentView( Contacts ); +} + +void TocMainWindow::showSettings() { + _pMainLayout->setCurrentWidget( _pSettingsWidget ); +} + +void TocMainWindow::returnToSettings() { + _pMainLayout->setCurrentWidget( _pSettingsWidget ); + _pMainToolbar->onCurrentView( Settings, tr("Settings") ); +} + +void TocMainWindow::reloadTheme() { + QString current = styleSheet(); + QString theme; + + TocSettings* pSettings = TocSettings::getInstance(); + + QFile file(pSettings->currentTheme()); + + file.open(QIODevice::ReadOnly | QIODevice::Text); + if (file.exists()) { + theme = file.readAll(); + file.close(); + } else + return; + + if (theme + _defaultStyle != current) { + if (theme.isEmpty()) + setStyleSheet(_defaultStyle); + else + setStyleSheet(theme + _defaultStyle); + } +} + +void TocMainWindow::returnToIntermediate() { + if(isFtu()) + showView( static_cast( FTU ) ); + else + showView( static_cast( AccountIntermediate ) ); +} + +void TocMainWindow::showAccount() { + showView( static_cast( Account ) ); +} + +void TocMainWindow::showAccountCreate() { + showView( static_cast( AccountCreate ) ); +} + +void TocMainWindow::showView(int type) { + ViewType viewType = static_cast( type ); + + switch( viewType ) { + + case Contacts: + showContacts(); + _pMainToolbar->onCurrentView( Contacts ); + break; + + case Chat: + /* Do nothing */ + break; + + case UserInfo: + showUserInfo( 0 ); + break; + + case Settings: + showSettings(); + break; + + case General: + if( !_pGeneralWidget ) { + _pGeneralWidget = new TocGeneralSettingsWidget( _pCentralWidget ); + CONNECT(_pGeneralWidget, SIGNAL(backClicked()), this, SLOT(returnToSettings())); + CONNECT(_pGeneralWidget, SIGNAL(finished()), this, SLOT(returnToContacts())); + _pMainLayout->addWidget( _pGeneralWidget ); + } + _pMainToolbar->onCurrentView( viewType, tr("General Settings") ); + _pMainLayout->setCurrentWidget( _pGeneralWidget ); + break; + + case FTU: + if( !_pIntermediateWidget ) { + _pIntermediateWidget = new TocAccountIntermediateWidget( _pCentralWidget ); + CONNECT(_pIntermediateWidget, SIGNAL(backClicked()), this, SLOT(returnToSettings())); + CONNECT(_pIntermediateWidget, SIGNAL(editClicked()), this, SLOT(showAccount())); + CONNECT(_pIntermediateWidget, SIGNAL(createClicked()), this, SLOT(showAccountCreate())); + _pMainLayout->addWidget( _pIntermediateWidget ); + } + _pIntermediateWidget->enableFTUMode( true ); + _pMainToolbar->onCurrentView( viewType, tr("Account Settings") ); + _pMainLayout->setCurrentWidget( _pIntermediateWidget ); + break; + + case AccountIntermediate: + if( !_pIntermediateWidget ) { + _pIntermediateWidget = new TocAccountIntermediateWidget( _pCentralWidget ); + CONNECT(_pIntermediateWidget, SIGNAL(backClicked()), this, SLOT(returnToSettings())); + CONNECT(_pIntermediateWidget, SIGNAL(editClicked()), this, SLOT(showAccount())); + CONNECT(_pIntermediateWidget, SIGNAL(createClicked()), this, SLOT(showAccountCreate())); + _pMainLayout->addWidget( _pIntermediateWidget ); + } + _pIntermediateWidget->enableFTUMode( false ); + _pMainToolbar->onCurrentView( viewType, tr("Account Settings") ); + _pMainLayout->setCurrentWidget( _pIntermediateWidget ); + break; + + case AccountCreate: + if( !_pAccountWidget ) { + _pAccountWidget = new TocAccountSettingsWidget( _pCentralWidget ); + CONNECT(_pAccountWidget, SIGNAL(newAccountSettingsCreated()), this, SLOT(onAccountSettingsCreated())); + CONNECT(_pAccountWidget, SIGNAL(accountSettingsChanged()), this, SLOT(onAccountSettingsChanged())); CONNECT(_pAccountWidget, SIGNAL(finished()), this, SLOT(returnToContacts())); + CONNECT(_pAccountWidget, SIGNAL(finished()), this, SLOT(returnToContacts())); + CONNECT(_pAccountWidget, SIGNAL(backClicked()), this, SLOT(returnToIntermediate())); + _pMainLayout->addWidget( _pAccountWidget ); + } + _pAccountWidget->setCreateMode(true); + _pMainToolbar->onCurrentView( viewType, tr("Create Account") ); + _pMainLayout->setCurrentWidget( _pAccountWidget ); + break; + + case Account: + if( !_pAccountWidget ) { + _pAccountWidget = new TocAccountSettingsWidget( _pCentralWidget ); + CONNECT(_pAccountWidget, SIGNAL(newAccountSettingsCreated()), this, SLOT(onAccountSettingsCreated())); + CONNECT(_pAccountWidget, SIGNAL(accountSettingsChanged()), this, SLOT(onAccountSettingsChanged())); + CONNECT(_pAccountWidget, SIGNAL(finished()), this, SLOT(returnToContacts())); + CONNECT(_pAccountWidget, SIGNAL(backClicked()), this, SLOT(returnToIntermediate())); + _pMainLayout->addWidget( _pAccountWidget ); + } + _pAccountWidget->setCreateMode(false); + _pMainToolbar->onCurrentView( viewType, tr("Account Settings") ); + _pMainLayout->setCurrentWidget( _pAccountWidget ); + break; + + case Themes: + if( !_pThemesWidget ) { + _pThemesWidget = new TocThemesSettingsWidget( _pCentralWidget ); + _pMainLayout->addWidget( _pThemesWidget ); + CONNECT(_pThemesWidget, SIGNAL(backClicked()), this, SLOT(returnToSettings())); + CONNECT(_pThemesWidget, SIGNAL(currentThemeChanged()), this, SLOT(reloadTheme())); + } + _pMainToolbar->onCurrentView( viewType, tr("Themes Settings") ); + _pMainLayout->setCurrentWidget( _pThemesWidget ); + break; + + default: + /* Do nothing */ + break; + } +} + +void TocMainWindow::showUserInfo(QListWidgetItem* item) { + + _pMainLayout->removeWidget( _pUserInfoWidget ); + delete _pUserInfoWidget; + + _pUserInfoWidget = new TocUserInfoWidget( item, _pContactList ); + + if ( item == 0 ) { + CONNECT(_pUserInfoWidget, SIGNAL(contactChanged(QListWidgetItem*)), + _pContactList, SLOT(commitAdd(QListWidgetItem*))); + + _pMainToolbar->onCurrentView( UserInfo, tr("Create Contact") ); + + } else { + CONNECT(_pUserInfoWidget, SIGNAL(contactChanged(QListWidgetItem*)), + _pContactList, SLOT(commitEdit(QListWidgetItem*))); + + QString name = item->data( DisplayRole ).toString(); + _pMainToolbar->onCurrentView( UserInfo, tr("Edit %1").arg( name ) ); + } + + CONNECT(_pUserInfoWidget, SIGNAL(finished()), this, SLOT(returnToContacts())); + + _pMainLayout->addWidget( _pUserInfoWidget ); + _pMainLayout->setCurrentWidget( _pUserInfoWidget ); +} + +void TocMainWindow::onDisplayedNameChange(const QString& uid, const QString& name) { + + if ( TocChatWidget* chat = chatForUid( uid ) ) { + chat->onDisplayedNameChange( name ); + _pMainToolbar->onDisplayedNameChange( uid, name ); + } +} + +void TocMainWindow::onContactListReceived(const TocContactList& cList) +{ + _pContactList->onNewContactList(cList); +} + +void TocMainWindow::onAuthorizationRequest(QString /*uid*/) { + //TODO: finish implementation +} + +void TocMainWindow::onSubscriptionAccepted(QString /*uid*/) { + //TODO: finish implementation +} + +void TocMainWindow::onStatusChange(Status status, Reason reason) { + switch(status) { + case Disconnected: + if(reason != Requested) + if(_register) { + QMessageBox::critical(this, tr("TEC"), errorString(reason) + "\nCannot create account"); + _register = false; + } else + QMessageBox::critical(this, tr("TEC"), errorString(reason)); + + _pMainToolbar->onPresenceUpdate( Offline, "" ); + + break; + case Connected: + if(_register) { + QMessageBox::information(this, tr("TEC"), tr("Account created successfully!")); + _register = false; + returnToContacts(); + } break; + case Connecting: + /* Do nothing */ + break; + default: + /* Do nothing */ + break; + } +} + +QString TocMainWindow::errorString(Reason reason) { + switch(reason) { + case NoneSpecified: + return tr("Disconnected because of unknown reason."); + + case Requested: + return tr("Disconnected because it was requested."); + + case NetworkError: + return tr("Disconnected because of network error."); + + case AuthenticationFailed: + return tr("Disconnected because the username or password was invalid."); + + case EncryptionError: + return tr("Disconnected because of encryption error."); + + case NameInUse: + return tr("Could not create account or connect because username is already in use."); + + case CertificateNotProvided: + return tr("Disconnected because certificate was not provided."); + + case CertificateUntrusted: + return tr("Disconnected because certificate is untrusted."); + + case CertificateExpired: + return tr("Disconnected because certificate has expired."); + + case CertificateNotActivated: + return tr("Disconnected because certificate has not been activated."); + + case CertificateHostnameMismatch: + return tr("Disconnected because of certificate hostname mismatch."); + + case CertificateFingerPrintMismatch: + return tr("Disconnected because of certificate finger print mismatch."); + + case CertificateSigned: + return tr("Disconnected because certificate was self-signed."); + + case CertificateOtherError: + return tr("Disconnected because of non specified certificate error."); + + default: + return tr("Disconnected because of unknown reason."); + } +} + +bool TocMainWindow::isFtu() { + TocSettings *set = TocSettings::getInstance(); + if(!set->accountUid().length() && !set->accountPasswd().length()) + return true; + return false; +} + +void TocMainWindow::showAbout() { + QMessageBox::about(this, tr("About Tieto Open Communicator"), tr( + "Tieto Open Communicator %1 - Instant Message Communicator for Telepathy framework\n\n" + "Copyright: (c) 2010, Tieto Corporation\n" + "License: see `/usr/share/%2/licence/copyright`." + ).arg(VERSION).arg(TARGET)); +} + +void TocMainWindow::onAccountSettingsChanged() { + _register = false; + emit presenceChanged(Offline, ""); + + // Clear chat widgets and active sessions + clearAllChats(); + _pMainToolbar->clearAllSessions(); + + // Empty the contact list + TocSettings *pSettings = TocSettings::getInstance(); + pSettings->contactList()->clear(); + _pContactList->onNewContactList(*pSettings->contactList()); +} + +void TocMainWindow::onAccountSettingsCreated() { + onAccountSettingsChanged(); + + _pMainToolbar->onCurrentView(AccountCreate, tr("Create Account")); + _register = true; + // Request to create account + emit presenceChanged(Available, ""); + QMessageBox::information(this, tr("TEC"), + tr("To be able to fully use Your new account:\nplease reconnect.")); +} + +void TocMainWindow::closeEvent( QCloseEvent* event ) { + Q_UNUSED(event) + hide(); +} + +int TocMainWindow::top_application() { + show(); + return 0; +} diff --git a/src/TocUi/TocSettingsWidget.cpp b/src/TocUi/TocSettingsWidget.cpp new file mode 100644 index 0000000..67701d4 --- /dev/null +++ b/src/TocUi/TocSettingsWidget.cpp @@ -0,0 +1,129 @@ +/** \file TocSettingsWidget.cpp + * \brief Implementation of TocSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocSettingsWidget" +#include +#include +#include +#include +#include +#include "uidefs.h" +#include "macros.h" + +TocSettingsWidget::TocSettingsWidget(QWidget * parent, Qt::WindowFlags flags) : + QWidget(parent, flags) { + + setContentsMargins(-10, -10, -10, -10); + setObjectName("settingsWidget"); + + QGridLayout* gridLayout = new QGridLayout(this); + settingsFrame = new QFrame(this); + settingsFrame->setObjectName("settingsFrame"); + gridLayout->addWidget(settingsFrame); + QVBoxLayout* vLayout = new QVBoxLayout(settingsFrame); + + vLayout->addStretch(1); + + QHBoxLayout* hLayout = new QHBoxLayout(); + + generalButton = new QPushButton(tr("General"), this); + generalButton->setObjectName("generalButton"); + hLayout->addWidget(generalButton); + + accountButton = new QPushButton(tr("Account"), this); + accountButton->setObjectName("accountButton"); + hLayout->addWidget(accountButton); + + themesButton = new QPushButton(tr("Themes"), this); + themesButton->setObjectName("themesButton"); + hLayout->addWidget(themesButton); + + vLayout->addLayout(hLayout); + vLayout->addStretch(2); + + signalMapper = new QSignalMapper(this); + signalMapper->setMapping(generalButton, static_cast(General)); + signalMapper->setMapping(accountButton, static_cast(AccountIntermediate)); + signalMapper->setMapping(themesButton, static_cast(Themes)); + + CONNECT(generalButton, SIGNAL(clicked()), signalMapper, SLOT(map())); + CONNECT(accountButton, SIGNAL(clicked()), signalMapper, SLOT(map())); + CONNECT(themesButton, SIGNAL(clicked()), signalMapper, SLOT(map())); + + CONNECT(signalMapper, SIGNAL(mapped(int)), this, SIGNAL(triggered(int))); + + setupStyles(); +} + +TocSettingsWidget::~TocSettingsWidget() { +} + +void TocSettingsWidget::setupStyles() { + + generalButton->setStyleSheet("QPushButton {" + "font: bold 16px;" + "text-align: bottom;" + "border-radius: 5px;" + "background-image: url(:/general.png);" + "background-repeat:no-repeat;" + "background-position:center center;" + "min-height: 120px;" + "min-width: 140px;" + "max-height: 120px;" + "max-width: 140px;" + "}"); + + accountButton->setStyleSheet("QPushButton {" + "font: bold 16px;" + "text-align: bottom;" + "border-radius: 5px;" + "background-image: url(:/account.png);" + "background-repeat:no-repeat;" + "background-position:center center;" + "min-height: 120px;" + "min-width: 140px;" + "max-height: 120px;" + "max-width: 140px;" + "}"); + + themesButton->setStyleSheet("QPushButton {" + "font: bold 16px;" + "text-align: bottom;" + "border-radius: 5px;" + "background-image: url(:/themes.png);" + "background-repeat:no-repeat;" + "background-position:center center;" + "min-height: 120px;" + "min-width: 140px;" + "max-height: 120px;" + "max-width: 140px;" + "}"); +} diff --git a/src/TocUi/TocThemesSettingsWidget.cpp b/src/TocUi/TocThemesSettingsWidget.cpp new file mode 100644 index 0000000..6d502ab --- /dev/null +++ b/src/TocUi/TocThemesSettingsWidget.cpp @@ -0,0 +1,102 @@ +/** \file TocThemesSettingsWidget.cpp + * \brief Implementation of TocThemesSettingsWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocThemesSettingsWidget" +#include "ui_TocThemesSettingsWidget.h" +#include "macros.h" + +#include +#include +#include +#include + + +TocThemesSettingsWidget::TocThemesSettingsWidget(QWidget *parent, Qt::WindowFlags flags) + : QWidget(parent, flags) { + + ui = new Ui_TocThemesSettingsWidgetClass(); + ui->setupUi(this); + setContentsMargins(-10, -10, -10, -10); + + ui->applyThemeButton->setText(tr("Apply")); + ui->backThemeButton->setText(tr("Back")); + + //TODO: functionality is not implemented. Add Theme button is hidden. + ui->addThemeButton->setVisible(false); + ui->addThemeButton->setText(tr("Add theme")); + +#ifdef QT_NO_DEBUG + #define ssPath QString("/usr/share/tietoopcom/stylesheets/") +#else + #define ssPath QString("./data/stylesheets/") +#endif + + qDebug() << ssPath; + + QListWidgetItem* pItem = new QListWidgetItem("Default theme", ui->themesListWidget); + pItem->setToolTip(ssPath + "default.qss"); + + pItem = new QListWidgetItem("My theme", ui->themesListWidget); + pItem->setToolTip(ssPath + "my.qss"); + + CONNECT(ui->backThemeButton,SIGNAL(clicked()),this,SIGNAL(backClicked())); + CONNECT(ui->applyThemeButton,SIGNAL(clicked()),this,SLOT(saveThemesSettings())); +} + +TocThemesSettingsWidget::~TocThemesSettingsWidget() { + delete ui; +} + +void TocThemesSettingsWidget::showEvent( QShowEvent* event ) { + + TocSettings* pSettings = TocSettings::getInstance(); + for(int i = 0; i < ui->themesListWidget->count(); ++i) + if(ui->themesListWidget->item(i)->toolTip() == pSettings->currentTheme()) { + ui->themesListWidget->setCurrentRow(i); + } + event->accept(); +} + +void TocThemesSettingsWidget::saveThemesSettings() { + + TocSettings* pSettings = TocSettings::getInstance(); + + QListWidgetItem* pThemesListItem = ui->themesListWidget->currentItem(); + if(!pThemesListItem) + return; + + QString themeUrl = pThemesListItem->toolTip(); + if(themeUrl == pSettings->currentTheme()) + return; + + pSettings->setCurrentTheme(themeUrl); + emit currentThemeChanged(); +} diff --git a/src/TocUi/TocThemesSettingsWidget.ui b/src/TocUi/TocThemesSettingsWidget.ui new file mode 100644 index 0000000..94f206f --- /dev/null +++ b/src/TocUi/TocThemesSettingsWidget.ui @@ -0,0 +1,255 @@ + + + + TocThemesSettingsWidgetClass + + + + 0 + 0 + 593 + 405 + + + + Form + + + + + + + + + true + + + + 0 + 0 + + + + + + + QFrame::Box + + + QFrame::Sunken + + + 1 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QPushButton { + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Back + + + + + + + + + + + + 0 + 0 + + + + true + + + QListView { + font: bold 30px; +} + + + + + 1 + + + 1 + + + false + + + false + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectItems + + + + 0 + 0 + + + + Qt::ElideMiddle + + + QAbstractItemView::ScrollPerItem + + + QListView::Static + + + QListView::TopToBottom + + + false + + + QListView::Adjust + + + 5 + + + QListView::ListMode + + + 0 + + + true + + + true + + + -1 + + + false + + + + + + + + + + + QPushButton { + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Add theme + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + false + + + QPushButton { + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Apply + + + + + + + + + + + + + diff --git a/src/TocUi/TocUi.pri b/src/TocUi/TocUi.pri new file mode 100644 index 0000000..c8e0663 --- /dev/null +++ b/src/TocUi/TocUi.pri @@ -0,0 +1,21 @@ +DEPENDPATH += $$PWD +INCLUDEPATH += $$PWD +SOURCES += TocBaseMainWindow.cpp \ + TocMainWindow.cpp \ + TocContactListWidget.cpp \ + TocChatWidget.cpp \ + TocUserInfoWidget.cpp \ + TocSettingsWidget.cpp \ + TocGeneralSettingsWidget.cpp \ + TocAccountSettingsWidget.cpp \ + TocAccountIntermediateWidget.cpp \ + TocThemesSettingsWidget.cpp \ + TocMainToolbar.cpp \ + IconProvider.cpp \ + TocEmoticonsDialog.cpp +FORMS += TocChatWidget.ui \ + TocUserInfoWidget.ui \ + TocGeneralSettingsWidget.ui \ + TocAccountSettingsWidget.ui \ + TocThemesSettingsWidget.ui \ + TocEmoticonsDialog.ui diff --git a/src/TocUi/TocUserInfoWidget.cpp b/src/TocUi/TocUserInfoWidget.cpp new file mode 100644 index 0000000..46e8fcf --- /dev/null +++ b/src/TocUi/TocUserInfoWidget.cpp @@ -0,0 +1,250 @@ +/** \file.cpp + * \brief Implementation of TocUserInfoWidget class + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include "TocUserInfoWidget" +#include "IconProvider" +#include "ui_TocUserInfoWidget.h" +#include "uidefs.h" +#include "macros.h" + +Q_DECLARE_METATYPE(TocContact*); + + +TocUserInfoWidget::TocUserInfoWidget(QListWidgetItem * contactItem, TocContactListWidget * parent, Qt::WindowFlags flags) + : QWidget(parent, flags), _pContactList(parent) +{ + + ui = new Ui_TocUserInfoWidgetClass(); + ui->setupUi(this); + setContentsMargins(-10, -10, -10, -10 ); + + ui->resolveButton->hide(); //TODO: implement resolving contact's name functionality + + //Adjust labels size to their content + QFontMetrics fm(ui->uidLabel->font()); + + //Find the widest + QList list; + list << fm.boundingRect(ui->uidLabel->text()).width(); + list << fm.boundingRect(ui->nameLabel->text()).width(); + list << fm.boundingRect(ui->genderLabel->text()).width(); + qSort(list.begin(), list.end()); + + //Set minimum width + ui->uidLabel->setMinimumWidth(list.last()); + ui->nameLabel->setMinimumWidth(list.last()); + ui->genderLabel->setMinimumWidth(list.last()); + + _newCustomPicturePath = ""; + + _pContactItem = contactItem; + + ui->genderComboBox->addItem(tr("Unknown") ); + ui->genderComboBox->setItemData(0, NotSpecified); + + ui->genderComboBox->addItem(tr("Male") ); + ui->genderComboBox->setItemData(1, Male); + + ui->genderComboBox->addItem(tr("Female")); + ui->genderComboBox->setItemData(2, Female); + + CONNECT(ui->genderComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onCurrentIndexChanged(int))); + CONNECT(ui->okButton, SIGNAL(clicked()),this,SLOT(okClicked())); + CONNECT(ui->cancelButton,SIGNAL(clicked()),this,SIGNAL(finished())); + + _pIconProvider = IconProvider::getInstance(); + + if (!contactItem) { + ui->pictureButton->setIcon(_pIconProvider->matchIcon(NotSpecified)); + return; + } + + ui->nameLineEdit->setText(contactItem->data(ContactRole).value()->name); + ui->uidLineEdit->setText(contactItem->data(ContactRole).value()->uid); + + + Gender gender = contactItem->data(ContactRole).value()->gender; + + int idx = ui->genderComboBox->findData(gender); + + if (idx >= 0 && idx <= 2) { + ui->genderComboBox->setCurrentIndex(idx); + _currentIndex = idx; + } + + _customPicturePath = _newCustomPicturePath = contactItem->data(ContactRole).value()->customIconPath; + + // Get picture + QIcon icon; + if(_customPicturePath.isEmpty()) + icon = _pIconProvider->matchIcon(gender); + else + icon = QIcon(_customPicturePath); + + ui->pictureButton->setIcon(icon); +} + +TocUserInfoWidget::~TocUserInfoWidget() { + delete ui; +} + +void TocUserInfoWidget::onCurrentIndexChanged (int index) { + + Gender gender = static_cast(ui->genderComboBox->itemData(index).value()); + + // Get picture + QIcon icon; + if(_newCustomPicturePath.isEmpty()) + icon = _pIconProvider->matchIcon(gender); + else + icon = QIcon(_customPicturePath); + + ui->pictureButton->setIcon(icon); +} + +void TocUserInfoWidget::okClicked() { + + if(_pContactItem) { // Edit an existing item + + Gender gender; + QString uid = ui->uidLineEdit->text(); + + if(uid.isEmpty()) { + QMessageBox::warning(this, tr("TEC"), tr("User ID is empty.\nCannot commit changes.")); + return; + } + + // Check if UID is not already on contact list + if(_pContactList->findItem(uid, _pContactItem)) { + QMessageBox::warning(this, tr("TEC"), tr("The given user ID already exists on Your contact list.\nCannot commit changes.")); + return; + } + + QString name = ui->nameLineEdit->text(); + int idx = ui->genderComboBox->currentIndex(); + + // Check if something has changed + bool changed = false; + if(_pContactItem->data(ContactRole).value()->uid != uid) + changed = true; + else if(_pContactItem->text() != name) + changed = true; + else if(_currentIndex != idx) + changed = true; + else if(_customPicturePath != _newCustomPicturePath) + changed = true; + + // If yes: save changes and emit signal to notify TocContactListWidget (commitEdit) + if(changed) { + gender = static_cast(ui->genderComboBox->itemData(idx).value()); + + //Get contact from QListWidgetItem + TocContact *pContact = _pContactItem->data(ContactRole).value(); + + if(name.isEmpty()) + _pContactItem->setText(uid); + else + _pContactItem->setText(name); + + pContact->uid = uid; + pContact->name = name; + pContact->gender = gender; + + _pContactItem->setData(Qt::DecorationRole, *(_pIconProvider->matchIcon(pContact))); + emit contactChanged(_pContactItem); + } + } else { // Create new item + + // Collect data for the new contact + // Get uid + QString uid = ui->uidLineEdit->text(); + + if(uid.isEmpty()) { + QMessageBox::warning(this, tr("TEC"), tr("User ID is empty.\nCannot commit changes.")); + return; + } + + // Check if UID is not already on contact list + if(_pContactList->findItem(uid)) { + QMessageBox::warning(this, tr("TEC"), tr("The given user ID already exists on Your contact list.\nCannot commit changes.")); + return; + } + + // Get name + QString name = ui->nameLineEdit->text(); + + // ... and gender + int idx = ui->genderComboBox->currentIndex(); + Gender gender = static_cast(ui->genderComboBox->itemData(idx).value()); + + // Create QListWidgetItem and emit it to notify TocContactListWidget (commitAdd) + QString displayedText; + if(name.isEmpty()) + displayedText = uid; + else + displayedText = name; + + QListWidgetItem* pNewItem = new QListWidgetItem(displayedText, 0); + + // Create new contact structure... + TocContact* pNewContact = new TocContact; + + pNewContact->uid = uid; + pNewContact->name = name; + pNewContact->gender = gender; + pNewContact->customIconId = 0; + pNewContact->customIconPath = ""; + pNewContact->presence = Offline; + + // ... and associate it with QListWidgetItem + pNewItem->setData(ContactRole, QVariant::fromValue(pNewContact)); + + pNewItem->setData(Qt::DecorationRole, *(_pIconProvider->matchIcon(pNewContact))); + pNewItem->setFlags(Qt::ItemIsEnabled); + + emit contactChanged(pNewItem); + } + + // Emit this to finish the job + emit finished(); +} + +void TocUserInfoWidget::showEvent(QShowEvent* event) { + ui->uidLineEdit->setFocus(); + event->accept(); +} diff --git a/src/TocUi/TocUserInfoWidget.ui b/src/TocUi/TocUserInfoWidget.ui new file mode 100644 index 0000000..44bcee0 --- /dev/null +++ b/src/TocUi/TocUserInfoWidget.ui @@ -0,0 +1,497 @@ + + + + TocUserInfoWidgetClass + + + Qt::NonModal + + + + 0 + 0 + 544 + 256 + + + + Qt::ClickFocus + + + Form + + + + + + + + + + 0 + 0 + + + + QFrame{ +border:none; +} + + + QFrame::StyledPanel + + + + + + + + + 0 + 0 + + + + + 80 + 80 + + + + QPushButton{ + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + + + + + 68 + 68 + + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 80 + 80 + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + Cancel + + + + + + + + + + + + + + 30 + 0 + + + + QLabel{ + border-radius: none; + background: none; + font: bold 12px; +} + + + QFrame::StyledPanel + + + User id: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 48 + 48 + + + + + 0 + 48 + + + + + -1 + 75 + false + true + + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + font: bold 14px; +} + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Maximum + + + + 20 + 20 + + + + + + + + + + + + + 30 + 0 + + + + QLabel{ + border-radius: none; + background: none; + font: bold 12px; +} + + + Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 48 + + + + + 0 + 48 + + + + + -1 + 75 + false + true + + + + Qt::LeftToRight + + + QLineEdit{ + border-radius: 5px; + min-height: 48px; + font: bold 14px; +} + + + + + + false + + + + + + + Qt::Horizontal + + + QSizePolicy::Maximum + + + + 20 + 20 + + + + + + + + + 80 + 40 + + + + + 80 + 40 + + + + + -1 + 75 + false + true + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 40px; + min-width: 80px; + max-height: 40px; + max-width: 80px; +} + + + Resolve + + + + + + + + + + + + 30 + 0 + + + + QLabel{ + border-radius: none; + background: none; + font: bold 12px; +} + + + Gender: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 48 + + + + + 110 + 52 + + + + + -1 + 75 + false + true + + + + false + + + QComboBox { + min-height: 48px; + font: bold 16px; +} + + + + -1 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + + Qt::Vertical + + + + 327 + 35 + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 80 + 80 + + + + QPushButton{ + font: bold 16px; + border-radius: 5px; + min-height: 80px; + min-width: 80px; + max-height: 80px; + max-width: 80px; +} + + + OK + + + + + + + + + + + + + + compareName() + compareUID() + + diff --git a/src/application.qrc b/src/application.qrc new file mode 100644 index 0000000..fc756c4 --- /dev/null +++ b/src/application.qrc @@ -0,0 +1,26 @@ + + + ../resources/tieto-logo.png + ../resources/account.png + ../resources/activesessions.png + ../resources/addcontact.png + ../resources/away.png + ../resources/busy.png + ../resources/close.png + ../resources/contactfemale.png + ../resources/contactmale.png + ../resources/contacts.png + ../resources/general.png + ../resources/greenframe.png + ../resources/hidden.png + ../resources/network.png + ../resources/offline.png + ../resources/online.png + ../resources/redframe.png + ../resources/restore.png + ../resources/settings.png + ../resources/themes.png + ../resources/unknown.png + ../resources/yellowframe.png + + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..966d3f6 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,67 @@ +/** \file main.h + * \brief Implementation of program´s main function + * + * Tieto Open Communicator - Client for the Telepathy communications framework. + * Copyright (c) 2010, Tieto Corporation + * + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the Tieto Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "TocMainWindow" +#include "TocEngine" + +#include +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + app.setAttribute(Qt::AA_DontShowIconsInMenus, false); + + TocEngine* engine = new TocEngine(&app); + TocMainWindow w(engine); + + if (!QDBusConnection::sessionBus().isConnected()) { + qWarning("Cannot connect to the D-Bus session bus."); + exit(1); + } + + if (!QDBusConnection::sessionBus().registerService("org.indt.tietoopcom")) { + qWarning("%s", qPrintable(QDBusConnection::sessionBus().lastError().message())); + exit(2); + } + + if (!QDBusConnection::sessionBus().registerObject("/org/indt/tietoopcom", &w, + QDBusConnection::ExportScriptableSlots)) { + qWarning("%s", qPrintable(QDBusConnection::sessionBus().lastError().message())); + exit(3); + } + + w.show(); + bool ret = app.exec(); + delete engine; + return ret; +} diff --git a/src/src.pro b/src/src.pro new file mode 100644 index 0000000..2ad9930 --- /dev/null +++ b/src/src.pro @@ -0,0 +1,36 @@ +TEMPLATE = app +TARGET = ../bin/tietoopcom +LIBS += -lQtTapioca + +PREFIX = /usr +CONFIG += debug_and_release \ + maemo_sdk qdbus +QMAKE_CXXFLAGS_RELEASE += -DQT_NO_DEBUG_OUTPUT +CONFIG(debug, debug|release) { + TARGET = $$join(TARGET,,,_debug) + MOC_DIR = ../build/debug + OBJECTS_DIR = ../build/debug + UI_DIR = ../build/debug + RCC_DIR = ../build/debug +} +CONFIG(release, debug|release) { + MOC_DIR = ../build/release + OBJECTS_DIR = ../build/release + UI_DIR = ../build/release + RCC_DIR = ../build/release +} +CONFIG(maemo_sdk) { + +} +target.path = $$PREFIX/bin +INSTALLS += target +DEPENDPATH += . +INCLUDEPATH += . + +SOURCES += main.cpp \ + TocSettings.cpp +RESOURCES += application.qrc + +include(TocUi/TocUi.pri) +include(TocEngine/TocEngine.pri) +include(../include/include.pri) diff --git a/tieto-logo.png b/tieto-logo.png new file mode 100644 index 0000000..cae81c6 Binary files /dev/null and b/tieto-logo.png differ diff --git a/tietoopcom.pro b/tietoopcom.pro new file mode 100644 index 0000000..10c4300 --- /dev/null +++ b/tietoopcom.pro @@ -0,0 +1,33 @@ +QMAKEVERSION = $$[QMAKE_VERSION] +ISQT4 = $$find(QMAKEVERSION, ^[2-9]) +isEmpty( ISQT4 ) { +error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4"); +} + +SUBDIRS += src +TEMPLATE = subdirs +CONFIG += debug_and_release +QT += core \ + gui + +PREFIX=/usr + +service.files = ./data/com.tieto.tietoopcom.service +service.path = $$PREFIX/share/dbus-1/services + +desktop.files = ./data/tietoopcom.desktop +desktop.path = $$PREFIX/share/applications/hildon + +logo.files = ./data/icons/jabber.png +logo.path = $$PREFIX/share/pixmap + +emoticons.files = ./data/emoticons/* +emoticons.path = $$PREFIX/share/$$TARGET/emoticons + +stylesheets.files = ./data/stylesheets/* +stylesheets.path = $$PREFIX/share/$$TARGET/stylesheets + +licence.files = ./data/copyright +licence.path = $$PREFIX/share/$$TARGET/licence + +INSTALLS += service emoticons desktop logo stylesheets licence